Asistencia de conocimientos generativa

La asistencia de conocimientos generativa proporciona respuestas a las preguntas de tu agente basadas en la información de los documentos que proporciones. Puede especificar el nombre de su dominio o subir documentos para que los indexe un agente de almacén de datos. La asistencia de conocimientos generativa sintetiza esa información con la conversación en curso y los metadatos de cliente disponibles para ofrecer una respuesta más pertinente y oportuna a tu agente.

La asistencia proactiva con conocimientos generativos sigue la conversación en curso entre tu agente y el cliente. Proporciona de forma proactiva sugerencias de consultas de búsqueda basadas en el contexto de la conversación actual y en la respuesta.

Crear un agente de almacén de datos

  1. A menos que seas el propietario del proyecto, necesitas estos roles para crear un agente de almacén de datos:

    • Administrador de la API de Dialogflow
    • Administrador de Discovery Engine
  2. Activa la API AI Applications en la consola de Vertex AI.

  3. Para crear el agente, sigue los pasos que se indican en Agentes de almacén de datos.

Responder a preguntas de tus agentes humanos

El agente de almacén de datos puede responder a las preguntas de tus agentes humanos basándose en los documentos que hayas proporcionado.

Paso 1: Crea un perfil de conversación

Crea un perfil de conversación mediante la consola de Asistencia para agentes o la API.

Crear desde la consola

  1. Debes habilitar el tipo de sugerencia de Generative Knowledge Assist y vincularlo al agente del almacén de datos del paso anterior.
  2. Opcional: Marca la casilla Inhabilitar el registro de consultas de búsqueda del agente para indicar si quieres que Google recoja y almacene consultas de búsqueda redactadas para mejorar la calidad.
  3. Puedes usar la casilla Habilitar consulta aumentada de conversación para indicar si quieres tener en cuenta el contexto de la conversación entre el agente humano y el usuario al generar la respuesta a la consulta de búsqueda.

Crear a partir de una API

En los siguientes pasos se muestra cómo crear un ConversationProfile con un objeto HumanAgentAssistantConfig. También puedes realizar estas acciones con la consola de Agent Assist.

Para crear un perfil de conversación, llama al método create en el recurso ConversationProfile.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
  • PROJECT_ID: tu ID de proyecto
  • LOCATION_ID: el ID de tu ubicación
  • AGENT_ID: el ID del agente de almacén de datos del paso anterior
A continuación, se muestra un ejemplo de JSON:
  {
    "displayName": "my-conversation-profile-display-name",
    "humanAgentAssistantConfig": {
      "humanAgentSuggestionConfig": {
        "featureConfigs": [
          {
            "suggestionFeature": {
              "type": "KNOWLEDGE_SEARCH"
            },
            "queryConfig": {
              "dialogflowQuerySource": {
                "humanAgentSideConfig": {
                  "agent": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID"
                }
              }
            },
            "disableAgentQueryLogging": false,
            "enableConversationAugmentedQuery": false,
          }
        ]
      }
    }
  }
      

Cuando creas un perfil de conversación en la consola de Agent Assist, Agent Assist habilita automáticamente tanto la asistencia de conocimiento generativa como la asistencia de conocimiento generativa proactiva. Para inhabilitar la asistencia proactiva con conocimientos generativos, debes crear tu perfil de conversación mediante la API.

Paso 2: Usar un agente de almacenamiento de datos

También puedes usar la API SearchKnowledge para obtener las respuestas del agente del almacén de datos. También puedes usar las siguientes configuraciones como parte de tu solicitud SearchKnowledge:

  • querySource: define este campo para indicar si un agente ha escrito la consulta o si la función de asistencia de conocimiento generativa proactiva la ha sugerido automáticamente.
  • exactSearch: define este campo para indicar si se debe buscar la consulta de entrada exacta sin reescribirla.
  • endUserMetadata: define este campo para incluir información adicional sobre el usuario final que mejore la respuesta generada. Para obtener más información, consulta la página sobre la personalización del rendimiento del agente de Data Store.
  • searchConfig: define este campo para tener más control sobre el impulso y el filtrado de documentos de conocimientos. Para obtener más información, consulta la página de configuración de búsqueda del rendimiento del agente de Data Store.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • LOCATION_ID: el ID de tu ubicación
  • CONVERSATION_PROFILE_ID: el ID de tu perfil de conversación del paso anterior
  • SESSION_ID: el ID de tu sesión de búsqueda
  • El historial de búsqueda de la misma sesión puede influir en el resultado de búsqueda. Puede usar el siguiente ID de conversación como ID de sesión.
  • CONVERSATION_ID: la conversación (entre el agente humano y el usuario final) en la que se activa la solicitud de búsqueda
  • MESSAGE_ID: el mensaje de conversación más reciente cuando se activa la solicitud de búsqueda.

