Desarrolla agentes avanzados para la búsqueda empresarial con NVIDIA y LangChain

Las herramientas de inteligencia artificial para empresas enfrentan desafíos relacionados con datos desarticulados y contexto limitado. Desarrollada con LangChain, la plantilla NVIDIA AI-Q es un recurso de código abierto que aborda esta problemática. LangChain ha lanzado una plataforma de agentes empresariales utilizando NVIDIA AI, destinada a facilitar el desarrollo de agentes escalables y listos para producción.

Este tutorial, disponible como un lanzable de NVIDIA, enseña a los desarrolladores cómo usar la plantilla AI-Q para crear un agente de investigación profunda que sobresale en las clasificaciones y se puede conectar a sistemas empresariales. La plantilla aprovecha lo mejor de los modelos de lenguaje grande (LLMs), se optimiza con el NVIDIA NeMo Agent Toolkit y se monitorea con LangSmith. El resultado es una reducción en el tiempo de producción para aplicaciones de búsqueda agente que mantienen los datos empresariales donde deben estar: en un entorno privado y seguro.

Construcción de un agente profundo

El tutorial incluye:

  • Despliegue de la plantilla NVIDIA AI‑Q con LangChain para casos de uso de búsqueda empresarial.
  • Configuración de agentes de investigación superficiales y profundos utilizando Nemotron y LLMs de frontera.
  • Monitoreo de trazas y rendimiento de agentes con LangSmith y herramientas de NVIDIA.
  • Conexión de fuentes de datos empresariales internas a través de herramientas del NeMo Agent Toolkit.

Instalación y ejecución de la plantilla

Clona el repositorio y configura tus claves API. Comienza copiando la plantilla de entorno.

 cp deploy/.env.example deploy/.env 

Abre deploy/.env y completa los valores requeridos.

 # Required NVIDIA_API_KEY=nvapi-... TAVILY_API_KEY=tvly-... # Optional: enables trace monitoring LANGSMITH_API_KEY=lsv2-... 

La clave NVIDIA_API_KEY permite acceder a modelos alojados por NVIDIA, como Nemotron 3 Nano. La TAVILY_API_KEY habilita la búsqueda en la web.

A continuación, construye y comienza la pila completa. Iniciar múltiples contenedores puede tardar unos minutos, dependiendo de tu conexión a Internet y especificaciones de hardware.

 docker compose -f deploy/compose/docker-compose.yaml up --build 

Esto lanza tres servicios:

  • aiq-research-assistant: El backend FastAPI en el puerto 8000.
  • postgres: PostgreSQL 16 para el estado de trabajos asíncronos y puntos de control de conversación.
  • frontend: La interfaz web Next.js en el puerto 3000.

Una vez que todos los servicios reporten estar saludables, abre http://localhost:3000. En la Figura 1, se muestra la interfaz de chat del AI-Q Research Assistant, donde puedes escribir una consulta de investigación y observar al agente trabajar en tiempo real.

Personalización de AI-Q

Abre configs/config_web_docker.yml. Este archivo controla la configuración de LLMs, herramientas, agentes y flujos de trabajo.

La sección llms declara modelos nombrados. Observa la bandera enable_thinking, que activa o desactiva el razonamiento en cadena para Nemotron. El siguiente ejemplo declara tres LLMs con diferentes roles:

 llms: nemotron_llm_non_thinking: _type: nim model_name: nvidia/nemotron-3-super-120b-a12b temperature: 0.7 max_tokens: 8192 chat_template_kwargs: enable_thinking: false nemotron_llm: _type: nim model_name: nvidia/nemotron-3-super-120b-a12b temperature: 1.0 max_tokens: 100000 chat_template_kwargs: enable_thinking: true gpt-5-2: _type: openai model_name: 'gpt-5.2' 

nemotron_llm_non_thinking maneja respuestas rápidas donde el razonamiento en cadena añade latencia sin beneficio. nemotron_llm habilita el modo de pensamiento con una ventana de contexto de 100K para los agentes que necesitan razonamiento de múltiples pasos. gpt-5.2 añade un modelo de frontera para orquestación.

