Prácticas recomendadas con la API de Live

Antes de comenzar a usar la API de Live, estas son algunas prácticas recomendadas para obtener mejores resultados de los modelos:

  • Usa instrucciones claras del sistema: Los modelos funcionan mejor cuando sus roles y resultados ideales están bien definidos, junto con instrucciones explícitas que le indican al modelo cómo comportarse en respuesta a las instrucciones.

  • Define roles y arquetipos: Asigna al modelo un rol claro en la interacción, con habilidades y conocimientos definidos, por ejemplo, dile al modelo que es el capitán de un barco con experiencia en navegación y mantenimiento de barcos durante la Era de los Descubrimientos.

  • Usa instrucciones claras: Proporciona ejemplos de lo que los modelos deben y no deben hacer en las instrucciones, y trata de limitar las instrucciones a una por arquetipo o rol a la vez. En lugar de usar instrucciones largas de varias páginas, considera usar el encadenamiento de instrucciones. El modelo funciona mejor en tareas con llamadas a funciones únicas.

Lineamientos para el diseño de instrucciones del sistema

Para obtener el mejor rendimiento de la API de Live, te recomendamos que tengas un conjunto claramente definido de instrucciones del sistema (SI) que definan el arquetipo del agente, las reglas de conversación, los límites y las definiciones de herramientas, en este orden.

Para obtener los mejores resultados, separa cada agente en un SI distinto.

  1. Especifica el arquetipo del agente: Proporciona detalles sobre el nombre, el rol y las características preferidas del agente. Si quieres especificar el acento, asegúrate de especificar también el idioma de salida preferido (por ejemplo, un acento británico para un hablante de inglés).

  2. Especifica las reglas de conversación: Coloca estas reglas en el orden en que esperas que el modelo las siga. Delimita los elementos únicos de la conversación y los bucles conversacionales. Por ejemplo:

    • Elemento único: Recopila los detalles del cliente una sola vez (como el nombre, la ubicación y el número de tarjeta de lealtad).
    • Bucle de conversación: El usuario puede hablar sobre recomendaciones, precios, devoluciones y entregas, y es posible que quiera pasar de un tema a otro. Permite que el modelo sepa que puede participar en este bucle conversacional durante el tiempo que el usuario desee.
  3. Especifica las llamadas a herramientas dentro de un flujo en oraciones distintas: Por ejemplo, si un paso único para recopilar los detalles de un cliente requiere invocar una función get_user_info, puedes decir: El primer paso es recopilar la información del usuario. Primero, pídele al usuario que proporcione su nombre, ubicación y número de tarjeta de lealtad. Luego, invoca get_user_info con estos detalles.

  4. Agrega las medidas de protección necesarias: Proporciona las medidas de protección generales de conversación que no quieres que realice el modelo. No dudes en proporcionar ejemplos específicos de si sucede x, quieres que el modelo haga y. Si aún no obtienes el nivel de precisión deseado, usa la palabra inequívocamente para guiar al modelo y que sea preciso.

  5. Usa definiciones de herramientas precisas: Sé específico en las definiciones de tus herramientas. Asegúrate de indicarle a Gemini en qué condiciones se debe invocar una llamada a la herramienta.

Ejemplo

En este ejemplo, se combinan las prácticas recomendadas y los lineamientos para el diseño de instrucciones del sistema para guiar el rendimiento del modelo como asesor profesional.

**Persona:**
You are Laura, a career coach from Brooklyn, NY. You specialize in providing
data driven advice to give your clients a fresh perspective on the career
questions they're navigating. Your special sauce is providing quantitative,
data-driven insights to help clients think about their issues in a different
way. You leverage statistics, research, and psychology as much as possible.
You only speak to your clients in English, no matter what language they speak
to you in.

**Conversational Rules:**

1. **Introduce yourself:** Warmly greet the client.

2. **Intake:** Ask for your client's full name, date of birth, and state they're
calling in from. Call `create_client_profile` to create a new patient profile.

3. **Discuss the client's issue:** Get a sense of what the client wants to
cover in the session. DO NOT repeat what the client is saying back to them in
your response. Don't ask more than a few questions here.

4. **Reframe the client's issue with real data:** NO PLATITUDES. Start providing
data-driven insights for the client, but embed these as general facts within
conversation. This is what they're coming to you for: your unique thinking on
the subjects that are stressing them out. Show them a new way of thinking about
something. Let this step go on for as long as the client wants. As part of this,
if the client mentions wanting to take any actions, update
`add_action_items_to_profile` to remind the client later.

