Cómo crear agentes de IA con herramientas en C#

Actualización definitiva: 05/21/2026
  • Los agentes de IA en C# combinan el razonamiento LLM con herramientas, contexto y memoria para lograr objetivos en lugar de simplemente responder a preguntas.
  • Las API de OpenAI y Azure OpenAI Assistants proporcionan asistentes, subprocesos, ejecuciones, herramientas y búsqueda de archivos como elementos básicos para los agentes .NET.
  • Los agentes preparados para entornos empresariales requieren una sólida gestión del estado, herramientas como funciones C#, observabilidad, controles de seguridad y un diseño que tenga en cuenta los costes.
  • Las herramientas de Microsoft.Extensions.AI, VectorData, Azure AI Foundry y VS Code simplifican el desarrollo, la implementación y el escalado de agentes de IA en C#.

Agentes de IA con herramientas en C#

Crear agentes de IA con herramientas en C# ya no es un sueño futurista; es una forma muy práctica de automatizar flujos de trabajo, analizar datos y conectar tus aplicaciones .NET con grandes modelos de lenguaje (LLM).Con la arquitectura adecuada, se puede pasar de un simple cliente de chat a agentes de nivel de producción que razonan, llaman a las API, orquestan flujos de trabajo y respetan las restricciones empresariales como la seguridad, la observabilidad y el control de costes.

Esta guía le muestra cómo los conceptos modernos de agentes de IA se adaptan a una pila de C#, cómo encajan Azure OpenAI y la API de OpenAI Assistants, y cómo integrar todo en prácticas sólidas de ingeniería de software .NET.También conectaremos estas ideas con los marcos de agentes emergentes y las herramientas de IA de Microsoft en Visual Studio Code, para que obtenga una visión completa, desde el prototipo local hasta la implementación escalable en la nube.

Desde chatbots hasta agentes de IA completos en C#

En términos generales, un agente de IA es un sistema que persigue objetivos en lugar de simplemente responder a preguntas puntuales.Eso significa que el agente necesita una combinación de razonamiento, herramientas, conocimiento del contexto y memoria para poder decidir qué hacer a continuación, no solo qué responder en el turno actual.

En términos prácticos de C#, se puede pensar en un agente como una capa de coordinación sobre un cliente LLM más un conjunto de herramientas expuestas como métodos .NET, API o servicios externos.El modelo aporta el razonamiento y la comprensión del lenguaje, mientras que su código C# aporta la lógica empresarial, el acceso a los datos, la seguridad y las integraciones con sus sistemas existentes.

Los agentes modernos a menudo dependen de grandes modelos de lenguaje para la toma de decisiones, algoritmos de búsqueda o lógica de planificación, pero se vuelven realmente útiles solo cuando están conectados a herramientas.Las herramientas pueden incluir consultas a bases de datos, API HTTP, microservicios internos, búsqueda de archivos o un intérprete de código aislado donde el agente puede ejecutar código de análisis de datos de forma segura.

La comprensión del contexto es la última pieza fundamental, que permite al agente utilizar el historial de chat, los almacenes de vectores, los datos empresariales o los grafos de conocimiento como parte de su razonamiento.Ese contexto puede ser tan simple como un breve registro de conversación almacenado en la memoria, o tan complejo como un estado de flujo de trabajo distribuido que abarca múltiples agentes y almacenes de datos.

Componentes básicos de los asistentes y agentes de IA

Las API de OpenAI y Azure OpenAI Assistants proporcionan un conjunto muy concreto de primitivas para crear agentes en C#.En lugar de crear manualmente máquinas de estados, se trabaja con entidades bien definidas que coinciden con la forma en que piensan y operan los agentes basados ​​en LLM.

Un asistente representa la personalidad de IA configurada: qué modelo utiliza, qué instrucciones sigue y qué herramientas tiene permitido llamar.En C#, esto se corresponde con un objeto que se crea con opciones como el nombre, las instrucciones del sistema y una lista de definiciones de herramientas que describen lo que el modelo puede invocar.

Un hilo es la sesión conversacional que vincula a un usuario con un asistente a lo largo del tiempo.El hilo almacena la lista ordenada de mensajes, gestiona automáticamente el truncamiento del contexto para mantenerse dentro de los límites de los tokens y actúa como la columna vertebral de la memoria del agente para esa interacción.

Los mensajes son las piezas concretas de contenido que fluyen entre el usuario y el asistente.En la API de Assistants, un mensaje puede contener texto sin formato, imágenes u otros archivos. En C#, se consumen como objetos en una colección, inspeccionando el texto, las anotaciones o los identificadores de archivo asociados según el contenido.

Una ejecución es la operación que inicia el razonamiento del asistente sobre el contenido de un hilo.Una vez que se inicia una ejecución, el asistente aplica su configuración, lee los mensajes, llama a las herramientas según sea necesario y luego agrega nuevos mensajes con sus resultados al mismo hilo.

Los pasos de ejecución capturan la secuencia detallada de acciones que realiza el asistente durante una ejecución.Al inspeccionarlos, se puede ver qué herramientas se invocaron, qué argumentos se pasaron, qué mensajes se generaron y cómo el agente llegó a su respuesta final. Esto es sumamente valioso para la depuración, la observabilidad y la auditoría en entornos empresariales.

Además de estas herramientas básicas, los asistentes pueden utilizar varias herramientas en paralelo para completar tareas.Entre los tipos de herramientas integradas típicas se incluyen un intérprete de código que puede ejecutar fragmentos en un entorno de ejecución aislado, llamadas a funciones personalizadas (sus propias funciones .NET expuestas como herramientas) y capacidades de búsqueda de archivos que amplían el modelo con conocimiento externo.

Uso de herramientas: ejecución de código, llamadas a funciones y búsqueda de archivos.

Las herramientas son las que transforman un modelo de lenguaje pasivo en un agente capaz de realizar tareas dentro de su aplicación .NET.En lugar de devolver solo texto, el modelo puede decidir llamar a una función, ejecutar código o buscar en un almacén de archivos cuando esa sea la mejor manera de responder a la solicitud del usuario.

La herramienta intérprete de código permite al agente escribir y ejecutar código en un entorno aislado para tareas como análisis de datos, visualización o simulaciones básicas.Desde C#, no se ejecuta ese código directamente; se configura el asistente con la capacidad de intérprete de código y luego se leen los resultados que produce, como imágenes generadas o resultados estructurados.

La llamada a funciones expone la lógica de dominio propia como herramientas que el modelo puede seleccionar e invocar.Cada función se describe con metadatos: nombre, propósito y esquema de parámetros. El asistente decide cuándo activar esas funciones según la entrada del usuario y un razonamiento intermedio, mientras que la implementación en C# se encarga de la validación, los errores y los tiempos de espera.

Las herramientas de búsqueda de archivos permiten al agente basar sus respuestas en datos externos, como documentación, informes o bases de conocimiento.Usted carga archivos, crea almacenes de vectores o índices y otorga acceso al asistente. A partir de ahí, el modelo puede recuperar fragmentos de contenido relevantes e incorporarlos a sus respuestas, mejorando la precisión y la trazabilidad de los datos.

Un principio de diseño clave es que las herramientas deben ser seguras y resistentes, con una sólida validación de entrada, manejo de errores y límites de recursos claros.Aunque el LLM decide cuándo llamarlos, su código C# sigue siendo totalmente responsable de hacer cumplir las reglas de negocio, los límites de velocidad y las políticas de acceso a los datos.

Creación de un agente de aplicación de consola .NET mínimo con Azure OpenAI.

Para concretar todo esto, puedes empezar con una sencilla aplicación de consola .NET que se comunique con la API de OpenAI o Azure OpenAI Assistants.Este tipo de proyecto minimalista es perfecto para agentes de prueba de concepto que existen completamente en código, pero que ya utilizan herramientas, archivos e hilos de conversación.

El primer paso es crear el proyecto de consola .NET y agregar los paquetes SDK necesarios que le dan acceso a los clientes de OpenAI y Azure OpenAI.Una vez configurados, se instancia un cliente genérico de OpenAI utilizando la clave de API o un cliente específico de Azure que apunte al punto final de Azure OpenAI y utilice una credencial como DefaultAzureCredential.

Del cliente general se derivan clientes especializados: un cliente asistente para administrar asistentes, subprocesos y ejecuciones, y un cliente de archivos para cargar y descargar archivos.Esta separación deja claro qué operaciones se refieren a la configuración y la orquestación, y cuáles al manejo directo de archivos.

Luego, puede crear un flujo de documentos en memoria directamente dentro de su código C# para simular datos comerciales reales.Por ejemplo, podrías definir un pequeño documento JSON que contenga métricas de ventas mensuales para diferentes ID de producto y convertirlo en un flujo que el cliente de archivos pueda cargar.

Una vez que el archivo se carga para que el asistente lo utilice, la plataforma devuelve un identificador de archivo que puede vincular a un nuevo almacén de vectores y adjuntar al asistente como un recurso de búsqueda de archivos.En la misma configuración del asistente, también se habilita el intérprete de código para que el agente no solo pueda consultar valores, sino también generar gráficos o análisis más avanzados.

Después de preparar las opciones del asistente con un nombre, instrucciones y definiciones de herramientas, se crea el asistente respaldado por un modelo como gpt-4o.También se configura un hilo con un mensaje inicial para el usuario, por ejemplo, solicitando información sobre el rendimiento de un producto específico a lo largo del tiempo y pidiendo una visualización.

El cliente asistente le permite crear el hilo e iniciar una ejecución inmediatamente en una sola llamada, luego consultar el estado de la ejecución hasta que alcance un estado terminal.Este bucle de sondeo es simple pero efectivo para herramientas de línea de comandos; en un entorno web o de servicios en segundo plano, podría optar por patrones asíncronos o basados ​​en eventos.

Una vez que la ejecución haya finalizado, se transmiten los mensajes del hilo en orden ascendente y se imprimen las respuestas del asistente en la consola.Para cada fragmento de contenido, puede inspeccionar el texto, las anotaciones que hacen referencia a archivos de entrada o salida, y cualquier imagen generada por el intérprete de código que luego guarde en el disco y registre con una simple etiqueta de marcador de posición en la salida de la consola.

Gestión del estado, memoria y diseño de conversaciones

En cuanto vayas más allá de los ejemplos de juguete, el estado y la memoria se convertirán en aspectos centrales del diseño de tu agente en C#.El problema radica en que el historial de conversaciones crece sin límites, mientras que los modelos tienen límites estrictos de tokens y, además, es necesario conservar los datos para el cumplimiento normativo, el análisis o la depuración.

Una estrategia común es mantener hilos o sesiones separadas por usuario o caso de uso, y resumir periódicamente la conversación para conservar solo el contexto más relevante.Los resúmenes pueden ser generados por el propio modelo y luego almacenados junto con metadatos estructurados en una base de datos o almacén vectorial.

Un enfoque más avanzado utiliza la importancia semántica para decidir qué conservar, comprimir o descartar.En lugar de simplemente eliminar los mensajes más antiguos, se etiqueta o indexa el contenido por temas, entidades o procesos de negocio, y se ejecutan consultas específicas para reconstruir solo el contexto necesario para una nueva ejecución.

En C#, normalmente se implementa la memoria como una combinación de cachés en el proceso para un acceso rápido y almacenamiento persistente para durabilidad y auditabilidad.Eso podría significar combinar una base de datos relacional para metadatos estructurados con una base de datos vectorial para la búsqueda semántica en contenido no estructurado, todo ello oculto tras interfaces de repositorio a las que sus agentes pueden acceder sin preocuparse por la tecnología subyacente.

Un diseño de conversación bien pensado también es importante: debes elaborar instrucciones del sistema, descripciones de herramientas y avisos para el usuario de manera que el LLM pueda razonar eficazmente sin salirse de los límites de tu dominio.Esto incluye aclarar cuándo el agente debe hacer preguntas aclaratorias, cuándo llamar a una herramienta y cuándo rechazar una solicitud que se salga de su ámbito permitido.

Herramientas como funciones de C#, API y servicios externos

En aplicaciones reales, las herramientas más potentes son las funciones de dominio propias, expuestas para que el agente pueda coordinar el trabajo en todos sus sistemas internos.Estas operaciones pueden incluir la creación de tickets, la consulta de registros de clientes, la ejecución de cálculos financieros o la activación de flujos de trabajo en sus microservicios existentes.

