Add environment configuration file, restructure tool imports, and enhance README setup instructions
This commit is contained in:
parent
c5386ed7e6
commit
0411ca1880
11 changed files with 178 additions and 12 deletions
49
.env.example
Normal file
49
.env.example
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
# Hermes Agent Environment Configuration
|
||||||
|
# Copy this file to .env and fill in your API keys
|
||||||
|
# Get API keys from the URLs listed below
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# REQUIRED API KEYS
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Anthropic API Key - Main agent model
|
||||||
|
# Get at: https://console.anthropic.com/
|
||||||
|
ANTHROPIC_API_KEY=
|
||||||
|
|
||||||
|
# Firecrawl API Key - Web search, extract, and crawl
|
||||||
|
# Get at: https://firecrawl.dev/
|
||||||
|
FIRECRAWL_API_KEY=
|
||||||
|
|
||||||
|
# Nous Research API Key - Vision analysis and multi-model reasoning
|
||||||
|
# Get at: https://inference-api.nousresearch.com/
|
||||||
|
NOUS_API_KEY=
|
||||||
|
|
||||||
|
# Morph API Key - Terminal/command execution tools
|
||||||
|
# Get at: https://morph.so/
|
||||||
|
MORPH_API_KEY=
|
||||||
|
|
||||||
|
# FAL.ai API Key - Image generation
|
||||||
|
# Get at: https://fal.ai/
|
||||||
|
FAL_KEY=
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# OPTIONAL API KEYS
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# OpenAI API Key - Optional, for enhanced Hecate features
|
||||||
|
# Get at: https://platform.openai.com/
|
||||||
|
OPENAI_API_KEY=
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# OPTIONAL CONFIGURATION
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Terminal Tool Settings
|
||||||
|
HECATE_VM_LIFETIME_SECONDS=300
|
||||||
|
HECATE_DEFAULT_SNAPSHOT_ID=snapshot_p5294qxt
|
||||||
|
|
||||||
|
# Debug Logging (set to "true" to enable, logs saved to ./logs/)
|
||||||
|
WEB_TOOLS_DEBUG=false
|
||||||
|
VISION_TOOLS_DEBUG=false
|
||||||
|
MOA_TOOLS_DEBUG=false
|
||||||
|
IMAGE_TOOLS_DEBUG=false
|
||||||
48
README.md
48
README.md
|
|
@ -12,13 +12,42 @@ An AI agent with advanced tool-calling capabilities, featuring a flexible toolse
|
||||||
- **Toolsets System**: Organize tools into logical groups for different scenarios
|
- **Toolsets System**: Organize tools into logical groups for different scenarios
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
|
### 1. Install Dependencies
|
||||||
```bash
|
```bash
|
||||||
|
# Create and activate virtual environment (recommended)
|
||||||
|
python3 -m venv venv
|
||||||
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
||||||
|
|
||||||
|
# Install required packages
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
# Install Hecate for terminal tools
|
||||||
git clone git@github.com:NousResearch/hecate.git
|
git clone git@github.com:NousResearch/hecate.git
|
||||||
cd hecate
|
cd hecate
|
||||||
pip install -e .
|
pip install -e .
|
||||||
|
cd ..
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 2. Configure Environment Variables
|
||||||
|
```bash
|
||||||
|
# Copy the example environment file
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
# Edit .env and add your API keys
|
||||||
|
nano .env # or use your preferred editor
|
||||||
|
```
|
||||||
|
|
||||||
|
**Required API Keys:**
|
||||||
|
- `ANTHROPIC_API_KEY` - Main agent model (get at: https://console.anthropic.com/)
|
||||||
|
- `FIRECRAWL_API_KEY` - Web tools (get at: https://firecrawl.dev/)
|
||||||
|
- `NOUS_API_KEY` - Vision & reasoning tools (get at: https://inference-api.nousresearch.com/)
|
||||||
|
- `MORPH_API_KEY` - Terminal tools (get at: https://morph.so/)
|
||||||
|
- `FAL_KEY` - Image generation (get at: https://fal.ai/)
|
||||||
|
- `OPENAI_API_KEY` - Optional, for some Hecate features
|
||||||
|
|
||||||
|
See `.env.example` for all available configuration options including debug settings and terminal tool configuration.
|
||||||
|
|
||||||
## Toolsets System
|
## Toolsets System
|
||||||
|
|
||||||
The agent uses a toolsets system for organizing and managing tools. All tools must be part of a toolset to be accessible - individual tool selection is not supported. This ensures consistent and logical grouping of capabilities.
|
The agent uses a toolsets system for organizing and managing tools. All tools must be part of a toolset to be accessible - individual tool selection is not supported. This ensures consistent and logical grouping of capabilities.
|
||||||
|
|
@ -115,13 +144,20 @@ agent = AIAgent(enabled_toolsets=["my_tools"])
|
||||||
|
|
||||||
## Environment Variables
|
## Environment Variables
|
||||||
|
|
||||||
Set these environment variables to enable different tools:
|
All environment variables can be configured in the `.env` file (copy from `.env.example`).
|
||||||
|
|
||||||
- `FIRECRAWL_API_KEY`: For web tools (search, extract, crawl)
|
**Core API Keys:**
|
||||||
- `MORPH_API_KEY`: For terminal tools
|
- `ANTHROPIC_API_KEY`: Main agent model
|
||||||
- `NOUS_API_KEY`: For vision and reasoning tools
|
- `FIRECRAWL_API_KEY`: Web tools (search, extract, crawl)
|
||||||
- `FAL_KEY`: For image generation tools
|
- `NOUS_API_KEY`: Vision and reasoning tools
|
||||||
- `ANTHROPIC_API_KEY`: For the main agent model
|
- `MORPH_API_KEY`: Terminal tools
|
||||||
|
- `FAL_KEY`: Image generation tools
|
||||||
|
- `OPENAI_API_KEY`: Optional, for some Hecate features
|
||||||
|
|
||||||
|
**Configuration Options:**
|
||||||
|
- `HECATE_VM_LIFETIME_SECONDS`: VM lifetime (default: 300)
|
||||||
|
- `HECATE_DEFAULT_SNAPSHOT_ID`: Default snapshot (default: snapshot_p5294qxt)
|
||||||
|
- `WEB_TOOLS_DEBUG`, `VISION_TOOLS_DEBUG`, `MOA_TOOLS_DEBUG`, `IMAGE_TOOLS_DEBUG`: Enable debug logging
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,11 @@ import json
|
||||||
import asyncio
|
import asyncio
|
||||||
from typing import Dict, Any, List
|
from typing import Dict, Any, List
|
||||||
|
|
||||||
from web_tools import web_search_tool, web_extract_tool, web_crawl_tool, check_firecrawl_api_key
|
from tools.web_tools import web_search_tool, web_extract_tool, web_crawl_tool, check_firecrawl_api_key
|
||||||
from terminal_tool import terminal_tool, check_hecate_requirements, TERMINAL_TOOL_DESCRIPTION
|
from tools.terminal_tool import terminal_tool, check_hecate_requirements, TERMINAL_TOOL_DESCRIPTION
|
||||||
from vision_tools import vision_analyze_tool, check_vision_requirements
|
from tools.vision_tools import vision_analyze_tool, check_vision_requirements
|
||||||
from mixture_of_agents_tool import mixture_of_agents_tool, check_moa_requirements
|
from tools.mixture_of_agents_tool import mixture_of_agents_tool, check_moa_requirements
|
||||||
from image_generation_tool import image_generate_tool, check_image_generation_requirements
|
from tools.image_generation_tool import image_generate_tool, check_image_generation_requirements
|
||||||
from toolsets import (
|
from toolsets import (
|
||||||
get_toolset, resolve_toolset, resolve_multiple_toolsets,
|
get_toolset, resolve_toolset, resolve_multiple_toolsets,
|
||||||
get_all_toolsets, get_toolset_names, validate_toolset,
|
get_all_toolsets, get_toolset_names, validate_toolset,
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,5 @@
|
||||||
firecrawl-py
|
firecrawl-py
|
||||||
openai
|
openai
|
||||||
fal-client
|
fal-client
|
||||||
|
python-dotenv
|
||||||
|
fire
|
||||||
12
run_agent.py
12
run_agent.py
|
|
@ -28,6 +28,18 @@ from typing import List, Dict, Any, Optional
|
||||||
from openai import OpenAI
|
from openai import OpenAI
|
||||||
import fire
|
import fire
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Load environment variables from .env file
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
# Load .env file if it exists
|
||||||
|
env_path = Path(__file__).parent / '.env'
|
||||||
|
if env_path.exists():
|
||||||
|
load_dotenv(dotenv_path=env_path)
|
||||||
|
print(f"✅ Loaded environment variables from {env_path}")
|
||||||
|
else:
|
||||||
|
print(f"ℹ️ No .env file found at {env_path}. Using system environment variables.")
|
||||||
|
|
||||||
# Import our tool system
|
# Import our tool system
|
||||||
from model_tools import get_tool_definitions, handle_function_call, check_toolset_requirements
|
from model_tools import get_tool_definitions, handle_function_call, check_toolset_requirements
|
||||||
|
|
|
||||||
67
tools/__init__.py
Normal file
67
tools/__init__.py
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Tools Package
|
||||||
|
|
||||||
|
This package contains all the specific tool implementations for the Hermes Agent.
|
||||||
|
Each module provides specialized functionality for different capabilities:
|
||||||
|
|
||||||
|
- web_tools: Web search, content extraction, and crawling
|
||||||
|
- terminal_tool: Command execution on virtual machines
|
||||||
|
- vision_tools: Image analysis and understanding
|
||||||
|
- mixture_of_agents_tool: Multi-model collaborative reasoning
|
||||||
|
- image_generation_tool: Text-to-image generation with upscaling
|
||||||
|
|
||||||
|
The tools are imported into model_tools.py which provides a unified interface
|
||||||
|
for the AI agent to access all capabilities.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Export all tools for easy importing
|
||||||
|
from .web_tools import (
|
||||||
|
web_search_tool,
|
||||||
|
web_extract_tool,
|
||||||
|
web_crawl_tool,
|
||||||
|
check_firecrawl_api_key
|
||||||
|
)
|
||||||
|
|
||||||
|
from .terminal_tool import (
|
||||||
|
terminal_tool,
|
||||||
|
check_hecate_requirements,
|
||||||
|
TERMINAL_TOOL_DESCRIPTION
|
||||||
|
)
|
||||||
|
|
||||||
|
from .vision_tools import (
|
||||||
|
vision_analyze_tool,
|
||||||
|
check_vision_requirements
|
||||||
|
)
|
||||||
|
|
||||||
|
from .mixture_of_agents_tool import (
|
||||||
|
mixture_of_agents_tool,
|
||||||
|
check_moa_requirements
|
||||||
|
)
|
||||||
|
|
||||||
|
from .image_generation_tool import (
|
||||||
|
image_generate_tool,
|
||||||
|
check_image_generation_requirements
|
||||||
|
)
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
# Web tools
|
||||||
|
'web_search_tool',
|
||||||
|
'web_extract_tool',
|
||||||
|
'web_crawl_tool',
|
||||||
|
'check_firecrawl_api_key',
|
||||||
|
# Terminal tools
|
||||||
|
'terminal_tool',
|
||||||
|
'check_hecate_requirements',
|
||||||
|
'TERMINAL_TOOL_DESCRIPTION',
|
||||||
|
# Vision tools
|
||||||
|
'vision_analyze_tool',
|
||||||
|
'check_vision_requirements',
|
||||||
|
# MoA tools
|
||||||
|
'mixture_of_agents_tool',
|
||||||
|
'check_moa_requirements',
|
||||||
|
# Image generation tools
|
||||||
|
'image_generate_tool',
|
||||||
|
'check_image_generation_requirements',
|
||||||
|
]
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue