Criar sua própria assistência de GenAI

Crie sua própria assistência de IA generativa para criar um gerador de texto e integrá-lo ao Assistente do agente. O gerador de texto usa modelos de linguagem grandes (LLMs) avançados, como Text Bison e Gemini, para gerar sugestões. Você pode usar essas sugestões para ajudar os participantes de uma conversa de atendimento ao cliente, como agentes humanos e usuários humanos. O gerador pode usar chamadas LLM integradas do Assistente de agentes que podem ser configuradas para a maioria das tarefas de LLM. Para entender melhor os geradores no Assistente, consulte a documentação da Vertex AI.

Entradas do gerador

O gerador de texto requer as seguintes entradas:

  • Instrução: um texto que descreve a tarefa que você quer que o gerador de texto realize. Na Vertex AI, a instrução é chamada de comando.

  • Opções do modelo: a escolha e as configurações do modelo necessárias para a performance ideal, como temperatura, limite de tokens de saída, TopK e TopP. As saídas do gerador são limitadas por essas configurações. Você pode escolher um modelo e definir as opções dele ao criar um gerador clicando em Opções do modelo ou usar as configurações padrão. Na Vertex AI, as opções de modelo são chamadas de valores de parâmetro.

  • Evento acionador: um dos eventos a seguir que indica quando iniciar o gerador:

    • END_OF_UTTERANCE: aciona o gerador depois que cada frase é inserida.
    • MANUAL_CALL: aciona o gerador somente quando você faz chamadas de API explicitamente para invocá-lo.
    • CUSTOMER_MESSAGE: aciona o gerador somente após cada mensagem do cliente.
    • AGENT_MESSAGE: aciona o gerador somente após cada mensagem do agente.

Saídas do gerador

Depois de fornecer as entradas para o gerador de texto, o gerador de assistência "Crie sua própria GenAI" oferece sugestões, como links de artigos, respostas adequadas ou informações de back-end sobre ofertas promocionais. Essas sugestões são fornecidas em formato de texto e são relevantes no contexto da conversa de atendimento ao cliente no momento em que são geradas.

Casos de uso

Esta seção apresenta três casos de uso como exemplos de como implementar a opção "Crie seus próprios geradores de assistência da GenAI". O modelo pode gerar respostas de saída diferentes dos exemplos a seguir.

Reescrita profissional

É possível instruir o gerador a reformular as frases do agente humano de maneira profissional, educada e empática antes de responder aos clientes, conforme mostrado a seguir.

  • Nome do gerador: reescrita profissional
  • Acionar evento: mensagem do agente
  • Instrução:

    # TASK DESCRIPTION:
    Output the agent's response under ## LAST UTTERANCE rewritten in a professional, polite and empathetic way in EXAMPLE 4.
    - DO NOT miss any information mentioned by the original text.
    - Only output rewritten response.
    - You're provided with EXAMPLE 1-3. Follow the format.
    
    # EXAMPLE 1
    ## CONVERSATION:
    AGENT: Yo what's up it's Akshay. This is Amazon customer service. What do you want?
    
    ## LAST UTTERANCE:
    Yo what's up it's Akshay. This is Amazon customer service. What do you want?
    
    ## OUTPUT:
    Hi I'm Akshay. Thank you for choosing Amazon customer service. How can I assist you today?
    
    # EXAMPLE 2
    ## CONVERSATION:
    CUSTOMER: Hi, I'm having some trouble with my Apple Music subscription.
    AGENT: Hey, I'm [name]. I can help, I guess. What's your name and account number?
    CUSTOMER: Sure, my name is [name] and my account number is [number].
    AGENT: Alright. Checked that out. You are on Apple Music Individual plan, right?
    
    ## LAST UTTERANCE:
    Alright. Checked that out. You are on Apple Music Individual plan, right?
    
    ## OUTPUT:
    Thank you. I see that you're currently subscribed to the Apple Music Individual plan. Is that correct?
    
    # EXAMPLE 3
    ## CONVERSATION:
    AGENT: What is your order number?
    CUSTOMER: 12345
    AGENT: Hang on a sec. Looking.
    CUSTOMER: I'll wait.
    AGENT: Alright, it appears your order is not registered. Did you even submit the order?
    CUSTOMER: Let me double check. Shoot, someone canceled it. Must be the kids.
    AGENT: Yeah, watch your kids will you?
    CUSTOMER: I'm so sorry.
    AGENT: All good. Have a good one.
    
    ## LAST UTTERANCE:
    All good. Have a good one.
    
    ## OUTPUT:
    No problem. I'm glad I can help. Please have a good day!
    
    # EXAMPLE 4
    ## CONVERSATION:
    ${parameter:transcript}
    
    ## LAST UTTERANCE:
    ${parameter:transcript_last_utterance}
    
    ## OUTPUT:
    

