O recurso de perguntas e respostas baseadas em texto recupera conteúdo de uma base de conhecimento e executa consultas textuais. Há suporte para conversas de múltiplas rodadas, permitindo especificar um ID de sessão para manter o contexto da conversa. Além disso, é possível escolher diferentes modelos de linguagem grandes (LLMs) para gerar respostas e personalizar o conteúdo gerado.
Pré-requisitos
Obtenha uma chave de API para autenticar chamadas ao OpenSearch - LLM Intelligent Q&A Edition. Para mais informações, consulte {{XREF_0}}.
Obtenha um endpoint de service para realizar chamadas ao OpenSearch - LLM Intelligent Q&A Edition. Para mais informações, consulte {{XREF_1}}.
Esta operação foi projetada para chamadas no lado do servidor. Recomendamos que você não a chame diretamente de ambientes de frontend, como navegadores, páginas H5, mini programas ou aplicativos, por dois motivos. Primeiro, a autenticação da operação utiliza Authorization: Bearer <API Key>, e a chave de API é uma credencial de longo prazo. Se você a incluir no código de frontend, ela ficará exposta aos usuários finais, com risco de roubo. Segundo, a operação geralmente não oferece suporte a compartilhamento de recursos de origem cruzada (CORS) em navegadores, portanto, chamadas diretas do frontend provavelmente serão bloqueadas. Armazene a chave de API em seu próprio servidor, faça as chamadas a partir dele e retorne os resultados para o frontend.
Informações da operação
|
Método de solicitação |
Protocolo de solicitação |
Formato dos dados de solicitação |
|
POST |
HTTP |
JSON |
URL da solicitação
{
"request_id": "e579a090bf99dc787d29d878b40c8367",
"status": "FAIL",
"errors": [
{"code": 3005, "message": "topN[51] is not in (0, 50]"}
]
}
{host}: o endpoint do service. Você pode chamar a API pela Internet ou por uma virtual private cloud (VPC). Para mais informações, consulte {{XREF_2}}.{app_group_identity}: o nome do aplicativo. Faça login no console do OpenSearch LLM-Based Conversational Search Edition e visualize o nome do aplicativo da instância correspondente na página de gerenciamento de instâncias.
Parâmetros de solicitação
Parâmetros de cabeçalho
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
Content-Type |
string |
Sim |
Especifica o tipo de mídia do corpo da solicitação. Deve ser "application/json". |
application/json |
|
Authorization |
string |
Sim |
Sua chave de API, prefixada com "Bearer ". |
Bearer OS-d1**2a |
|
accept |
string |
Não |
Defina como "text/event-stream" para receber respostas em streaming usando Server-Sent Events (SSE). |
text/event-stream |
Parâmetros do corpo
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Valor de exemplo |
|
question |
map |
Sim |
A pergunta de entrada. |
{ "text":"user question", "type": "TEXT", "session" : "" } |
|
question.text |
string |
Sim |
O conteúdo textual da pergunta do usuário. |
user question |
|
question.session |
string |
Não |
Um ID de sessão que identifica o contexto de uma conversa de múltiplas rodadas. Valores válidos:
|
1725530408586 |
|
question.type |
string |
Não |
O tipo da pergunta de entrada. Defina como |
TEXT |
|
options |
map |
Não |
Parâmetros opcionais para controlar configurações como recuperação, seleção de modelo e prompts. |
|
|
options.chat |
map |
Não |
Parâmetros para acessar um Modelo de Linguagem Grande (LLM). |
|
|
options.chat.disable |
boolean |
Não |
Especifica se o acesso ao LLM deve ser desativado.
|
false |
|
options.chat.stream |
boolean |
Não |
Define se a resposta em streaming deve ser ativada.
|
true |
|
options.chat.model |
string |
Não |
O Modelo de Linguagem Grande (LLM) a ser utilizado. Valores válidos: Asia Pacific SE 1 (Singapore)
|
opensearch-llama2-13b |
|
options.chat.enable_deep_search |
boolean |
Não |
Especifica se o {{XREF_3}} deve ser ativado.
|
false |
|
options.chat.model_generation |
integer |
Não |
Especifica a versão do modelo a ser usada para um modelo de product personalizado. Se você não especificar esse parâmetro, o sistema usará a versão mais antiga por padrão. |
20 |
|
options.chat.prompt_template |
string |
Não |
O nome de um modelo de prompt personalizado. Se este parâmetro estiver vazio, o sistema usará seu modelo de prompt integrado por padrão. |
user_defined_prompt_name |
|
options.chat.prompt_config |
object |
Não |
Os pares chave-valor para configurar um prompt personalizado. O parâmetro deve estar no seguinte formato:
|
|
|
options.chat.prompt_config.attitude |
string |
Não |
Um parâmetro para o modelo de prompt integrado que controla o tom da resposta. O valor padrão é
|
normal |
|
options.chat.prompt_config.rule |
string |
Não |
Controla o nível de detalhe da resposta. O valor padrão é
|
detailed |
|
options.chat.prompt_config.noanswer |
string |
Não |
A resposta a ser retornada quando o sistema não conseguir responder à pergunta. O valor padrão é
|
sorry |
|
options.chat.prompt_config.language |
string |
Não |
O idioma a ser usado na resposta. O valor padrão é
|
Chinese |
|
options.chat.prompt_config.role |
boolean |
Não |
Especifica se uma persona personalizada deve ser ativada para a resposta. Se você definir como |
false |
|
options.chat.prompt_config.role_name |
string |
Não |
O nome da persona personalizada. Por exemplo: AI Assistant. |
AI Assistant |
|
options.chat.prompt_config.out_format |
string |
Não |
O formato do conteúdo de saída. O valor padrão é
|
text |
|
options.chat.generate_config.repetition_penalty |
float |
Não |
Controla a penalidade por repetição em sequências de tokens gerados. Um valor maior reduz a probabilidade de repetição. Um valor de |
1,01 |
|
options.chat.generate_config.top_k |
integer |
Não |
O número de tokens de maior probabilidade a serem considerados para amostragem. Por exemplo, um valor de |
50 |
|
options.chat.generate_config.top_p |
float |
Não |
O limiar de probabilidade cumulativa para amostragem de núcleo. Por exemplo, um valor de |
0,5 |
|
options.chat.generate_config.temperature |
float |
Não |
Controla a aleatoriedade e a diversidade do texto gerado. Uma temperatura mais alta achata a distribuição de probabilidade dos tokens candidatos, permitindo que o modelo escolha tokens menos prováveis e tornando a saída mais diversa. Um valor mais baixo aguça a distribuição, tornando mais provável que o modelo selecione tokens de alta probabilidade e a saída seja mais determinística. Intervalo de valores: [0, 2). Não defina este parâmetro como 0. python version >=1.10.1 java version >= 2.5.1 |
0,7 |
|
options.chat.history_max |
integer |
Não |
O número máximo de rodadas a serem retidas no histórico de uma conversa de múltiplas rodadas. O valor máximo é 20. O valor padrão é 1. |
20 |
|
options.chat.link |
boolean |
Não |
Especifica se citações de source devem ser incluídas na resposta. Valores válidos:
A seguir, um exemplo de resposta que contém citações:
Os números entre |
false |
|
options.chat.rich_text_strategy |
string |
Não |
A estratégia de pós-processamento para a saída de um {{XREF_4}}. Se este parâmetro estiver vazio ou não for especificado, o processamento de rich text é desativado por padrão.
|
inside_response |
|
options.chat.agent |
map |
Não |
Especifica opções para as capacidades de uso de ferramentas do agente RAG. Quando ativado, o modelo decide se deve executar uma ferramenta com base no conteúdo disponível. Os LLMs que atualmente suportam este recurso são:
|
|
|
options.chat.agent.think_process |
boolean |
Não |
Especifica se o processo de pensamento do agente deve ser retornado. |
true |
|
options.chat.agent.max_think_round |
integer |
Não |
O número máximo de rodadas de pensamento para o agente. O valor não pode exceder 20. |
10 |
|
options.chat.agent.language |
string |
Não |
O idioma para o processo de pensamento e a resposta final.
|
AUTO |
|
options.chat.agent.tools |
list of string |
Não |
As ferramentas RAG que o agente pode usar. Estão disponíveis as seguintes ferramentas:
|
["knowledge_search"] |
|
options.retrieve |
map |
Não |
Especifica parâmetros que controlam o processo de recuperação. |
|
|
options.retrieve.web_search.enable |
boolean |
Não |
Define se a busca na web deve ser ativada.
|
false |
|
doc |
map |
Não |
Especifica parâmetros relacionados à recuperação de documentos. |
|
|
options.retrieve.doc.disable |
boolean |
Não |
Especifica se a recuperação da base de conhecimento deve ser desativada.
|
false |
|
options.retrieve.doc.filter |
string |
Não |
Uma expressão de filtro para selecionar dados para recuperação da base de conhecimento. Se não for especificado, nenhum filtro será aplicado. Para exemplos de sintaxe, consulte {{XREF_5}}. Campos suportados:
Formato de exemplo:
|
category=\"value1\" |
|
options.retrieve.doc.sf |
float |
Não |
O limiar de pontuação para recuperação baseada em vetores.
|
0,35 |
|
options.retrieve.doc.top_n |
integer |
Não |
O número de documentos a serem recuperados. O valor deve estar no intervalo (0, 50]. O valor padrão é 5. |
5 |
|
options.retrieve.doc.formula |
string |
Não |
Uma fórmula de classificação personalizada para documentos recuperados. Nota
Para detalhes de sintaxe, consulte {{XREF_6}}. Os recursos de Relevância Algorítmica e Relevância Geográfica não são suportados. |
-timestamp: Classifica documentos em ordem decrescente pelo campo timestamp. |
|
options.retrieve.doc.rerank_size |
integer |
Não |
O número de documentos a serem reclassificados quando o recurso de rerank está ativado. O valor deve estar no intervalo (0, 100]. O valor padrão é 30. |
30 |
|
options.retrieve.doc.operator |
string |
Não |
A relação entre os termos resultantes da tokenização de
|
AND |
|
options.retrieve.doc.dense_weight |
float |
Não |
Quando vetores esparsos estão ativados, este parâmetro controla o peso do vetor denso durante a recuperação de documentos. O valor deve estar no intervalo (0,0, 1,0). O valor padrão é 0,7. |
0,7 |
|
options.retrieve.entry |
map |
Não |
Especifica parâmetros para recuperar resultados de dados de intervenção manual. |
|
|
options.retrieve.entry.disable |
boolean |
Não |
Define se a recuperação de dados de intervenção manual deve ser desativada.
|
false |
|
options.retrieve.entry.sf |
float |
Não |
O limiar de pontuação vetorial para recuperar dados de intervenção manual. O intervalo de valores é |
0,3 |
|
options.retrieve.image |
map |
Não |
Especifica parâmetros para recuperar resultados de imagens da base de conhecimento. |
|
|
options.retrieve.image.disable |
boolean |
Não |
Especifica se a recuperação de imagens deve ser desativada. O valor padrão é
|
false |
|
options.retrieve.image.sf |
float |
Não |
O limiar de pontuação para recuperação de vetores de imagem.
|
1,0 |
|
options.retrieve.image.dense_weight |
float |
Não |
Quando vetores esparsos estão ativados, este parâmetro controla o peso do vetor denso durante a recuperação de imagens. O valor deve estar no intervalo (0,0, 1,0). O valor padrão é 0,7. |
0,7 |
|
options.retrieve.qp |
map |
Não |
Especifica opções para reescrita de consulta. |
|
|
options.retrieve.qp.query_extend |
boolean |
Não |
Define se a consulta do usuário deve ser expandida. O mecanismo de busca usa a consulta expandida para recuperar trechos de documentos.
|
false |
|
options.retrieve.qp.query_extend_num |
integer |
Não |
Quando a expansão de consulta está ativada, este parâmetro especifica o número máximo de consultas adicionais a serem geradas. O valor padrão é 5. |
5 |
|
options.retrieve.rerank |
map |
Não |
Especifica opções para reclassificar documentos recuperados. |
|
|
options.retrieve.rerank.enable |
boolean |
Não |
Especifica se um modelo deve ser usado para reclassificar os resultados da busca por relevância. Valores válidos:
|
true |
|
options.retrieve.rerank.model |
string |
Não |
O nome do modelo grande a ser usado para reclassificação.
|
ops-bge-reranker-larger |
|
options.retrieve.return_hits |
boolean |
Não |
Especifica se os resultados da recuperação de documentos devem ser retornados, que correspondem ao objeto |
false |
Corpo da solicitação
{
"request_id": "e579a090bf99dc787d29d878b40c8367",
"status": "FAIL",
"errors": [
{"code": 3005, "message": "topN[51] is not in (0, 50]"}
]
}
Parâmetros principais:
Use
question.sessionpara ativar o contexto de conversa de múltiplas rodadas.Defina
options.chat.disablecomotruepara ignorar o LLM e retornar resultados de recuperação.Use
options.retrieve.doc.top_npara especificar o número de documentos recuperados. O padrão é 5.Defina
options.retrieve.return_hitscomotruepara retornar o conteúdo detalhado desearch_hits.
Parâmetros de resposta
|
Parâmetro |
Tipo |
Descrição |
|
request_id |
string |
Identificador único da solicitação. Inclua este valor nas solicitações de suporte. |
|
status |
string |
O status de processamento da solicitação.
|
|
latency |
float |
Tempo de processamento do servidor em milissegundos. Retornado apenas quando a solicitação é bem-sucedida. |
|
id |
integer |
A chave primária. |
|
title |
string |
Título do documento. |
|
category |
string |
Nome da categoria. |
|
url |
string |
URL do documento. |
|
answer |
string |
A resposta gerada. |
|
type |
string |
Tipo de resultado. |
|
scores |
array |
Pontuações de relevância do documento. |
|
event |
string |
O tipo de evento de streaming. Uma rodada de pensamento inclui eventos |
|
event_status |
string |
Indica se o evento está completo.
|
|
code |
string |
O código de erro. Retornado apenas quando ocorre um erro. |
|
message |
string |
A mensagem de erro. Retornada apenas quando ocorre um erro. |
Exemplo de corpo de resposta
Resposta bem-sucedida
{
"request_id": "e579a090bf99dc787d29d878b40c8367",
"status": "FAIL",
"errors": [
{"code": 3005, "message": "topN[51] is not in (0, 50]"}
]
}
Resposta de erro
{
"request_id": "e579a090bf99dc787d29d878b40c8367",
"status": "FAIL",
"errors": [
{"code": 3005, "message": "topN[51] is not in (0, 50]"}
]
}