Docs / Agente conversacional

Caso de Uso :: Agente Conversacional (jg_plugin_conversational)

"La conversación fluida entre un modelo de lenguaje y un usuario final es la superficie de interacción más visible de un agente cognitivo, pero también la que requiere mayor rigor perimetral cuando interactúa con fuentes de datos externas no confiables."


1. Misión y Topología de Despliegue Aislado

El agente conversacional (jg_agente_conversacional, expuesto en el puerto 8001) opera como un entorno de asistencia general, resumen de información de actualidad y telemetría ambiental, con un aislamiento arquitectónico estricto:

  • Sin Acceso a Recursos Sensibles: A diferencia del agente DevOps o de infraestructura, este runtime carece por diseño de montajes de sockets de Docker, permisos de escritura en el sistema de archivos del host o credenciales administrativas.
  • Consumo de Fuentes Externas Seguras: Descarga de titulares periodísticos a través de feeds RSS/Atom y consultas meteorológicas al API de OpenWeatherMap.
  • Fallback Determinista en Aislamiento: Si la red exterior está inaccesible o la resolución de nombres DNS se restringe en entornos cerrados, el agente conmuta de forma suave a respuestas sintetizadas sin generar excepciones no controladas en el grafo cognitivo.

2. Catálogo de Herramientas de Dominio

El plugin jg_plugin_conversational, empaquetado bajo los contratos de jg_agente_sdk, expone las siguientes herramientas:

Herramienta Tipo Riesgo Proveedor / Protocolo Descripción
news_reader (NewsTool) READ LOW Feeds RSS/Atom con validación de IP y DNS Pinning Ingesta y filtrado semántico de noticias de actualidad.
weather_forecast (WeatherTool) READ LOW API REST OpenWeatherMap v2.5/v3.0 Lectura de temperatura, humedad y pronósticos locales.

3. Defensa en Profundidad: Mitigación Anti-SSRF en Ingesta de Noticias

Permitir que un agente descargue contenidos web a partir de URLs propuestas por el LLM o introducidas por usuarios introduce el riesgo de ataques de Server-Side Request Forgery (SSRF) y DNS Rebinding contra la red interna del clúster (ej. 169.254.169.254, localhost, 10.0.0.0/8).

Para mitigar esta vulnerabilidad de forma determinista, la herramienta implementa SSRFValidator con Socket Pinning a nivel TCP:

# jg_plugin_conversational/tools/news.py
import httpx
from jg_sdk.contracts import ToolResult
from jg_agente.security.ssrf import SSRFValidator, PinnedTransport

async def execute(self, feed_url: str, limit: int = 5) -> ToolResult:
    # 1. Resolución DNS estricta y descarte de rangos privados/reservados
    resolved_ip = await SSRFValidator.validate_and_pin(feed_url)
    
    # 2. Conexión TCP obligando a conectar a la IP validada (evita DNS Rebinding)
    async with httpx.AsyncClient(transport=PinnedTransport(resolved_ip)) as client:
        response = await client.get(feed_url, timeout=10.0)
        entries = parse_rss_xml(response.text, limit=limit)
        
    return ToolResult(success=True, output={"articles": entries})

4. Probando el Agente Conversacional en el Hub

Puedes interactuar directamente con este agente en la Terminal Interactiva de la Consola Principal, seleccionando el destino conversacional y explorando en tiempo real las trazas cognitivas de ejecución LangGraph y el consumo de créditos.

Metadatos del documento
Título Caso de Uso :: Agente Conversacional (jg_plugin_conversational)
Archivo docs/02_jg_agent/use_cases/conversational.md
Descripción Caso de uso de asistencia inteligente y contexto general: ingesta de feeds RSS con blindaje anti-SSRF y DNS pinning, telemetría meteorológica y respuestas deterministas en redes aisladas.
Autor Javier Gálvez
Fecha 2026-10-17
Etiquetas
#Caso de Uso #Conversational #RSS #Weather #SSRF #DNS Pinning #LangGraph