本指南引导你使用 Workers 绑定从 Cloudflare Worker 创建并查询 AI Search 实例。Workers 绑定使用在 Worker 内运行的运行时 API,可在无需管理 API 令牌的情况下调用 AI Search。
- 注册 Cloudflare 账户 ↗。
- 安装
Node.js↗。
Node.js 版本管理器
使用 Volta ↗ 或 nvm ↗ 等 Node 版本管理器,以避免权限问题并切换 Node.js 版本。本指南后续将介绍的 Wrangler 需要 Node 版本 16.17.0 或更高。
使用 create-cloudflare CLI (C3) 创建新的 Worker 项目。C3 ↗ 是一个命令行工具,旨在帮助你设置并将新应用程序部署到 Cloudflare。
通过运行以下命令创建名为 ai-search-tutorial 的新项目:
npm create cloudflare@latest -- ai-search-tutorialyarn create cloudflare ai-search-tutorialpnpm create cloudflare@latest ai-search-tutorial进行设置时,请选择以下选项:
- 对于 What would you like to start with?,选择
Hello World example。 - 对于 Which template would you like to use?,选择
Worker only。 - 对于 Which language do you want to use?,选择
TypeScript。 - 对于 Do you want to use git for version control?,选择
Yes。 - 对于 Do you want to deploy your application?,选择
No(部署前我们还会做一些修改)。
进入你的应用程序目录:
cd ai-search-tutorial在你的 Worker 与 AI Search 实例之间创建绑定。绑定(binding) 允许你的 Worker 与 Cloudflare 开发者平台上的资源交互。
将以下内容添加到你的 Wrangler 配置文件:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"ai_search_namespaces": [
{
"binding": "AI_SEARCH",
"namespace": "default",
"remote": true
}
]
}[[ai_search_namespaces]]
binding = "AI_SEARCH"
namespace = "default"
remote = true这会将 default 命名空间绑定到 env.AI_SEARCH。你在不指定命名空间的情况下创建的实例属于 default 命名空间。remote 选项让 wrangler dev 将请求代理到你已部署的实例,因为 AI Search 不在本地运行。有关所有绑定选项,请参阅 Workers 绑定参考。
使用以下代码更新 ai-search-tutorial 目录中的 src/index.ts 文件。它暴露两条路由:/setup 创建名为 my-instance 的实例并索引示例文档,默认路由对其进行查询。
export default {
async fetch(request, env) {
const url = new URL(request.url);
// Visit /setup once to create an instance and index a sample document.
if (url.pathname === "/setup") {
const instance = await env.AI_SEARCH.create({ id: "my-instance" });
const item = await instance.items.uploadAndPoll(
"getting-started.md",
"AI Search indexes uploaded content for retrieval.",
);
return Response.json({ created: "my-instance", status: item.status });
}
// Query the instance.
const query = url.searchParams.get("q") ?? "What does AI Search do?";
const results = await env.AI_SEARCH.get("my-instance").search({
messages: [{ role: "user", content: query }],
ai_search_options: {
retrieval: { max_num_results: 3 },
},
});
return Response.json(results.chunks);
},
};export interface Env {
AI_SEARCH: AiSearchNamespace;
}
export default {
async fetch(request, env): Promise<Response> {
const url = new URL(request.url);
// Visit /setup once to create an instance and index a sample document.
if (url.pathname === "/setup") {
const instance = await env.AI_SEARCH.create({ id: "my-instance" });
const item = await instance.items.uploadAndPoll(
"getting-started.md",
"AI Search indexes uploaded content for retrieval.",
);
return Response.json({ created: "my-instance", status: item.status });
}
// Query the instance.
const query = url.searchParams.get("q") ?? "What does AI Search do?";
const results = await env.AI_SEARCH.get("my-instance").search({
messages: [{ role: "user", content: query }],
ai_search_options: {
retrieval: { max_num_results: 3 },
},
});
return Response.json(results.chunks);
},
} satisfies ExportedHandler<Env>;启动本地开发服务器:
npx wrangler devWrangler 会给你一个 URL(通常是 localhost:8787)。先访问 /setup 一次以创建实例并索引示例文档,然后在 /?q=your+search+terms 进行查询。
使用你的 Cloudflare 账户登录:
npx wrangler login部署你的 Worker,使其可在 Internet 上访问:
npx wrangler deployhttps://ai-search-tutorial.<YOUR_SUBDOMAIN>.workers.dev