Aquí tienes una solicitud JSON de ejemplo:

{
  "parent": "projects/PROJECT_ID/locations/LOCATION_ID"
  "query": {
    "text": "What is the return policy?"
  }
  "conversationProfile": "projects/PROJECT_ID/locations/LOCATION_ID/conversationProfiles/CONVERSATION_PROFILE_ID"
  "sessionId": "SESSION_ID
  "conversation": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID"
  "latestMessage": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID
  "querySource": AGENT_QUERY
  "exactSearch": false
  "searchConfig": {
    "filterSpecs": {
      "filter": "category: ANY(\"persona_B\")"
    }
  }
  "endUserMetadata": {
    "deviceOwned": "Google Pixel 7"
  }
}

Si quieres, puedes proporcionar los nombres de recursos conversation y latest_message si la búsqueda del agente se produce durante una conversación con un usuario. Estos dos campos son obligatorios si habilitas la opción enable_conversation_augmented_query y prefieres mejorar la experiencia de respuesta a las consultas con el contexto de la conversación entre tu agente y el usuario.

Simulador

Prueba tu agente de almacén de datos en el simulador de Asistente de agente.

En el ejemplo anterior, el agente de almacén de datos responde a la consulta del usuario What is the refund processing time? con la siguiente información:

  • Respuesta generada por IA generativa: Cuando el paquete con tu devolución llegue al centro de devoluciones del vendedor, puede tardar hasta 7 días hábiles adicionales en procesarse. Consulta el estado del reembolso con el número de seguimiento de la devolución que encontrarás en la página de pedidos.
  • Título del documento de conocimientos pertinente: Devoluciones y reembolsos.

Sugerir preguntas y respuestas de forma proactiva a tus agentes

La asistencia de conocimiento generativa proactiva sigue una conversación en curso y proporciona de forma proactiva sugerencias de consultas de búsqueda y respuestas.

Paso 1: Crea un perfil de conversación

Crea un perfil de conversación mediante la consola de Asistencia para agentes o la API. Te recomendamos que crees un perfil de conversación con la consola de Asistente.

Crear desde la consola

  1. Habilita el tipo de sugerencia Generative Knowledge Assist y vincúlalo al agente de almacén de datos del paso anterior. De esta forma, el agente del almacén de datos puede proporcionar proactivamente sugerencias de consultas y respuestas, así como responder a las consultas de búsqueda manuales de tus agentes humanos.
  2. Opcional: Marca la casilla Mostrar todas las consultas sugeridas de la conversación para que el agente del almacén de datos muestre todas estas consultas, aunque no se haya encontrado ninguna respuesta en tus documentos de conocimientos. Esta opción se ha creado para probar qué consultas se pueden extraer de la conversación en curso.
  3. Opcional: Marca la casilla Cargar respuestas proactivas de forma asíncrona para obtener solo sugerencias de consultas. Puedes enviar manualmente la consulta sugerida a la API SearchKnowledge y automáticamente en el simulador de la consola de Asistencia del agente y en los módulos de la interfaz de usuario.

Crear a partir de una API

En los siguientes pasos se crea un ConversationProfile con un objeto HumanAgentAssistantConfig. También puedes realizar estas acciones con la consola de Agent Assist.

Para crear un perfil de conversación, llama al método create en el recurso ConversationProfile.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
  • PROJECT_ID: tu ID de proyecto
  • LOCATION_ID: el ID de tu ubicación
  • AGENT_ID: el ID del agente de almacén de datos del paso anterior
A continuación, se muestra un ejemplo de JSON:
  {
    "displayName": "my-conversation-profile-display-name",
    "humanAgentAssistantConfig": {
      "humanAgentSuggestionConfig": {
        "featureConfigs": [
          {
            "suggestionFeature": {
              "type": "KNOWLEDGE_ASSIST"
            },
            "queryConfig": {
              "dialogflowQuerySource": {
                "agent": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID"
              }
            },
            "enableQuerySuggestionWhenNoAnswer": false,
          }
        ]
      }
    }
  }
      