Retenção de clientes

Também é possível instruir o gerador para sugerir respostas de agentes para a retenção de clientes, como oferecer descontos, upsell ou cross-sell de produtos e resolver problemas, como no exemplo a seguir. O gerador acessa as informações que você fornece sobre descontos e ofertas como referências de contexto com a API IngestContextReferences.

  • Nome do gerador: retenção e abandono de clientes
  • Acionar evento: mensagem do cliente
  • Referências de contexto: ofertas
    • Um: 11% de desconto
    • Nest: 5% de desconto
    • Desconto para novos clientes: 10%
  • Instrução:

    # TASK DESCRIPTION:
    You are an Agent who is helping a customer resolve an issue with complete understanding of the same.
    - Make sure you wait to understand the concern or query before making any suggestions.
    - If the customer informs about the issue, you need to ask the exact reason. If the reason is valid, you can give appropriate credit from the OFFERS section.
    - If the customer is about to cancel an order or subscription, make sure you offer something from the OFFERS section and try to retain the customer.
    - If a customer is inquiring about a new product, offer some combo for upselling another product.
    Below are two examples for detecting churn and generating suggestions for mitigation.
    The output should be a single message suggested to the agent according to the context of the conversation.
    
    # EXAMPLE 1
    Customer: Hello
    Agent: Welcome to Google. How may I help you?
    Customer: I want to cancel order.
    Agent: Sure Let me have an order ID.
    Customer: Its 123321
    Agent: I could see that you placed an order for Google Nest. May I know the reason for cancellation?
    Customer: It's available at cheaper rate now. 
    Agent: Ohh.! I see. Let me check the current price and adjust the order price. Is it okay ?
    Customer: Sure..! I can purchase the product  as long as I can get it at the discounted price. I'd definitely go with it
    Agent: Google Nest costs $200 at present. I can see that you paid $230.
    Customer: Yeah. Can you request to refund $30. I can buy it at $200.
    Agent : Sure. I have updated. You will get $30 refund once your order is delivered.
    Customer: Thanks.
    Agent : Welcome
    
    # EXAMPLE 2
    Customer: Hello
    Agent: Welcome to Google. How may I help you?
    Customer: I am having Google One Subscription. I think I may need some more space in future. 
    Agent: Okay. May I have your customer Id:
    Customer: Its 123321
    Agent: I could see that you have 100GB Plan at present. How much are you expecting to need in future?
    Customer: I think I may need 100GB or more.
    Agent: I could check that you are a loyal customer who had subscriptions since last 6 months. I can provide you 10% discount. 
    Customer: Sure..! That would be great. 
    Agent: 200GB Subscription costs $180 per annum which I can offer you at $162.
    Customer: That's cool. Thank you.
    Agent: Is there anything else I can help you with?
    Customer: No thanks.
    
    ## CONTEXT
    ${parameter:transcript}
    
    ## OFFERS
    ${parameter:offers}
    

Criar um gerador

Os exemplos a seguir mostram como criar um gerador de texto "Crie seu próprio assistente GenAI".

Console

Para criar um gerador usando o console do Assistente do agente, faça o seguinte:

  1. No console, acesse a página Crie sua própria assistente.

    Acessar "Crie sua própria assistência"

  2. Clique em Criar.

  3. Insira o nome do gerador.

  4. Selecione o evento de acionamento na lista.

  5. Digite a instrução para definir a tarefa.

  6. Clique em Opções do modelo e selecione uma opção na lista.

  7. Defina os parâmetros ou use as configurações padrão.

  8. Clique em Salvar e, em seguida, em Salvar novamente para salvar o gerador.

REST

Para criar um gerador usando a API, faça o seguinte:

  1. Chame o método CreateGenerator do recurso Generator.
  2. Digite o nome do gerador no campo description.
  3. Insira o evento acionador.
  4. Insira a instrução para definir a tarefa em FreeFormContext.text.
  5. Insira um nome de modelo no campo published_model ou deixe-o em branco para usar o modelo padrão.
  6. Especifique os parâmetros do modelo no campo inference_parameter ou deixe-os vazios para usar os valores padrão.

Parâmetros

É possível tornar uma instrução contextual marcando palavras como parâmetros usando o formato ${parameter:<parameter_name>}. Também é possível usar a API Data Ingestion para importar o valor real de um parâmetro chamando o método IngestContextReferences em uma conversa. Com esse método, os parâmetros na instrução serão substituídos pelo valor deles durante a execução.