Para cada herramienta, conviene proporcionar metadatos detallados que describan su función, las entradas que espera y lo que devuelve, idealmente en un esquema legible por máquina.Esto ayuda al LLM a elegir la herramienta adecuada, construir argumentos válidos e interpretar correctamente los resultados, reduciendo las alucinaciones y los errores.

En lo que respecta a la implementación, cada controlador de herramientas en C# necesita programación defensiva: validación estricta de la entrada, manejo robusto de excepciones y tiempos de espera razonables.El agente podría intentar cosas que no tienen sentido desde el punto de vista empresarial; su código debe aplicar políticas en lugar de asumir que el modelo siempre se comporta de forma predecible.

También es conveniente registrar cada invocación de la herramienta junto con el usuario que la llama, el segmento de solicitud que la activa y el resultado.Esto le proporciona un registro de auditoría claro, respalda las revisiones de seguridad y le permite ajustar qué herramientas son más efectivas o necesitan medidas de seguridad adicionales.

Orquestación y flujos de trabajo multiagente en .NET

A medida que sus escenarios se vuelven más complejos, es posible que descubra que un solo agente no es suficiente y que necesita varios agentes especializados que trabajen juntos.Por ejemplo, un agente podría centrarse en la investigación y la recopilación de datos, otro en el análisis y un tercero en la elaboración de informes fáciles de usar.

Conceptualmente, esto se ajusta bien a los patrones de flujo de trabajo que los desarrolladores .NET ya conocen: pasos secuenciales, ramas paralelas, traspasos y roles de supervisión.En lugar de utilizar una lógica predefinida, los agentes se coordinan mediante mensajes estructurados y un espacio de trabajo compartido, pero los patrones de orquestación resultan familiares.

Los flujos de trabajo secuenciales pasan la salida de un agente directamente al siguiente, lo que resulta ideal para tareas lineales como la recopilación de requisitos, el diseño, la implementación y la revisión.Los flujos de trabajo paralelos permiten que varios agentes procesen diferentes aspectos de un problema al mismo tiempo y, posteriormente, combinen sus resultados en un paso posterior.

Los patrones de transferencia permiten que la responsabilidad pase de un agente a otro en función de ciertas condiciones, como umbrales de confianza, categorías de contenido o acciones del usuario.Las configuraciones tipo chat grupal reúnen a varios agentes en una conversación compartida donde pueden debatir opciones, intercambiar ideas y llegar a una solución en tiempo real.

Las configuraciones supervisadas o jerárquicas introducen un agente gestor que revisa los resultados intermedios, asigna tareas y resuelve conflictos.En .NET, esta orquestación se puede representar mediante trabajadores en segundo plano, colas de mensajes o motores de flujo de trabajo, mientras que los propios agentes se comunican a través de la API de Assistants o abstracciones relacionadas.

Microsoft.Extensions.AI, VectorData y Agent Framework

Para que la creación de agentes sea más idiomática para los desarrolladores de .NET, Microsoft está introduciendo bibliotecas fundamentales como Microsoft.Extensions.AI y Microsoft.Extensions.VectorData.Estas bibliotecas están diseñadas para que su funcionamiento sea similar al de otros paquetes de Microsoft.Extensions que ya utiliza para el registro de eventos, la configuración y la inyección de dependencias.

Las extensiones de IA proporcionan componentes modulares para trabajar con modelos, herramientas y sugerencias de forma integrable.En lugar de codificar de forma fija un proveedor LLM específico, puede registrar proveedores de modelos y cambiarlos mediante la configuración, lo cual es extremadamente útil cuando necesita equilibrar el costo, la latencia y la capacidad en diferentes entornos.

Las extensiones de datos vectoriales se centran en integrar la búsqueda semántica y la generación aumentada de recuperación en sus aplicaciones.Abstraen las implementaciones específicas de bases de datos vectoriales y proporcionan interfaces comunes para almacenar, buscar y gestionar incrustaciones que alimentan la memoria a largo plazo de su agente.

