Sistema multiagente basado en langgraph y langchain para procesar y analizar información. El grafo (StateGraph) define un flujo de trabajo donde varios agentes especializados interactúan secuencialmente: un agente de guía (guidance_agent) que maneja las interacciones iniciales, un agente de contexto que procesa información sobre contexto, y un agente analista que realiza análisis detallados. Utiliza langchain para la integración con modelos de lenguaje (específicamente ChatOpenAI/GPT-4) y la definición de herramientas personalizadas. El grafo mantiene un estado personalizado (CustomGraphState) que hereda de MessagesState de langgraph, permitiendo el seguimiento de mensajes y contexto a través de la ejecución. La arquitectura aprovecha características clave de langgraph como el manejo de estados, nodos de herramientas (ToolNode), y el sistema de checkpointing para persistencia de memoria, mientras que langchain proporciona la infraestructura para la interacción con LLMs y la definición de herramientas.
El código fuente del sistema agéntico se puede ver aquí.
By A𝚕𝚎𝚓𝚊𝚗𝚍𝚛𝚘 A𝚌𝚎𝚟𝚎𝚍𝚘 A., P𝚑.D.
%%{
init: {
'theme': 'dark',
'flowchart': {
'curve': 'basis',
'defaultLinkColor': '#4B6B8C',
'nodeSpacing': 100,
'rankSpacing': 50
}
}
}%%
graph TD;
START([🚀 Start]):::first --> clean_messages
clean_messages --> validate_context
validate_context --> guidance_agent{{Guidance Agent}}
validate_context --> process_context
validate_context --> context_request_agent{{Context Request Agent}}
guidance_agent{{Guidance Agent}} --> guidance_agent_ask_human
guidance_agent{{Guidance Agent}} --> tool_node_prompt
guidance_agent{{Guidance Agent}} --> END([🏁 End]):::last
guidance_agent_ask_human --> guidance_agent{{Guidance Agent}}
process_context --> validate_state
tool_node_prompt --> validate_state
context_request_agent{{Context Request Agent}} --> END
validate_state --> analyst_agent{{Analyst Agent}}
analyst_agent{{Analyst Agent}} --> tools_node_analyst
analyst_agent{{Analyst Agent}} --> END
tools_node_analyst --> analyst_agent{{Analyst Agent}}
classDef default fill:#2E3D54,stroke:none,rx:10,ry:10;
classDef first fill:#1B5E20,stroke:none,rx:15,ry:15;
classDef last fill:#0066CC,stroke:none,rx:15,ry:15;
classDef agent fill:#614C66,stroke:none;
%% Styling for agents
style guidance_agent fill:#614C66,stroke:none
style analyst_agent fill:#614C66,stroke:none
style context_request_agent fill:#614C66,stroke:none
Pasos para poner en marcha tanto el servicio de backend como el de frontend.
instalar uv
curl -LsSf https://astral.sh/uv/install.sh | sh
Ejecute el siguiente comando para restaurar el entorno virtual (.venv):
uv sync
En backend/src lanzar el backend
uv run run_service.py
Instalar bun
curl -fsSL https://bun.sh/install | bash
bun --version
Instalar las librerias
bun install
En el directorio frontend lanzar el front
bun run dev
Se requiere mantener ambos servicios ejecutándose simultáneamente. El backend proporciona una API REST que expone los endpoints necesarios para la comunicación con el modelo de lenguaje y el procesamiento de datos, mientras que el frontend sirve la interfaz de usuario a través de un servidor de desarrollo. La comunicación entre ambas capas se realiza mediante peticiones HTTP/HTTPS, por lo que la inactividad de cualquiera de los servicios resultará en una degradación funcional del sistema.