A modular multi-agent system built with LangGraph, featuring tool routing, conversational memory, and flexible agent orchestration.
- Multi-tool routing: Automatically routes queries to web search, calculator, or direct LLM
- Conversational memory: Maintains context across multiple turns
- Modular architecture: Easy to extend with new tools and agents
- Type-safe state management: Pydantic-based state definitions
- Production-ready: Error handling, logging, tests
User Query β Router β [Search | Calculator | Direct] β Synthesizer β Answer
Query β Memory Check β [Use History | Fetch New Info] β Answer + Update Memory
# Setup with uv
uv venv
source .venv/bin/activate
uv pip install -e .
# Configure environment
cp .env.example .env
# Add your TAVILY_API_KEY
# Install Ollama
ollama pull mistral
# Run examples
python examples/basic_usage.py
python examples/with_memory.pyfrom src.agents.multi_tool import create_multi_tool_agent
agent = create_multi_tool_agent()
result = agent.invoke({"question": "What are the latest AI trends?"})
print(result["final_answer"])from src.agents.conversational import create_conversational_agent
agent = create_conversational_agent()
messages = []
# First question
result = agent.invoke({
"messages": messages,
"current_question": "Who created LangGraph?"
})
# Follow-up (uses memory)
messages.append({"role": "user", "content": "Who created LangGraph?"})
messages.append({"role": "assistant", "content": result["answer"]})
result = agent.invoke({
"messages": messages,
"current_question": "What else did they build?"
})- Framework: LangGraph 0.0.20
- LLM: Mistral 7B (via Ollama)
- Search: Tavily API
- Package Manager: uv
- Python: 3.9+
langgraph-multiagent/
βββ src/
β βββ agents/
β β βββ multi_tool.py # Multi-tool routing agent
β β βββ conversational.py # Agent with memory
β βββ tools/
β β βββ search.py # Web search (Tavily)
β β βββ calculator.py # Math calculations
β βββ utils/
β β βββ state.py # State type definitions
β β βββ prompts.py # Prompt templates
β βββ main.py
βββ tests/
βββ examples/
β βββ basic_usage.py
β βββ with_memory.py
βββ docs/
βββ pyproject.toml
uv pip install -e ".[dev]"
pytest tests/This is a personal learning project, but suggestions are welcome!
MIT
Built with LangGraph | Salma Ouardi | 2024