Además de estos componentes básicos, Microsoft Agent Framework pretende ofrecer una abstracción de nivel superior específicamente adaptada a los escenarios de agentes y flujos de trabajo.Si bien los detalles siguen evolucionando, la intención es proporcionar una forma coherente de definir agentes, herramientas, flujos de trabajo y contexto, con una sólida integración en el ecosistema más amplio de .NET y Azure.

Kit de herramientas de IA, Azure AI Foundry y agentes de Visual Studio Code

Muchos desarrolladores prefieren explorar y crear prototipos de agentes directamente desde su editor, y ahí es precisamente donde entran en juego las extensiones AI Toolkit y Azure AI Foundry para Visual Studio Code.En conjunto, permiten explorar modelos, implementarlos, evaluar su calidad e integrarlos en agentes sin salir del entorno de codificación.

La extensión AI Toolkit muestra un catálogo de modelos donde puede inspeccionar modelos alojados en la nube y locales, incluidos aquellos servidos a través de herramientas como Ollama.Puedes crear modelos alojados en GitHub, comparar los resultados de diferentes modelos uno al lado del otro y ver rápidamente cuál se ajusta mejor a tu caso de uso.

La integración con Azure AI Foundry añade otra capa: puedes implementar modelos directamente en Azure, generar código cliente C# de ejemplo para llamarlos y ajustar la configuración y los metadatos desde VS Code.Esto simplifica el proceso desde la experimentación hasta la producción, especialmente cuando su equipo ya forma parte del ecosistema de Azure.

Estas extensiones también ayudan con la evaluación, ya que permiten configurar conjuntos de datos de prueba, ejecutar evaluaciones e inspeccionar los resultados en herramientas como Data Wrangler.Puedes definir evaluadores personalizados adaptados a tu dominio, ejecutarlos en lotes de resultados del modelo y visualizar dónde tus agentes están funcionando bien o tienen dificultades.

Para la construcción de agentes, la herramienta admite la creación de agentes con indicaciones del sistema, la generación automática de mensajes del sistema y la conexión a servidores del Protocolo de contexto de modelo (MCP) que exponen herramientas externas.Incluso puedes crear agentes al estilo de las salas de escape o agentes específicos de dominio que llamen a servidores MCP personalizados que representen tus propios servicios.

Dentro de Azure AI Foundry, obtendrá un diseñador de agentes visual, además de la sincronización YAML.Esto significa que puedes configurar agentes, adjuntar herramientas como la búsqueda de Bing o un intérprete de código, probar las interacciones en un entorno de pruebas y luego exportar o sincronizar la configuración con el control de versiones, manteniendo así alineados tu código C# y las definiciones de tus agentes.

Pruebas, observabilidad y control de costes para agentes de IA en C#

Los agentes listos para la producción exigen el mismo rigor que cualquier otro servicio de misión crítica: pruebas exhaustivas, buena telemetría y gestión continua de costes.La diferencia radica en que los modelos lineales basados ​​en lógica (LLM) introducen nuevas variables, como resultados estocásticos y el uso de tokens, que también hay que tener en cuenta.

En lo que respecta a las pruebas, conviene combinar pruebas unitarias clásicas para las herramientas con conversaciones de integración que simulen flujos de usuario realistas.Las pruebas unitarias verifican que cada herramienta se comporte correctamente con ciertas entradas, mientras que las pruebas de conversación comprueban que el agente elija herramientas adecuadas, produzca argumentos válidos y se mantenga dentro de los límites de la política.

La observabilidad debe capturar más que solo el éxito o el fracaso; se necesitan distribuciones de latencia, consumo de tokens, seguimientos de pasos de ejecución y estadísticas de llamadas a herramientas.Estas métricas facilitan la detección de regresiones al cambiar modelos, indicaciones o implementaciones de herramientas, y ayudan a optimizar el sistema en términos de rendimiento y coste.

El control de costes está estrechamente relacionado con la forma en que se gestiona la duración de las conversaciones y la frecuencia de las llamadas a las herramientas.Las conversaciones largas e ilimitadas pueden disparar el uso de tokens y ralentizar las respuestas, por lo que estrategias como el resumen, las ventanas de contexto y el truncamiento inteligente son esenciales en cualquier implementación seria de C#.