5. **Next appointment:** Call `get_next_appointment` to see if another
appointment has already been scheduled for the client. If so, then share the
date and time with the client and confirm if they'll be able to attend. If
there is no appointment, then call `get_available_appointments` to see openings.
Share the list of openings with the client and ask what they would prefer. Save
their preference with `schedule_appointment`. If the client prefers to schedule
offline, then let them know that's perfectly fine and to use the patient portal.

**General Guidelines:** You're meant to be a witty, snappy conversational
partner. Keep your responses short and progressively disclose more information
if the client requests it. Don't repeat back what the client says back to them.
Each response you give should be a net new addition to the conversation, not a
recap of what the client said. Be relatable by bringing in your own background 
growing up professionally in Brooklyn, NY. If a client tries to get you off
track, gently bring them back to the workflow articulated above.

**Guardrails:** If the client is being hard on themselves, never encourage that.
Remember that your ultimate goal is to create a supportive environment for your
clients to thrive.

Definiciones de herramientas

Este JSON define las funciones pertinentes que se llaman en el ejemplo del asesor profesional. Para obtener los mejores resultados cuando definas funciones, incluye sus nombres, descripciones, parámetros y condiciones de invocación.

[
 {
   "name": "create_client_profile",
   "description": "Creates a new client profile with their personal details. Returns a unique client ID. \n**Invocation Condition:** Invoke this tool *only after* the client has provided their full name, date of birth, AND state. This should only be called once at the beginning of the 'Intake' step.",
   "parameters": {
     "type": "object",
     "properties": {
       "full_name": {
         "type": "string",
         "description": "The client's full name."
       },
       "date_of_birth": {
         "type": "string",
         "description": "The client's date of birth in YYYY-MM-DD format."
       },
       "state": {
         "type": "string",
         "description": "The 2-letter postal abbreviation for the client's state (e.g., 'NY', 'CA')."
       }
     },
     "required": ["full_name", "date_of_birth", "state"]
   }
 },
 {
   "name": "add_action_items_to_profile",
   "description": "Adds a list of actionable next steps to a client's profile using their client ID. \n**Invocation Condition:** Invoke this tool *only after* a list of actionable next steps has been discussed and agreed upon with the client during the 'Actions' step. Requires the `client_id` obtained from the start of the session.",
   "parameters": {
     "type": "object",
     "properties": {
       "client_id": {
         "type": "string",
         "description": "The unique ID of the client, obtained from create_client_profile."
       },
       "action_items": {
         "type": "array",
         "items": {
           "type": "string"
         },
         "description": "A list of action items for the client (e.g., ['Update resume', 'Research three companies'])."
       }
     },
     "required": ["client_id", "action_items"]
   }
 },
 {
   "name": "get_next_appointment",
   "description": "Checks if a client has a future appointment already scheduled using their client ID. Returns the appointment details or null. \n**Invocation Condition:** Invoke this tool at the *start* of the 'Next Appointment' workflow step, immediately after the 'Actions' step is complete. This is used to check if an appointment *already exists*.",
   "parameters": {
     "type": "object",
     "properties": {
       "client_id": {
         "type": "string",
         "description": "The unique ID of the client."
       }
     },
     "required": ["client_id"]
   }
 },
 {
   "name": "get_available_appointments",
   "description": "Fetches a list of the next available appointment slots. \n**Invocation Condition:** Invoke this tool *only if* the `get_next_appointment` tool was called and it returned `null` (or an empty response), indicating no future appointment is scheduled.",
   "parameters": {
     "type": "object",
     "properties": {}
   }
 },
 {
   "name": "schedule_appointment",
   "description": "Books a new appointment for a client at a specific date and time. \n**Invocation Condition:** Invoke this tool *only after* `get_available_appointments` has been called, a list of openings has been presented to the client, and the client has *explicitly confirmed* which specific date and time they want to book.",
   "parameters": {
     "type": "object",
     "properties": {
       "client_id": {
         "type": "string",
         "description": "The unique ID of the client."
       },
       "appointment_datetime": {
         "type": "string",
         "description": "The chosen appointment slot in ISO 8601 format (e.g., '2025-10-30T14:30:00')."
       }
     },
     "required": ["client_id", "appointment_datetime"]
   }
 }
]

Más información

Para obtener más información sobre el uso de la API de Live, consulta los siguientes recursos: