跳转到内容
搜索文档

Workers 绑定(binding)

最后更新 查看 MarkdownAgent 设置

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

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

Node.js 版本管理器

使用 Voltanvm 等 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

后续步骤

这篇文档对您有帮助吗?