Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La llamada a funciones es una característica de modelo de OpenAI que permite describir funciones y sus argumentos en indicaciones mediante JSON. En lugar de invocar la propia función, el modelo devuelve una salida JSON que describe qué funciones se deben llamar y los argumentos que se van a usar.
La llamada a funciones simplifica la manera de conectar herramientas externas al modelo de IA. En primer lugar, especifique las funciones de cada herramienta en el modelo. A continuación, el modelo decide a qué funciones se debe llamar, en función de la pregunta de la indicación. El modelo usa los resultados de la llamada a la función para crear una respuesta más precisa y coherente.
Entre los posibles casos de uso para las llamadas a funciones se incluyen los siguientes:
- Responder a preguntas mediante una llamada a API externas, por ejemplo, enviar correos electrónicos u obtener la previsión meteorológica.
- Responder a preguntas con información de un almacén de datos interno, por ejemplo, agregar datos de ventas para responder: "¿Cuáles son mis productos más vendidos?".
- Crear datos estructurados a partir de información de texto, por ejemplo, crear un objeto de información de usuario con detalles del historial de chat.
Llamar a funciones con OpenAI
Los pasos generales para llamar a funciones con un modelo de OpenAI son los siguientes:
- Envíe la pregunta del usuario como una solicitud con funciones definidas en los parámetros
tools
. - El modelo decide a qué funciones se va a llamar, si se llama a alguna. La salida contiene un objeto JSON que enumera las llamadas a funciones y sus argumentos.
Nota:
El modelo podría alucinar argumentos adicionales.
- Analice la salida y llame a las funciones solicitadas con sus argumentos especificados.
- Envíe otra solicitud con los resultados de la función incluidos como un mensaje nuevo.
- El modelo responde con más solicitudes de llamada a funciones o una respuesta a la pregunta del usuario.
- Continúe invocando las llamadas a funciones solicitadas hasta que el modelo responda con una respuesta.
Puede forzar que el modelo solicite una función específica estableciendo el parámetro tool_choice
en el nombre de la función. También puede forzar que el modelo responda con un mensaje para el usuario estableciendo el parámetro tool_choice
en "none"
.
Llamar a funciones en paralelo
Algunos modelos admiten llamadas a funciones paralelas, lo que permite al modelo solicitar varias llamadas a funciones en una salida. Los resultados de cada llamada a una función se incluyen juntos en una respuesta al modelo. La llamada a funciones paralelas reduce el número de solicitudes de API y el tiempo necesario para generar una respuesta. Cada resultado de la función se incluye como un mensaje nuevo en la conversación con una coincidencia entre tool_call_id
y id
de la solicitud de la llamada a funciones.
Modelos admitidos
No todos los modelos de OpenAI están entrenados para admitir llamadas a funciones. Para obtener una lista de los modelos que admiten llamadas a funciones o llamadas a funciones paralelas, consulte OpenAI: modelos compatibles.
Llamada a funciones con el SDK de Semantic Kernel
El SDK de Semantic Kernel admite la descripción de las funciones disponibles para la inteligencia artificial mediante el decorador KernelFunction
.
El kernel compila el parámetro tools
de una solicitud basada en los decoradores, organiza las llamadas a las funciones solicitadas al código y devuelve los resultados al modelo.
Recuentos de tokens
Las descripciones de funciones se incluyen en el mensaje del sistema de la solicitud a un modelo. Estas descripciones de función se cuentan para el límite de tokens del modelo y se incluyen en el costo de la solicitud.
Si la solicitud supera el límite de tokens del modelo, pruebe las siguientes modificaciones:
- Reduzca el número de funciones.
- Acorte las descripciones de la función y los argumentos en el JSON.