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 invocación de herramientas es una capacidad de modelo de IA que permite describir herramientas disponibles al modelo de IA para que éste pueda solicitar a su aplicación que las invoque. Las herramientas pueden ser métodos de .NET, llamadas a API externas, interacciones con servidores de Protocolo de contexto de modelo (MCP) o cualquier otra operación ejecutable. En lugar de ejecutar directamente esas herramientas, el modelo devuelve una salida estructurada que describe qué herramientas llamar y con qué argumentos. La aplicación invoca esas herramientas y devuelve los resultados al modelo, lo que le permite crear una respuesta más precisa y fundamentada.
Microsoft.Extensions.AI (MEAI) proporciona abstracciones independientes del proveedor para las llamadas a herramientas que funcionan en servicios de inteligencia artificial, como Azure OpenAI, OpenAI, Ollama y otros. Escribe la lógica de llamada a herramientas una vez y funciona independientemente del modelo o proveedor subyacente que use.
¿Por qué usar llamadas a herramientas?
La llamada a herramientas simplifica la forma en que se conectan herramientas externas a modelos de IA. Describe cada herramienta al modelo como parte de la conversación. A continuación, el modelo decide qué herramientas invocar en función de la pregunta del usuario. Una vez que la aplicación invoca las herramientas solicitadas y devuelve los resultados, el modelo usa esos resultados para construir una respuesta más completa y precisa.
Entre los casos de uso comunes para las llamadas a herramientas se incluyen:
- Respuesta a preguntas mediante una llamada a api externas. Por ejemplo, comprobar la previsión meteorológica o enviar correo electrónico.
- Recuperar información de almacenes de datos internos. Por ejemplo, agregar datos de ventas para responder: "¿Cuáles son mis productos más vendidos?"
- Generar datos estructurados a partir de texto no estructurado. Por ejemplo, construir un perfil de usuario a partir del historial de chat.
Invocar funciones de IA en MEAI
El flujo general para llamar a funciones de IA con IChatClient es:
Defina los métodos de .NET como funciones y configúrelos en una ChatOptions instancia.
Envíe el mensaje del usuario al modelo. El modelo decide a qué funciones se va a llamar, si se llama a alguna. Devuelve una respuesta estructurada que enumera las llamadas de función y sus argumentos.
Nota:
Los modelos pueden hallucinar argumentos que no se describieron en las definiciones de función.
Analice la respuesta del modelo e invoque las funciones solicitadas con los argumentos especificados.
Envíe otra solicitud que incluya los resultados de la función como mensajes nuevos en el historial de conversaciones.
El modelo responde con más solicitudes de llamada de función o una respuesta final a la pregunta del usuario. Continúe invocando funciones solicitadas hasta que el modelo proporcione una respuesta final.
MEAI FunctionInvokingChatClient controla los pasos del 3 al 5 automáticamente, por lo que no es necesario administrar el bucle de invocación usted mismo.
Tipos de clave
MEAI proporciona los siguientes tipos para admitir llamadas de funciones:
- AIFunction: representa una función que se puede describir en un modelo de IA e invocada. Esta es la abstracción principal de una función en MEAI.
-
AIFunctionFactory: proporciona métodos de fábrica para crear instancias de
AIFunctiona partir de métodos de .NET. UseAIFunctionFactorypara envolver los métodos existentes como funciones sin escribir código repetitivo o de análisis de argumentos. -
FunctionInvokingChatClient: Envuelve cualquier
IChatClienty agrega capacidades de invocación automática de funciones. Cuando el modelo solicita una llamada de función,FunctionInvokingChatClientinvoca el correspondienteAIFunction, recopila el resultado y continúa la conversación, todo de forma transparente.
Llamada de funciones en paralelo
Algunos modelos admiten llamadas a funciones paralelas, donde el modelo solicita varias invocaciones de función en una sola respuesta. La aplicación invoca cada función y devuelve todos los resultados juntos en un mensaje de seguimiento. La llamada a funciones paralelas reduce el número de recorridos de ida y vuelta al modelo, lo que reduce la latencia y el uso de la API.
FunctionInvokingChatClient admite automáticamente llamadas a funciones paralelas.
Compatibilidad entre proveedores
Una de las principales ventajas de usar MEAI para las llamadas a funciones es la independencia del proveedor. Los AIFunctiontipos , AIFunctionFactoryy FunctionInvokingChatClient funcionan con cualquier IChatClient implementación, entre las que se incluyen:
- Azure OpenAI
- OpenAI
- Ollama
- Cualquier otro proveedor que implemente
IChatClient
Dado que la compatibilidad con llamadas a funciones varía entre modelos y proveedores, compruebe la documentación del proveedor para confirmar si un modelo específico admite llamadas a funciones o llamadas a funciones paralelas.
Consideraciones sobre tokens
Las descripciones de las herramientas se incluyen en la solicitud enviada al modelo y cuentan contra el límite máximo de tokens del modelo. Esto significa que las definiciones de herramientas contribuyen tanto al consumo de tokens como al costo de la solicitud.
Si la solicitud se aproxima al límite de tokens del modelo, tenga en cuenta estos ajustes:
- Reduzca el número de herramientas registradas para la conversación.
- Acorte los nombres de método y las descripciones que se usan para generar definiciones de herramientas.
- Limite el registro de herramientas solo a las herramientas pertinentes para un contexto de conversación determinado.