INTEGRITY Документация

привязка Workers

Это руководство проведёт вас через создание экземпляра AI Search и отправку к нему запросов из Cloudflare Worker с помощью Workers Binding. Workers Binding использует runtime API которая выполняется внутри Worker и обращается к AI Search без необходимости управлять API-токенами.

  1. Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
  2. Установка Node.js ↗.

менеджер версий Node.js

Используйте менеджер версий Node, например Volta ↗ или nvm ↗ чтобы избежать проблем с правами доступа и переключать версии Node.js. Wrangler, о котором пойдёт речь далее в этом руководстве, требует версию Node 16.17.0 или более поздней версии.

1. Создайте проект Worker

Создайте новый проект Worker с помощью create-cloudflare CLI (C3). C3 ↗ это инструмент командной строки, который помогает настраивать и развёртывать новые приложения в Cloudflare.

Создайте новый проект с именем ai-search-tutorial выполнив:

npm create cloudflare@latest -- ai-search-tutorial

Для настройки выберите следующие параметры:

Перейдите в каталог вашего приложения:

cd ai-search-tutorial

Создайте привязку между своим Worker и своим экземпляром AI Search. Bindings позволяют вашему Worker взаимодействовать с ресурсами на Cloudflare Developer Platform.

Добавьте следующее в свой конфигурационный файл 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.

3. Создайте AI Search и отправьте запрос из Worker

Обновите src/index.ts файл в вашем ai-search-tutorial каталог со следующим кодом. Он предоставляет два маршрута: /setup создаёт экземпляр с именем my-instance и индексирует пример документа, который затем запрашивается через маршрут по умолчанию.

src/index.js
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.ts
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, чтобы сделать его доступным в интернете:

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

Следующие шаги

Привязка Workers для поиска

Полный справочник по поиску и общению из Worker.

Привязка Workers для элементов

Загружайте, получайте списки и управляйте документами из Worker.