← Обзор / ai-search / get-started
привязка Workers
Это руководство проведёт вас через создание экземпляра AI Search и отправку к нему запросов из Cloudflare Worker с помощью Workers Binding. Workers Binding использует runtime API которая выполняется внутри Worker и обращается к AI Search без необходимости управлять API-токенами.
- Зарегистрируйтесь для получения Аккаунт Cloudflare ↗.
- Установка
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Для настройки выберите следующие параметры:
- Для С чего вы хотите начать?, выберите
Hello World example. - Для Какой шаблон вы хотите использовать?, выберите
Worker only. - Для Какой язык вы хотите использовать?, выберите
TypeScript. - Для Хотите использовать git для контроля версий?, выберите
Yes. - Для Хотите развернуть приложение?, выберите
No(мы внесём некоторые изменения перед развёртыванием).
Перейдите в каталог вашего приложения:
cd ai-search-tutorial2. Подключите Worker к AI Search
Создайте привязку между своим 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 и индексирует пример документа, который затем запрашивается через маршрут по умолчанию.
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>;4. Разрабатывайте локально
Запустите локальный сервер разработки:
npx wrangler devWrangler предоставляет URL-адрес (обычно localhost:8787). Перейдите на /setup один раз, чтобы создать экземпляр и проиндексировать образец документа, а затем отправляйте запросы по адресу /?q=your+search+terms.
5. Разверните Worker
Войдите в свою учётную запись Cloudflare:
npx wrangler loginРазверните свой Worker, чтобы сделать его доступным в интернете:
npx wrangler deployhttps://ai-search-tutorial.<YOUR_SUBDOMAIN>.workers.dev