parent
8679543c6b
commit
c6e3936014
@ -0,0 +1,307 @@
|
||||
# Custom Base URL and API Key Configuration
|
||||
|
||||
This guide demonstrates how to configure Swarms agents with custom base URLs and API keys to use models from various providers beyond the default configurations.
|
||||
|
||||
The Swarms framework supports over 600+ models through the `model_name` parameter, and you can easily integrate with any model provider by specifying custom `llm_base_url` and `llm_api_key` parameters. This flexibility allows you to use models from:
|
||||
|
||||
| Provider | Description |
|
||||
|------------------------------|---------------------------------------------|
|
||||
| OpenRouter | Aggregator for 100+ models from various providers |
|
||||
| Together AI | Multi-model provider with OpenAI-compatible API |
|
||||
| Replicate | API for running open-source models |
|
||||
| Hugging Face Inference API | Access to Hugging Face hosted models |
|
||||
| Custom local endpoints | Your own hosted or local LLM endpoints |
|
||||
| Any OpenAI-compatible API | Any service that implements the OpenAI API spec |
|
||||
|
||||
## Basic Configuration
|
||||
|
||||
### Import and Setup
|
||||
|
||||
```python
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
from swarms import Agent
|
||||
|
||||
# Load environment variables
|
||||
load_dotenv()
|
||||
```
|
||||
|
||||
### Basic Custom Base URL Example
|
||||
|
||||
```python
|
||||
# Example using OpenRouter with a specific model
|
||||
agent = Agent(
|
||||
agent_name="Custom-Model-Agent",
|
||||
agent_description="Agent using custom base URL and API key",
|
||||
model_name="openrouter/qwen/qwen3-vl-235b-a22b-instruct",
|
||||
llm_base_url="https://openrouter.ai/api/v1",
|
||||
llm_api_key=os.getenv("OPENROUTER_API_KEY"),
|
||||
max_loops=1,
|
||||
streaming_on=True,
|
||||
)
|
||||
|
||||
# Run the agent
|
||||
result = agent.run("What are the top 5 energy stocks to invest in?")
|
||||
print(result)
|
||||
```
|
||||
|
||||
## Provider-Specific Examples
|
||||
|
||||
### 1. OpenRouter Integration
|
||||
|
||||
OpenRouter provides access to 100+ models from various providers:
|
||||
|
||||
```python
|
||||
# Using Claude via OpenRouter
|
||||
claude_agent = Agent(
|
||||
agent_name="Claude-Agent",
|
||||
agent_description="Agent using Claude via OpenRouter",
|
||||
model_name="anthropic/claude-3.5-sonnet",
|
||||
llm_base_url="https://openrouter.ai/api/v1",
|
||||
llm_api_key=os.getenv("OPENROUTER_API_KEY"),
|
||||
max_loops=1,
|
||||
temperature=0.7,
|
||||
)
|
||||
|
||||
# Using GPT-4 via OpenRouter
|
||||
gpt4_agent = Agent(
|
||||
agent_name="GPT4-Agent",
|
||||
agent_description="Agent using GPT-4 via OpenRouter",
|
||||
model_name="openai/gpt-4-turbo",
|
||||
llm_base_url="https://openrouter.ai/api/v1",
|
||||
llm_api_key=os.getenv("OPENROUTER_API_KEY"),
|
||||
max_loops=1,
|
||||
temperature=0.5,
|
||||
)
|
||||
|
||||
# Using Qwen model via OpenRouter
|
||||
qwen_agent = Agent(
|
||||
agent_name="Qwen-Agent",
|
||||
agent_description="Agent using Qwen via OpenRouter",
|
||||
model_name="openrouter/qwen/qwen3-vl-235b-a22b-instruct",
|
||||
llm_base_url="https://openrouter.ai/api/v1",
|
||||
llm_api_key=os.getenv("OPENROUTER_API_KEY"),
|
||||
max_loops=1,
|
||||
dynamic_temperature_enabled=True,
|
||||
)
|
||||
```
|
||||
|
||||
### 2. Together AI Integration
|
||||
|
||||
```python
|
||||
# Using Together AI models
|
||||
together_agent = Agent(
|
||||
agent_name="Together-Agent",
|
||||
agent_description="Agent using Together AI models",
|
||||
model_name="meta-llama/Llama-2-70b-chat-hf",
|
||||
llm_base_url="https://api.together.xyz/v1",
|
||||
llm_api_key=os.getenv("TOGETHER_API_KEY"),
|
||||
max_loops=1,
|
||||
temperature=0.7,
|
||||
)
|
||||
|
||||
# Using CodeLlama via Together AI
|
||||
codellama_agent = Agent(
|
||||
agent_name="CodeLlama-Agent",
|
||||
agent_description="Agent specialized in code generation",
|
||||
model_name="codellama/CodeLlama-34b-Instruct-Python",
|
||||
llm_base_url="https://api.together.xyz/v1",
|
||||
llm_api_key=os.getenv("TOGETHER_API_KEY"),
|
||||
max_loops=1,
|
||||
temperature=0.1, # Lower temperature for code generation
|
||||
)
|
||||
```
|
||||
|
||||
### 3. Hugging Face Inference API
|
||||
|
||||
```python
|
||||
# Using Hugging Face models
|
||||
hf_agent = Agent(
|
||||
agent_name="HuggingFace-Agent",
|
||||
agent_description="Agent using Hugging Face models",
|
||||
model_name="microsoft/DialoGPT-large",
|
||||
llm_base_url="https://api-inference.huggingface.co/models",
|
||||
llm_api_key=os.getenv("HUGGINGFACE_API_KEY"),
|
||||
max_loops=1,
|
||||
temperature=0.7,
|
||||
)
|
||||
```
|
||||
|
||||
### 4. Custom Local Endpoint
|
||||
|
||||
```python
|
||||
# Using a local model server (e.g., vLLM, Ollama, etc.)
|
||||
local_agent = Agent(
|
||||
agent_name="Local-Agent",
|
||||
agent_description="Agent using local model endpoint",
|
||||
model_name="llama-2-7b-chat", # Model name as configured in your local server
|
||||
llm_base_url="http://localhost:8000/v1",
|
||||
llm_api_key="dummy-key", # May not be required for local endpoints
|
||||
max_loops=1,
|
||||
temperature=0.7,
|
||||
)
|
||||
```
|
||||
|
||||
### 5. Replicate Integration
|
||||
|
||||
```python
|
||||
# Using Replicate models
|
||||
replicate_agent = Agent(
|
||||
agent_name="Replicate-Agent",
|
||||
agent_description="Agent using Replicate models",
|
||||
model_name="meta/llama-2-70b-chat",
|
||||
llm_base_url="https://api.replicate.com/v1",
|
||||
llm_api_key=os.getenv("REPLICATE_API_TOKEN"),
|
||||
max_loops=1,
|
||||
temperature=0.7,
|
||||
)
|
||||
```
|
||||
|
||||
## Advanced Configuration Examples
|
||||
|
||||
|
||||
|
||||
### Agent with Custom Headers
|
||||
|
||||
```python
|
||||
# For providers that require custom headers
|
||||
custom_agent = Agent(
|
||||
agent_name="Custom-Headers-Agent",
|
||||
agent_description="Agent with custom headers",
|
||||
model_name="your-custom-model",
|
||||
llm_base_url="https://your-custom-api.com/v1",
|
||||
llm_api_key=os.getenv("CUSTOM_API_KEY"),
|
||||
max_loops=1,
|
||||
# Additional headers can be passed through the model initialization
|
||||
# This depends on the specific provider's requirements
|
||||
)
|
||||
```
|
||||
|
||||
## Environment Variables Setup
|
||||
|
||||
Create a `.env` file in your project root:
|
||||
|
||||
```bash
|
||||
# OpenRouter
|
||||
OPENROUTER_API_KEY=your_openrouter_api_key_here
|
||||
|
||||
# Together AI
|
||||
TOGETHER_API_KEY=your_together_api_key_here
|
||||
|
||||
# Hugging Face
|
||||
HUGGINGFACE_API_KEY=your_huggingface_api_key_here
|
||||
|
||||
# Replicate
|
||||
REPLICATE_API_TOKEN=your_replicate_token_here
|
||||
|
||||
# Custom API
|
||||
CUSTOM_API_KEY=your_custom_api_key_here
|
||||
```
|
||||
|
||||
## Complete Working Example
|
||||
|
||||
Here's a complete example that demonstrates the custom base URL functionality:
|
||||
|
||||
```python
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
from swarms import Agent
|
||||
|
||||
load_dotenv()
|
||||
|
||||
|
||||
agent = Agent(
|
||||
agent_name="Quantitative-Trading-Agent",
|
||||
agent_description="Advanced quantitative trading and algorithmic analysis agent",
|
||||
model_name="openrouter/qwen/qwen3-vl-235b-a22b-instruct",
|
||||
dynamic_temperature_enabled=True,
|
||||
max_loops=1,
|
||||
dynamic_context_window=True,
|
||||
streaming_on=True,
|
||||
llm_base_url="https://openrouter.ai/api/v1",
|
||||
llm_api_key=os.getenv("OPENROUTER_API_KEY"),
|
||||
)
|
||||
return agent
|
||||
|
||||
def main():
|
||||
|
||||
# Define the trading analysis task
|
||||
task = """
|
||||
Analyze the current energy sector and provide:
|
||||
1. Top 5 energy stocks across nuclear, solar, gas, and other energy sources
|
||||
2. Brief analysis of each stock's potential
|
||||
3. Market trends affecting the energy sector
|
||||
4. Risk assessment for each recommendation
|
||||
"""
|
||||
|
||||
# Run the agent
|
||||
print("Running quantitative trading analysis...")
|
||||
result = agent.run(task)
|
||||
|
||||
print(result)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
```
|
||||
|
||||
## Supported Model Providers
|
||||
|
||||
The Swarms framework supports models from these major providers through custom base URLs:
|
||||
|
||||
| Provider | Description |
|
||||
|--------------------|--------------------------------------------------------|
|
||||
| **OpenRouter** | 100+ models from various providers |
|
||||
| **Together AI** | Open-source models like Llama, CodeLlama, etc. |
|
||||
| **Hugging Face** | Inference API for thousands of models |
|
||||
| **Replicate** | Various open-source and proprietary models |
|
||||
| **Anthropic** | Claude models (via OpenRouter or direct API) |
|
||||
| **Google** | Gemini models (via OpenRouter) |
|
||||
| **Meta** | Llama models (via various providers) |
|
||||
| **Custom Endpoints** | Any OpenAI-compatible API |
|
||||
|
||||
## Best Practices
|
||||
|
||||
| Best Practice | Description |
|
||||
|--------------------------|--------------------------------------------------------------------|
|
||||
| Environment Variables | Always use environment variables for API keys |
|
||||
| Error Handling | Implement proper error handling for API failures |
|
||||
| Rate Limiting | Be aware of rate limits for different providers |
|
||||
| Cost Management | Monitor usage and costs across different providers |
|
||||
| Model Selection | Choose models based on your specific use case requirements |
|
||||
| Fallback Models | Implement fallback models for production reliability |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **API Key Errors**: Ensure your API key is correctly set in environment variables
|
||||
2. **Base URL Format**: Verify the base URL format matches the provider's requirements
|
||||
3. **Model Name**: Use the exact model name as specified by the provider
|
||||
4. **Rate Limits**: Implement retry logic for rate limit errors
|
||||
5. **Network Issues**: Handle network connectivity issues gracefully
|
||||
|
||||
### Debug Tips
|
||||
|
||||
```python
|
||||
# Enable debug mode to see detailed logs
|
||||
agent = Agent(
|
||||
# ... other parameters
|
||||
verbose=True, # Enable verbose logging
|
||||
)
|
||||
```
|
||||
|
||||
## Conclusion
|
||||
|
||||
The custom base URL and API key configuration in Swarms provides incredible flexibility to use models from any provider. This approach allows you to:
|
||||
|
||||
- Access 600+ models through a unified interface
|
||||
|
||||
- Switch between providers easily
|
||||
|
||||
- Implement cost-effective solutions
|
||||
|
||||
- Use specialized models for specific tasks
|
||||
|
||||
- Maintain production reliability with fallback models
|
||||
|
||||
Start experimenting with different models and providers to find the best combination for your specific use cases!
|
@ -0,0 +1,27 @@
|
||||
import os
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
from swarms import Agent
|
||||
|
||||
load_dotenv()
|
||||
|
||||
# Initialize the agent for quantitative trading using the Grok LLM API
|
||||
agent = Agent(
|
||||
agent_name="Quantitative-Trading-Agent",
|
||||
agent_description="Advanced quantitative trading and algorithmic analysis agent",
|
||||
model_name="openrouter/qwen/qwen3-vl-235b-a22b-instruct", # Use the correct Grok model name
|
||||
dynamic_temperature_enabled=True,
|
||||
max_loops=1,
|
||||
dynamic_context_window=True,
|
||||
streaming_on=True,
|
||||
llm_base_url="https://openrouter.ai/api/v1", # Grok API base URL
|
||||
llm_api_key=os.getenv("OPENROUTER_API_KEY"), # Use the correct Grok API key environment variable
|
||||
)
|
||||
|
||||
# Run the agent on the specified task
|
||||
out = agent.run(
|
||||
task="What are the top five best energy stocks across nuclear, solar, gas, and other energy sources?",
|
||||
)
|
||||
|
||||
print(out)
|
@ -0,0 +1,13 @@
|
||||
"""
|
||||
Type definitions for the swarms package.
|
||||
|
||||
This module contains common type definitions used across the swarms package
|
||||
to avoid circular import issues.
|
||||
"""
|
||||
|
||||
from typing import Literal
|
||||
|
||||
# Return types for agent creation functions
|
||||
ReturnTypes = Literal[
|
||||
"auto", "swarm", "agents", "both", "tasks", "run_swarm"
|
||||
]
|
@ -0,0 +1,13 @@
|
||||
"""
|
||||
Type definitions for the swarms package.
|
||||
|
||||
This module contains common type definitions used across the swarms package
|
||||
to avoid circular import issues.
|
||||
"""
|
||||
|
||||
from typing import Literal
|
||||
|
||||
# Return types for agent creation functions
|
||||
ReturnTypes = Literal[
|
||||
"auto", "swarm", "agents", "both", "tasks", "run_swarm"
|
||||
]
|
Loading…
Reference in new issue