最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hermes-Agent 自定義工具開(kāi)發(fā)實(shí)戰(zhàn)

  發(fā)布時(shí)間:2026-04-24 10:45:27   作者:Ts-Drunk   我要評(píng)論
本文詳細(xì)介紹了如何在Hermes-Agent中快速開(kāi)發(fā)自定義工具,通過(guò)5分鐘實(shí)現(xiàn)文件查詢(xún)功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

今天直接上實(shí)戰(zhàn)——教你5分鐘快速開(kāi)發(fā)一個(gè)自定義工具,集成到Hermes中,讓AI智能體擁有你想要的專(zhuān)屬功能!全文代碼可直接復(fù)制,新手也能零失敗上手,建議先收藏+關(guān)注,避免開(kāi)發(fā)時(shí)迷路~

?? 前言:為什么要自定義工具?

Hermes-Agent自帶40+內(nèi)置工具(搜索、文件操作、瀏覽器自動(dòng)化等),但實(shí)際使用中,我們常常需要適配自己的場(chǎng)景:比如對(duì)接公司內(nèi)部系統(tǒng)、操作本地軟件、調(diào)用專(zhuān)屬API,這時(shí)候就需要開(kāi)發(fā)自定義工具。

好在Hermes的工具系統(tǒng)采用插件化設(shè)計(jì),開(kāi)發(fā)門(mén)檻極低——無(wú)需修改核心源碼,只需繼承基類(lèi)、實(shí)現(xiàn)2個(gè)核心方法,就能快速集成,甚至可以直接打包供他人使用!

? 一、開(kāi)發(fā)前準(zhǔn)備(環(huán)境確認(rèn))

確保你已經(jīng)成功安裝Hermes-Agent(參考上一篇安裝教程),并確認(rèn)開(kāi)發(fā)環(huán)境:

# 1. 激活Hermes虛擬環(huán)境(手動(dòng)安裝用戶(hù))
source ~/.hermes/venv/bin/activate
# 2. 確認(rèn)hermes命令可用
hermes version
# 3. 安裝必要依賴(lài)(若未安裝)
pip install pydantic  # 工具參數(shù)校驗(yàn)(Hermes內(nèi)置依賴(lài),一般已安裝)

??? 二、自定義工具開(kāi)發(fā)步驟(核心流程)

我們以「開(kāi)發(fā)一個(gè)本地文件查詢(xún)工具」為例(功能:根據(jù)文件路徑,查詢(xún)文件內(nèi)容并返回),一步步演示開(kāi)發(fā)全過(guò)程。

Step 1:找到工具存放目錄

Hermes的工具分為「內(nèi)置工具」和「自定義工具」,自定義工具建議放在 \~/\.hermes/skills/ 目錄下(自動(dòng)被Hermes識(shí)別):

# 創(chuàng)建自定義工具目錄(若不存在)
mkdir -p ~/.hermes/skills/my_custom_tools
cd ~/.hermes/skills/my_custom_tools

Step 2:編寫(xiě)工具代碼(核心文件)

創(chuàng)建文件 file\_query\_tool\.py,代碼如下(注釋詳細(xì),可直接復(fù)制):

from hermes.tools.base import BaseTool
from pydantic import Field
from typing import Optional
# 自定義工具類(lèi),必須繼承BaseTool
class FileQueryTool(BaseTool):
    # 1. 工具基礎(chǔ)信息(必填)
    name: str = "file_query"  # 工具唯一標(biāo)識(shí)(調(diào)用時(shí)用這個(gè)名字)
    description: str = "用于查詢(xún)本地文件的內(nèi)容,需要傳入文件的絕對(duì)路徑;如果文件不存在,會(huì)返回錯(cuò)誤提示"  # LLM用來(lái)判斷是否調(diào)用該工具
    return_direct: bool = False  # 是否直接返回結(jié)果(無(wú)需LLM二次處理)
    # 2. 工具參數(shù)(必填,用pydantic校驗(yàn))
    file_path: str = Field(
        description="本地文件的絕對(duì)路徑,例如:/home/user/test.txt、C:/Users/test.txt(WSL2中用Linux路徑)"
    )
    encoding: Optional[str] = Field(
        default="utf-8",
        description="文件編碼格式,默認(rèn)utf-8,若出現(xiàn)亂碼可嘗試gbk"
    )
    # 3. 核心執(zhí)行方法(必填,實(shí)現(xiàn)工具邏輯)
    async def execute(self) -> str:
        """執(zhí)行工具,查詢(xún)文件內(nèi)容并返回"""
        try:
            # 讀取文件內(nèi)容
            with open(self.file_path, "r", encoding=self.encoding) as f:
                content = f.read()
            # 處理長(zhǎng)文本(避免超過(guò)LLM上下文限制)
            if len(content) > 1000:
                return f"文件內(nèi)容(前1000字符):\n{content[:1000]}\n\n提示:文件內(nèi)容過(guò)長(zhǎng),已截取前1000字符,如需完整內(nèi)容請(qǐng)指定截取范圍。"
            else:
                return f"文件內(nèi)容:\n{content}"
        except FileNotFoundError:
            return f"錯(cuò)誤:未找到文件,請(qǐng)檢查路徑是否正確(路徑:{self.file_path})"
        except Exception as e:
            return f"讀取文件失?。簕str(e)}"