Confira a seguir um exemplo em JSON de como importar o valor dos parâmetros chamando IngestContextReferences:

{
  "contextReferences": {
    "glossary": {
      "contextContents": [
        {
          "content": "east one",
          "contentFormat": "PLAIN_TEXT"
        }
      ]
    }
  }
}

Há também alguns parâmetros de gerador que não precisam ser ingeridos. Estes parâmetros integrados são os seguintes:

  • ${parameter:transcript}: a conversa entre o agente e o usuário, incluindo a última declaração do usuário.
  • ${parameter:transcript_last_utterance}: o último enunciado na conversa.

Pelo menos um parâmetro integrado precisa ser usado em qualquer instrução.

Os parâmetros do gerador são diferentes das opções de modelo, que são definidas quando o gerador é criado. Os valores desses parâmetros de gerador vêm de uma transcrição de conversa ou de dados ingeridos. Por outro lado, você define os valores das opções de modelo para o gerador como um todo.

Testar um gerador

No console Crie sua própria IA generativa, é possível testar o gerador na seção Testar gerador.

Para testar um gerador no console Crie sua própria GenAI assist, faça o seguinte:

Console

  1. Adicione uma transcrição da conversa. É possível inserir frases manualmente ou fazer upload de uma transcrição no formato JSON clicando em upload.
  2. Para adicionar mais dados que precisam ser ingeridos, clique em more_vert e note_add Adicionar dados injetados.

O console "Crie seu próprio assistente de IA generativa" mostra as respostas geradas com o nome do gerador.

REST

Para testar um gerador usando a API, faça o seguinte:

  1. Insira o nome do gerador no campo generatorName.
  2. Forneça conversas no campo conversationContext.
  3. Forneça valores de parâmetro, se houver, no campo contextReferences.
  4. Insira o acionador para gerar sugestões no campo triggerEvents. As sugestões geradas estão disponíveis no campo generatorSuggestion.

Perfil de conversa

Um perfil de conversa define um conjunto de parâmetros que controlam as sugestões feitas durante uma conversa. As etapas a seguir criam um recurso conversationProfile com um objeto HumanAgentAssistantConfig.

Console

  1. No Agent Assist Console, acesse a página Perfis de conversa.
  2. Clique em Criar.
  3. Insira o nome de exibição.
  4. Selecione o tipo de sugestão check_box Build-your-own-assist.
  5. Digite o nome do gerador ou escolha o nome dele na lista.

REST

  1. Chame o método create do recurso de perfil de conversa.
  2. Dê um nome ao novo perfil de conversa.
  3. Digite o código do idioma.
  4. Insira o nome do gerador em human_agent_suggestion_config.

Confira a seguir um exemplo JSON de um perfil de conversa.

{
  "displayName": "build-your-own-assist-test",
  "humanAgentAssistantConfig": {
    "humanAgentSuggestionConfig": {
      "generators": "projects/PROJECT_ID/locations/global/generators/GENERATOR_ID"
    }
  }
}

Verificar com o simulador

É possível verificar o perfil de conversa no simulador do Assistente do agente. O simulador mostra as respostas geradas com o nome do gerador.

Testar um comando

No console Crie sua própria assistente GenAI, você pode testar um comando com o simulador da mesma forma que verifica um perfil de conversa. A saída gerada mostrada na imagem a seguir ilustra como o gerador de freeform-tool-test1 seguiu o exemplo.

Conversas no ambiente de execução

Uma conversa é definida como uma interação entre um agente, incluindo agentes humanos e virtuais, e um cliente de suporte ou usuário final. No momento da execução, quando uma conversa começa entre um usuário final e um agente humano, você cria uma conversa. Para conferir as sugestões, crie um participante do usuário final e um participante humano e adicione-os à conversa.

Criar uma conversa

Para criar uma conversa, faça o seguinte:

  1. Chame o método create do conversation resource.
  2. Antes de usar os dados da solicitação, faça as seguintes substituições:
    • PROJECT_ID: ID do projeto;
    • CONVERSATION_PROFILE_ID: o ID do perfil de conversa

Método HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations

Solicitar corpo JSON:

{
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
}

Na resposta JSON, o segmento de caminho após conversations contém o novo ID da conversa. A resposta JSON será semelhante a esta:

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "IN_PROGRESS",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2023-11-05T21:05:45.622Z"
}

Criar um participante do usuário final

Para criar um participante de usuário final, faça o seguinte:

  1. Chame o método create do recurso participants.
  2. Antes de usar os dados da solicitação, faça as seguintes substituições:
    • PROJECT_ID: ID do projeto;
    • CONVERSATION_ID: o ID da conversa

