OmniNoval is an advanced multimodal multi-agent automation framework, built on LangGraph, supporting complex agent collaboration workflows.
- Multi-agent Collaboration: Supports multiple specialized agents working together, each with specific roles and expertise
- Multimodal Support: Integrated vision models, supporting image understanding and processing
- Flexible Workflow Engine: Extensible workflow system based on LangGraph
- Web Automation: Integrated Playwright, supporting web browsing and automation operations
- RESTful API: Provides complete API interfaces, supporting integration into existing systems
- Docker Support: Provides complete containerized deployment solutions
- Flexible Configuration: Supports multiple LLM providers and configuration options
OmniNoval/
├── assets/ # Static resource files
├── src/ # Source code directory
│ ├── agents/ # Agent definitions
│ ├── api/ # API interfaces
│ ├── config/ # Configuration management
│ ├── engine/ # Workflow engine
│ ├── llms/ # LLM abstraction layer
│ ├── prompts/ # Prompt templates
│ ├── service/ # Service layer
│ ├── tools/ # Toolset
│ ├── utils/ # Utility functions
│ └── workflow.py # Workflow entry
├── conf.yaml.example # Configuration file example
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile # Docker image configuration
├── main.py # CLI entry
├── server.py # API server entry
├── pyproject.toml # Project configuration
└── README.md # Project documentation
- Python 3.12+
- uv package manager (recommended)
-
Clone the Project
git clone <repository-url> cd OmniNoval
-
Install Dependencies
# Install dependencies using uv uv sync # Install Playwright browser uv run playwright install chromium --with-deps
-
Configure Environment
# Copy configuration file cp conf.yaml.example conf.yaml # Edit configuration file, set your API keys vim conf.yaml
-
Run the Project
# CLI mode uv run main.py "Your query" # API server mode uv run server.py --reload
The project provides convenient Makefile commands:
# Initial setup
make setup
# Run CLI
make run
# Start development server
make dev
# Start production server
make api
# Run tests
make test
# Clean environment
make clean# Start production environment
docker-compose up api
# Start development environment (supports hot reload)
docker-compose up dev# Build image
docker build -t omninova .
# Run container
docker run -p 8000:8000 -v $(pwd)/.env:/app/.env -v $(pwd)/conf.yaml:/app/conf.yaml omninovaThe project supports two configuration methods:
conf.yamlconfiguration file (recommended).envenvironment variable file (compatibility mode)
Configure different LLM models in conf.yaml:
# Reasoning Model
REASONING_MODEL:
model: "volcengine/ep-xxxx"
api_key: $REASONING_API_KEY
api_base: $REASONING_BASE_URL
# Basic Model
BASIC_MODEL:
model: "azure/gpt-4o-2024-08-06"
api_base: $AZURE_API_BASE
api_version: $AZURE_API_VERSION
api_key: $AZURE_API_KEY
# Vision Model
VISION_MODEL:
model: "azure/gpt-4o-2024-08-06"
api_base: $AZURE_API_BASE
api_version: $AZURE_API_VERSION
api_key: $AZURE_API_KEYCreate .env file to set sensitive information:
# API Keys
REASONING_API_KEY=your_reasoning_api_key
AZURE_API_KEY=your_azure_api_key
# API Endpoints
REASONING_BASE_URL=https://api.example.com
AZURE_API_BASE=https://your-resource.openai.azure.com
AZURE_API_VERSION=2024-02-15-preview# Direct run
python main.py "Help me analyze the content of this webpage"
# Interactive mode
python main.py
# Then input your queryStart API server:
python server.py --host 0.0.0.0 --port 8000 --reloadAPI Endpoints:
GET /health- Health checkPOST /workflow- Execute workflowGET /docs- API documentation (Swagger UI)
from src.workflow import run_agent_workflow
# Execute workflow
result = run_agent_workflow(
user_input="Help me analyze the content of this webpage",
debug=True
)
# View result
print(result["messages"])- agents/: Defines various agent roles and behaviors
- engine/: Workflow engine, built on LangGraph
- llms/: LLM abstraction layer, supports multiple model providers
- tools/: Toolset, including web browsing, search, etc.
- api/: RESTful API interfaces
- Create new agent file in
src/agents/ - Register agent configuration in
src/config/ - Integrate new agent in workflow
- Create tool file in
src/tools/ - Implement tool interface
- Register and use tool in agents
The project uses the following tools for code quality control:
# Code formatting
uv run black .
# Code checking
uv run ruff check .
# Run tests
uv run pytest- Fork the project
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
A: Modify model configuration in conf.yaml, supports all LiteLLM compatible providers.
A: Create new tool class in src/tools/ directory, and register use in agents.
A: Set debug=True parameter, or check log output.
A: Based on Playwright, supports all features of Chromium browser.
If you encounter problems or have suggestions, please:
- Check Issues page
- Create new Issue
- Contact development team
OmniNoval - Making multi-agent collaboration simple and efficient 🚀