# 注冊(cè)工具(Hermes啟動(dòng)時(shí)會(huì)自動(dòng)掃描并加載)
def register_tools(tool_manager):
    tool_manager.register_tool(FileQueryTool())

Step 3:關(guān)鍵代碼解析(必看)

  • 繼承BaseTool:所有自定義工具必須繼承Hermes的BaseTool基類(lèi),否則無(wú)法被識(shí)別
  • 基礎(chǔ)信息:name(唯一標(biāo)識(shí))、description(給LLM看的說(shuō)明,決定LLM是否調(diào)用該工具)、return_direct(是否直接返回結(jié)果)
  • 參數(shù)定義:用pydantic的Field定義參數(shù),description會(huì)告訴LLM需要傳入什么參數(shù)
  • execute方法:工具的核心邏輯,必須是async異步方法(Hermes底層是異步執(zhí)行),返回字符串結(jié)果(LLM可直接處理)
  • 注冊(cè)工具:通過(guò)register_tools函數(shù),將工具注冊(cè)到ToolManager,Hermes啟動(dòng)時(shí)會(huì)自動(dòng)掃描執(zhí)行

Step 4:驗(yàn)證工具是否加載成功

# 1. 重啟Hermes(加載新工具)
hermes stop  # 若已啟動(dòng),先停止
hermes       # 重新啟動(dòng)
# 2. 在Hermes交互界面,查看所有工具
/hermes tools list

如果輸出中包含file\_query,說(shuō)明工具加載成功!

?? 三、測(cè)試自定義工具(實(shí)戰(zhàn)驗(yàn)證)

在Hermes交互界面,直接輸入指令,讓AI調(diào)用我們的自定義工具:

# Hermes交互界面輸入
幫我查詢(xún)文件 /home/user/test.txt 的內(nèi)容

此時(shí)Hermes會(huì)自動(dòng)識(shí)別需要調(diào)用 file\_query 工具,傳入文件路徑參數(shù),執(zhí)行后返回文件內(nèi)容,完美!

?? 四、進(jìn)階技巧(擴(kuò)展功能)

1. 工具參數(shù)擴(kuò)展(多參數(shù)示例)

如果需要多參數(shù)(比如查詢(xún)文件的指定行數(shù)),只需新增Field即可:

start_line: Optional[int] = Field(
    default=1,
    description="開(kāi)始讀取的行數(shù),默認(rèn)從第1行開(kāi)始"
)
end_line: Optional[int] = Field(
    default=None,
    description="結(jié)束讀取的行數(shù),默認(rèn)讀取到文件末尾"
)

然后在execute方法中處理這兩個(gè)參數(shù)即可。

2. 工具打包與分享

將自定義工具目錄打包成zip,發(fā)給他人,他人只需解壓到 \~/\.hermes/skills/ 目錄,重啟Hermes即可使用,無(wú)需額外配置!

3. 調(diào)試工具(關(guān)鍵技巧)

如果工具執(zhí)行失敗,可通過(guò)以下命令查看日志:

hermes logs  # 查看Hermes運(yùn)行日志,定位錯(cuò)誤

?? 五、常見(jiàn)問(wèn)題&解決方案

問(wèn)題解決方案
工具未被加載1. 檢查文件路徑是否在 ~/.hermes/skills/ 下;2. 檢查register_tools函數(shù)是否正確;3. 重啟Hermes
執(zhí)行工具報(bào)錯(cuò)“async錯(cuò)誤”確保execute方法是async異步方法,且沒(méi)有同步阻塞操作(如time.sleep,需替換為asyncio.sleep)
LLM不調(diào)用自定義工具優(yōu)化description,更明確說(shuō)明工具的用途和適用場(chǎng)景,讓LLM知道何時(shí)該調(diào)用

?? 總結(jié)&互動(dòng)引流

本文手把手教你開(kāi)發(fā)Hermes自定義工具,核心就3步:繼承基類(lèi)、定義參數(shù)、實(shí)現(xiàn)執(zhí)行邏輯,5分鐘就能搞定!學(xué)會(huì)這個(gè),你可以開(kāi)發(fā)任何你需要的工具,讓Hermes完全適配你的場(chǎng)景~

到此這篇關(guān)于Hermes-Agent 自定義工具開(kāi)發(fā)實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)Hermes-Agent 自定義工具內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hermes Agent工具集大全:20+工具讓你的AI無(wú)所不能

    工具集是Hermes Agent區(qū)別于普通AI聊天工具的關(guān)鍵,通過(guò)調(diào)用各種工具,Hermes Agent不僅僅是一個(gè)對(duì)話(huà)伙伴,而是一個(gè)能夠?qū)嶋H操作系統(tǒng)的智能代理,本文整理了20+個(gè)工具集,覆
    2026-04-20

最新評(píng)論

织金县| 六枝特区| 浏阳市| 铜川市| 冷水江市| 定日县| 嘉峪关市| 开化县| 县级市| 泌阳县| 扎赉特旗| 耿马| 新宾| 巴马| 金塔县| 阿合奇县| 天津市| 商洛市| 乌拉特后旗| 普兰县| 红原县| 双江| 三明市| 怀安县| 府谷县| 梁平县| 依兰县| 江达县| 大化| 灵丘县| 潮安县| 新民市| 和林格尔县| 日土县| 南投县| 阿合奇县| 庆安县| 图木舒克市| 图们市| 宜宾县| 勐海县|