← Обзор / ai-search / api / items
привязка Workers
Workers предоставляет бессерверную среду выполнения, в которой можно создавать новые приложения или дополнять существующие. Используйте привязка Workers для загрузки, просмотра списка и управления документами в ваших экземплярах AI Search из Cloudflare Worker. Обращайтесь к Items API через items свойство на хендле экземпляра.
Настройка привязки
Чтобы использовать AI Search с Workers, нужно создать привязку AI Search. Привязки создаются путём обновления Конфигурация Wrangler. AI Search предоставляет два типа привязок:
- Привязка пространства имён:
ai_search_namespaces - Привязка экземпляра:
ai_search
Привязка пространства имён
Обращайтесь ко всем экземплярам в пределах пространство имён. Экземпляры можно получать, создавать, перечислять и удалять во время выполнения.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"compatibility_date": "2026-03-27",
"ai_search_namespaces": [
{
"binding": "AI_SEARCH",
"namespace": "my-namespace"
}
]
}compatibility_date = "2026-03-27"
[[ai_search_namespaces]]
binding = "AI_SEARCH"
namespace = "my-namespace"| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
binding |
string | Да | Имя переменной, доступной в env. Например, "AI_SEARCH" делает его доступным как env.AI_SEARCH. |
namespace |
string | Да | пространство имён к которому нужно привязаться. Пространство имён default пространство имён создаётся автоматически для каждого аккаунта. Если пространство имён не существует, Wrangler создаёт его при развёртывании. |
remote |
boolean | Нет | Установите значение true для локальной разработки с wrangler dev. |
Привязка экземпляра
Подключайтесь напрямую к одному экземпляру в default пространство имён. Используйте этот вариант, когда вы уже знаете нужный экземпляр на момент развёртывания.
{
"$schema": "./node_modules/wrangler/config-schema.json",
"compatibility_date": "2026-03-27",
"ai_search": [
{
"binding": "MY_SEARCH",
"instance_name": "my-instance"
}
]
}compatibility_date = "2026-03-27"
[[ai_search]]
binding = "MY_SEARCH"
instance_name = "my-instance"| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
binding |
string | Да | Имя переменной, доступной в env. Например, "MY_SEARCH" делает его доступным как env.MY_SEARCH. |
instance_name |
string | Да | Имя инстанса AI Search. На момент развертывания должно существовать в пространстве имен по умолчанию. |
remote |
boolean | Нет | Установите значение true для локальной разработки с wrangler dev. |
Методы
Методы Items API доступны как в ai_search_namespaces и ai_search привязки. При использовании привязки пространства имён вызывайте методы на дескрипторе, который возвращает get(). При использовании привязки к экземпляру вызывайте методы прямо на привязке (например, env.MY_SEARCH.items.upload()).
В примерах ниже используется привязка пространства имён.
const instance = env.AI_SEARCH.get("my-instance");items.upload()
Загружает документ для индексирования. Возвращает ответ немедленно. Документ ставится в очередь на обработку.
// Upload from a string
await instance.items.upload(
"faq.md",
"# FAQ\n\nQ: How do I reset my password?\nA: Go to Settings > Security...",
);
// Upload from an ArrayBuffer
const pdfResponse = await fetch("https://example.com/guide.pdf");
const pdfBuffer = await pdfResponse.arrayBuffer();
await instance.items.upload("guide.pdf", pdfBuffer);
// Upload from a ReadableStream
await instance.items.upload("doc.txt", request.body);Загрузка с метаданными
Подключите пользовательские метаданные к документу для фильтрации в поисковых запросах. Пользовательские поля метаданных нужно сначала определить на уровне инстанса с помощью update() метод, либо в момент создания.
await instance.items.upload("guide.pdf", pdfBuffer, {
metadata: {
category: "onboarding",
language: "en",
version: "2.0",
},
});Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя файла для загруженного документа. Используется как ключ элемента. |
content |
ReadableStream, ArrayBuffer или string | Да | Содержимое документа. Максимальный размер файла составляет 4 МБ. Передайте строку для обычного текста или markdown либо ArrayBuffer для двоичных файлов, или ReadableStream для потоковой загрузки. |
options.metadata |
Record<string, string> | Нет | Пары «ключ-значение» пользовательских метаданных, которые нужно прикрепить к элементу. Используются для фильтрации в поисковых запросах. Максимум 5 полей на экземпляр. |
Ответ
| Поле | Тип | Описание |
|---|---|---|
id |
string | Уникальный идентификатор элемента. |
key |
string | Имя файла или ключ элемента. |
items.uploadAndPoll()
Загружает документ и опрашивает его статус, пока обработка не завершится или не истечёт время ожидания. Используйте этот метод, если нужно искать по документу сразу после загрузки.
// Wait for a specific document to finish indexing before searching
const item = await instance.items.uploadAndPoll(
"handbook.txt",
handbookContent,
);
console.log(`handbook.txt status: ${item.status}`); // "completed"
// Now search across all uploaded documents
const results = await instance.search({
messages: [{ role: "user", content: "password reset policy" }],
});Параметры
Так же, как и items.upload(), с дополнительными параметрами опроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
options.pollIntervalMs |
число | Нет | Как часто проверять статус элемента, в миллисекундах. По умолчанию: 1000. |
options.timeoutMs |
число | Нет | Максимальное время ожидания завершения обработки в миллисекундах. По умолчанию: 30000. |
Ответ
Возвращает полный объект элемента после завершения опроса:
| Поле | Тип | Описание |
|---|---|---|
id |
string | Уникальный идентификатор элемента. |
key |
string | Имя файла или ключ элемента. |
status |
string | Статус обработки: queued, running, completed, error, skipped, outdated. |
chunks_count |
число | Количество чанков, созданных из документа. |
file_size |
число | Размер загруженного файла в байтах. |
metadata |
объект | Метаданные элемента, включая filename, folder, а также timestamp. |
source_id |
string | Идентификатор источника (например, builtin для загруженных файлов). |
created_at |
string | Отметка времени создания элемента. |
last_seen_at |
string | Отметка времени, когда элемент в последний раз встречался при индексировании. |
items.list()
Возвращает постраничный список элементов экземпляра.
const { result, result_info } = await instance.items.list();
for (const item of result) {
console.log(`${item.key} (${item.status})`);
}
// result_info.total_count contains the total number of itemsПараметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
page |
число | Нет | Номер страницы для возврата. Значение по умолчанию: 1. |
per_page |
число | Нет | Количество элементов на странице. Значение по умолчанию составляет 20. Максимум 50. |
status |
string | Нет | Фильтр по статусу обработки: queued, running, completed, error, skipped, или outdated. |
sort_by |
string | Нет | Порядок сортировки элементов: status (по умолчанию) или modified_at. |
search |
string | Нет | Ищет элементы по содержимому текста. |
source |
string | Нет | Фильтр по идентификатору источника (например, builtin для загруженных файлов). |
Ответ
| Поле | Тип | Описание |
|---|---|---|
result |
array | Массив объектов элементов. |
result[].id |
string | Уникальный идентификатор элемента. |
result[].key |
string | Имя файла или ключ элемента. |
result[].status |
string | Статус обработки: queued, running, completed, error, skipped, outdated. |
result[].chunks_count |
число | Количество чанков, созданных из документа. |
result[].file_size |
число | Размер загруженного файла в байтах. |
result[].metadata |
объект | Метаданные элемента, включая filename, folder, а также timestamp. |
result[].source_id |
string | Идентификатор источника (например, builtin для загруженных файлов). |
result[].created_at |
string | Отметка времени создания элемента. |
result[].last_seen_at |
string | Отметка времени, когда элемент в последний раз встречался при индексировании. |
result_info |
объект | Метаданные пагинации. |
result_info.count |
число | Количество элементов на текущей странице. |
result_info.total_count |
число | Общее количество элементов в экземпляре. |
result_info.page |
число | Номер текущей страницы. |
result_info.per_page |
число | Количество элементов на странице. |
items.delete()
Удаляет элемент и его индексированные чанки.
await instance.items.delete("item-id-123");Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
itemId |
string | Да | Уникальный идентификатор элемента, который нужно удалить. |
Ответ
Возвращает void. Возвращает ошибку, если элемент не существует.
items.get()
Возвращает дескриптор конкретного элемента для получения его статуса или скачивания исходного файла.
items.get().info()
Возвращает статус и метаданные конкретного элемента.
const itemInfo = await instance.items.get("item-id-123").info();Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
itemId |
string | Да | Уникальный идентификатор элемента. |
Ответ
| Поле | Тип | Описание |
|---|---|---|
id |
string | Уникальный идентификатор элемента. |
key |
string | Имя файла или ключ элемента. |
status |
string | Статус обработки: queued, running, completed, error, skipped, outdated. |
chunks_count |
число | Количество чанков, созданных из документа. |
file_size |
число | Размер загруженного файла в байтах. |
metadata |
объект | Метаданные элемента, включая filename, folder, а также timestamp. |
source_id |
string | Идентификатор источника (например, builtin для загруженных файлов). |
created_at |
string | Отметка времени создания элемента. |
last_seen_at |
string | Отметка времени, когда элемент в последний раз встречался при индексировании. |
items.get().download()
Скачивает исходный файл для элемента.
const file = await instance.items.get("item-id-123").download();
// file.body is a ReadableStreamПараметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
itemId |
string | Да | Уникальный идентификатор элемента. |
Ответ
| Поле | Тип | Описание |
|---|---|---|
filename |
string | Исходное имя файла. |
contentType |
string | MIME-тип файла (например, application/pdf). |
size |
число | Размер файла в байтах. |
body |
ReadableStream | Читаемый поток содержимого файла. |