Download OpenAPI specification:Download
Возвращает список проектов в аккаунте. Для этой операции требуется административный API-ключ.
| pageNum | integer <int32> >= 0 Default: 0 Порядковый номер страницы для постраничного вывода, начиная с 0. |
| pageSize | integer <int32> [ 1 .. 10000 ] Default: 20 Размер страницы. |
| name | string Фильтр по названию. Поиск выполняется по подстроке без учета регистра. |
{- "content": [
- {
- "id": 0,
- "name": "string",
- "status": "CREATED",
- "resources": {
- "llmModels": [
- "string"
]
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "indexingPriority": 1,
- "indexingRetryCount": 10
}
], - "paging": {
- "totalCount": 0,
- "pageNum": 0,
- "pageSize": 0
}
}Создает новый проект базы знаний. Для этой операции требуется административный API-ключ.
| name required | string Название проекта. |
{- "name": "Справочная служба"
}{- "id": 0,
- "name": "string",
- "status": "CREATED",
- "resources": {
- "llmModels": [
- "string"
]
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "indexingPriority": 1,
- "indexingRetryCount": 10
}Возвращает основную информацию о проекте базы знаний. Для этой операции требуется API-ключ проекта. Чтобы получить настройки проекта, используйте метод GET /projects/{projectId}/settings.
{- "id": 0,
- "name": "string",
- "status": "CREATED",
- "resources": {
- "llmModels": [
- "string"
]
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "indexingPriority": 1,
- "indexingRetryCount": 10
}Изменяет название проекта базы знаний. Для этой операции требуется административный API-ключ. Чтобы изменить настройки проекта, используйте метод POST /projects/{projectId}/settings.
| projectId required | integer <int64> (LongId) Идентификатор проекта базы знаний. |
| name required | string Название проекта. |
{- "name": "Справочная служба"
}{- "id": 0,
- "name": "string",
- "status": "CREATED",
- "resources": {
- "llmModels": [
- "string"
]
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "indexingPriority": 1,
- "indexingRetryCount": 10
}Удаляет проект базы знаний. Для этой операции требуется административный API-ключ.
| projectId required | integer <int64> (LongId) Идентификатор проекта базы знаний. |
{- "code": "string",
- "description": "string"
}Получение настроек проекта базы знаний. Для этой операции подойдет проектный или административный API-ключ.
Подробное описание настроек см. в документации.
| projectId required | integer <int64> (LongId) Идентификатор проекта базы знаний. |
{- "indexing": {
- "model": "string",
- "chunkingMethod": "string",
- "chunker": {
- "maxChunkSize": 0,
- "tokensSoftLimit": 0,
- "language": "string",
- "useForLargeTables": true
}, - "chunkMetadata": {
- "enrichChunks": true,
- "getImageDescriptions": true
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1
}, - "raptor": {
- "enabled": false,
- "scope": "per_document",
- "maxDepth": 3,
- "minChunksForRaptor": 10,
- "summarizationModel": "string",
- "summarizationMaxTokens": 1000,
- "retrievalStrategy": "collapsed_tree",
- "abacAccessPolicy": "union"
}
}, - "search": {
- "pipeline": "semantic",
- "retrieving": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "metadataSearch": true,
- "segmentSearchMode": "strict",
- "rephrase": {
- "rephraseQuery": true,
- "prompt": "Переформулируй запрос пользователя, сделав его более понятным, четким и структурированным."
}, - "fullTextSearch": {
- "enableFullTextSearch": true,
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "history": {
- "historyMaxMessages": 2,
- "historyMaxTokens": 0,
- "historyMinUserMessages": 0,
- "useHistory": true,
- "historyCondensePrompt": "Определи, является ли запрос \"{query_str}\" продолжением разговора \"{history_str}\". Если да, переформулируй запрос c учетом истории, добавив ее в виде контекста."
}
}, - "reranker": {
- "useReranker": true,
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "advanced": {
- "enableTabularPipeline": true
}, - "abbreviations": {
- "filename": "abbreviations.json",
- "rawData": "{\\n \\\"ИНН\\\" : {\\n \\\"name\\\" : \\\"Идентификационный номер налогоплательщика\\\",\\n \\\"variations\\\" : [ ],\\n \\\"description\\\" : \\\"Налоговый номер\\\"\\n }\\n}"
}
}, - "generation": {
- "prompt": "string",
- "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "showRelevantSources": true,
- "cache": {
- "enableCaching": true,
- "lifetime": "string"
}, - "advanced": {
- "tabularPromptAdjustment": "Придерживайся строгого и аналитического стиля изложения, избегай оценочных суждений и предположений."
}
}, - "notAppliedFields": [
- "string"
]
}Обновление настроек проекта базы знаний. Для этой операции подойдет проектный или административный API-ключ.
В запросе необходимо передать все настройки проекта, в том числе прежние значения для тех настроек, которые менять не требуется. Рекомендуем предварительно получить настройки с помощью метода GET /projects/{projectId}/settings.
Подробное описание настроек см. в документации.
| projectId required | integer <int64> (LongId) Идентификатор проекта базы знаний. |
required | object (ProjectIndexingSettingsDTO) Настройки индексации. Подробное описание см. в документации. |
required | object (ProjectSearchSettingsDTO) Настройки поиска чанков. Подробное описание см. в документации. |
required | object (ProjectGenerationSettingsDTO) Настройки генерации ответов. Подробное описание см. в документации. |
{- "indexing": {
- "model": "string",
- "chunkingMethod": "string",
- "chunker": {
- "maxChunkSize": 0,
- "tokensSoftLimit": 0,
- "language": "string",
- "useForLargeTables": true
}, - "chunkMetadata": {
- "enrichChunks": true,
- "getImageDescriptions": true
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1
}, - "raptor": {
- "enabled": false,
- "scope": "per_document",
- "maxDepth": 3,
- "minChunksForRaptor": 10,
- "summarizationModel": "string",
- "summarizationMaxTokens": 1000,
- "retrievalStrategy": "collapsed_tree",
- "abacAccessPolicy": "union"
}
}, - "search": {
- "pipeline": "semantic",
- "retrieving": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "metadataSearch": true,
- "segmentSearchMode": "strict",
- "rephrase": {
- "rephraseQuery": true,
- "prompt": "Переформулируй запрос пользователя, сделав его более понятным, четким и структурированным."
}, - "fullTextSearch": {
- "enableFullTextSearch": true,
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "history": {
- "historyMaxMessages": 2,
- "historyMaxTokens": 0,
- "historyMinUserMessages": 0,
- "useHistory": true,
- "historyCondensePrompt": "Определи, является ли запрос \"{query_str}\" продолжением разговора \"{history_str}\". Если да, переформулируй запрос c учетом истории, добавив ее в виде контекста."
}
}, - "reranker": {
- "useReranker": true,
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "advanced": {
- "enableTabularPipeline": true
}, - "abbreviations": {
- "filename": "abbreviations.json",
- "rawData": "{\\n \\\"ИНН\\\" : {\\n \\\"name\\\" : \\\"Идентификационный номер налогоплательщика\\\",\\n \\\"variations\\\" : [ ],\\n \\\"description\\\" : \\\"Налоговый номер\\\"\\n }\\n}"
}
}, - "generation": {
- "prompt": "string",
- "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "showRelevantSources": true,
- "cache": {
- "enableCaching": true,
- "lifetime": "string"
}, - "advanced": {
- "tabularPromptAdjustment": "Придерживайся строгого и аналитического стиля изложения, избегай оценочных суждений и предположений."
}
}
}{- "indexing": {
- "model": "string",
- "chunkingMethod": "string",
- "chunker": {
- "maxChunkSize": 0,
- "tokensSoftLimit": 0,
- "language": "string",
- "useForLargeTables": true
}, - "chunkMetadata": {
- "enrichChunks": true,
- "getImageDescriptions": true
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1
}, - "raptor": {
- "enabled": false,
- "scope": "per_document",
- "maxDepth": 3,
- "minChunksForRaptor": 10,
- "summarizationModel": "string",
- "summarizationMaxTokens": 1000,
- "retrievalStrategy": "collapsed_tree",
- "abacAccessPolicy": "union"
}
}, - "search": {
- "pipeline": "semantic",
- "retrieving": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "metadataSearch": true,
- "segmentSearchMode": "strict",
- "rephrase": {
- "rephraseQuery": true,
- "prompt": "Переформулируй запрос пользователя, сделав его более понятным, четким и структурированным."
}, - "fullTextSearch": {
- "enableFullTextSearch": true,
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "history": {
- "historyMaxMessages": 2,
- "historyMaxTokens": 0,
- "historyMinUserMessages": 0,
- "useHistory": true,
- "historyCondensePrompt": "Определи, является ли запрос \"{query_str}\" продолжением разговора \"{history_str}\". Если да, переформулируй запрос c учетом истории, добавив ее в виде контекста."
}
}, - "reranker": {
- "useReranker": true,
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "advanced": {
- "enableTabularPipeline": true
}, - "abbreviations": {
- "filename": "abbreviations.json",
- "rawData": "{\\n \\\"ИНН\\\" : {\\n \\\"name\\\" : \\\"Идентификационный номер налогоплательщика\\\",\\n \\\"variations\\\" : [ ],\\n \\\"description\\\" : \\\"Налоговый номер\\\"\\n }\\n}"
}
}, - "generation": {
- "prompt": "string",
- "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "showRelevantSources": true,
- "cache": {
- "enableCaching": true,
- "lifetime": "string"
}, - "advanced": {
- "tabularPromptAdjustment": "Придерживайся строгого и аналитического стиля изложения, избегай оценочных суждений и предположений."
}
}, - "notAppliedFields": [
- "string"
]
}Одиночные запросы на поиск чанков и генерацию ответов. Дополнительно можно передать в запросе историю сообщений.
Получение чанков, релевантных запросу пользователя, — только по корпусу этой базы знаний: по проиндексированным фрагментам документов-источников. Ни страницы вики, ни внешние MCP-источники этой операцией не читаются.
Отдает разрозненные чанки с оценкой релевантности и ссылкой на документ, из которого они взяты, — без структуры и без ответа на вопрос. По ним нельзя понять, чего в базе знаний нет: пустая выдача значит «ничего не совпало», а не «такой темы в корпусе не существует».
Смежные операции, если нужно другое:
| query required | string non-empty Текст пользовательского запроса. |
Array of objects (HistoryRecord) История диалога. Записи отображаются в обратном хронологическом порядке (от поздних к ранним). | |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
object (RetrievingSettings) Настройки поиска чанков. | |
| enableAgentTableProcessing | boolean Default: false Извлекать чанки из файлов CSV и XLSX с помощью LLM (может увеличить затраты). |
object Явное указание версии документа: ключ — идентификатор группы, объединяющей версии одного документа ( |
{- "query": "string",
- "history": [
- {
- "content": "string",
- "role": "user"
}
], - "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}
}, - "enableAgentTableProcessing": false,
- "versionOverrides": {
- "doc-42": "v3"
}
}{- "chunks": [
- {
- "score": 0.1,
- "content": "string",
- "docId": "string",
- "metadata": {
- "sourcePath": "string",
- "sourceUrl": "string",
- "segments": [
- "string"
]
}, - "source": {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}, - "chunkSource": "document"
}
], - "graphContext": "string",
- "graphEnrichment": { }
}Синхронный запрос на генерацию ответа на пользовательский запрос. Ответ пишет модель по фрагментам документов-источников этой базы знаний и больше ни по чему: ни страницы вики, ни внешние MCP-источники в генерацию не попадают. Возвращается текст модели и ссылки на документы, из которых он собран, — сам материал не возвращается.
Это вызов модели: он стоит токенов и времени. Если нужно найти, а не получить готовый текст, — это POST /retrieve по тому же корпусу.
Учитывайте, что обработка запроса может занимать значительное время. Убедитесь, что используемый вами HTTP-клиент имеет установленный таймаут соединения более 1 минуты.
Смежные операции: карта базы знаний — POST /wiki/toc; маршрут по вопросу — POST /context/route; пакет дословных фрагментов сразу из трех слоев — POST /context/build.
| query required | string non-empty Текст пользовательского запроса. |
Array of objects (HistoryRecord) История диалога. Записи отображаются в обратном хронологическом порядке (от поздних к ранним). | |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
object (RagSettings) Настройки обработки запроса. | |
object Явное указание версии документа: ключ — идентификатор группы, объединяющей версии одного документа ( |
{- "query": "string",
- "history": [
- {
- "content": "string",
- "role": "user"
}
], - "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}, - "versionOverrides": {
- "contract": "v2"
}
}{- "id": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}Асинхронный запрос на генерацию ответа на пользовательский запрос.
Получить результат можно методом GET /query/{queryId}, где queryId — идентификатор запроса, полученный в текущем ответе.
| query required | string non-empty Текст пользовательского запроса. |
Array of objects (HistoryRecord) История диалога. Записи отображаются в обратном хронологическом порядке (от поздних к ранним). | |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
object (RagSettings) Настройки обработки запроса. | |
object Явное указание версии документа: ключ — идентификатор группы, объединяющей версии одного документа ( |
{- "query": "string",
- "history": [
- {
- "content": "string",
- "role": "user"
}
], - "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}, - "versionOverrides": {
- "contract": "v2"
}
}{- "id": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}Запрос на генерацию ответа на пользовательский запрос с потоковой передачей результата через Server-Sent Events (SSE).
Ответ возвращается в формате SSE с типами событий:
start: начало обработки;chunk: фрагмент текста от LLM;done: завершение с полным ответом и метаданными;error: информация об ошибке.Убедитесь, что используемый вами HTTP-клиент поддерживает SSE и имеет установленный таймаут соединения более 1 минуты.
| query required | string non-empty Текст пользовательского запроса. |
Array of objects (HistoryRecord) История диалога. Записи отображаются в обратном хронологическом порядке (от поздних к ранним). | |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
object (RagSettings) Настройки обработки запроса. | |
object Явное указание версии документа: ключ — идентификатор группы, объединяющей версии одного документа ( |
{- "query": "string",
- "history": [
- {
- "content": "string",
- "role": "user"
}
], - "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}, - "versionOverrides": {
- "contract": "v2"
}
}{- "code": "string",
- "description": "string"
}Возвращает текущий статус обработки запроса на генерацию ответа.
Использует long-polling, если указан параметр waitTimeSeconds.
| queryId required | integer <int64> (LongId) Идентификатор запроса на генерацию ответа. |
| waitTimeSeconds | integer <int32> [ 0 .. 30 ] Default: 3 Время ожидания ответа в HTTP-запросе. Используется в long-polling. |
{- "id": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}| queryId required | integer <int64> (LongId) Идентификатор запроса на генерацию ответа. |
{- "id": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}| name | string Название пользовательского чата. |
object (RagSettings) Настройки обработки запроса. |
{- "name": "string",
- "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}
}{- "id": 0,
- "name": "string",
- "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}
}| chatId required | integer <int64> (LongId) Идентификатор чата. |
{- "id": 0,
- "name": "string",
- "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}
}Получение чанков, релевантных запросу пользователя, в рамках чата.
| chatId required | integer <int64> (LongId) Идентификатор чата. |
| query required | string non-empty Текст пользовательского запроса. |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
object (RetrievingSettings) Настройки поиска чанков. | |
| enableAgentTableProcessing | boolean Default: false Извлекать чанки из файлов CSV и XLSX с помощью LLM (может увеличить затраты). |
{- "query": "string",
- "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}
}, - "enableAgentTableProcessing": false
}{- "chunks": [
- {
- "score": 0.1,
- "content": "string",
- "docId": "string",
- "metadata": {
- "sourcePath": "string",
- "sourceUrl": "string",
- "segments": [
- "string"
]
}, - "source": {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}, - "chunkSource": "document"
}
], - "graphContext": "string",
- "graphEnrichment": { }
}Синхронный запрос на генерацию ответа на пользовательский запрос. При этом учитывается история сообщений в чате.
Учитывайте, что обработка запроса может занимать значительное время. Убедитесь, что используемый вами HTTP-клиент имеет установленный таймаут соединения более 1 минуты.
| chatId required | integer <int64> (LongId) Идентификатор чата. |
| query required | string non-empty Текст пользовательского запроса. |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
object (RagSettings) Настройки обработки запроса. |
{- "query": "string",
- "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}
}{- "id": 0,
- "chatId": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}Асинхронный запрос на генерацию ответа на пользовательский запрос. При этом учитывается история сообщений в чате.
Получить результат можно методом GET /chat/{chatId}/query/{queryId}, где queryId — идентификатор запроса, полученный в текущем ответе.
| chatId required | integer <int64> (LongId) Идентификатор чата. |
| query required | string non-empty Текст пользовательского запроса. |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
object (RagSettings) Настройки обработки запроса. |
{- "query": "string",
- "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "settings": {
- "pipeline": "semantic",
- "search": {
- "similarityTopK": 5,
- "candidateRadius": 10,
- "reranker": {
- "type": "manual",
- "minScore": -10,
- "maxChunksPerDocument": 10,
- "maxChunks": 1,
- "scoreReductionLimit": 40
}, - "fullTextSearch": {
- "strategy": "hybrid",
- "semanticPortion": 10,
- "ftsPortion": 1,
- "threshold": 1
}, - "rephraseUserQuery": {
- "prompt": "Прочитай историю диалога, переформулируй текущий вопрос пользователя с учетом истории, добавив ее в виде контекста. Сделай вопрос более понятным, четким и структурированным. Добавь к вопросу похожие запросы и заголовок, верни текст с заголовком."
}, - "segment": "string",
- "segments": [
- "Юридические документы",
- "include_without_segments"
], - "segmentSearchMode": "strict",
- "segmentCombineMode": "or",
- "segmentPredicates": [
- {
- "operator": "OR",
- "segments": [
- "documentation",
- "tutorial"
]
}, - {
- "operator": "NOT",
- "segments": [
- "deprecated"
]
}
]
}, - "llm": {
- "model": "string",
- "contextWindow": 4000,
- "maxTokens": 500,
- "temperature": 1,
- "topP": 1,
- "frequencyPenalty": -2,
- "presencePenalty": -2
}, - "responseGeneration": {
- "prompt": "string",
- "showRelevantSources": true
}
}
}{- "id": 0,
- "chatId": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}Возвращает текущий статус обработки запроса на генерацию ответа в пользовательском чате.
Использует long-polling, если указан параметр waitTimeSeconds.
| chatId required | integer <int64> (LongId) Идентификатор чата. |
| queryId required | integer <int64> (LongId) Идентификатор запроса на генерацию ответа. |
| waitTimeSeconds | integer <int32> [ 0 .. 30 ] Default: 3 Время ожидания ответа в HTTP-запросе. Используется в long-polling. |
{- "id": 0,
- "chatId": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}| chatId required | integer <int64> (LongId) Идентификатор чата. |
| queryId required | integer <int64> (LongId) Идентификатор запроса на генерацию ответа. |
{- "id": 0,
- "chatId": 0,
- "request": "string",
- "response": "string",
- "status": "READY_TO_PROCESS",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "comment": "string",
- "relevantSources": [
- {
- "id": 0,
- "title": "string",
- "sourceType": "FILE",
- "path": "string",
- "externalLink": "string",
- "segments": [
- "string"
]
}
], - "graphEnrichment": { }
}Возвращает информацию об источниках базы знаний. Поддерживает постраничный вывод. Максимальный размер страницы (pageSize) — 10 000. При вызове без параметров пагинации поведение аналогично предыдущей версии API (возврат до 10 000 записей).
| createDateFrom | string <date> Отбирать источники, добавленные начиная с указанной даты включительно. |
| createDateTo | string <date> Отбирать источники, добавленные до указанной даты включительно. |
| sourceStatus | string Отбирать источники с указанным статусом индексации. Возможные статусы:
|
| pageNum | integer <int32> >= 0 Default: 0 Порядковый номер страницы для постраничного вывода, начиная с 0. |
| pageSize | integer <int32> [ 1 .. 10000 ] Default: 10000 Размер страницы. Значение по умолчанию и максимально допустимое — 10 000. |
{- "sources": [
- {
- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}
], - "paging": {
- "totalCount": 0,
- "pageNum": 0,
- "pageSize": 0
}
}Загружает файл по ссылке и добавляет его в качестве источника в базу знаний. После добавления источника автоматически запускается его индексация.
| name | string Название источника. Должно содержать расширение файла и быть уникальным в рамках проекта. Если не указано, формируется автоматически. |
| link required | string Ссылка на файл. См. требования к файлам. Если по ссылке HTML-страница, загружается только HTML, без изображений. |
| segment | string Deprecated Сегмент (тег) базы знаний.
Параметр устарел. Используйте |
| segments | Array of strings Сегменты (теги) базы знаний. Источник будет доступен при поиске по этим сегментам. Длина названия сегмента — от 1 до 100 символов. В названиях не допускаются запятые. |
| accessControlAttributes | Array of strings Группы доступа, которым разрешен доступ к источнику. Если группы с указанным названием нет, она создается. Если группы доступа не назначены, источник доступен всем пользователям. |
{- "name": "filename.txt",
- "link": "string",
- "segment": "string",
- "segments": [
- "Кредитование",
- "Юридические документы"
], - "accessControlAttributes": [
- "department_hr",
- "role_manager"
]
}{- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}Заменяет источник с указанным названием, загружая файл по ссылке. После обновления источника автоматически запускается его индексация.
| name | string Название источника. Если в базе знаний нет источника с таким названием, возвращается ошибка. |
| link required | string Ссылка на файл. См. требования к файлам. Если по ссылке HTML-страница, загружается только HTML, без изображений. |
| segment | string Deprecated Сегмент (тег) базы знаний.
Параметр устарел. Используйте |
| segments | Array of strings Сегменты (теги) базы знаний. Источник будет доступен при поиске по этим сегментам. Длина названия сегмента — от 1 до 100 символов. В названиях не допускаются запятые. |
| accessControlAttributes | Array of strings Группы доступа, которым разрешен доступ к источнику. Если группы с указанным названием нет, она создается. Если значение не передано, группы доступа у источника не меняются (поведение обратно совместимо). Чтобы очистить группы доступа у источника, передайте пустой массив. |
{- "name": "string",
- "link": "string",
- "segment": "string",
- "segments": [
- "Кредитование",
- "Юридические документы"
], - "accessControlAttributes": [
- "department_hr",
- "role_manager"
]
}{- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}Добавляет переданный текст в качестве источника в базу знаний. После добавления источника автоматически запускается его индексация.
| name | string Название источника. Должно содержать расширение файла (например, |
| text required | string Текст источника. Максимальный размер указан в требованиях к файлам. |
| segment | string Deprecated Сегмент (тег) базы знаний.
Параметр устарел. Используйте |
| segments | Array of strings Сегменты (теги) базы знаний. Источник будет доступен при поиске по этим сегментам. Длина названия сегмента — от 1 до 100 символов. В названиях не допускаются запятые. |
| accessControlAttributes | Array of strings Группы доступа, которым разрешен доступ к источнику. Если группы с указанным названием нет, она создается. Если группы доступа не назначены, источник доступен всем пользователям. |
{- "name": "filename.txt",
- "text": "string",
- "segment": "string",
- "segments": [
- "Кредитование",
- "Юридические документы"
], - "accessControlAttributes": [
- "department_hr",
- "role_manager"
]
}{- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}Заменяет источник с указанным названием на переданный текст. После обновления источника автоматически запускается его индексация.
| name | string Название источника. Если в базе знаний нет источника с таким названием, возвращается ошибка. |
| text required | string Текст источника. Максимальный размер указан в требованиях к файлам. |
| segment | string Deprecated Сегмент (тег) базы знаний.
Параметр устарел. Используйте |
| segments | Array of strings Сегменты (теги) базы знаний. Источник будет доступен при поиске по этим сегментам. Длина названия сегмента — от 1 до 100 символов. В названиях не допускаются запятые. |
| accessControlAttributes | Array of strings Группы доступа, которым разрешен доступ к источнику. Если группы с указанным названием нет, она создается. Если значение не передано, группы доступа у источника не меняются (поведение обратно совместимо). Чтобы очистить группы доступа у источника, передайте пустой массив. |
{- "name": "string",
- "text": "string",
- "segment": "string",
- "segments": [
- "Кредитование",
- "Юридические документы"
], - "accessControlAttributes": [
- "department_hr",
- "role_manager"
]
}{- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}Добавляет переданный файл в качестве источника в базу знаний. После добавления источника автоматически запускается его индексация.
| file required | string <binary> Загружаемый файл. См. требования к файлам. |
| name | string Название источника. Должно содержать расширение файла и быть уникальным в рамках проекта. Если не указано, формируется автоматически. |
| segment | string Deprecated Сегмент (тег) базы знаний.
Параметр устарел. Используйте |
| segments | Array of strings Сегменты (теги) базы знаний. Источник будет доступен при поиске по этим сегментам. Длина названия сегмента — от 1 до 100 символов. В названиях не допускаются запятые. |
| accessControlAttributes | Array of strings Группы доступа, которым разрешен доступ к источнику. Если группы с указанным названием нет, она создается. Если группы доступа не назначены, источник доступен всем пользователям. |
{- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}Заменяет источник с указанным названием на переданный файл. После обновления источника автоматически запускается его индексация.
| file required | string <binary> Загружаемый файл. См. требования к файлам. |
| name | string Название источника. Если в базе знаний нет источника с таким названием, возвращается ошибка. |
| segment | string Deprecated Сегмент (тег) базы знаний.
Параметр устарел. Используйте |
| segments | Array of strings Сегменты (теги) базы знаний. Источник будет доступен при поиске по этим сегментам. Длина названия сегмента — от 1 до 100 символов. В названиях не допускаются запятые. |
| accessControlAttributes | Array of strings Группы доступа, которым разрешен доступ к источнику. Если группы с указанным названием нет, она создается. Если значение не передано, группы доступа у источника не меняются (поведение обратно совместимо). Чтобы очистить группы доступа у источника, передайте пустой массив. |
{- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}Возвращает информацию об источнике базы знаний.
| sourceId required | integer <int64> (LongId) Идентификатор источника. |
{- "id": 0,
- "name": "string",
- "segments": [
- "string"
], - "status": "string",
- "lastError": "string",
- "version": "string",
- "sizeBytes": 0,
- "sizeChars": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "type": "FILE",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "hash": "sha256:abcd1234ef5678…",
- "documentGroupId": "doc-42",
- "documentVersion": "v3",
- "isDefaultVersion": true,
- "versionDescription": "Изменены пункты 4.1 и 4.2"
}Возвращает текст, извлеченный из источника при индексации, — тот же, по которому построены чанки. Позволяет прочитать документ целиком, когда найденных фрагментов не хватает: например, дойти от страницы вики до первоисточника по идентификатору из поля sources ответа POST /wiki/page.
Текст лежит в поле content в том виде, в каком его дал разбор (для большинства форматов это Markdown), и совпадает с содержимым, которое ушло на индексацию.
Если распаршенного текста нет — источник не разбирался или его содержимое нетекстовое (например, изображение), — ответ приходит с contentAvailable: false, и вместо текста в content лежит пояснение с метаданными файла. Двоичное содержимое этот метод не отдает никогда: исходный файл как есть скачивается методом GET /sources/{sourceId}/download.
Источник, который еще не проиндексирован, а также источник чужого проекта и страница вики отвечают 404. Страницы вики читаются методом POST /wiki/page.
Метод учитывает группы доступа (access control attributes): документ, которому они назначены, этим методом не читается и отвечает 404 — тем же ответом, что и несуществующий идентификатор, так что по отказу нельзя понять, есть ли такой источник.
| sourceId required | integer <int64> (LongId) Идентификатор источника. |
{- "sourceId": 0,
- "name": "regulations/order-118.pdf",
- "parsedFileName": "order-118.pdf.md",
- "sizeBytes": 254013,
- "sizeChars": 18422,
- "contentAvailable": true,
- "content": "string"
}Добавление новой интеграции в базу знаний. Индексация запускается автоматически после загрузки данных при создании интеграции и при автоматической синхронизации, если она включена.
| name required | string Название интеграции. |
| returnUrl | string URL для перенаправления пользователя после OAuth-авторизации.
Применяется для интеграций с Confluence Cloud, Google Диском, OneDrive, Sharepoint, Яндекс Диском.
К адресу добавляется query-параметр |
| autoSync | boolean Признак необходимости автоматически синхронизировать данные. |
| downloadAttachmentFiles | boolean Признак необходимости загружать прикрепленные к страницам файлы в допустимых форматах, см. требования к файлам. Эта настройка не влияет на загрузку изображений: они загружаются всегда. |
| syncIntervalMinutes | integer Период обновления в минутах. Не менее 30 минут. |
| accessControlAttributes | Array of strings Группы доступа, которым разрешен доступ к источникам из этой интеграции. Если группы с указанным названием нет, она создается. Если группы доступа не назначены, источники доступны всем пользователям. |
required | object (IntegrationSettings) Настройки интеграции. |
{- "name": "string",
- "autoSync": true,
- "downloadAttachmentFiles": true,
- "syncIntervalMinutes": 0,
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "settings": {
- "baseUrl": "string"
}
}{- "id": 0,
- "name": "string",
- "autoSync": true,
- "syncIntervalMinutes": 0,
- "settings": {
- "baseUrl": "string"
}, - "status": "ACTIVE",
- "lastError": "string",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "lastSuccessfulSyncAt": "2019-08-24T14:15:22Z"
}{- "integrations": [
- {
- "id": 0,
- "name": "string",
- "autoSync": true,
- "syncIntervalMinutes": 0,
- "settings": {
- "baseUrl": "string"
}, - "status": "ACTIVE",
- "lastError": "string",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "lastSuccessfulSyncAt": "2019-08-24T14:15:22Z"
}
]
}Возвращает информацию об интеграции.
| integrationId required | integer <int64> (LongId) Идентификатор интеграции. |
{- "id": 0,
- "name": "string",
- "autoSync": true,
- "syncIntervalMinutes": 0,
- "settings": {
- "baseUrl": "string"
}, - "status": "ACTIVE",
- "lastError": "string",
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "lastSuccessfulSyncAt": "2019-08-24T14:15:22Z"
}Возвращает список сегментов (тегов) базы знаний с фильтрацией по названию и постраничным выводом.
| pageNum | integer <int32> >= 0 Default: 0 Порядковый номер страницы для постраничного вывода, начиная с 0. |
| pageSize | integer <int32> [ 1 .. 10000 ] Default: 20 Размер страницы. |
| name | string Фильтр по названию. Поиск выполняется по подстроке без учета регистра. |
{- "segments": [
- {
- "name": "string",
- "sourcesCount": 0
}
], - "paging": {
- "totalCount": 0,
- "pageNum": 0,
- "pageSize": 0
}
}Меняет название сегмента (тега) во всех источниках, которые относятся к этому сегменту.
| oldName required | string Текущее название сегмента. |
| newName required | string Новое название сегмента. От 1 до 100 символов. В названии не допускаются запятые. |
{- "oldName": "Право",
- "newName": "Юридические документы"
}{- "updatedFileIds": [
- 0
]
}Для каждого источника добавляет указанные сегменты (теги) в список сегментов, к которым относится источник.
| sourceIds required | Array of integers <int64> (LongId) [ items <int64 > ] Идентификаторы источников. Если не указаны, изменения будут применены ко всем источникам в базе знаний. |
| segments required | Array of strings Сегменты, которые нужно привязать к источникам. Длина названия сегмента — от 1 до 100 символов. В названиях не допускаются запятые. |
{- "sourceIds": [
- 0
], - "segments": [
- "Кредитование",
- "Юридические документы"
]
}{- "updatedFileIds": [
- 0
]
}Для каждого источника удаляет указанные сегменты (теги) из списка сегментов, к которым относится источник. Если у источника отсутствует удаляемый сегмент, он игнорируется.
| sourceIds required | Array of integers <int64> (LongId) [ items <int64 > ] Идентификаторы источников. |
| segments required | Array of strings Сегменты, которые нужно отвязать от источников. |
{- "sourceIds": [
- 0
], - "segments": [
- "Кредитование",
- "Юридические документы"
]
}{- "updatedFileIds": [
- 0
]
}Запускает индексацию базы знаний с автоматическим подбором настроек по ее содержимому. Автонастройка выполняется без оценки качества.
Возвращает идентификатор операции, по которому можно получить ее статус и результат методом GET /autoconfig/status/{operationId}.
При отсутствии тела запроса используются значения по умолчанию.
| graphPolicy | string (AutoConfigGraphPolicy) Default: "IF_USEFUL" Enum: "NEVER" "IF_USEFUL" "ALWAYS" Использовать ли граф знаний:
|
| preset | string (AutoConfigPreset) Default: "balanced" Enum: "fast" "balanced" "quality" Вариант автонастройки:
|
| useType | string (AutoConfigUseType) Default: "single" Enum: "dialog" "single" Сценарий использования базы знаний — влияет на подбор настроек генерации:
|
{- "graphPolicy": "NEVER",
- "preset": "fast",
- "useType": "dialog"
}{- "operationId": "string",
- "status": "PENDING",
- "phase": "PENDING",
- "terminal": true,
- "progress": { },
- "lastError": "string"
}Останавливает выполняющуюся операцию автонастройки по ее идентификатору, полученному при запуске.
Метод идемпотентен: для уже завершенной операции возвращается ее текущий статус, а не ошибка.
Отмена операции также останавливает индексацию документов, которую эта операция запустила: документы выходят из очереди на разбор и индексацию, поэтому сразу после отмены можно запустить автонастройку заново. Уже проиндексированные документы из индекса не удаляются.
Отмена индексации базы знаний также останавливает операцию автонастройки, если она выполняется.
| operationId required | string Идентификатор операции автонастройки, полученный при запуске. |
{- "operationId": "string",
- "status": "PENDING",
- "phase": "PENDING",
- "terminal": true,
- "progress": { },
- "lastError": "string"
}Возвращает текущий статус операции автонастройки по ее идентификатору, полученному при запуске.
Для завершенных операций поле terminal равно true.
| operationId required | string Идентификатор операции автонастройки, полученный при запуске. |
{- "operationId": "string",
- "status": "PENDING",
- "phase": "PENDING",
- "terminal": true,
- "progress": { },
- "lastError": "string"
}Создает новый API-ключ для проекта базы знаний. Для этой операции требуется административный API-ключ.
| projectId required | integer <int64> (LongId) Идентификатор проекта базы знаний. |
| name required | string Название API-ключа. |
| expiredAt | string <date-time> Дата и время окончания действия API-ключа. Если значение не указано, будет создан бессрочный ключ. |
{- "name": "Для сайта и приложений",
- "expiredAt": "2019-08-24T14:15:22Z"
}{- "id": 0,
- "projectId": 0,
- "name": "string",
- "key": "string",
- "status": "string",
- "ownerLogin": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "expiredAt": "2019-08-24T14:15:22Z",
- "lastUsedAt": "2019-08-24T14:15:22Z"
}Возвращает список API-ключей для проекта базы знаний. Для этой операции требуется административный API-ключ.
| projectId required | integer <int64> (LongId) Идентификатор проекта базы знаний. |
| pageNum | integer <int32> >= 0 Default: 0 Порядковый номер страницы для постраничного вывода, начиная с 0. |
| pageSize | integer <int32> [ 1 .. 10000 ] Default: 20 Размер страницы. |
| onlyActive | boolean Default: false Возвращать только активные API-ключи. |
{- "content": [
- {
- "id": 0,
- "projectId": 0,
- "name": "string",
- "key": "string",
- "status": "string",
- "ownerLogin": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "expiredAt": "2019-08-24T14:15:22Z",
- "lastUsedAt": "2019-08-24T14:15:22Z"
}
], - "paging": {
- "totalCount": 0,
- "pageNum": 0,
- "pageSize": 0
}
}Деактивирует API-ключ проекта базы знаний. Для этой операции требуется административный API-ключ.
| projectId required | integer <int64> (LongId) Идентификатор проекта базы знаний. |
| apiKeyId required | integer <int64> (LongId) Идентификатор API-ключа. |
{- "id": 0,
- "projectId": 0,
- "name": "string",
- "key": "string",
- "status": "string",
- "ownerLogin": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "expiredAt": "2019-08-24T14:15:22Z",
- "lastUsedAt": "2019-08-24T14:15:22Z"
}Запускает асинхронную генерацию (или перегенерацию) вики базы знаний. Доступно, если в настройках проекта включена LLM-вики и установлен ручной режим запуска.
Возвращает идентификатор операции, по которому можно получить ее статус методом GET /wiki/status/{operationId}.
| strategy | string Зарезервировано для будущего использования. |
{- "strategy": "string"
}{- "operationId": "string",
- "status": "string",
- "progress": "string",
- "error": "string"
}Возвращает состояние генерации вики проекта, не требуя идентификатора операции: идущий прогон, а если активного нет — последний завершённый. Если прогонов не было ни одного, поле operationId отсутствует, а status равен NONE. Для этой операции требуется API-ключ проекта.
Дополняет GET /wiki/status/{operationId}, который отвечает по конкретной операции и работает по-прежнему. Эта ручка нужна вызывающему, который идентификатор потерял (перезагрузка страницы) или не получал вовсе.
{- "operationId": "string",
- "status": "string",
- "progress": "string",
- "error": "string"
}Возвращает статус генерации вики по идентификатору операции, полученному при запуске.
| operationId required | string Идентификатор операции генерации вики, полученный при запуске. |
{- "operationId": "string",
- "status": "string",
- "progress": "string",
- "error": "string"
}Возвращает постраничный список страниц вики.
Страницы отбираются с учетом переданных в accessSettings групп доступа: если группы не указаны, возвращаются только страницы без ограничений доступа.
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |
| pageNum | integer <int32> >= 0 Default: 0 Порядковый номер страницы для постраничного вывода, начиная с 0. |
| pageSize | integer <int32> [ 1 .. 10000 ] Default: 20 Размер страницы. |
| name | string Фильтр по названию страницы. Поиск выполняется по подстроке без учета регистра. |
| sort | string Default: "title" Enum: "title" "updatedAt" "path" Поле сортировки. |
| direction | string Default: "asc" Enum: "asc" "desc" Направление сортировки. |
{- "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}, - "pageNum": 0,
- "pageSize": 20,
- "name": "string",
- "sort": "title",
- "direction": "asc"
}{- "content": [
- {
- "id": "string",
- "path": "string",
- "title": "string",
- "type": "string",
- "summary": "string",
- "external": false,
- "externalIntegrationId": 0,
- "externalPartial": true,
- "externalLastSurveyedAt": "string",
- "sources": [
- 0
], - "updatedAt": "string",
- "markdown": "string"
}
], - "paging": {
- "totalCount": 0,
- "pageNum": 0,
- "pageSize": 0
}
}Возвращает оглавление вики в виде дерева.
Страницы отбираются с учетом переданных в accessSettings групп доступа.
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры | |||||||
| |||||||
{- "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}
}{- "nodes": [
- {
- "pageId": "string",
- "title": "string",
- "summary": "string",
- "order": 0,
- "external": false,
- "externalIntegrationId": 0,
- "externalPartial": false,
- "externalPartialReasons": [
- {
- "code": "string",
- "detail": "string"
}
], - "externalRefreshFailed": false,
- "externalRefreshFailure": {
- "code": "string",
- "detail": "string"
}, - "externalRefreshFailedAt": "string",
- "externalLastSurveyedAt": "string",
- "children": [
- { }
]
}
], - "stats": {
- "sections": 0,
- "pages": 0,
- "documents": 0
}
}Возвращает страницу вики вместе с ее содержимым в формате Markdown.
Если страница недоступна с учетом переданных в accessSettings групп доступа, возвращается ответ 404.
| pageId required | string Адрес страницы вики в любой из печатных форм платформы: |
object (AccessSettings) Настройки для фильтрации источников. Если указаны параметры |
{- "pageId": "string",
- "accessSettings": {
- "accessControlAttributes": [
- "department_hr",
- "role_manager"
], - "integrationId": 0,
- "externalUserId": "string"
}
}{- "id": "string",
- "path": "string",
- "title": "string",
- "type": "string",
- "summary": "string",
- "external": false,
- "externalIntegrationId": 0,
- "externalPartial": true,
- "externalLastSurveyedAt": "string",
- "sources": [
- 0
], - "updatedAt": "string",
- "markdown": "string"
}Параметры подключения агента к базе знаний — плагин Claude Code и MCP-сервер Knowledge Hub.
Значения зависят от инсталляции, поэтому команды подключения собираются из ответа, а не хранятся в клиенте константами. API-ключ для операции не нужен.
Возвращает все, из чего собираются две команды подключения агента к базе знаний этой инсталляции: установка плагина Claude Code и запуск MCP-сервера вручную — для любого другого MCP-клиента.
Значения задаются администратором инсталляции, поэтому клиент должен брать их из ответа, а не хранить константами. Образ сервера и адрес инсталляции здесь те же, что в раздаваемом плагине, — две команды не могут указать на разные сборки.
Операция не требует API-ключа: ее читают до того, как ключ появился, и она не содержит ни секретов, ни данных проектов. Сам ключ проекта в ответ не входит — передаются только имена настройки и переменной окружения, в которые его нужно подставить.
{- "name": "khub",
- "image": "docker-hub.just-ai.com/components/knowledge-hub-mcp-release:trunk-latest",
- "port": 8000,
- "path": "/mcp",
- "projectTokenEnv": "KHUB_PROJECT_API_TOKEN",
- "projectApiKeyName": "agent-wiki",
- "plugin": {
- "marketplaceName": "khub",
- "name": "khub",
- "baseUrlConfigKey": "base_url",
- "projectTokenConfigKey": "project_token"
}
}Контекстное API: маршрутизация вопроса по базе знаний и сборка пакета материала для агента.
Тела операций не содержат accessSettings: фильтр доступа выводится из типа ключа, которым
сделан запрос, и вызывающий не может его расширить.
По тексту вопроса возвращает указатели на то, где искать ответ: страницы вики, документы под ними и корневые страницы описей внешних источников. Ответа на вопрос операция не дает и содержимого не отдает — только адреса, заголовки и обоснования, по которым выбирают, куда идти дальше.
Отбор делает модель. Ей показывают узлы оглавления вики (заголовок и аннотация) и имена документов-источников под ними; она называет те единицы, которые нужны для этого вопроса, и пишет обоснования. Это всегда один вызов модели: операция не мгновенная, и ее расход начисляется на базу знаний.
Лексического запасного пути нет. Если ранжирование не настроено, модель не отвечает или не
укладывается в отведенное время — операция отдает ЯВНУЮ ошибку (khub.context.ranking_not_configured
— 500, khub.context.ranking_failed — 503, khub.context.ranking_timed_out — 504), а не
выдачу худшего качества.
Законных пустых ответов ДВА, и они различимы по mapStatus:
pointers пуст, mapStatus.wikiBuilt равен false, rankedBy
отсутствует, расход нулевой: модель не вызывалась;pointers пуст, но mapStatus.wikiBuilt равен true,
mapStatus.note это называет, rankedBy заполнен, candidatesSent и usage не нулевые, и в
warnings есть строка об этом. Это 200, а не ошибка: ранкер отработал, повтор того же вопроса на
той же модели даст то же самое.Любое сокращение названо: inputTruncated и candidatesSent/candidatesTotal — если часть базы
знаний не поместилась в потолок входа, selectionTruncated и selectedTotal — если отбор не
поместился в limit, и warnings — словами, включая случай, когда отбор сделала модель
инсталляции, а не запрошенная.
Фильтр доступа выводится из типа ключа: accessSettings в теле нет и передать его нельзя.
| query required | string Вопрос пользователя, как он задан. |
| limit | integer <int32> Сколько указателей вернуть. По умолчанию 25, потолок 50 — значение выше потолка приводится к нему, а не отвергается. |
{- "query": "string",
- "limit": 0
}{- "pointers": [
- {
- "type": "string",
- "handle": "string",
- "title": "string",
- "why": "string",
- "whySource": "string",
- "preview": "string",
- "freshness": "string",
- "coverage": 0.1,
- "externalPartial": false,
- "externalPartialReasons": [
- {
- "code": "string",
- "detail": "string"
}
], - "externalRefreshFailed": false,
- "externalRefreshFailure": {
- "code": "string",
- "detail": "string"
}, - "externalRefreshFailedAt": "string",
- "externalLastSurveyedAt": "string",
- "deepen": "string"
}
], - "mapStatus": {
- "wikiBuilt": true,
- "note": "string"
}, - "rankedBy": "string",
- "rankedByOwner": "string",
- "candidatesTotal": 0,
- "candidatesSent": 0,
- "inputTruncated": true,
- "selectedTotal": 0,
- "selectionTruncated": true,
- "warnings": [
- "string"
], - "usage": {
- "promptTokens": 0,
- "completionTokens": 0
}
}Собирает под вопрос пакет материала: бюджетированный цикл читает страницы вики, документы под
ними и допущенные внешние источники, отбирает фрагменты и снабжает каждый провенансом, по
которому его можно перепроверить. В отличие от route, операция отдает содержимое.
Прогон стоит денег и времени: расход держится в объявленном бюджете, дедлайн сервер приводит к
своим границам (по умолчанию 90 сек, потолок 120 сек, пол 60 сек; ниже пола — 400
khub.context.deadline_too_short, потому что такой прогон не может начаться). async: true —
прогон уходит в фон, ответ 202 несет operationId, результат читается операцией ниже
тем же ключом, которым запущен.
Неполный результат — это ответ, а не ошибка. Прогон, который не уложился в бюджет или дедлайн,
отдает то, что успел, с заполненным degraded.reason; прогон, не собравший ничего, отдает выдачу
route — указатели на то, где искать, — с тем же degraded.reason. Ошибка сказала бы
вызывающему о базе знаний меньше, чем карта.
Пустая карта прогон не отменяет. Если ранкер не выбрал ни одного адреса, build все равно
запускается: указатели — это якоря, они и по умолчанию не подаются, а базу знаний цикл читает
сам. В ответе тогда pointers пуст и mapStatus.wikiBuilt равен true с пояснением в
mapStatus.note — ровно то же, что отдал бы route.
pointers по умолчанию не подаются циклу: замер показал, что указатель работает якорем и
сужает исследование (покрытие падает на 0,10–0,14). Подавать стоит там, где вызывающий сам называет
адрес. В ответе pointers присутствуют всегда, независимо от режима подачи.
Поданный адрес разбирается кодом и никогда не отбрасывается молча. Формы адреса:
вид:идентификатор, вид:идентификатор:локатор и голый идентификатор. Адрес, не разобранный ни в
одной из них, — 400 khub.context.handle_unresolved с перечнем форм в теле; разобранный, но
неизвестный, чужой или невидимый этому ключу — 404 без пояснений (неизвестное и недоступное отвечают
одинаково).
Фильтр доступа выводится из типа ключа: accessSettings в теле нет и передать его нельзя.
| query required | string Вопрос пользователя, как он задан. |
object (ContextBuildBudget) Потолки прогона. Оба необязательны. Запрос выше потолка приводится к потолку — вызывающий, попросивший больше, не сделал ошибки, ради которой стоит отказывать в чтении; дедлайн ниже пола отклоняется, потому что такой прогон не может начаться. | |
| pointers | Array of strings Адреса из |
| async | boolean Отдать 202 с |
{- "query": "string",
- "budget": {
- "maxTokens": 0,
- "deadlineSeconds": 0
}, - "pointers": [
- "string"
], - "async": true
}{- "operationId": "3051932a-fdd2-48fa-b330-7e7d41535969",
- "status": "string",
- "fragments": [
- {
- "n": 0,
- "text": "string",
- "provenance": {
- "handle": "string",
- "sourceKind": "string",
- "locator": "string",
- "score": 0.1,
- "scoreKind": "string",
- "fingerprint": "string"
}, - "why": "string",
- "whySource": "string"
}
], - "pointers": [
- {
- "type": "string",
- "handle": "string",
- "title": "string",
- "why": "string",
- "whySource": "string",
- "preview": "string",
- "freshness": "string",
- "coverage": 0.1,
- "externalPartial": false,
- "externalPartialReasons": [
- {
- "code": "string",
- "detail": "string"
}
], - "externalRefreshFailed": false,
- "externalRefreshFailure": {
- "code": "string",
- "detail": "string"
}, - "externalRefreshFailedAt": "string",
- "externalLastSurveyedAt": "string",
- "deepen": "string"
}
], - "mapStatus": {
- "wikiBuilt": true,
- "note": "string"
}, - "degraded": {
- "reason": "string"
}, - "usage": {
- "promptTokens": 0,
- "completionTokens": 0
}, - "manifest": {
- "stopReason": "string",
- "stopDetail": "string",
- "curation": {
- "missing": true,
- "missingReason": "string",
- "distinctWhy": 0
}, - "retrieveProjection": {
- "supplied": true,
- "source": "string"
}
}
}Отдает состояние прогона и, когда он завершен, собранный пакет.
Читается только тем ключом, которым запущен (keyId + проект): пакет — производный артефакт,
собранный под фильтр доступа своего создателя, и второй ключ того же проекта может держать другие
атрибуты. Чужой, неизвестный и истекший прогон отвечают одинаково — 404, и различить их нельзя.
Строка прогона живет ограниченное время (по умолчанию час после завершения), после чего убирается.
| operationId required | string <uuid> Идентификатор прогона из ответа 202. |
{- "operationId": "3051932a-fdd2-48fa-b330-7e7d41535969",
- "status": "string",
- "fragments": [
- {
- "n": 0,
- "text": "string",
- "provenance": {
- "handle": "string",
- "sourceKind": "string",
- "locator": "string",
- "score": 0.1,
- "scoreKind": "string",
- "fingerprint": "string"
}, - "why": "string",
- "whySource": "string"
}
], - "pointers": [
- {
- "type": "string",
- "handle": "string",
- "title": "string",
- "why": "string",
- "whySource": "string",
- "preview": "string",
- "freshness": "string",
- "coverage": 0.1,
- "externalPartial": false,
- "externalPartialReasons": [
- {
- "code": "string",
- "detail": "string"
}
], - "externalRefreshFailed": false,
- "externalRefreshFailure": {
- "code": "string",
- "detail": "string"
}, - "externalRefreshFailedAt": "string",
- "externalLastSurveyedAt": "string",
- "deepen": "string"
}
], - "mapStatus": {
- "wikiBuilt": true,
- "note": "string"
}, - "degraded": {
- "reason": "string"
}, - "usage": {
- "promptTokens": 0,
- "completionTokens": 0
}, - "manifest": {
- "stopReason": "string",
- "stopDetail": "string",
- "curation": {
- "missing": true,
- "missingReason": "string",
- "distinctWhy": 0
}, - "retrieveProjection": {
- "supplied": true,
- "source": "string"
}
}
}Вызывает один допущенный инструмент внешнего MCP-источника и отдает его ответ фрагментами, каждый — с провенансом, по которому вызов воспроизводится.
Порядок отказов: источника нет у этого проекта — 404, тот же, что у несуществующего идентификатора; инструмент не подтвержден администратором, аргументы не подходят под сохраненную схему или нарушают ограничения — 400 с названием инструмента. Проверка идет по схеме, сохраненной в момент подтверждения, а не по живой декларации источника: живая могла измениться после того, как человек принял решение.
Аргументы проходят как есть — JQL с кириллицей, wildcard-предикаты, fields-проекции.
Платформа их не нормализует и не переписывает.
Отказ, пришедший от исполнителя вызова, доезжает до вызывающего своим кодом khub.context.*,
своим сообщением и своими аргументами, под своим статусом: 400 с названием инструмента и перечнем
допустимых имен аргументов, 415 с типом и размером бинарного ответа.
Каждый вызов пишется в аудит с полными аргументами.
| integrationId required | integer <int64> Идентификатор источника. Чужой и неизвестный отвечают одинаково — 404. |
| tool required | string Имя инструмента. Вызвать можно только инструмент, подтвержденный администратором. |
| cursor | string Продолжить с той страницы, которую назвал предыдущий ответ. Отсутствие — первая страница. Вызов с курсором обходит кэш дедупликации: «следующая страница» — по определению не тот ответ, который был закэширован для первой. |
required | object Аргументы инструмента. Проходят к источнику как есть: платформа их не нормализует. Проверяются по схеме, сохраненной при подтверждении инструмента. |
{- "integrationId": 0,
- "tool": "string",
- "cursor": "string",
- "args": { }
}{- "tool": "string",
- "fragments": [
- {
- "n": 0,
- "text": "string",
- "provenance": { }
}
], - "truncated": true,
- "cursor": "string",
- "fingerprint": {
- "sha256": "string",
- "retrievedAt": "string",
- "tool": "string",
- "argsHash": "string"
}
}Возвращает список групп доступа в аккаунте. Для этой операции требуется административный API-ключ.
| pageNum | integer <int32> >= 0 Default: 0 Порядковый номер страницы для постраничного вывода, начиная с 0. |
| pageSize | integer <int32> [ 1 .. 10000 ] Default: 20 Размер страницы. |
| name | string <= 100 characters Example: name=HR Отбирать группы доступа по названию. Поиск выполняется по подстроке без учета регистра. |
| projectIds | Array of integers <int64> [ items <int64 > ] Example: projectIds=1,2,3 Отбирать группы доступа, назначенные хотя бы одному источнику в одном из указанных проектов. Идентификаторы проектов указываются через запятую. |
{- "content": [
- {
- "id": 0,
- "name": "string",
- "filesCount": 0,
- "integrationsCount": 0,
- "audit": {
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": 0,
- "updatedAt": "2019-08-24T14:15:22Z",
- "updatedBy": 0
}
}
], - "paging": {
- "totalCount": 0,
- "pageNum": 0,
- "pageSize": 0
}
}Возвращает детальную информацию о группе доступа с постраничным выводом источников. Для этой операции требуется административный API-ключ.
| attributeId required | integer <int64> (LongId) Идентификатор группы доступа. |
| pageNum | integer <int32> >= 0 Default: 0 Порядковый номер страницы для постраничного вывода, начиная с 0. |
| pageSize | integer <int32> [ 1 .. 10000 ] Default: 20 Размер страницы. |
| filename | string Отбирать источники по названию. Поиск выполняется по подстроке без учета регистра. |
| projectIds | string Отбирать источники из указанных проектов. Идентификаторы проектов указываются через запятую. |
| segments | string Отбирать источники из указанных сегментов. Сегменты указываются через запятую. |
{- "attribute": {
- "id": 0,
- "name": "string",
- "filesCount": 0,
- "integrationsCount": 0,
- "audit": {
- "createdAt": "2019-08-24T14:15:22Z",
- "createdBy": 0,
- "updatedAt": "2019-08-24T14:15:22Z",
- "updatedBy": 0
}
}, - "files": [
- {
- "filename": "employee_handbook.pdf",
- "projectName": "HR Knowledge Base",
- "projectId": 123,
- "segments": [
- "HR",
- "Policies"
]
}
], - "paging": {
- "totalCount": 0,
- "pageNum": 0,
- "pageSize": 0
}
}Возвращает все чанки, полученные из источника при индексации, в том числе описания изображений (если эта опция включена) и суммаризации (если построены по отдельным документам).
| sourceId required | integer <int64> (LongId) Идентификатор источника. |
{- "items": [
- {
- "id": "string",
- "docId": "string",
- "chunkNumber": 0,
- "content": "string",
- "summary": "string",
- "questions": [
- "string"
], - "keywords": [
- "string"
], - "segments": [
- "string"
], - "metadata": {
- "property1": "string",
- "property2": "string"
}, - "raptorLevel": 0,
- "isRaptorSummary": true,
- "accessControlAttributes": [
- "string"
]
}
]
}Возвращает данные чанка. Работает, только если идентификатор чанка не содержит /. Для поиска чанка по идентификатору в любом формате используйте GET /chunks/lookup.
| sourceId required | integer <int64> (LongId) Идентификатор источника. |
| chunkId required | string Идентификатор чанка (без |
{- "id": "string",
- "docId": "string",
- "chunkNumber": 0,
- "content": "string",
- "summary": "string",
- "questions": [
- "string"
], - "keywords": [
- "string"
], - "segments": [
- "string"
], - "metadata": {
- "property1": "string",
- "property2": "string"
}, - "raptorLevel": 0,
- "isRaptorSummary": true,
- "accessControlAttributes": [
- "string"
]
}Возвращает данные чанка. Принимает идентификатор в любом формате, в том числе устаревшем (с /, из логов версии до версии AP-2026.1).
| id required | string Идентификатор чанка (любой формат). |
{- "id": "string",
- "docId": "string",
- "chunkNumber": 0,
- "content": "string",
- "summary": "string",
- "questions": [
- "string"
], - "keywords": [
- "string"
], - "segments": [
- "string"
], - "metadata": {
- "property1": "string",
- "property2": "string"
}, - "raptorLevel": 0,
- "isRaptorSummary": true,
- "accessControlAttributes": [
- "string"
]
}Возвращает структуру дерева суммаризаций (RAPTOR — Recursive Abstractive Processing for Tree-Organized Retrieval) документа-источника, если построены суммаризации по отдельным документам.
Структура не включает тексты суммаризаций: используйте GET /sources/{sourceId}/chunks/{chunkId} или GET /chunks/lookup для получения текста.
| sourceId required | integer <int64> (LongId) Идентификатор источника. |
{- "hasRaptor": true,
- "maxLevel": 0,
- "totalNodes": 0,
- "summaryNodes": 0,
- "leafNodes": 0,
- "nodes": [
- {
- "id": "string",
- "docId": "string",
- "chunkNumber": 0,
- "raptorLevel": 0,
- "isRaptorSummary": true,
- "childrenIds": [
- "string"
], - "parentId": "string"
}
]
}Возвращает структуру дерева суммаризаций (RAPTOR — Recursive Abstractive Processing for Tree-Organized Retrieval) всей базы знаний или всех документов-источников — в зависимости от режима построения суммаризаций.
Структура не включает тексты суммаризаций.
Объем данных может быть большим для проектов со множеством источников.
{- "items": [
- {
- "sourceId": 0,
- "tree": {
- "hasRaptor": true,
- "maxLevel": 0,
- "totalNodes": 0,
- "summaryNodes": 0,
- "leafNodes": 0,
- "nodes": [
- {
- "id": "string",
- "docId": "string",
- "chunkNumber": 0,
- "raptorLevel": 0,
- "isRaptorSummary": true,
- "childrenIds": [
- "string"
], - "parentId": "string"
}
]
}
}
]
}