Criar sua própria assistência de GenAI

Com o recurso "Criar sua própria assistência de IA generativa", é possível criar um gerador de texto e integrá-lo ao Agent Assist. O gerador de texto usa modelos de linguagem grandes (LLMs) avançados, como o Text Bison e o Gemini, para gerar sugestões. Você pode usar essas sugestões para ajudar os participantes em qualquer extremidade de uma conversa de atendimento ao cliente, como agentes humanos e usuários humanos. O gerador pode usar chamadas de LLM integradas da Assistência do agente que podem ser configuradas para a maioria das tarefas de LLM. Para entender melhor os geradores no Assistente de agente, 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 de modelo: a escolha do modelo e as configurações necessárias para um desempenho ideal, como temperatura, limite de tokens de saída, TopK e TopP. As saídas do gerador são limitadas por essas configurações. É possível escolher um modelo e definir as opções dele ao criar um gerador clicando em Opções de modelo ou usar as configurações padrão. Na Vertex AI, as opções de modelo são chamadas de valores de parâmetros.

  • Evento de acionamento: um dos seguintes eventos que indica quando iniciar o gerador:

    • END_OF_UTTERANCE: aciona o gerador depois que cada declaração é inserida.
    • MANUAL_CALL: aciona o gerador somente quando você faz chamadas de API explícitas 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 que você fornece as entradas para o gerador de texto, o recurso "Crie sua própria assistência de IA generativa" dá 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 os geradores de assistentes de IA generativa personalizados podem ser implementados. Seu modelo pode gerar respostas diferentes dos exemplos a seguir.

Reescrita profissional

Você pode instruir o gerador a reformular as declarações do agente humano de maneira profissional, educada e empática antes de responder aos clientes, da seguinte forma:

  • 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

Você também pode instruir o gerador a sugerir respostas do agente para a retenção de clientes, como oferecer descontos em produtos, fazer upselling ou cross-selling 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: rotatividade e retenção 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 do recurso "Crie sua própria assistência de IA generativa".

Console

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

  1. No console, acesse a página Build-your-own-assist.

    Acessar "Crie seu próprio assistente"

  2. Clique em Criar.

  3. Insira o nome do gerador.

  4. Selecione o evento de acionamento na lista.

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

  6. Clique em Opções de 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, depois, 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. Insira o nome do gerador no campo description.
  3. Insira o evento de acionamento.
  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

Para contextualizar uma instrução, marque 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 são substituídos pelo valor deles durante o ambiente de 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 do gerador que não precisam ser ingeridos. Estes são os parâmetros integrados:

  • ${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.

Sejam integrados ou ingeridos, os parâmetros do gerador são diferentes das opções de modelo definidas quando o gerador é criado. Os valores desses parâmetros do 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 seu próprio assistente de IA generativa", você pode testar o gerador na seção Testar gerador.

Para testar um gerador no console "Crie seu próprio assistente de IA generativa", faça o seguinte:

Console

  1. Adicione uma transcrição da conversa. É possível inserir manualmente as frases 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 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 gatilho 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 console do Assistente de agente, 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 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. Insira 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

Você pode verificar o perfil de conversa no simulador do Agent Assist. O simulador mostra as respostas geradas com o nome do gerador.

Testar um comando

No console "Crie sua própria assistência de IA generativa", é possível testar um comando com o simulador da mesma forma que você verifica um perfil de conversa. A saída gerada mostrada na imagem a seguir ilustra como o gerador de freeform-tool-test1 seguiu o comando de 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. Em tempo de execução, quando um diálogo começa entre um usuário final e um agente humano, você cria uma conversa. Para ver sugestões, crie um participante usuário final e um agente humano e adicione os dois à conversa.

Criar uma conversa

Para criar uma conversa, faça o seguinte:

  1. Chame o método create no 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 seu 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á parecida com 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 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

Forneça 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á parecida com esta:

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

Criar um participante humano

Para criar um participante humano-agente, 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

Forneça 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-agente. 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, você pode 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 um 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: seu ID de participante humano-agente

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

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 já 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: seu ID de participante humano-agente

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

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 é concluída e o analyzeContent não foi usado, é possível usar o método batchCreate do recurso messages para importar e analisar mensagens históricas da conversa.

Receber sugestões

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

Usar 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 a isto:

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 humano-agente

Forneça o ID da conversa, o ID da mensagem mais recente de qualquer um dos participantes e os eventos de acionamento. Se o campo de ID da mensagem não estiver definido, as sugestões serão baseadas na mensagem mais recente de qualquer um dos participantes por padrão. Em seguida, o gerador associado ao evento de gatilho será iniciado. Sua solicitação JSON precisa incluir algo semelhante a isto:

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

Outra 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 que contêm dados ingeridos. Os dados ingeridos substituem os parâmetros na instrução do gerador. Sua solicitação JSON deve ser semelhante a 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 de agente na página de cotas do Dialogflow. O recurso "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 do 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 por 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