La API de Assistant admite la llamada a funciones. Esta característica permite que un agente llame automáticamente a funciones externas para realizar tareas, como traducir texto. Este tema utiliza un ejemplo simple de "Agente de Traducción" para ayudarle a comprender rápidamente los conceptos básicos de la llamada a funciones.
Inicio rápido
En este ejemplo, creará un agente de traducción y una función llamada translate_text que el agente puede invocar. Luego, pedirá al agente que traduzca "Hello world" al chino.
Antes de comenzar
Puede instalar las bibliotecas de dependencias requeridas, como requests y dashscope, ejecutando el siguiente comando:
Paso 1: Crear la función "translate_text"
Primero, puede crear una función de traducción simple. Esta función utiliza una tabla de traducción predefinida con fines de demostración.
- Función de traducción: Simula una función de traducción utilizando una tabla de traducción predefinida que admite la conversión entre varios idiomas.
- Manejo de errores: La función incluye un mecanismo básico de manejo de errores para garantizar que devuelva una respuesta adecuada en todas las situaciones.
translate_text definida para proporcionar servicios de traducción.
Paso 2: Describir la función "translate_text"
Debe describir la función translate_text al agente. El agente utiliza esta descripción para llamar a la función correctamente.
- name: El nombre de la función es
translate_text. El agente utiliza este nombre para llamar a la función. - description: Una descripción de la herramienta que ayuda al agente a comprender su propósito.
- parameters: Define los parámetros de la función, que incluyen el texto a traducir y el idioma de destino.
Paso 3: Crear un agente
Ahora, puede crear una instancia de Assistant. Esta instancia es un agente que utilizará la herramienta de traducción que usted definió.
- model: Especifica el modelo a utilizar. Este ejemplo usa
qwen-plus, que admite la comprensión del lenguaje y el procesamiento de tareas. - name: El nombre del agente. Establezca el valor en "Translation Assistant".
- description: Una descripción del propósito del agente, que es ayudar a los usuarios a traducir texto.
- tools: Registra el
translation_toolque definió anteriormente. Esto permite al agente llamar a la herramienta.
Paso 4: Crear un hilo de conversación e interactuar con el agente
Cree un nuevo hilo de conversación, agregue un mensaje de usuario al mismo y luego ejecute el agente para procesar la consulta del usuario.
- Threads.create(): Crea un nuevo hilo de conversación para mensajes subsiguientes.
- Messages.create(): Agrega un mensaje de usuario al hilo. En este caso, el usuario solicita traducir "Hello world" al chino.
- Runs.create(): Activa el agente para comenzar a procesar el mensaje del usuario.
- Runs.wait(): Espera a que el agente termine de procesar.
Paso 5: Manejar la llamada a la función y devolver el resultado
Si el agente necesita llamar a una herramienta durante el procesamiento, se llama a la función translate_text y se devuelve el resultado.
- Verificar si hay una llamada a función: Si el agente necesita llamar a una función, su código verifica si la función solicitada es
translate_texty luego realiza la traducción utilizando la función definida previamente. - Enviar el resultado: Envíe el resultado de la traducción al agente mediante
Runs.submit_tool_outputsy luego espere la siguiente respuesta del agente.
Paso 6: Obtener la respuesta del agente
Después de que el agente termine el procesamiento, puede recuperar la respuesta del agente del hilo de conversación y mostrársela al usuario.
Resumen
Al seguir estos pasos, ha creado con éxito un agente que puede manejar solicitudes de traducción de usuarios y utilizar una función de traducción para realizar la conversión de texto. La API de Assistant facilita la creación de agentes complejos y orientados a tareas de manera sencilla y eficiente.
Puede ampliar las funciones del agente según sea necesario, por ejemplo, agregando más herramientas o modificando las instrucciones de comportamiento del agente.
Generar rápidamente descripciones para funciones de negocio
En el ejemplo de Inicio rápido, necesita describir la función "translate_text" al agente. Este proceso puede ser tedioso. Por lo tanto, proporcionamos una función de conversión simple para ayudarle a describir rápidamente sus funciones de negocio.
translate_text del Inicio rápido:
translate_text se convierte automáticamente en:
Usar salida streaming
Cuando utilice la salida por streaming, debe modificar la lógica del código en Paso 5: Manejar la llamada a la función y devolver el resultado. Esto se debe a que el objeto Runs ahora devuelve un flujo de eventos de Assistant.
Cuando el Assistant decide llamar a una función, el objeto Runs devuelve el evento thread.run.requires_action y los parámetros de entrada data.required_action.submit_tool_outputs.tool_calls proporcionados por el Modelo de Lenguaje Grande (LLM). Debe enviar la salida de la función en este punto.
Tenga en cuenta que también debe habilitar la salida por streaming cuando envíe la salida de la función con run = Runs.submit_tool_outputs.
while adicional fuera del bucle for que procesa el flujo de eventos. Esto se debe a que el sistema genera un nuevo objeto Runs cuando usted envía la salida de la función. El bucle while le ayuda a rastrear automáticamente el flujo de eventos más reciente. Esto permite que el Assistant continúe generando una respuesta después de recibir el resultado de la llamada a la función.