Informe seu ID de conversa e "END_USER" para o campo de função da seguinte maneira.

Método HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants

Solicitar corpo JSON:

{
  "role": "END_USER",
}

Na resposta JSON, o segmento de caminho após participants contém o novo ID do participante do usuário final. A resposta JSON será semelhante a esta:

{
 "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/USER_PARTICIPANT_ID", "role": "END_USER"
}

Criar um participante humano-agente

Para criar um participante humano, siga estas etapas:

  1. Chame o método create do recurso participants.
  2. Antes de usar os dados da solicitação, faça as seguintes substituições:
    • PROJECT_ID: ID do projeto;
    • CONVERSATION_ID: o ID da conversa

Informe o ID da conversa e a função HUMAN_AGENT para o campo da seguinte maneira.

Método HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants

Solicitar corpo JSON:

{
  "role": "HUMAN_AGENT",
}

Na resposta JSON, o segmento de caminho após participants contém o novo ID do participante humano. A resposta será assim:

{
"name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/AGENT_PARTICIPANT_ID", "role": "HUMAN_AGENT"
}

Analisar mensagem

Um gerador também pode analisar uma mensagem em uma conversa. Durante uma conversa, é possível adicionar uma mensagem, e o gerador pode analisar as mensagens do agente humano e do usuário final com o método analyzeContent do recurso participants.

Para adicionar e analisar uma mensagem de agente humano, siga estas etapas.

  1. Chame o método analyzeContent.
  2. Antes de usar os dados da solicitação, faça as seguintes substituições:
    • PROJECT_ID: ID do projeto;
    • CONVERSATION_ID: o ID da conversa
    • PARTICIPANT_ID: o ID do participante humano

Informe o ID da conversa e o ID do participante do agente humano. Sua solicitação precisa incluir algo semelhante ao seguinte:

Método HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Solicitar corpo JSON:

{
  "textInput": {
    "text": "Bonjour, ici le service client d'ABC fishing, comment puis-je vous aider aujourd'hui ?",
    "languageCode": "en-US"
  }
}

Você vai receber uma resposta JSON semelhante a esta:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "Bonjour, ici le service client d'ABC fishing, comment puis-je vous aider aujourd'hui ?",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "HUMAN_AGENT",
    "createTime": "2023-02-13T00:01:30.683Z"
  },
  "humanAgentSuggestionResults": [{
    "generateSuggestionsResponse": {
      "generatorSuggestionAnswers": [{
        "generatorSuggestion": {
          "freeFormSuggestion": {
            "response": "Hello, this is ABC fishing customer service, how can I help you today?"
          }
        },
        "sourceGenerator": "projects/PROJECT_ID/locations/global/generators/GENERATOR_ID",
        "answerRecord": "projects/PROJECT_ID/locations/global/answerRecords/ANSWER_RECORD_ID"
      }],
      "latestMessage": "projects/PROJECT_ID/locations/global/conversations/CONVERSATION_ID/messages/MESSAGE_ID"
    }
  }]
}

Para adicionar e analisar uma mensagem do usuário final

  1. Chame o método analyzeContent. Não faça chamadas duplicadas para o método se ele tiver sido chamado para outros recursos do Assistente do agente.
  2. Antes de usar os dados da solicitação, faça as seguintes substituições:
    • PROJECT_ID: ID do projeto;
    • CONVERSATION_ID: o ID da conversa
    • PARTICIPANT_ID: o ID do participante humano

Informe o ID da conversa e o ID do participante do agente humano. Sua solicitação precisa incluir algo semelhante ao seguinte:

Método HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Solicitar corpo JSON:

{
  "textInput": {
    "text": "Hi",
    "languageCode": "en-US"
  }
}

Você vai receber uma resposta JSON semelhante a esta:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "Hi",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [{
    "generateSuggestionsResponse": {
      "generatorSuggestionAnswers": [{
        "generatorSuggestion": {
          "freeFormSuggestion": {
            "response": "Salut"
          }
        },
        "sourceGenerator": "projects/PROJECT_ID/locations/global/generators/GENERATOR_ID",
        "answerRecord": "projects/PROJECT_ID/locations/global/answerRecords/ANSWER_RECORD_ID"
      }],
      "latestMessage": "projects/PROJECT_ID/locations/global/conversations/CONVERSATION_ID/messages/MESSAGE_ID"
    }
  }]
}

Quando uma conversa for concluída e analyzeContent não tiver sido usado, você poderá usar o método batchCreate do recurso messages para importar e analisar as mensagens históricas da conversa.

