布成Agent工具(附exa參考實現(xiàn)))
Monid連接器教程6步把你自己的API發(fā)布成Agent工具附exa參考實現(xiàn)【免費下載鏈接】monidMonid - OpenRouter for agent tools. Join our community at https://discord.gg/rQzztcgJV8項目地址: https://gitcode.com/gh_mirrors/mo/monidMonid 是一個面向 AI Agent 的工具聚合平臺OpenRouter for agent tools一個地址、一把密鑰Agent 就能調(diào)用 2000 工具。而本倉庫 monid 就是它的連接器Connector層你用聲明式 TypeScript 描述自己的 API它就能被所有 Agent 發(fā)現(xiàn)和調(diào)用。本教程以官方參考實現(xiàn) exa 連接器為樣板手把手教你 6 步完成發(fā)布。一、先搞懂Monid 連接器是什么 一句話連接器 一份聲明式的 API 說明書描述“怎么調(diào)用、接受什么輸入、返回什么、如何計費”。它不是傳統(tǒng)意義的客戶端代碼沒有適配器、沒有執(zhí)行分支。Agent 使用平臺只需三個動詞前兩個免費動詞含義費用discover按“任務(wù)是什么”在全目錄中檢索端點免費inspect查看輸入 schema、價格與文檔免費run執(zhí)行并結(jié)算用量按次計費你要寫的每一個端點都會進(jìn)入discover的檢索范圍被平臺上的每個 Agent 看到。二、6 步發(fā)布你自己的 API第 1 步準(zhǔn)備環(huán)境并克隆倉庫只需 Denogit clone https://gitcode.com/gh_mirrors/mo/monid cd monid deno task check deno task test # 類型檢查 188 個回放測試零網(wǎng)絡(luò)倉庫目錄約定非常簡單詳見 README.md 的 Quickstartconnectors/你的項目名/ ├── provider.ts # 聲明身份、鑒權(quán)、計費 ├── schema/ # 多端點共享的 zod 片段可選 └── endpoints/端點名/ ├── endpoint.ts # 聲明請求與輸入 schema ├── schema/inputs.ts # 僅本端點使用的請求 schema ├── endpoint.test.ts # 回放測試 受門控的 live 測試 └── fixtures/*.json # 錄制下來的真實響應(yīng)第 2 步精讀 exa 參考實現(xiàn) 官方指定的參考實現(xiàn)是 connectors/exa/ —— 一個“AI 原生網(wǎng)頁搜索”API 的完整連接器建議按順序讀四個文件connectors/exa/provider.ts —— 聲明name、meta展示名、摘要、描述、分類、authpresets.auth.header(x-api-key)一行搞定請求頭注入、request.baseUrl、超時和計費模型connectors/exa/endpoints/search/schema/inputs.ts —— 用 zod 逐字段鏡像 Exa 官方文檔query、type、numResults等每個字段帶describe()說明connectors/exa/endpoints/search/endpoint.ts —— 聲明meta.description、requestPOST /search、輸入默認(rèn)值和usage基礎(chǔ)費 超量結(jié)果的組合計費connectors/exa/endpoints/search/endpoint.test.ts —— 基于 fixture 的回放測試CI 不需要任何廠商密鑰。 官方建議把 AGENT.md、你自己的 API 文檔和connectors/exa/一起交給編碼 Agent它可以直接產(chǎn)出 provider、schema 和測試。第 3 步寫 provider.ts 聲明你的服務(wù)商骨架只有 10 行左右核心字段如下export default defineProvider({ name: myapi, meta: { displayName: MyAPI, summary: ..., categories: [web-search] }, auth: { inject: presets.auth.header(X-API-Key) }, request: { baseUrl: https://api.myapi.com }, usage: { model: { kind: UsageModelKind.PER_CALL } }, // 免費/按次/按量 });三個關(guān)鍵決策分類必須來自 connectors/categories.ts 的封閉詞表web-search、web-scraping、company-enrichment等未知 id 會直接編譯失敗鑒權(quán)用presets.auth預(yù)設(shè)header/bearer無需手寫計費模型usage.model聲明“怎么算錢”FREE永不計費、PER_CALL固定按次、PER_UNIT按量每千字符、每秒視頻……。第 4 步寫 endpoint.ts 定義端點 ?端點 id 由路徑推斷provider#endpoint你需要聲明request方法 路徑如POST /searchinput.schema綁定第 3 步風(fēng)格的 zod 請求體可在此處補(bǔ)上廠商默認(rèn)值timeouts請求與整體運行的超時。最重要的一條寫作建議來自 README.md把meta.description寫得像產(chǎn)品文案因為對 Agent 來說它就是產(chǎn)品。它決定了discover如何為你排序、inspect返回什么。exa 的做法值得抄不僅說明“能做什么”還寫明“不做什么”、以及“什么場景該去用哪個端點”。第 5 步錄制 fixture 并通過本地測試 ?export MYAPI_CREDENTIALS_API_KEY... # 環(huán)境變量約定PROVIDER_CREDENTIALS_FIELD deno task record myapi#search ... # 錄制真實響應(yīng)為 fixture自動脫敏裁剪 deno task check deno task test # 必須零網(wǎng)絡(luò)通過 deno task engine:run myapi#search --body {...} # 用你自己的密鑰真實跑一次測試全部從 fixture回放所以 CI 不需要廠商密鑰live 測試只在環(huán)境變量中存在憑據(jù)時運行否則自動跳過。exa 的 connectors/exa/endpoints/search/fixtures/ 里只有兩個文件happy.jsonprovider-error.json就覆蓋了成功與 401 兩條鏈路——fixture 保持精簡是硬要求。第 6 步提交 Pull Request 提交前自查清單deno task check deno task test無網(wǎng)絡(luò)通過分類 id 在 connectors/categories.ts 詞表內(nèi)fixture 已裁剪體積有 lint 上限32 KiB 警告 / 128 KiB 失敗若需新增分類在同一 PR 里修改詞表文件。合并后你的端點立即進(jìn)入discover成為平臺上所有 Agent 的候選工具。三、幕后原理從你的文件到一次調(diào)用選讀你寫的 TypeScript 定義會被編譯器編譯成純 JSON 的EndpointDoc函數(shù)替換為內(nèi)容哈希引用再鏈接成“密封單元”交給引擎執(zhí)行。同一條流水線同一份產(chǎn)物跑三種方式本地你自己的密鑰、CIfixture 回放零網(wǎng)絡(luò)、托管平臺憑據(jù)在傳輸層內(nèi)部注入永不進(jìn)入引擎進(jìn)程。每次調(diào)用的固定管線校驗輸入 → 構(gòu)造請求 → 傳輸層注入憑據(jù) →在原始響應(yīng)上先結(jié)算用量賬單錨定在網(wǎng)絡(luò)上真實返回的數(shù)據(jù)→ 映射輸出。廠商的 4xx/5xx 被視為“數(shù)據(jù)”而非異?!\行完成、結(jié)算為 0 用量。更多細(xì)節(jié)見 DEVELOPMENT.mdhooks、編譯器、計費、CLI 參考與 openspec/changes/ 下的決策記錄。四、新手常見問題 Q我完全沒寫過連接器工作量有多大Aexa 連接器 1 個 provider.ts 每個端點約 4 個文件。聲明式格式意味著沒有客戶端、沒有適配層編碼 Agent 可以代寫你負(fù)責(zé)審閱“它是否如實描述了我的 API”。Q多密鑰的 API 怎么配A每個憑據(jù)字段對應(yīng)一個環(huán)境變量如兩把密鑰的寫法參照 connectors/contactout/CONTACTOUT_CREDENTIALS_WORK_API_KEY/..._PERSONAL_API_KEY。Q異步任務(wù)型 API提交后輪詢怎么辦A平臺有 async run 協(xié)議用lifecycle.start/poll/stop三個 hook 描述提交、輪詢、停止參考 connectors/firecrawl/ 等帶lifecycle.test.ts的實現(xiàn)設(shè)計文檔見 openspec/changes/add-async-run-protocol/design.md。Q如何驗證自己的端點寫對了Adeno task catalog inspect myapi#search打印該端點的完整契約deno task engine:estimate直接輸出預(yù)估用量。寫在最后從你的 API 文檔到全平臺 Agent 可調(diào)用路徑就是這 6 步克隆 → 讀 exa → 寫 provider → 寫 endpoint → 錄 fixture 過測試 → 提 PR。整個契約寫在 README.md 與 DEVELOPMENT.md參考實現(xiàn)在 connectors/exa/。今天就動手讓你的 API 成為 Agent 的下一個工具。【免費下載鏈接】monidMonid - OpenRouter for agent tools. Join our community at https://discord.gg/rQzztcgJV8項目地址: https://gitcode.com/gh_mirrors/mo/monid創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考