La plantilla incluye tanto un agente de investigación superficial como uno profundo. La siguiente configuración muestra ambos:

 functions: shallow_research_agent: _type: shallow_research_agent llm: nemotron_llm tools: - web_search_tool max_llm_turns: 10 max_tool_calls: 5 deep_research_agent: _type: deep_research_agent orchestrator_llm: gpt-5 planner_llm: nemotron_llm researcher_llm: nemotron_llm max_loops: 2 tools: - advanced_web_search_tool 

El agente de investigación superficial ejecuta un ciclo de llamadas a herramientas limitado: hasta 10 turnos de LLM y 5 llamadas a herramientas, devolviendo una respuesta concisa con citas. Preguntas simples como “¿Qué es CUDA?” se resuelven en segundos. El agente de investigación profunda utiliza un agente profundo de LangChain con una lista de tareas, sistema de archivos y subagentes para producir informes largos respaldados por citas.

Monitoreo de trazas

Para monitorear los agentes AI‑Q, activa el rastreo de LangSmith para que cada consulta genere una traza de ejecución completa. Añade tu LANGSMITH_API_KEY a tu deploy/.env y agrega la sección de telemetría al archivo de configuración:

 general: telemetry: tracing: langsmith: _type: langsmith project: aiq-gtc-demo api_key: ${LANGSMITH_API_KEY} 

Cada consulta genera una traza que captura el camino completo de ejecución.

Alt text: A LangSmith interface displays a technical trace for a research query about the deepest place on Earth. The screen shows a hierarchical execution tree of tool calls and the final AI-generated response identifying the Mariana Trench.

Consulta de investigación superficial de ejemplo:

 What is the deepest place on earth? 

Consulta de investigación profunda de ejemplo:

 Analyze the current 2026 scientific consensus on the deepest points on Earth, comparing the Challenger Deep in the Mariana Trench to terrestrial extremes such as the Veryovkina Cave and the Kola Superdeep Borehole. Include the latest bathymetric and geodetic measurements, an assessment of measurement uncertainties (including gravity and pressure sensor corrections), and a summary of recent deep-sea expeditions from 2020–2026 that have updated our understanding of the Hadal zone's topography and biological life. 

Expande la traza para inspeccionar cada nodo. Las llamadas a herramientas de búsqueda web son especialmente útiles para depuración, ya que puedes ver exactamente qué consulta envió el agente y qué resultados regresaron. Además de las trazas individuales, utiliza LangSmith para rastrear la latencia, el uso de tokens y las tasas de error a lo largo del tiempo, y establecer alertas para regresiones.

Optimización de un agente profundo

Para ajustar el agente de investigación profunda a tu dominio, comienza examinando cómo ensambla sus subagentes. El agente de investigación profunda utiliza la fábrica create_deep_agent de la biblioteca deepagents de LangChain.

 from deepagents import create_deep_agent return create_deep_agent( model=self.llm_provider.get(LLMRole.ORCHESTRATOR), system_prompt=orchestrator_prompt, tools=self.tools, subagents=self.subagents, middleware=custom_middleware, skills=self.skills, ).with_config({"recursion_limit": 1000}) 

La fábrica conecta el LLM orquestador, las herramientas y dos subagentes.

 self.subagents = [ { "name": "planner-agent", "system_prompt": render_prompt_template( self._prompts["planner"], tools=self.tools_info, ), "tools": self.tools, "model": self.llm_provider.get(LLMRole.PLANNER), }, { "name": "researcher-agent", "system_prompt": render_prompt_template( self._prompts["researcher"], tools=self.tools_info, ), "tools": self.tools, "model": self.llm_provider.get(LLMRole.RESEARCHER), }, ] 

La gestión de contexto es central en el funcionamiento de los agentes profundos. El agente planificador produce un plan de investigación en JSON. El agente investigador solo recibe este plan, no los tokens de pensamiento del orquestador ni el razonamiento interno del planificador. Al pasar solo una carga estructurada, reducimos la sobrecarga de tokens y prevenimos el fenómeno de “perderse en el medio”, donde los LLMs olvidan instrucciones críticas enterradas en ventanas de contexto masivas. Esta aislación mantiene cada subagente enfocado. El siguiente ejemplo muestra una salida del planificador para una consulta sobre generación aumentada por recuperación (RAG) frente a enfoques de largo contexto:

 { "report_title": "RAG vs Long-Context Models for Enterprise Search", "report_toc": [ { "id": "1", "title": "Architectural Foundations", "subsections": [ {"id": "1.1", "title": "Retrieval-Augmented Generation Pipeline"}, {"id": "1.2", "title": "Long-Context Transformer Architectures"} ] }, { "id": "2", "title": "Performance and Accuracy Trade-offs", "subsections": [ {"id": "2.1", "title": "Factual Accuracy and Hallucination Rates"}, {"id": "2.2", "title": "Latency and Throughput Benchmarks"} ] } ], "queries": [ { "id": "q1", "query": "RAG retrieval-augmented generation architecture components ...", "target_sections": ["Architectural Foundations"], "rationale": "Establishes baseline understanding of RAG pipelines" } ] } 

