Name | yaaaf JSON |
Version |
0.0.38
JSON |
| download |
home_page | None |
Summary | YAAAF (Yet Another Autonomous Agents Framework) - A modular framework for building intelligent agentic applications with Python backend and Next.js frontend |
upload_time | 2025-09-04 11:56:52 |
maintainer | fractalego |
docs_url | None |
author | fractalego |
requires_python | >=3.11 |
license | MIT |
keywords |
ai
agents
framework
orchestrator
chatbot
sql
visualization
web-search
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# YAAAF - Yet Another Autonomous Agents Framework
YAAAF is a modular framework for building intelligent agentic applications with both Python backend and Next.js frontend components. The system features an orchestrator pattern with specialized agents for different tasks like SQL queries, web search, visualization, machine learning, and reflection.
## ๐ Key Features
- **๐ค Modular Agent System**: Specialized agents for SQL, visualization, web search, ML, document retrieval, and more
- **๐ฏ Orchestrator Pattern**: Central coordinator that intelligently routes queries to appropriate agents
- **๐ MCP Integration**: Full support for Model Context Protocol (MCP) with SSE and stdio transports
- **โก Real-time Streaming**: Live updates through WebSocket-like streaming with structured Note objects
- **๐ Artifact Management**: Centralized storage for generated content (tables, images, models, etc.)
- **๐ Modern Frontend**: React-based UI with real-time chat interface and agent attribution
- **๐ง Extensible**: Easy to add new agents and capabilities with standardized interfaces
- **๐ท๏ธ Tag-Based Routing**: HTML-like tags for intuitive agent selection (`<sqlagent>`, `<visualizationagent>`, etc.)
## ๐๏ธ Architecture Overview
```
โโโโโโโโโโโโโโโโโโโ HTTP/REST โโโโโโโโโโโโโโโโโโโโ
โ Frontend โ โโโโโโโโโโโโโโโโบ โ Backend โ
โ (Next.js) โ โ (FastAPI) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ ๐ Orchestrator โ
โ Agent โ
โโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
โผ โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ ๐ TODO Agent โ โ ๐ SQL Agent โ โ ๐ Web Search โ โ ๐ ... โ
โ โ โ โ โ Agent โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Database source โ โ Search API โ
โ โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
```
## ๐ Quick Start
### Installation & Setup
```bash
# Clone the repository
git clone <repository-url>
cd agents_framework
# Install Python dependencies
pip install -r requirements.txt
# Install frontend dependencies
cd frontend
pnpm install
cd ..
```
### Running YAAAF
**Start the backend server** (default port 4000):
```bash
python -m yaaaf backend
```
**Start the frontend server** (default port 3000):
```bash
python -m yaaaf frontend
```
**Custom ports**:
```bash
python -m yaaaf backend 8080 # Backend on port 8080
python -m yaaaf frontend 3001 # Frontend on port 3001
```
**HTTPS Support**:
HTTPS mode is currently not fully supported in the standalone distribution. For HTTPS in production, use a reverse proxy like nginx:
```bash
# Start YAAAF on HTTP
python -m yaaaf frontend 3000
# Configure nginx with SSL to proxy to port 3000
```
### First Steps
1. Open your browser to `http://localhost:3000`
2. Start chatting with the AI system
3. Try these example queries:
- "How many records are in the database?"
- "Create a visualization of the sales data"
- "Search for recent AI developments"
- "Analyze customer demographics and show trends"
## ๐ค Available Agents
| Agent | Purpose | Usage Tag | Capabilities |
|-------|---------|-----------|-------------|
| **OrchestratorAgent** | Central coordinator | `<orchestratoragent>` | Routes queries, manages flow |
| **SqlAgent** | Database queries | `<sqlagent>` | Natural language to SQL, data retrieval |
| **VisualizationAgent** | Charts & graphs | `<visualizationagent>` | Matplotlib visualizations from data |
| **WebSearchAgent** | Web search | `<websearchagent>` | DuckDuckGo search integration |
| **ReflectionAgent** | Planning & reasoning | `<reflectionagent>` | Step-by-step problem breakdown |
| **DocumentRetrieverAgent** | Document retrieval | `<documentretrieveragent>` | Document search and retrieval from configured sources |
| **AnswererAgent** | Research synthesis | `<answereragent>` | Synthesizes multiple artifacts into comprehensive research answers |
| **TodoAgent** | Task planning | `<todoagent>` | Creates structured todo lists for complex tasks |
| **MleAgent** | Machine learning | `<mleagent>` | sklearn model training & analysis |
| **ReviewerAgent** | Data analysis | `<revieweragent>` | Extract insights from artifacts |
| **ToolAgent** | External tools | `<toolagent>` | MCP (Model Context Protocol) integration - SSE & stdio |
| **BashAgent** | Filesystem operations | `<bashagent>` | File reading, writing, directory operations (with user confirmation) |
## ๐ก Example Usage
### Simple Query
```python
from yaaaf.components.orchestrator_builder import OrchestratorBuilder
from yaaaf.components.data_types import Messages
orchestrator = OrchestratorBuilder().build()
messages = Messages().add_user_utterance("How many users are in the database?")
response = await orchestrator.query(messages)
```
### MCP Integration
```python
from yaaaf.connectors.mcp_connector import MCPSseConnector, MCPStdioConnector
from yaaaf.components.agents.tool_agent import ToolAgent
from yaaaf.components.client import OllamaClient
# SSE-based MCP server
sse_connector = MCPSseConnector(
url="http://localhost:8080/sse",
description="Math Tools Server"
)
# Stdio-based MCP server
stdio_connector = MCPStdioConnector(
command="python",
args=["-m", "my_mcp_server"],
description="Local MCP Server"
)
# Use with ToolAgent
client = OllamaClient(model="qwen2.5:32b")
tools = await sse_connector.get_tools()
tool_agent = ToolAgent(client=client, tools=[tools])
messages = Messages().add_user_utterance("Calculate the sum of 15 and 27")
response = await tool_agent.query(messages)
```
## ๐ ๏ธ Development
### Backend Development
```bash
# Run tests
python -m unittest discover tests/
# Code formatting
ruff format .
ruff check .
# Start with debugging
YAAAF_DEBUG=true python -m yaaaf backend
# Test MCP servers
python tests/mcp_sse_server.py --port 8080 # SSE server on port 8080
python tests/mcp_stdio_server.py # Stdio server
```
### Frontend Development
```bash
cd frontend
# Development server
pnpm dev
# Type checking
pnpm typecheck
# Linting & formatting
pnpm lint
pnpm format:write
# Build for production
pnpm build
```
## ๐ Data Flow
1. **User Input**: Query submitted through frontend chat interface
2. **Stream Creation**: Backend creates conversation stream
3. **Orchestration**: OrchestratorAgent analyzes query and routes to appropriate agents
4. **Agent Processing**: Specialized agents process their portions of the request
5. **Artifact Generation**: Agents create structured artifacts (tables, images, etc.)
6. **Note Creation**: Results packaged as Note objects with agent attribution
7. **Real-time Streaming**: Notes streamed back to frontend with live updates
8. **UI Rendering**: Frontend displays formatted responses with agent identification
## ๐ง Configuration
### LLM Requirements
**โ ๏ธ Important**: YAAAF currently supports **Ollama only** for LLM integration. You must have Ollama installed and running on your system.
**Prerequisites:**
- Install [Ollama](https://ollama.ai/) on your system
- Download and run a compatible model (e.g., `ollama pull qwen2.5:32b`)
- Ensure Ollama is running (usually on `http://localhost:11434`)
YAAAF uses the `OllamaClient` for all LLM interactions. Support for other LLM providers (OpenAI, Anthropic, etc.) may be added in future versions.
### Environment Variables
- `YAAAF_CONFIG`: Path to configuration JSON file
### Configuration File
```json
{
"client": {
"model": "qwen2.5:32b",
"temperature": 0.7,
"max_tokens": 1024,
"host": "http://localhost:11434"
},
"agents": [
"reflection",
{
"name": "visualization",
"model": "qwen2.5-coder:32b",
"temperature": 0.1
},
"sql",
{
"name": "document_retriever",
"model": "qwen2.5:14b",
"temperature": 0.8,
"max_tokens": 4096,
"host": "http://localhost:11435"
},
"reviewer",
"answerer",
"websearch",
"url_reviewer",
"bash",
"tool"
],
"sources": [
{
"name": "london_archaeological_data",
"type": "sqlite",
"path": "../../data/london_archaeological_data.db"
}
],
"tools": [
{
"name": "math_tools",
"type": "sse",
"description": "Mathematical calculation tools",
"url": "http://localhost:8080/sse"
},
{
"name": "file_tools",
"type": "stdio",
"description": "File manipulation tools",
"command": "python",
"args": ["-m", "my_file_server"]
}
]
}
```
**Per-Agent Configuration:**
- **Simple format**: `"agent_name"` uses default client settings
- **Object format**: `{"name": "agent_name", "model": "...", "temperature": 0.1, "host": "..."}` overrides specific parameters
- **Fallback**: Any unspecified parameters use the default client configuration
- **Examples**: Use specialized models for specific tasks (e.g., coding models for visualization, larger models for RAG)
- **Host configuration**: Set different Ollama instances per agent or use default host
**MCP Tools Configuration:**
- **SSE Tools**: For HTTP-based MCP servers (`"type": "sse"` with `"url"`)
- **Stdio Tools**: For command-line MCP servers (`"type": "stdio"` with `"command"` and `"args"`)
- **Tool Agent**: Add `"tool"` to agents list to enable MCP tool integration
- **Description**: Human-readable description of what the tool server provides
- **Error Handling**: Failed tool connections are logged but don't prevent startup
## ๐ Documentation
Comprehensive documentation is available in the `documentation/` folder:
```bash
cd documentation
pip install -r requirements.txt
make html
open build/html/index.html
```
**Documentation includes:**
- ๐ Getting Started Guide
- ๐๏ธ Architecture Overview
- ๐ค Agent Development Guide
- ๐ API Reference
- ๐ Frontend Development
- ๐ป Development Practices
- ๐ Usage Examples
## ๐งช Testing
```bash
# Backend tests
python -m unittest discover tests/
# Specific agent tests
python -m unittest tests.test_sql_agent
python -m unittest tests.test_orchestrator_agent
# Frontend tests
cd frontend
pnpm test
```
## ๐ค Contributing
1. **Fork the repository**
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
3. **Follow code style**: Run `ruff format .` and `pnpm format:write`
4. **Add tests**: Ensure new features have test coverage
5. **Update docs**: Add documentation for new features
6. **Submit PR**: Create a pull request with clear description
## ๐ Requirements
**Backend:**
- Python 3.11+
- FastAPI
- Pydantic
- pandas
- matplotlib
- sqlite3
**Frontend:**
- Node.js 18+
- Next.js 14
- TypeScript
- Tailwind CSS
- pnpm
**Package Distribution:**
- The yaaaf wheel includes a complete standalone frontend (`yaaaf/client/standalone/`)
- No additional frontend setup required for basic usage
- Frontend source code available in `frontend/` for development
## ๐ License
MIT License (MIT)
## ๐ Support
- ๐ **Documentation**: Check the `documentation/` folder
- ๐ **Issues**: Report bugs via GitHub Issues
- ๐ฌ **Discussions**: Join GitHub Discussions for questions
---
**YAAAF** - Building the future of agentic applications, one intelligent agent at a time! ๐
Raw data
{
"_id": null,
"home_page": null,
"name": "yaaaf",
"maintainer": "fractalego",
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "ai, agents, framework, orchestrator, chatbot, sql, visualization, web-search",
"author": "fractalego",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/90/59/84b77d23a50c1ecb13403e32a2171e2cf99a235cc52dc85293576036ce59/yaaaf-0.0.38.tar.gz",
"platform": null,
"description": "# YAAAF - Yet Another Autonomous Agents Framework\n\nYAAAF is a modular framework for building intelligent agentic applications with both Python backend and Next.js frontend components. The system features an orchestrator pattern with specialized agents for different tasks like SQL queries, web search, visualization, machine learning, and reflection.\n\n## \ud83d\ude80 Key Features\n\n- **\ud83e\udd16 Modular Agent System**: Specialized agents for SQL, visualization, web search, ML, document retrieval, and more\n- **\ud83c\udfaf Orchestrator Pattern**: Central coordinator that intelligently routes queries to appropriate agents\n- **\ud83d\udd0c MCP Integration**: Full support for Model Context Protocol (MCP) with SSE and stdio transports\n- **\u26a1 Real-time Streaming**: Live updates through WebSocket-like streaming with structured Note objects\n- **\ud83d\udcca Artifact Management**: Centralized storage for generated content (tables, images, models, etc.)\n- **\ud83c\udf10 Modern Frontend**: React-based UI with real-time chat interface and agent attribution\n- **\ud83d\udd27 Extensible**: Easy to add new agents and capabilities with standardized interfaces\n- **\ud83c\udff7\ufe0f Tag-Based Routing**: HTML-like tags for intuitive agent selection (`<sqlagent>`, `<visualizationagent>`, etc.)\n\n## \ud83c\udfd7\ufe0f Architecture Overview\n\n```\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 HTTP/REST \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 Frontend \u2502 \u25c4\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25ba \u2502 Backend \u2502\n\u2502 (Next.js) \u2502 \u2502 (FastAPI) \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83d\udd04 Orchestrator \u2502\n \u2502 Agent \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u25bc \u25bc \u25bc \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 \ud83d\udd04 TODO Agent \u2502 \u2502 \ud83d\udd04 SQL Agent \u2502 \u2502 \ud83d\udd04 Web Search \u2502 \u2502 \ud83d\udd04 ... \u2502\n \u2502 \u2502 \u2502 \u2502 \u2502 Agent \u2502 \u2502 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u25bc \u25bc\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Database source \u2502 \u2502 Search API \u2502\n \u2502 \u2502 \u2502 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## \ud83d\ude80 Quick Start\n\n### Installation & Setup\n\n```bash\n# Clone the repository\ngit clone <repository-url>\ncd agents_framework\n\n# Install Python dependencies\npip install -r requirements.txt\n\n# Install frontend dependencies\ncd frontend\npnpm install\ncd ..\n```\n\n### Running YAAAF\n\n**Start the backend server** (default port 4000):\n```bash\npython -m yaaaf backend\n```\n\n**Start the frontend server** (default port 3000):\n```bash\npython -m yaaaf frontend\n```\n\n**Custom ports**:\n```bash\npython -m yaaaf backend 8080 # Backend on port 8080\npython -m yaaaf frontend 3001 # Frontend on port 3001\n```\n\n**HTTPS Support**:\nHTTPS mode is currently not fully supported in the standalone distribution. For HTTPS in production, use a reverse proxy like nginx:\n\n```bash\n# Start YAAAF on HTTP\npython -m yaaaf frontend 3000\n\n# Configure nginx with SSL to proxy to port 3000\n```\n\n\n### First Steps\n\n1. Open your browser to `http://localhost:3000`\n2. Start chatting with the AI system\n3. Try these example queries:\n - \"How many records are in the database?\"\n - \"Create a visualization of the sales data\"\n - \"Search for recent AI developments\"\n - \"Analyze customer demographics and show trends\"\n\n## \ud83e\udd16 Available Agents\n\n| Agent | Purpose | Usage Tag | Capabilities |\n|-------|---------|-----------|-------------|\n| **OrchestratorAgent** | Central coordinator | `<orchestratoragent>` | Routes queries, manages flow |\n| **SqlAgent** | Database queries | `<sqlagent>` | Natural language to SQL, data retrieval |\n| **VisualizationAgent** | Charts & graphs | `<visualizationagent>` | Matplotlib visualizations from data |\n| **WebSearchAgent** | Web search | `<websearchagent>` | DuckDuckGo search integration |\n| **ReflectionAgent** | Planning & reasoning | `<reflectionagent>` | Step-by-step problem breakdown |\n| **DocumentRetrieverAgent** | Document retrieval | `<documentretrieveragent>` | Document search and retrieval from configured sources |\n| **AnswererAgent** | Research synthesis | `<answereragent>` | Synthesizes multiple artifacts into comprehensive research answers |\n| **TodoAgent** | Task planning | `<todoagent>` | Creates structured todo lists for complex tasks |\n| **MleAgent** | Machine learning | `<mleagent>` | sklearn model training & analysis |\n| **ReviewerAgent** | Data analysis | `<revieweragent>` | Extract insights from artifacts |\n| **ToolAgent** | External tools | `<toolagent>` | MCP (Model Context Protocol) integration - SSE & stdio |\n| **BashAgent** | Filesystem operations | `<bashagent>` | File reading, writing, directory operations (with user confirmation) |\n\n## \ud83d\udca1 Example Usage\n\n### Simple Query\n```python\nfrom yaaaf.components.orchestrator_builder import OrchestratorBuilder\nfrom yaaaf.components.data_types import Messages\n\norchestrator = OrchestratorBuilder().build()\nmessages = Messages().add_user_utterance(\"How many users are in the database?\")\nresponse = await orchestrator.query(messages)\n```\n\n### MCP Integration\n```python\nfrom yaaaf.connectors.mcp_connector import MCPSseConnector, MCPStdioConnector\nfrom yaaaf.components.agents.tool_agent import ToolAgent\nfrom yaaaf.components.client import OllamaClient\n\n# SSE-based MCP server\nsse_connector = MCPSseConnector(\n url=\"http://localhost:8080/sse\",\n description=\"Math Tools Server\"\n)\n\n# Stdio-based MCP server \nstdio_connector = MCPStdioConnector(\n command=\"python\",\n args=[\"-m\", \"my_mcp_server\"],\n description=\"Local MCP Server\"\n)\n\n# Use with ToolAgent\nclient = OllamaClient(model=\"qwen2.5:32b\")\ntools = await sse_connector.get_tools()\ntool_agent = ToolAgent(client=client, tools=[tools])\n\nmessages = Messages().add_user_utterance(\"Calculate the sum of 15 and 27\")\nresponse = await tool_agent.query(messages)\n```\n\n## \ud83d\udee0\ufe0f Development\n\n### Backend Development\n```bash\n# Run tests\npython -m unittest discover tests/\n\n# Code formatting\nruff format .\nruff check .\n\n# Start with debugging\nYAAAF_DEBUG=true python -m yaaaf backend\n\n# Test MCP servers\npython tests/mcp_sse_server.py --port 8080 # SSE server on port 8080\npython tests/mcp_stdio_server.py # Stdio server\n```\n\n### Frontend Development\n```bash\ncd frontend\n\n# Development server\npnpm dev\n\n# Type checking\npnpm typecheck\n\n# Linting & formatting\npnpm lint\npnpm format:write\n\n# Build for production\npnpm build\n```\n\n## \ud83d\udcca Data Flow\n\n1. **User Input**: Query submitted through frontend chat interface\n2. **Stream Creation**: Backend creates conversation stream\n3. **Orchestration**: OrchestratorAgent analyzes query and routes to appropriate agents\n4. **Agent Processing**: Specialized agents process their portions of the request\n5. **Artifact Generation**: Agents create structured artifacts (tables, images, etc.)\n6. **Note Creation**: Results packaged as Note objects with agent attribution\n7. **Real-time Streaming**: Notes streamed back to frontend with live updates\n8. **UI Rendering**: Frontend displays formatted responses with agent identification\n\n## \ud83d\udd27 Configuration\n\n### LLM Requirements\n\n**\u26a0\ufe0f Important**: YAAAF currently supports **Ollama only** for LLM integration. You must have Ollama installed and running on your system.\n\n**Prerequisites:**\n- Install [Ollama](https://ollama.ai/) on your system\n- Download and run a compatible model (e.g., `ollama pull qwen2.5:32b`)\n- Ensure Ollama is running (usually on `http://localhost:11434`)\n\nYAAAF uses the `OllamaClient` for all LLM interactions. Support for other LLM providers (OpenAI, Anthropic, etc.) may be added in future versions.\n\n### Environment Variables\n- `YAAAF_CONFIG`: Path to configuration JSON file\n\n### Configuration File\n```json\n{\n \"client\": {\n \"model\": \"qwen2.5:32b\",\n \"temperature\": 0.7,\n \"max_tokens\": 1024,\n \"host\": \"http://localhost:11434\"\n },\n \"agents\": [\n \"reflection\",\n {\n \"name\": \"visualization\",\n \"model\": \"qwen2.5-coder:32b\",\n \"temperature\": 0.1\n },\n \"sql\",\n {\n \"name\": \"document_retriever\",\n \"model\": \"qwen2.5:14b\", \n \"temperature\": 0.8,\n \"max_tokens\": 4096,\n \"host\": \"http://localhost:11435\"\n },\n \"reviewer\",\n \"answerer\",\n \"websearch\",\n \"url_reviewer\",\n \"bash\",\n \"tool\"\n ],\n \"sources\": [\n {\n \"name\": \"london_archaeological_data\",\n \"type\": \"sqlite\",\n \"path\": \"../../data/london_archaeological_data.db\"\n }\n ],\n \"tools\": [\n {\n \"name\": \"math_tools\",\n \"type\": \"sse\",\n \"description\": \"Mathematical calculation tools\",\n \"url\": \"http://localhost:8080/sse\"\n },\n {\n \"name\": \"file_tools\",\n \"type\": \"stdio\",\n \"description\": \"File manipulation tools\",\n \"command\": \"python\",\n \"args\": [\"-m\", \"my_file_server\"]\n }\n ]\n}\n```\n\n**Per-Agent Configuration:**\n- **Simple format**: `\"agent_name\"` uses default client settings\n- **Object format**: `{\"name\": \"agent_name\", \"model\": \"...\", \"temperature\": 0.1, \"host\": \"...\"}` overrides specific parameters\n- **Fallback**: Any unspecified parameters use the default client configuration\n- **Examples**: Use specialized models for specific tasks (e.g., coding models for visualization, larger models for RAG)\n- **Host configuration**: Set different Ollama instances per agent or use default host\n\n**MCP Tools Configuration:**\n- **SSE Tools**: For HTTP-based MCP servers (`\"type\": \"sse\"` with `\"url\"`)\n- **Stdio Tools**: For command-line MCP servers (`\"type\": \"stdio\"` with `\"command\"` and `\"args\"`)\n- **Tool Agent**: Add `\"tool\"` to agents list to enable MCP tool integration\n- **Description**: Human-readable description of what the tool server provides\n- **Error Handling**: Failed tool connections are logged but don't prevent startup\n\n## \ud83d\udcda Documentation\n\nComprehensive documentation is available in the `documentation/` folder:\n\n```bash\ncd documentation\npip install -r requirements.txt\nmake html\nopen build/html/index.html\n```\n\n**Documentation includes:**\n- \ud83d\udcd6 Getting Started Guide\n- \ud83c\udfd7\ufe0f Architecture Overview \n- \ud83e\udd16 Agent Development Guide\n- \ud83d\udd0c API Reference\n- \ud83c\udf10 Frontend Development\n- \ud83d\udcbb Development Practices\n- \ud83d\udccb Usage Examples\n\n## \ud83e\uddea Testing\n\n```bash\n# Backend tests\npython -m unittest discover tests/\n\n# Specific agent tests\npython -m unittest tests.test_sql_agent\npython -m unittest tests.test_orchestrator_agent\n\n# Frontend tests\ncd frontend\npnpm test\n```\n\n## \ud83e\udd1d Contributing\n\n1. **Fork the repository**\n2. **Create a feature branch**: `git checkout -b feature/amazing-feature`\n3. **Follow code style**: Run `ruff format .` and `pnpm format:write`\n4. **Add tests**: Ensure new features have test coverage\n5. **Update docs**: Add documentation for new features\n6. **Submit PR**: Create a pull request with clear description\n\n## \ud83d\udccb Requirements\n\n**Backend:**\n- Python 3.11+\n- FastAPI\n- Pydantic\n- pandas\n- matplotlib\n- sqlite3\n\n**Frontend:**\n- Node.js 18+\n- Next.js 14\n- TypeScript\n- Tailwind CSS\n- pnpm\n\n**Package Distribution:**\n- The yaaaf wheel includes a complete standalone frontend (`yaaaf/client/standalone/`)\n- No additional frontend setup required for basic usage\n- Frontend source code available in `frontend/` for development\n\n## \ud83d\udcc4 License\n\nMIT License (MIT)\n\n## \ud83c\udd98 Support\n\n- \ud83d\udcd6 **Documentation**: Check the `documentation/` folder\n- \ud83d\udc1b **Issues**: Report bugs via GitHub Issues\n- \ud83d\udcac **Discussions**: Join GitHub Discussions for questions\n\n---\n\n**YAAAF** - Building the future of agentic applications, one intelligent agent at a time! \ud83d\ude80\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "YAAAF (Yet Another Autonomous Agents Framework) - A modular framework for building intelligent agentic applications with Python backend and Next.js frontend",
"version": "0.0.38",
"project_urls": {
"Documentation": "https://yaaaf.readthedocs.io",
"Homepage": "https://github.com/fractalego/yaaaf",
"Issues": "https://github.com/fractalego/yaaaf/issues",
"Repository": "https://github.com/fractalego/yaaaf.git"
},
"split_keywords": [
"ai",
" agents",
" framework",
" orchestrator",
" chatbot",
" sql",
" visualization",
" web-search"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9eb467e4d7007eaed24d5d5b6305a34d0e8d5385003bbf205055fdb73d92f81e",
"md5": "ca6b3400bcf4f88ccb2bd58eb2b1eb2b",
"sha256": "d6458f59b0bd52565c5c81114ef1a0a04d4ae3b5203cb9d9a462387a23ae9dfb"
},
"downloads": -1,
"filename": "yaaaf-0.0.38-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ca6b3400bcf4f88ccb2bd58eb2b1eb2b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 27053883,
"upload_time": "2025-09-04T11:54:45",
"upload_time_iso_8601": "2025-09-04T11:54:45.328984Z",
"url": "https://files.pythonhosted.org/packages/9e/b4/67e4d7007eaed24d5d5b6305a34d0e8d5385003bbf205055fdb73d92f81e/yaaaf-0.0.38-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "905984b77d23a50c1ecb13403e32a2171e2cf99a235cc52dc85293576036ce59",
"md5": "df86cbbaac61a5588d05a5234454b0a0",
"sha256": "c8dadf3b7a0169ef5afd48f995c95c24a4d0b05bf091301d869efb64fd66ea93"
},
"downloads": -1,
"filename": "yaaaf-0.0.38.tar.gz",
"has_sig": false,
"md5_digest": "df86cbbaac61a5588d05a5234454b0a0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 27031221,
"upload_time": "2025-09-04T11:56:52",
"upload_time_iso_8601": "2025-09-04T11:56:52.412952Z",
"url": "https://files.pythonhosted.org/packages/90/59/84b77d23a50c1ecb13403e32a2171e2cf99a235cc52dc85293576036ce59/yaaaf-0.0.38.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-04 11:56:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "fractalego",
"github_project": "yaaaf",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "yaaaf"
}