Flexo is a powerful and flexible agent framework. It provides a FastAPI-based RESTful API for deploying customizable AI agents that can execute Python functions and interact with external services while handling real-time streaming responses.
- Configurable Agent: YAML-based configuration for custom behaviors
- Tool Integration: Execute Python functions and REST API calls
- Streaming Support: Real-time streaming with pattern detection
- Production Ready: Containerized deployment support with logging
- FastAPI Backend: Modern async API with comprehensive docs
-
Fork and clone:
# First, fork the repository on GitHub by clicking the 'Fork' button # Then clone your fork: git clone https://github.com/YOUR_USERNAME/flexo.git cd flexo # Add the upstream repository git remote add upstream https://github.com/ibm/flexo.git
-
Set up the environment:
# Create virtual environment python -m venv venv source venv/bin/activate # or `venv\Scripts\activate` on Windows pip install -r requirements.txt
-
Configure:
- Copy
.env.example
to.env
and add your credentials - Review
src/configs/agent.yaml
for agent settings
- Copy
-
Run the server:
uvicorn src.main:app --reload --host 127.0.0.1 --port 8000
docker build -t flexo-agent .
docker run -p 8000:8000 --env-file .env flexo-agent
Flexo supports multiple LLM providers through a unified adapter interface. Configure your preferred models in src/configs/models.yaml
.
Provider | Supported API Endpoints | Service Type |
---|---|---|
OpenAI | /chat/completions |
☁️ API Service |
Anthropic | /messages |
☁️ API Service |
xAI | /chat/completions |
☁️ API Service |
Mistral AI | /chat/completions |
☁️ API Service |
IBM WatsonX | /text/chat_stream , /text/generation_stream |
☁️ API Service |
Implementation | Key Feature | Deployment Type |
---|---|---|
vLLM | High throughput, optimized for GPU | 🖥️ Server |
Ollama | Simplified model management | 💻 Desktop/Server |
LLaMA.cpp | CPU-friendly, resource efficient | 💻 Desktop/Server |
LM Studio | User-friendly model testing | 💻 Desktop |
LocalAI | Multi-model hub with extended features | 🖥️ Server |
Text Generation WebUI | Rich UI with extensive options | 🖥️ Server |
All local implementations connect through Flexo's OpenAI-compatible adapter, which handles the communication with these tools regardless of their specific API implementations. It can use both /completions
and /chat/completions
endpoints.
For detailed configuration including environment variables, API keys, and base URLs, see our Model Configuration Guide.
flexo/
├── docs/
├── src/
│ ├── agent/ # Agent(s)
│ ├── api/ # API endpoints
│ ├── configs/ # Configurations
│ ├── data_models/ # Data models
│ ├── database/ # Database adapters
│ ├── llm/ # LLM components
│ ├── prompt_builders/ # Core prompt generation
│ ├── tools/
│ │ ├── core/ # Core tool components
│ │ ├── implementations/ # 🔧 Add your custom tools here!
│ │ └──notebooks/ # Notebook(s) for tool development/testing
│ ├── utils/ # Utils/shared code
│ └── main.py # App entry point
└── ...
This project follows Semantic Versioning. See releases for version history.
We welcome contributions! All commits must be signed with DCO (git commit -s
). See our Contributing Guide for details.
We are committed to fostering a welcoming and inclusive community. Please review our Code of Conduct to understand the standards we uphold.
Review our Security Policy for handling vulnerabilities.
Apache 2.0 License - see LICENSE for details.