Chamando uma extensão customizada
Uma extensão é uma integração com um serviço externo. Ao chamar uma extensão a partir de uma ação, seu assistente de IA pode enviar solicitações ao serviço externo e receber dados de resposta que poderá usar na conversa.
Por exemplo, pode-se usar uma extensão para interagir com um sistema de abertura de chamados ou de gerenciamento de relacionamento com o cliente (CRM) ou para recuperar dados em tempo real, como taxas de hipoteca ou condições meteorológicas. Os dados de resposta da extensão ficam então disponíveis como variáveis de ação, que seu assistente de IA pode usar na conversa.
Para obter informações sobre como construir uma extensão customizada, consulte Construir uma extensão customizada.
Chamando a extensão de uma etapa
Para chamar uma extensão customizada por meio de uma ação:
No editor de ação, crie ou abra a etapa da qual deseja chamar a extensão.
Opcional: no campo Assistant says (O assistente diz ), digite uma mensagem a ser exibida ao cliente antes de o ramal ser chamado (por exemplo, "
Please wait while I retrieve your account balance...).
A saída dessa etapa é enviada ao canal com a variável de contexto global ' skip_user_input definida como ' true. Essa variável instrui o canal a exibir a mensagem, mas _não_ a solicitar uma resposta do cliente. Em vez disso, o canal envia uma mensagem vazia, permitindo que o assistente de IA prossiga com a chamada para o ramal.
Todas as integrações de canal incorporadas (como o bate-papo na Web) respeitam a variável de contexto " skip_user_input. Se você estiver usando a API para desenvolver um cliente personalizado, é sua responsabilidade incluir a verificação lógica dessa variável. Para obter mais informações, consulte Processamento da entrada do usuário.
No editor de etapa, clique em E depois.
Clique em Usar uma extensão.
Na janela Configuração de extensão, especifique as informações a seguir:
No campo Extensão, selecione a extensão que deseja chamar.
No campo Operação, selecione a operação que deseja executar. (Uma _operação_ é um método ou função suportada pela extensão.)
Especificar valores para cada um dos parâmetros de entrada necessários. Um _parâmetro_ é um valor de entrada enviado a uma operação, como o ID de um registro de cliente que você deseja recuperar ou a localização a ser usada para uma previsão do tempo.
Para designar um valor a um parâmetro, clique no campo de entrada para o valor. É possível selecionar na lista de variáveis disponíveis ou gravar uma expressão para especificar o valor.

Cada parâmetro possui um tipo de dados (como _number_ ou _string_). A variável selecionada deve ser compatível com o tipo de dados do parâmetro; para obter mais informações, consulte Variáveis compatíveis para parâmetros.
Você deve especificar valores para todos os parâmetros necessários antes de continuar.
Para especificar um valor para quaisquer parâmetros opcionais, clique em Parâmetros opcionais. Em seguida, é possível repetir esse processo para cada parâmetro opcional que deseja usar.
Clique em Aplicar. (Se o botão Aplicar não estiver disponível, certifique-se de ter especificado valores para todos os parâmetros necessários.)
Agora a seção E depois do editor de etapa mostra uma visão geral da chamada para a extensão:

Para fazer mudanças, clique em Editar extensão para reabrir a janela Configuração de extensão.
Variáveis compatíveis para parâmetros
Para passar um valor de parâmetro de entrada para uma operação, você deve selecionar uma variável de ação ou variável de sessão compatível.
Uma variável de ação contém um valor que se baseia em uma resposta do cliente em uma etapa anterior. Uma variável de sessão pode ter um valor baseado em uma resposta do cliente ou um valor definido por uma expressão. (Para obter mais informações sobre variáveis de ação e variáveis de sessão, consulte “Usando variáveis para gerenciar informações de conversação ”.)
Quando você atribui um valor a um parâmetro, a variável escolhida deve ser compatível com o tipo de dados do parâmetro. (Por exemplo, um parâmetro _number_ deve receber um valor numérico, e não texto.)
A tabela a seguir mostra os possíveis tipos de resposta ao cliente e tipo de dados do parâmetro compatíveis com cada um.
Tipo de resposta ao cliente | Tipos de dados compatíveis | Notas |
|---|---|---|
opções |
| Uma opção selecionada é sempre tratada como uma sequência, mesmo que seja um valor numérico. |
número |
| Um número de vírgula flutuante transmitido como o valor para um parâmetro |
data |
| As datas são renderizadas como |
horário |
| Os horários são renderizado como |
Moeda |
| |
Porcentagem |
| Um valor percentual é transmitido como um número inteiro (assim |
Texto livre |
| |
Expressão regular |
|
Matrizes
Além dos tipos de resposta do cliente compatíveis, uma variável também pode conter um valor de matriz. Se você precisar passar um parâmetro de matriz para uma operação, deverá criar uma variável de sessão de matriz:
Crie uma nova variável de sessão, usando Definir valores de variável no editor de etapas ou na página Variáveis > Criadas por você. (Para obter mais informações sobre como criar uma variável de sessão, consulte Criação de uma variável de sessão)
No campo Type (Tipo ), selecione Any (Qualquer).
No campo " Valor inicial, clique no botão de alternância " Usar expressão para ativá-lo. Digite uma expressão que defina um valor de matriz (como '
["New York", "London", "Tokyo"], '[123, 456, 789]ou '[]).
Como essa variável contém um valor de matriz, suas ações podem usar expressões com métodos de matriz para acessar ou modificar os valores da matriz. Por exemplo, você pode querer criar uma variável que inicialmente contenha uma matriz vazia ([]) e, em seguida, usar o método ' add() para criar uma lista com um elemento de cada vez. Para obter mais informações sobre os métodos de matriz que você pode usar em expressões, consulte Métodos de matriz.
Agora você pode selecionar essa variável como o valor de um parâmetro que requer uma matriz.
Acessando dados de resposta de extensão
Após chamar uma extensão, os valores dos dados de resposta são armazenados em variáveis de ação especiais que podem ser acessadas em etapas subsequentes.
É possível acessar essas variáveis da mesma maneira que você acessa outras variáveis de ação. Elas podem ser referenciadas no texto Assistente diz, avaliadas como parte de uma condição de etapa ou designadas a uma variável de sessão para que outras ações possam acessá-las. As variáveis de resposta são mostradas na lista de variáveis disponíveis, categorizadas sob o nome da extensão e a etapa da qual foram chamadas:

Cada chamada para uma extensão cria um conjunto separado de variáveis de resposta. Se a ação chamar a mesma extensão várias vezes de etapas diferentes, certifique-se de selecionar as variáveis da etapa correta.
Cada variável representa um valor do corpo de resposta. Para facilitar o acesso a esses valores, os dados são extraídos de objetos complexos, aninhados e mapeados para variáveis de resposta individuais. O nome de cada variável reflete sua localização dentro do corpo de resposta (por exemplo, body.name ou body.customer.address.zipcode).
Por exemplo, esta etapa de ação usa uma expressão para verificar a propriedade availability em uma resposta de extensão:

Se uma variável de resposta contiver uma matriz, você poderá escrever uma expressão que use métodos de matriz para acessar os elementos da matriz. Por exemplo, você pode usar o contains() método em uma condição de etapa para verificar se a matriz contém um determinado valor, ou o join() método para formatar os dados da matriz como uma string que possa ser incluída na resposta de um assistente de IA. Para obter mais informações sobre métodos de matriz, consulte Métodos de matriz.
Verificando o sucesso ou a falha
Talvez você queira que seu assistente de IA seja capaz de lidar com erros que ocorrem ao chamar uma extensão personalizada. Você pode fazer isso verificando a variável Ran successfully de resposta que é retornada junto com a resposta da chamada à extensão. Essa variável é um valor booleano (true ou false).
Se você definir condições de etapa que verifiquem a Ran successfully variável, poderá criar etapas que permitam ao seu assistente de IA responder de maneira diferente, dependendo do sucesso ou não da chamada para o ramal. (Para obter mais informações sobre condições de etapa, consulte Condições de etapa.)
O exemplo a seguir mostra uma condição de etapa que verifica uma falha de uma extensão na etapa 3. Usando essa condição, é possível criar uma etapa que informe ao cliente que houve um erro e que ofereça uma conexão com um agente para o cliente obter mais ajuda.

Condicionamento do status HTTP
Além da variável Ran successfully, talvez você também queira criar uma condição de etapa com base no status HTTP da resposta. Ao fazer isso, você pode criar etapas que tratam a situação de forma diferente, dependendo da causa da falha. Por exemplo, se a chamada falhar devido a um erro de tempo limite ( HTTP status 408), talvez você queira tentar novamente a chamada.
Existem muitos códigos de status HTTP possíveis, e métodos diferentes usam códigos de status diferentes para indicar vários tipos de sucesso ou falha. Para condicionar o status HTTP, você precisa saber quais códigos de status HTTP o serviço externo retorna e em que circunstâncias. Esses códigos de status são normalmente especificados no documento OpenAPI que descreve a API externa.
Para criar uma condição de etapa com base no código de status HTTP, siga estas etapas:
Para o valor que você deseja testar, clique em Expression (Expressão).
No campo de expressão, digite um sinal de dólar (
$) para mostrar a lista de variáveis disponíveis.Selecione qualquer variável que seja um valor de resposta da extensão. (Não importa qual variável é selecionada, contanto que seja uma variável de resposta de extensão).
A expressão é atualizada automaticamente para mostrar uma referência à variável selecionada no formato ${step_xxx_result_y.body.variablename}. Por exemplo, se você selecionou uma variável de resposta chamada body.id, a referência poderá ser ${step_596_result_1.body.id}.
Dentro das chaves, (
{}), edite essa referência para remover.body.variablename. O resultado deve ser algo como${step_596_result_1}.Após a chave de fechamento (
}), inclua.status. A referência resultante identifica o código de status retornado da chamada para a extensão (por exemplo,${step_596_result_1}.status).
Para obter mais informações sobre a gravação de expressões, consulte Gravando expressões.
Complete a expressão adicionando um operador e um valor de comparação, para que a expressão seja avaliada como um valor booleano (verdadeiro/falso). Por exemplo, a expressão a seguir testa o status 408 do site HTTP, que indica um erro de tempo limite:
${step_549_result_1}.status==408
Falhas na depuração da extensão personalizada
Se as suas chamadas para uma extensão estiverem falhando, talvez você queira depurar o problema vendo informações detalhadas sobre o que está sendo enviado e retornado da API do sistema. Para fazer isso, você pode usar o Inspector no painel Preview:
Vá para a página Actions (Ações) ou para o editor de ações e clique em Preview (Visualizar ) para abrir o painel Preview (Visualizar).
Não é possível acessar o Inspector a partir da visualização do assistente de IA na página de visualização, que mostra apenas o que um cliente veria. Em vez disso, use o recurso de visualização que faz parte da página Ações, que lhe dá acesso a informações adicionais.
Interaja com seu assistente de IA como um cliente faria.
Sempre que um ramal é chamado, o painel de visualização mostra uma mensagem que lhe dá acesso a informações detalhadas:
Clique em Inspect (Inspecionar ) para ver detalhes sobre a chamada para o ramal.
Você também pode clicar no
ícone para mostrar ou ocultar o Inspetor. Entretanto, você deve clicar em Inspect (Inspecionar ) no painel de visualização para mostrar informações sobre uma chamada específica para um ramal.
A guia Overview (Visão geral ) do Inspector mostra as seguintes informações sobre uma chamada para um ramal:
Opção de depuração | Descrição |
|---|---|
Extensão | O nome da extensão, conforme especificado nas configurações da extensão. |
Operação | A operação que foi chamada. |
Status | O código de status HTTP da resposta. Esse código pode ajudá-lo a determinar se um erro está sendo retornado do serviço externo. |
Parâmetros de solicitação | Os parâmetros de entrada que foram enviados à API do sistema como parte da solicitação. |
Propriedades de resposta | Os valores de todas as propriedades incluídas na resposta da API do sistema. Esses são os valores mapeados para as variáveis de ação após a conclusão da chamada para o ramal. |
Nas tabelas Request parameters (Parâmetros de solicitação ) e Response properties (Propriedades de resposta ), nomes longos de propriedades podem ser truncados para mostrar apenas a última parte do caminho JSON. Para ver o caminho completo e o nome da propriedade, passe o ponteiro do mouse sobre o nome da propriedade na tabela.
Clique na guia Advanced (Avançado ) no inspetor de extensão se quiser ver os dados brutos de solicitação e resposta:
A solicitação é exibida como um comando ` cURL `, que você pode executar em uma linha de comando ou importar para uma ferramenta como o Postman. (Por motivos de segurança, o conteúdo de qualquer cabeçalho '
Authorizationnão é incluído)A resposta é mostrada como os dados JSON completos retornados da API do sistema.
Falhas de depuração para pesquisa de conversação ou ações baseadas em habilidades
Se suas chamadas para a pesquisa de conversação ou ações baseadas em habilidades falharem, talvez você queira depurar o problema vendo as informações detalhadas sobre o que está sendo enviado e retornado da API do sistema.
O inspetor de pesquisa de conversação é exibido somente quando a pesquisa de conversação está ativada em sua integração de pesquisa. Se estiver usando a integração de pesquisa do serviço personalizado, você deverá usar somente a pesquisa no lado do servidor ao configurar a integração de pesquisa. A pesquisa no lado do cliente não é compatível com o inspetor de pesquisa de conversação.
Para ver as informações detalhadas para analisar o problema, use o Inspector no painel Preview:
Vá para a página Ações ou, no editor de ações, clique em Visualizar para abrir o painel Visualizar.
Não é possível acessar o Inspetor a partir da visualização do assistente de IA na página de Visualização. Em vez disso, use o recurso de visualização que faz parte da página Ações, que lhe dá acesso a informações adicionais.
Interaja com seu assistente de IA como um cliente faria.
Sempre que uma extensão é chamada, o painel de visualização exibe uma mensagem para acessar as informações detalhadas:
Você também pode clicar no
ícone para mostrar ou ocultar o inspetor de extensões. Clique em Inspect (Inspecionar ) no painel de visualização para mostrar informações sobre uma chamada específica para a integração de pesquisa.
Use a guia Overview (Visão geral ) para encontrar os motivos da falha de suas chamadas para a Pesquisa de Conversação.
Entenda as duas fases da extensão de pesquisa antes de conhecer os campos que são exibidos na guia Overview (Visão geral ).
Fase de recuperação
: Representa a fase inicial da pesquisa, na qual um mecanismo de pesquisa de documentos externo é acionado para recuperar o conjunto inicial de resultados.
Fase de geração de respostas
: Representa a fase em que os dados são recuperados e enviados a um LLM para gerar uma resposta legível para o usuário.
A guia Overview (Visão geral) do Inspector mostra as seguintes informações sobre a chamada para a integração de pesquisa.
Opção de depuração | Descrição |
|---|---|
Extensão | O nome da extensão, conforme especificado nas configurações da extensão. |
Index | O nome do índice Elasticsearch usado pela pesquisa, visível somente quando a extensão de pesquisa estiver configurada para usar Elasticsearch. |
ID do Projeto | O ID do projeto utilizado pelo site IBM Watson Discovery durante a fase de recuperação dos resultados da pesquisa. Este campo fica visível apenas quando você configura a extensão de pesquisa para usar IBM Watson Discovery. |
Consulta | A consulta utilizada pelo sistema para iniciar a pesquisa no mecanismo de documentos ( Elasticsearch, IBM, Watson Discovery ou serviço personalizado do lado do servidor). O valor desse campo reflete a consulta reescrita do sistema. |
Consulta original | A consulta por meio da qual o usuário iniciou a pesquisa. Esse campo fica visível somente quando o sistema reescreve a consulta quando a pesquisa de conversação em várias etapas está ativada. |
Filtro de resultados personalizado | Mostra o filtro de resultados personalizado, se fornecido no acionador de pesquisa, que acionou a pesquisa de conversação. Esse campo pode não aparecer sempre nas respostas. |
Tipo de LLM | O LLM que foi chamado durante a fase de geração de respostas. Esse valor é watsonx.ai. Para saber mais sobre como configurar o LLM no seu assistente de IA, consulte Base LLM. |
Modelo | O modelo usado pelo LLM básico durante a fase de geração de respostas da pesquisa. |
Motivo do fechamento do fluxo | Fornece o motivo pelo qual o fluxo terminou ou foi fechado com um valor correspondente na interface do usuário. Esse campo fica visível somente quando você ativa o streaming no Web Chat. |
Contagem de tokens de entrada do LLM | Fornece o número de tokens na solicitação que foi enviada ao LLM na fase de geração de respostas da pesquisa. |
Contagem de tokens gerados pelo LLM | Fornece o número de tokens na resposta que o LLM responde, na fase de geração de resposta da pesquisa. |
Resposta do IDK | Esse campo fica visível somente quando a resposta da pesquisa é resolvida com uma resposta IDK (I don't know). |
Não sei o motivo | Um motivo pelo qual uma resposta de pesquisa foi resolvida com uma resposta IDK (não sei) pelo sistema é mostrado com o valor correspondente. |
Frase de abertura do gatilho IDK | O campo mostra a frase de abertura padrão detectada que acionou uma resposta IDK (I don't know), visível apenas quando o motivo do IDK se deve a essa frase. |
Frase de gatilho IDK | O campo exibe a frase de gatilho detectada que causou uma resposta IDK (I don't know), visível somente quando o motivo do IDK se deve a essa frase. |
Tempo total para retorno | O tempo total que o sistema levou para concluir a execução da pesquisa de conversação. |
Horário de procura | O tempo que o sistema leva para chamar o mecanismo de pesquisa e recuperar os resultados na fase de recuperação da pesquisa. |
Tempo de geração de respostas | O tempo que o sistema leva para concluir a fase de geração de respostas da pesquisa. |
Limite de confiança | Um valor numérico que representa o limite de confiança da pesquisa, também conhecido como “Tendência a responder ‘Não sei’” na configuração do assistente de IA. |
Extratividade | A pontuação reflete o quanto da resposta é citada diretamente das fontes. Uma pontuação mais alta indica uma citação mais direta e uma pontuação mais baixa indica uma reformulação da fonte ou falta de apoio da fonte. |
Confiança de recuperação | O valor de confiança indica o grau de certeza que o sistema tem sobre os resultados da pesquisa. Se estiver abaixo do limite, o sistema responderá com IDK e o motivo Retrieval confidence too low (Confiança de recuperação muito baixa). |
Confiança na resposta | O valor de confiança indica a certeza do sistema em relação à resposta gerada. Se estiver abaixo do limite, o sistema responderá com IDK e o motivo ' |
A guia Advanced mostra as seguintes informações sobre a chamada para a integração da pesquisa.
Opção de depuração | Descrição |
|---|---|
Solicitação cURL | O comando cURL que é usado para replicar a solicitação ao mecanismo de pesquisa na fase de recuperação da pesquisa. O comando cURL não inclui nenhum cabeçalho de autenticação ou detalhes relacionados. Você pode incluir as informações no comando. |
JSON de resposta | A resposta JSON bruta que o sistema recebe do mecanismo de pesquisa na fase de recuperação da pesquisa. |
Resultados da procura | Os resultados da pesquisa que são enviados ao LLM para a geração de respostas. |
Reconfiguração de uma extensão ausente
Uma extensão pode ficar indisponível se alguém a remover do assistente de IA na página Integrações, ou se a ação for exportada e depois importada para um assistente de IA diferente, no qual a extensão necessária não esteja configurada. Se isso acontecer, qualquer etapa de ação que chame a extensão se tornará inválida.
Para corrigir o problema, siga estas etapas:
Se necessário, recrie a extensão usando a mesma especificação OpenAPI que foi usada anteriormente. (Para obter mais informações, consulte “Criação de uma extensão personalizada ”.)
Certifique-se de que a extensão foi adicionada ao assistente de IA. (Para obter mais informações, consulte Adicionar uma extensão ao seu assistente.)
No editor de ações, edite a etapa de ação que chama o ramal e verifique se a chamada para o ramal está configurada corretamente. Se o assistente de IA reconhecer a extensão necessária, a configuração da extensão será restaurada automaticamente.
Se você vir a mensagem Extension not fully configured, isso significa que o criador de assistentes de IA não encontrou a extensão necessária. Clique em “Editar extensão ”.
Na janela de configuração de ramal, selecione o ramal para o qual deseja ligar.
Se o criador de assistentes de IA reconhecer uma extensão disponível que tenha sido criada usando o mesmo documento OpenAPI, aparecerá uma mensagem sugerindo que você selecione essa extensão. No entanto, você pode selecionar qualquer extensão disponível.
Verifique se os valores corretos estão especificados nos campos Operação e Parâmetros.
Clique em Aplicar.
Se você selecionou uma extensão que não é idêntica à que foi usada para criar a ação, talvez seja necessário modificar as etapas subsequentes que acessam as propriedades de resposta da extensão. Verifique todas as etapas posteriores que se referem às propriedades de resposta e certifique-se de que as referências ainda sejam válidas e corretas.