Paso 2: Gestionar conversaciones en el tiempo de ejecución

La asistencia de conocimientos generativa proactiva procesa las conversaciones en tiempo de ejecución para ofrecer de forma proactiva sugerencias de consultas de búsqueda basadas en el contexto de la conversación actual y en la respuesta.

Crear una conversación

Primero, debes crear una conversación:

REST

Para crear una conversación, llama al método create en el recurso Conversation.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto de Cloud
  • LOCATION_ID: tu ID de ubicación
  • CONVERSATION_PROFILE_ID: el ID que has recibido al crear el perfil de conversación

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

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

El segmento de ruta después de conversations contiene tu nuevo ID de conversación.

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

def create_conversation(project_id, conversation_profile_id):
    """Creates a conversation with given values

    Args:
        project_id:  The GCP project linked with the conversation.
        conversation_profile_id: The conversation profile id used to create
        conversation."""

    client = dialogflow.ConversationsClient()
    conversation_profile_client = dialogflow.ConversationProfilesClient()
    project_path = client.common_project_path(project_id)
    conversation_profile_path = conversation_profile_client.conversation_profile_path(
        project_id, conversation_profile_id
    )
    conversation = {"conversation_profile": conversation_profile_path}
    response = client.create_conversation(
        parent=project_path, conversation=conversation
    )

    print("Life Cycle State: {}".format(response.lifecycle_state))
    print("Conversation Profile Name: {}".format(response.conversation_profile))
    print("Name: {}".format(response.name))
    return response

Crear un usuario participante

Añade participantes (usuarios y agentes) a la conversación para ver sugerencias. Primero, añade al usuario participante a la conversación:

REST

Para crear un usuario participante, llama al método create en el recurso Participant.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto de Cloud
  • LOCATION_ID: tu ID de ubicación
  • CONVERSATION_ID: tu ID de conversación

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "role": "END_USER",
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "END_USER"
}

El segmento de ruta después de participants contiene tu nuevo ID de usuario participante.

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

Crear un agente participante

Para añadir un agente a la conversación, sigue estos pasos:

REST

Para crear un agente participante, llama al método create en el recurso Participant.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto de Cloud
  • LOCATION_ID: tu ID de ubicación
  • CONVERSATION_ID: tu ID de conversación

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "role": "HUMAN_AGENT",
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/conversations/CONVERSATION_ID/participants/PARTICIPANT_ID",
  "role": "HUMAN_AGENT"
}

El segmento de ruta después de participants contiene tu nuevo ID de participante humano.

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