También es una buena idea realizar un seguimiento de las tasas de éxito a nivel de rutas de ejecución o flujos de trabajo específicos, no solo a nivel general del agente.De esa forma, podrá ver qué rutas a través de su sistema multiagente son fiables y cuáles necesitan mejores indicaciones, nuevas herramientas o medidas de seguridad adicionales.

Seguridad, cumplimiento normativo e integración empresarial

Cuando sus agentes comienzan a manejar datos confidenciales o a automatizar operaciones críticas para el negocio, la seguridad y el cumplimiento normativo no pueden ser una cuestión secundaria.La combinación de la flexibilidad de LLM y las limitaciones empresariales exige una postura de seguridad muy cuidadosa.

En primer lugar, nunca incluyas credenciales o secretos directamente en tu código C#.Utilice mecanismos estándar de gestión de secretos en su plataforma en la nube, variables de entorno o identidades gestionadas, y asegúrese de que su proceso de agente solo tenga los privilegios que realmente necesita.

En segundo lugar, cada llamada externa realizada en nombre del agente debe pasar por capas de saneamiento y validación.Esto incluye tanto las entradas del usuario como los argumentos generados por el modelo para las herramientas, ya que ambos pueden contener contenido inesperado, mal formado o malicioso.

En tercer lugar, debe registrar y auditar cada invocación de la herramienta, incluyendo el contexto clave como el usuario, el agente que realiza la llamada, el sistema de destino y el resultado.En las industrias reguladas, este registro de auditoría puede ser obligatorio; incluso fuera de esos entornos, resulta invaluable para la respuesta a incidentes y la gobernanza.

Finalmente, alinee su arquitectura de implementación con patrones empresariales como la separación de los planos de control e inferencia.Esto implica aislar la orquestación, la configuración y la monitorización de los procesos de inferencia más complejos, lo que mejora la escalabilidad, la seguridad y la resiliencia operativa.

Implementación, escalado y conexión a análisis

Una vez que sus agentes C# se comporten correctamente en las pruebas, necesitará una estrategia de implementación que se escale de manera eficiente y se integre con el resto de su pila tecnológica.Los contenedores, los orquestadores y los servicios de IA gestionados son tus aliados en este caso.

Un patrón común consiste en empaquetar la capa de orquestación de agentes en contenedores y ejecutarlos bajo Kubernetes u otro orquestador, mientras se delega la inferencia LLM a servicios gestionados como Azure OpenAI.Esto le permite escalar su plano de control y su plano de inferencia de forma independiente a medida que fluctúa la demanda.

Las interacciones prolongadas o intensas con los agentes suelen beneficiarse del procesamiento asíncrono y las colas.En lugar de bloquear las solicitudes HTTP mientras se completa una ejecución compleja de varios pasos, se ponen en cola los elementos de trabajo, se deja que los procesos en segundo plano los gestionen y se notifica a los clientes cuando los resultados están listos.

Desde una perspectiva empresarial, el verdadero valor suele aparecer cuando se introducen los resultados de los agentes en herramientas de análisis e inteligencia empresarial.Eso podría significar trasladar resúmenes estructurados, decisiones o métricas a almacenes de datos y mostrarlos a través de paneles en Power BI u otras plataformas de inteligencia empresarial.

Este ciclo cerrado —agentes que generan información o acciones, análisis que miden el impacto y equipos que iteran sobre indicaciones y herramientas— convierte la IA de una novedad en una capacidad operativa sostenible.Con el tiempo, podrá determinar qué agentes ofrecen el mayor retorno de la inversión, qué flujos de trabajo deben automatizarse aún más y dónde debe mantenerse la supervisión humana.

Al combinar todos estos elementos, se obtiene un ecosistema centrado en C# donde cooperan asistentes, herramientas, flujos de trabajo y servicios en la nube: la API de Asistentes proporciona razonamiento conversacional, el código .NET aporta herramientas y estado robustos, las bibliotecas Microsoft.Extensions ofrecen abstracciones claras, y Azure AI Foundry y AI Toolkit simplifican la experimentación y la implementación.Con una atención meticulosa a la memoria, la observabilidad, la seguridad y la arquitectura, estos agentes pueden ofrecer mejoras reales y cuantificables en la eficiencia, la calidad de las decisiones y la automatización en toda su organización.

Artículos Relacionados: