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

函数调用

函数调用使人们能够使用大型语言模型 (LLM),并利用模型响应来执行函数或与外部 API 交互。开发人员通常会定义一组函数以及每个函数所需的输入模式,我们称之为 tools。然后,模型会智能地理解何时需要进行工具调用,并返回一个 JSON 输出,用户需要将该输出提供给另一个函数或 API。

实质上,函数调用允许您通过执行代码或进行额外的 API 调用来使用 LLM 执行操作。

Watch more videos on our Developer Channel

我如何使用函数调用?

Workers AI 具有嵌入式函数调用,允许您在推理调用旁边执行函数代码。我们有一个名为 @cloudflare/ai-utils 的包来帮助实现这一点,我们已经在 Github 上开源了它。

对于行业标准的函数调用,请查看有关传统函数调用的文档。

为了向您展示嵌入式函数调用的价值,请看下面的示例,该示例比较了传统函数调用和嵌入式函数调用。嵌入式函数调用使我们能够将代码行数从 77 行减少到 31 行。

Terminal window
# ai-utils 包支持嵌入式函数调用
npm i @cloudflare/ai-utils
嵌入式函数调用示例
import {
createToolsFromOpenAPISpec,
runWithTools,
autoTrimTools,
} from "@cloudflare/ai-utils";
export default {
async fetch(request, env, ctx) {
const response = await runWithTools(
env.AI,
"@hf/nousresearch/hermes-2-pro-mistral-7b",
{
messages: [{ role: "user", content: "谁是 Github 上的 Cloudflare?" }],
tools: [
// 您可以直接传递 OpenAPI 规范链接或内容
...(await createToolsFromOpenAPISpec(
"https://gist.githubusercontent.com/mchenco/fd8f20c8f06d50af40b94b0671273dc1/raw/f9d4b5cd5944cc32d6b34cad0406d96fd3acaca6/partial_api.github.com.json",
{
overrides: [
{
// 对于 *.github.com 上的所有请求,我们需要添加一个 User-Agent。
matcher: ({ url, method }) => {
return url.hostname === "api.github.com";
},
values: {
headers: {
"User-Agent":
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
},
},
},
],
},
)),
],
},
).then((response) => {
return response;
});
return new Response(JSON.stringify(response));
},
};

哪些模型支持函数调用?

有一些开源模型经过微调可以进行函数调用。在浏览我们的模型目录时,请查找旁边带有函数调用属性的模型。例如,@hf/nousresearch/hermes-2-pro-mistral-7b 是 Mistral 7B 的一个微调变体,可用于函数调用。