def create_participant(project_id: str, conversation_id: str, role: str):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Creates a participant in a given conversation.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant: participant to be created."""

    client = dialogflow.ParticipantsClient()
    conversation_path = dialogflow.ConversationsClient.conversation_path(
        project_id, conversation_id
    )
    if role in ROLES:
        response = client.create_participant(
            parent=conversation_path, participant={"role": role}, timeout=600
        )
        print("Participant Created.")
        print(f"Role: {response.role}")
        print(f"Name: {response.name}")

        return response

Añadir y analizar un mensaje del agente

Cada vez que uno de los participantes escriba un mensaje en la conversación, deberá enviar ese mensaje a la API para que lo procese. El agente de almacenamiento de datos basa sus sugerencias en el análisis de los mensajes de los agentes humanos y de los usuarios. En el siguiente ejemplo, el agente humano inicia la conversación preguntando "¿En qué puedo ayudarte?"

Aún no se ha devuelto ninguna sugerencia en la respuesta.

REST

Para añadir y analizar un mensaje de un agente humano en la conversación, llama al método analyzeContent en el recurso Participant.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • CONVERSATION_ID: tu ID de conversación
  • PARTICIPANT_ID: tu ID de participante humano

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "textInput": {
    "text": "How may I help you?",
    "languageCode": "en-US"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "How may I help you?",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "HUMAN_AGENT",
    "createTime": "2020-02-13T00:01:30.683Z"
  }
}

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

Añadir un mensaje del usuario para recibir sugerencias

En respuesta al agente, el usuario dice: "¿Cuándo recibiré el reembolso de mi devolución?". Esta vez, la respuesta de la API contiene una consulta sugerida y la respuesta de la IA generativa basada en los documentos de la base de conocimientos.

REST

Para añadir y analizar un mensaje de usuario de la conversación, llama al método analyzeContent en el recurso Participant.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto
  • CONVERSATION_ID: tu ID de conversación
  • PARTICIPANT_ID: tu ID de participante de usuario final

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
  "textInput": {
    "text": "When can I get my return refund?",
    "languageCode": "en-US"
  }
}

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "message": {
    "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID/messages/MESSAGE_ID",
    "content": "When can I get my return refund?",
    "languageCode": "en-US",
    "participant": "PARTICIPANT_ID",
    "participantRole": "END_USER",
    "createTime": "2020-02-13T00:07:35.925Z"
  },
  "humanAgentSuggestionResults": [
    {
      "suggestKnowledgeAssistResponse": {
        "knowledgeAssistAnswer": {
          "suggestedQuery": {
            "queryText": "Refund processing time"
          },
          "suggestedQueryAnswer": {
            "answerText": "After your return is processed, you receive your refund in 7 days. The refund amount should be for the full value of the items returned, but doesn't include shipping & service fees.",
            "generativeSource": {
              "snippets": [
                {
                  "title": "Returns & refunds - Help",
                  "uri": "https://example.com/",
                  "text": "When the package with your return arrives at the seller's return center, it may take up to 7 additional business days to process. Check the status of your refund with the return tracking number found on your orders page."
                }
              ]
            },
          },
          "answerRecord": "projects/PROJECT_ID/answerRecords/ANSWER_RECORD_ID"
        },
      }
    }
  ]
}

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

def analyze_content_text(
    project_id: str, conversation_id: str, participant_id: str, text: str
):
    from google.cloud import dialogflow_v2beta1 as dialogflow

    """Analyze text message content from a participant.

    Args:
        project_id: The GCP project linked with the conversation profile.
        conversation_id: Id of the conversation.
        participant_id: Id of the participant.
        text: the text message that participant typed."""

    client = dialogflow.ParticipantsClient()
    participant_path = client.participant_path(
        project_id, conversation_id, participant_id
    )
    text_input = {"text": text, "language_code": "en-US"}
    response = client.analyze_content(
        participant=participant_path, text_input=text_input
    )
    print("AnalyzeContent Response:")
    print(f"Reply Text: {response.reply_text}")

    for suggestion_result in response.human_agent_suggestion_results:
        if suggestion_result.error is not None:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    for suggestion_result in response.end_user_suggestion_results:
        if suggestion_result.error:
            print(f"Error: {suggestion_result.error.message}")
        if suggestion_result.suggest_articles_response:
            for answer in suggestion_result.suggest_articles_response.article_answers:
                print(f"Article Suggestion Answer: {answer.title}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_faq_answers_response:
            for answer in suggestion_result.suggest_faq_answers_response.faq_answers:
                print(f"Faq Answer: {answer.answer}")
                print(f"Answer Record: {answer.answer_record}")
        if suggestion_result.suggest_smart_replies_response:
            for (
                answer
            ) in suggestion_result.suggest_smart_replies_response.smart_reply_answers:
                print(f"Smart Reply: {answer.reply}")
                print(f"Answer Record: {answer.answer_record}")

    return response

Completar la conversación

Cuando finalice la conversación, usa la API para completarla.

REST

Para completar la conversación, llama al método complete del recurso conversations.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto de GCP
  • CONVERSATION_ID: el ID que recibiste al crear la conversación

Método HTTP y URL:

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

Para enviar tu solicitud, despliega una de estas opciones:

Deberías recibir una respuesta JSON similar a la siguiente:

{
  "name": "projects/PROJECT_ID/conversations/CONVERSATION_ID",
  "lifecycleState": "COMPLETED",
  "conversationProfile": "projects/PROJECT_ID/conversationProfiles/CONVERSATION_PROFILE_ID",
  "startTime": "2018-11-05T21:05:45.622Z",
  "endTime": "2018-11-06T03:50:26.930Z"
}

Python

Para obtener más información, consulta la documentación de referencia de la API AI Applications Python.

Para autenticarte en las aplicaciones de IA, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

def complete_conversation(project_id, conversation_id):
    """Completes the specified conversation. Finished conversations are purged from the database after 30 days.

    Args:
        project_id: The GCP project linked with the conversation.
        conversation_id: Id of the conversation."""

    client = dialogflow.ConversationsClient()
    conversation_path = client.conversation_path(project_id, conversation_id)
    conversation = client.complete_conversation(name=conversation_path)
    print("Completed Conversation.")
    print("Life Cycle State: {}".format(conversation.lifecycle_state))
    print("Conversation Profile Name: {}".format(conversation.conversation_profile))
    print("Name: {}".format(conversation.name))
    return conversation

Simulador

Puedes probar tu agente de almacén de datos en el simulador de Asistente de agente.

En el ejemplo anterior, el agente de almacenamiento de datos proporciona las siguientes sugerencias:

  • Consulta sugerida: Tiempo de procesamiento del reembolso.
  • Respuesta generada por IA generativa: Una vez que se haya procesado la devolución, recibirás el reembolso en un plazo de 7 días. El importe del reembolso debe ser igual al valor total de los artículos devueltos, pero no incluye los gastos de envío ni de servicio.
  • Título del documento de conocimientos pertinente: Devoluciones y reembolsos - Ayuda.

Paso 3: Notificaciones de sugerencias de Pub/Sub

Puedes definir el campo notificationConfig al crear un perfil de conversación para recibir notificaciones de sugerencias. Esta opción usa Pub/Sub para enviar notificaciones de sugerencias a tu aplicación a medida que avanza la conversación y hay nuevas sugerencias disponibles.

Si estás integrando la API AnalyzeContent, puedes habilitar la configuración disable_high_latency_features_sync_delivery en ConversationProfile para asegurarte de que la API AnalyzeContent responda sin esperar las sugerencias proactivas de asistencia con conocimientos generativos y de que las envíe a través de Pub/Sub.

También puedes habilitar esta configuración desde la consola de Asistente.

Acceder a los datos a través de Conversational Insights

También puedes dejar que las consultas y respuestas generadas por la ayuda con conocimientos generativos proactiva se rellenen automáticamente en Estadísticas conversacionales. Para acceder a estos datos, siga las instrucciones de la sección Habilitar la integración del entorno de ejecución de Dialogflow.

Enviar comentarios

Para saber cómo enviar comentarios, consulta el artículo Enviar comentarios a Asistente para agentes.

Responder a las preguntas del agente

A continuación, se muestra un ejemplo de solicitud JSON para enviar comentarios sobre las respuestas del agente.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/answerRecords/ANSWER_RECORD_ID",
  "answerFeedback": {
    "displayed": true
    "clicked": true
    "correctnessLevel": "FULLY_CORRECT"
    "agentAssistantDetailFeedback": {
      "knowledgeSearchFeedback": {
        "answerCopied": true
        "clickedUris": [
          "url_1",
          "url_2",
          "url_3",
        ]
      }
    }
  }
}

Sugerir de forma proactiva la función Preguntas

A continuación, se muestra un ejemplo de solicitud JSON para enviar comentarios sobre las sugerencias proactivas.

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/answerRecords/ANSWER_RECORD_ID",
  "answerFeedback": {
    "displayed": true
    "clicked": true
    "correctnessLevel": "FULLY_CORRECT"
    "agentAssistantDetailFeedback": {
      "knowledgeAssistFeedback": {
        "answerCopied": true
        "clickedUris": [
          "url_1",
          "url_2",
          "url_3",
        ]
      }
    }
  }
}

Metadatos

Si configuras metadatos para un documento de conocimientos, tanto la asistencia de conocimientos generativa como la asistencia de conocimientos generativa proactiva devolverán los metadatos del documento junto con la respuesta.

Por ejemplo, puedes usar metadatos para marcar si el documento de conocimiento es un artículo privado interno o un artículo público externo. Tanto en el simulador de Asistente como en los módulos de la interfaz de usuario, la asistencia de conocimiento generativa y la asistencia de conocimiento generativa proactiva muestran automáticamente un valor de metadatos de documento para determinadas claves.

  • gka_source_label: el valor se muestra directamente en la tarjeta de sugerencia.
  • gka_source_tooltip: cuando el valor es de tipo struct, si colocas el cursor sobre el enlace de origen, se expande y muestra el valor en una descripción emergente.

Si tienes los siguientes metadatos de un documento de conocimientos, la tarjeta de sugerencia mostrará External Doc como fuente y la descripción emergente añadirá doc_visibility: public doc.

Metadatos: None { "title": "Public Sample Doc", "gka_source_label": "External Doc", "gka_source_tooltip": { "doc_visibility": "public doc" } }

Idiomas disponibles

Consulta la lista completa de idiomas admitidos.