Skip to content
Cloudflare Docs
非官方翻译 - 此文档为非官方中文翻译版本,仅供参考。如有疑问请以 英文官方文档 为准。

基于 OpenAPI 规范的工具

API 通常通过 OpenAPI 规范 进行定义和记录。Cloudflare ai-utils 包的 createToolsFromOpenAPISpec 函数从 OpenAPI 规范创建工具,然后 LLM 可以利用这些工具来完成提示。

在此示例中,LLM 将根据 Github 的 API 及其 OpenAPI 规范描述一个 Github 用户。

来自 OpenAPI 规范的嵌入式函数调用示例
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>;