Receber sugestões

O gerador também oferece sugestões em resposta a uma mensagem a qualquer momento de uma conversa. Por padrão, as sugestões são para a mensagem mais recente de qualquer participante. Você também pode especificar a mensagem para a qual você quer receber as sugestões. Receba sugestões por padrão ou usando um dos seguintes recursos.

Usar as sugestões incluídas

A resposta de analyzeContent vem com sugestões. O gerador acionado produz essas sugestões. Sua solicitação JSON precisa incluir algo semelhante ao seguinte:

Método HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID:analyzeContent

Solicitar corpo JSON:

{
  "textInput": {
    "text": "I want to reserve a room.",
    "languageCode": "en-US"
  }
}

Usar o recurso suggestions

Outra abordagem para receber sugestões é seguir estas etapas.

  1. Chame o método generate do recurso suggestions.
  2. Antes de usar os dados da solicitação, faça as seguintes substituições:
    • PROJECT_ID: ID do projeto;
    • CONVERSATION_ID: o ID da conversa
    • PARTICIPANT_ID: seu ID de participante de agente humano

Informe o ID da conversa, o ID da mensagem mais recente de cada participante e os eventos de acionamento. Se o campo do ID da mensagem não estiver definido, as sugestões serão baseadas na mensagem mais recente de cada participante por padrão. O gerador associado ao evento de acionamento será iniciado. Sua solicitação JSON precisa incluir algo semelhante ao seguinte:

Método HTTP e URL:

POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/conversations/CONVERSATION_IDsuggestions:generate

Solicitar corpo JSON:

{
  "latestMessage": "projects/PROJECT_ID/conversations/CONVERSATION_IDmessages/Message_ID",
  "triggerEvents": [ "END_OF_UTTERANCE" ]
}

Usar o recurso statelessSuggestion

Uma última abordagem para receber sugestões é seguir estas etapas.

  1. Chame o método generate do recurso statelessSuggestion.
  2. Antes de usar os dados da solicitação, faça as seguintes substituições:
    • PROJECT_ID: ID do projeto;
    • LOCATION_ID: o ID do local

Forneça o gerador, as mensagens da conversa e as referências de contexto com os dados ingeridos. Os dados ingeridos substituem os parâmetros na instrução do gerador. Sua solicitação JSON vai ficar parecida com esta:

Método HTTP e URL:

https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/statelessSuggestion:generate

Solicitar corpo JSON:

{
  "generator": {
    "description": "Translation",
    "triggerEvent": "END_OF_UTTERANCE",
    "freeFormContext": {
      "text": "Read the conversation between agent and customer, and the last utterance. Output the last utterance from customer by following these instructions:
      - If the last utterance from AGENT, output the utterance by translating it to English.
      - If the last utterance from CUSTOMER, output the utterance by translating it to French.
      - Specific brand names and technical terms specified under 'GLOSSARY' section, such as 'Google Home,' should remain unchanged as per the glossary guidelines.

# GLOSSARY
${parameter:glossary}

# CONVERSATION:
${parameter:transcript}

# LAST UTTERANCE:
${parameter:transcript_last_utterance}

# OUTPUT: "
    }
  },
  "contextReferences": {
    "glossary": {
      "contextContents": {
        "content": "east one",
        "contentFormat": "PLAIN_TEXT"
      }
    }
  },
  "conversationContext": {
    "messageEntries": [
      {
        "text": "hi",
        "languageCode": "en-US",
        "role": "END_USER",
        "createTime": {
          "seconds": "1400000000",
          "nanos": "10000000"
        }
      },
      {
        "text": "Bonjour, comment puis-je vous aider aujourd\\'hui ?",
        "languageCode": "en-US",
        "role": "HUMAN_AGENT",
        "createTime": {
          "seconds": "1400000010",
          "nanos": "10000000"
        }
      }
    ]
  },
  "triggerEvents": [
    "END_OF_UTTERANCE"
  ]
}

Limites de cotas

É possível conferir as cotas e os limites do Assistente do agente na página de cotas do Dialogflow. Criar sua própria assistência de IA generativa inclui os seguintes limites de cota:

Nome Descrição Limite
Operações do gerenciador de geradores por minuto (por região) Limite o número de operações do gerenciador de geradores que podem ser realizadas a cada minuto, como criar, listar ou excluir geradores. 300
Geradores (por região) Limite no número máximo de geradores que podem ser criados em um único projeto. 200
Operações de sugestão do gerador por minuto e tipo de modelo (por região) Limite no número de solicitações de operação de sugestão do gerador que você pode receber a cada minuto para cada tipo de modelo. 10