Esta arquitectura ha sido ajustada para obtener buenos resultados en Deep Research Bench y Deep Research Bench II.

Para personalizar el agente para tu dominio, edita las plantillas de prompt en src/aiq_aira/agents/deep_researcher/prompts/. Por ejemplo, abre planner.j2 e instruye al planificador a limitar los esquemas a tres secciones o menos para informes más enfocados. También puedes añadir registros de depuración adicionales para inspeccionar el estado intermedio (como /planner_output.md) y observar cómo tus cambios en el prompt afectan el contexto pasado entre subagentes.

Agregar una fuente de datos

La plantilla implementa cada herramienta como una función del NeMo Agent Toolkit. Para conectar una nueva fuente de datos empresarial, implementa una función del NeMo Agent Toolkit y haz referencia a ella en la configuración.

Paso 1: Implementar la función del NeMo Agent Toolkit

El siguiente ejemplo conecta a una API de base de conocimientos interna:

 # sources/internal_kb/src/register.py from pydantic import Field, SecretStr from nat.builder.builder import Builder from nat.builder.function_info import FunctionInfo from nat.cli.register_workflow import register_function from nat.data_models.function import FunctionBaseConfig class InternalKBConfig(FunctionBaseConfig, name="internal_kb"): """Search tool for the internal knowledge base.""" api_url: str = Field(description="Knowledge base API endpoint") api_key: SecretStr = Field(description="Authentication key") max_results: int = Field(default=5) @register_function(c) async def internal_kb(config: InternalKBConfig, builder: Builder): async def search(query: str) -> str: """Search the internal knowledge base for relevant documents.""" results = await call_kb_api(config.api_url, query, config.max_results) return format_results(results) yield FunctionInfo.from_fn(search, description=search.__doc__) 

El NeMo Agent Toolkit valida los campos de configuración al inicio, por lo que las configuraciones incorrectas fallan rápidamente. El agente utilizará la docstring de la función para decidir cuándo llamar a la herramienta.

Paso 2: Referenciar la herramienta en la configuración

Declara la nueva herramienta bajo functions, luego añádela a la lista tools de cada agente:

 functions: internal_kb_tool: _type: internal_kb api_url: "https://kb.internal.company.com/api/v1" api_key: ${INTERNAL_KB_API_KEY} max_results: 10 shallow_research_agent: _type: shallow_research_agent llm: nemotron_llm tools: - web_search_tool - internal_kb_tool deep_research_agent: _type: deep_research_agent orchestrator_llm: gpt-5 planner_llm: nemotron_llm researcher_llm: nemotron_llm tools: - advanced_web_search_tool - internal_kb_tool 

No es necesario cambiar el código del agente. El agente descubre automáticamente el nombre y la descripción de la nueva herramienta, y el LLM la llama cuando una consulta coincide. Usa este mismo patrón para integrarte con tus propios sistemas empresariales o aprovecha el MCP (Model Context Protocol) para otorgar a tus agentes acceso a herramientas existentes. Esto asegura que tu pila de investigación permanezca privada y profundamente integrada con los datos más relevantes para tu organización.

Avanzando

Al extender y construir sobre la plantilla NVIDIA AI-Q, los desarrolladores pueden implementar una arquitectura de agente profundo de LangChain de primera clase en su empresa. Para avanzar más, revisa:

La plantilla NVIDIA AI-Q está siendo integrada por socios en todo el ecosistema, incluyendo: Aible, Amdocs, Cloudera, Cohesity, Dell, Distyl, H2O.ai, HPE, IBM, JFrog, LangChain, ServiceNow, y VAST.

Ilustración de un hombre mayor con auriculares y chaqueta