跳转到内容
搜索文档

Workers 绑定(binding)

最后更新 查看 MarkdownAgent 设置

本指南引导你使用 Workers 绑定从 Cloudflare Worker 创建并查询 AI Search 实例。Workers 绑定使用在 Worker 内运行的运行时 API,可在无需管理 API 令牌的情况下调用 AI Search。

  1. 注册 Cloudflare 账户 ↗。
  2. 安装 Node.js ↗。

Node.js 版本管理器

使用 Volta ↗ 或 nvm ↗ 等 Node 版本管理器,以避免权限问题并切换 Node.js 版本。本指南后续将介绍的 Wrangler 需要 Node 版本 16.17.0 或更高。

1. 创建 Worker 项目

使用 create-cloudflare CLI (C3) 创建新的 Worker 项目。C3 ↗ 是一个命令行工具,旨在帮助你设置并将新应用程序部署到 Cloudflare。

通过运行以下命令创建名为 ai-search-tutorial 的新项目:

npm 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 的实例并索引示例文档,默认路由对其进行查询。

src/index.jsjs
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);
	},
};
src/index.tsts
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>;

4. 本地开发

启动本地开发服务器:

npx wrangler dev

Wrangler 会给你一个 URL(通常是 localhost:8787)。先访问 /setup 一次以创建实例并索引示例文档,然后在 /?q=your+search+terms 进行查询。

5. 部署你的 Worker

使用你的 Cloudflare 账户登录:

npx wrangler login

部署你的 Worker,使其可在 Internet 上访问:

npx wrangler deploy
https://ai-search-tutorial.<YOUR_SUBDOMAIN>.workers.dev

后续步骤

这篇文档对您有帮助吗?