API 通常通过 OpenAPI 规范 ↗ 进行定义和记录。Cloudflare ai-utils
包的 createToolsFromOpenAPISpec
函数从 OpenAPI 规范创建工具,然后 LLM 可以利用这些工具来完成提示。
在此示例中,LLM 将根据 Github 的 API 及其 OpenAPI 规范描述一个 Github 用户。
import { createToolsFromOpenAPISpec, runWithTools } from "@cloudflare/ai-utils";
type Env = { AI: Ai;};
const APP_NAME = "cf-fn-calling-example-app";
export default { async fetch(request, env, ctx) { const toolsFromOpenAPISpec = [ // 您可以直接传递 OpenAPI 规范链接或内容 ...(await createToolsFromOpenAPISpec( "https://gist.githubusercontent.com/mchenco/fd8f20c8f06d50af40b94b0671273dc1/raw/f9d4b5cd5944cc32d6b34cad0406d96fd3acaca6/partial_api.github.com.json", { overrides: [ { matcher: ({ url }) => { return url.hostname === "api.github.com"; }, // 对于 *.github.com 上的所有请求,我们需要添加一个 User-Agent。 values: { headers: { "User-Agent": APP_NAME, }, }, }, ], }, )), ];
const response = await runWithTools( env.AI, "@hf/nousresearch/hermes-2-pro-mistral-7b", { messages: [ { role: "user", content: "Github 上的 cloudflare 是谁,该组织有多少个仓库?", }, ], tools: toolsFromOpenAPISpec, }, );
return new Response(JSON.stringify(response)); },} satisfies ExportedHandler<Env>;
- @2025 Cloudflare Ubitools
- Cf Repo