https://github.com/HyperbolicLabs/Hyperbolic-AgentKit
https://github.com/HyperbolicLabs/Hyperbolic-AgentKit
Last synced: 6 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/HyperbolicLabs/Hyperbolic-AgentKit
- Owner: HyperbolicLabs
- License: mit
- Created: 2024-12-15T22:08:48.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2025-04-01T05:04:45.000Z (6 months ago)
- Last Synced: 2025-04-01T06:22:04.184Z (6 months ago)
- Language: Python
- Size: 5.46 MB
- Stars: 99
- Watchers: 2
- Forks: 50
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-LangGraph - HyperbolicLabs/Hyperbolic-AgentKit - AgentKit?style=social) | (🛠️ Developer Tools / 🟩 Development Tools 🛠️)
README
# Hyperbolic's Agent Framework
This repository is inspired by and modified from Coinbase's [CDP Agentkit](https://github.com/coinbase/cdp-agentkit). We extend our gratitude to the Coinbase Developer Platform team for their original work.
For the voice agent, we extend the work of [langchain-ai/react-voice-agent](https://github.com/langchain-ai/react-voice-agent).We recommend reading this entire README before running the application or developing new tools, as many of your questions will be answered here.
## Features
This template demonstrates a chatbot with the following capabilities:
### Compute Operations (via Hyperbolic):
- Connect Ethereum wallet address to Hyperbolic account
- Rent GPU compute resources
- Terminate GPU instances
- Check GPU availability
- Monitor GPU status
- Query billing history
- SSH access to GPU machines
- Run command line tools on remote GPU machines### Blockchain Operations (via CDP):
- Deploy tokens (ERC-20 & NFTs)
- Manage wallets
- Execute transactions
- Interact with smart contracts### Twitter Operations:
- Get X account info
- Get User ID from username
- Get an account's recent tweets
- Post tweet
- Delete tweet
- Reply to tweet and check reply status
- Retweet a tweet and check retweet status### Additional Tools:
- **Podcast Agent**: Tools for video processing and transcription
- `podcast_agent/aiagenteditor.py`: Trim video files using Gemini and ffmpeg
- `podcast_agent/geminivideo.py`: Transcribe video files using Gemini### Knowledge Base Integrations:
- Twitter Knowledge Base: Scrapes tweets from KOLs for informed X posting
- Podcast Knowledge Base: Uses podcast transcripts for accurate Q&A## Writing Agent
The Writing Agent is a powerful LLM-powered tool that creates high-quality, well-researched articles using Claude. Key capabilities include:
- **Content Generation**: Generate well-researched articles on any topic with configurable length and style
- **Style Emulation**:
- Analyze and emulate writing styles from reference documents (PDF format)
- Learn from multiple reference documents simultaneously
- Maintain consistent tone and writing patterns while creating new content
- **Web Research**:
- Conduct thorough research using Tavily API
- Automatically cite sources in APA format
- Include relevant quotes and statistics from sources
- Generate a properly formatted references section
- **Document Processing**:
- Support for PDF files with automatic text extraction
- Smart handling of document formatting and spacing
- Process multiple reference documents in a single session
Configuration:
- Place reference documents in `writing_agent/reference_docs/`
- Required API keys:
- `ANTHROPIC_API_KEY`: For Claude content generation
- `TAVILY_API_KEY`: For web research
- Default parameters:
- Target length: 1500 words
- Model: Claude 3.5 Sonnet
- Citation style: APA format (currently the only supported format)## Prerequisites
### 1. System Requirements
- Operating System: macOS or Linux (Windows has not been tested)
- Python 3.12 (required)
- Node.js 18+ (for web interface)
- Git### 2. API Keys and Configuration
- **Core API Keys (Required)**
- **Anthropic**
- Get API key from [Anthropic Portal](https://console.anthropic.com/dashboard)
- **OpenAI** (Required only for voice agent)
- Get API key from [OpenAI Portal](https://platform.openai.com/api-keys)
- **CDP**
- Sign up at [CDP Portal](https://portal.cdp.coinbase.com/access/api)
- **Hyperbolic** (Required for compute tools)
- Sign up at [Hyperbolic Portal](https://app.hyperbolic.xyz)
- Navigate to Settings to generate API key, this is also where you configure ssh access with your RSA public key- **Optional Integrations**
- **X (Twitter) API Access**
- Create a developer account at [Twitter Developer Portal](https://developer.twitter.com)
- Required credentials: API Key/Secret, Access Token/Secret, Bearer Token, Client ID/Secret
- **Web Search**:
- Tavily API key (Required for Writing Agent as well as core tool capabilities)
- Sign up at [Tavily](https://tavily.com)
- **Google Cloud** (for Podcast Agent/Gemini)
- Create a service account and download key as `eaccservicekey.json` into the project root
- **LangChain**: Endpoint, API key, and project name### 3. Crypto Setup for GPU Compute
To pay for Hyperbolic's GPU compute using crypto:
1. Have an Ethereum wallet with funds on Base network
2. Connect your wallet:
```
Prompt the agent: "connect my wallet 0xYOUR_WALLET_ADDRESS to Hyperbolic"
```
3. Send funds:
- Supported tokens: USDC, USDT, or DAI on Base network
- Send to: `0xd3cB24E0Ba20865C530831C85Bd6EbC25f6f3B60`
4. Start computing:
- Funds will be available immediately
- Use the agent to rent and manage GPU resources## Installation Steps
### 1. Clone the Repository
```bash
git clone https://github.com/yourusername/Hyperbolic-AgentKit.git
cd Hyperbolic-AgentKit
```### 2. Python Environment Setup
**Using Poetry (Recommended)**:
```bash
# Install Poetry if you haven't
curl -sSL https://install.python-poetry.org | python3 -# Set up the environment
poetry env use python3.12
poetry install
```**Browser Automation**
- Install Playwright browsers after installing dependencies:
```bash
poetry run playwright install
```### 3. Environment Configuration
```bash
# Copy and edit the environment file
cp .env.example .env
nano .env # or use any text editor
```**API Keys**
The `.env.example` file contains all possible configurations. Required fields depend on which features you want to use and are specified in the file.### 4. Character Configuration
The `template.json` file allows you to customize your AI agent's personality and communication style. Duplicate the file and edit the fields to define:
- Agent's name, twitter account info, and description
- Personality traits
- Communication style, tone, and examples
- Background lore and expertise
- KOL list for automated interaction### 5. Additional Setup
- **Browser Automation** (if using browser tools):
```bash
poetry run playwright install # or: playwright install
```
- **SSH Key** (for GPU compute):
- Ensure you have an RSA key at `~/.ssh/id_rsa` or configure `SSH_PRIVATE_KEY_PATH`
- Only RSA keys are supported for now
- In order to generate an RSA key, run `ssh-keygen -t rsa -b 4096 -C "your_email@example.com"`## Running the Application
### 1. Voice Agent (Web Interface)
```bash
# Start the server
PYTHONPATH=$PWD/server/src poetry run python server/src/server/app.py# Access the interface at http://localhost:3000
```### 2. Terminal Interface
```bash
poetry run python chatbot.py
```### 3. Gradio Web Interface
```bash
poetry run python gradio_ui.py
# Access the interface at http://localhost:7860
```## Troubleshooting
### Common Issues:
1. **API Key Errors**
- Verify all API keys are correctly set in `.env`
- Check API key permissions and quotas2. **Python Version Issues**
```bash
# Check Python version
python --version# If needed, install Python 3.12
# On macOS:
brew install python@3.12
# On Ubuntu:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12
```3. **Dependencies Issues**
```bash
# Clean Poetry environment
poetry env remove python3.12
poetry env use python3.12
poetry install --no-cache
```4. **Browser Automation Issues**
```bash
# Reinstall Playwright browsers
poetry run playwright install --force
```5. **Chrome Browser Setup Issues**
- Ensure Google Chrome is installed on your system
- Configure a default Chrome profile:
1. Open Chrome
2. Make sure a profile is already selected/active
3. Remove all pinned tabs from the active profile (they can cause browser automation issues)
4. Ensure Chrome doesn't show a profile selector on startup
- If using browser automation tools, the agent assumes:
- Chrome is your default browser
- A default profile exists and is automatically selected
- No pinned tabs are present in the active profile## Adding New Tools
The agent framework supports two main interfaces, each with its own tool registration point:
### 1. Project Structure
New agentic capabilities should be organized in dedicated folders at the root level. For example:
- `twitter_agent/` - Twitter API integration and knowledge base
- `browser_agent/` - Browser automation capabilities
- `podcast_agent/` - Podcast processing and transcription
- `writing_agent/` - Content generation and research capabilitiesEach agent folder typically contains:
- `__init__.py` - Exports and initialization
- Core functionality modules (e.g., `twitter_state.py`, `browser_tool.py`)
- Knowledge base implementations if applicable### 2. Repository Organization
```
Hyperbolic-AgentKit/
├── characters/ # Character configurations
│ └── default.json # Default character profile
├── *_agent/ # Agent-specific capabilities (writing_agent, browser_agent, podcast_agent, etc.)
│ ├── __init__.py
│ └── core modules
├── server/ # Voice agent interface
│ └── src/
│ └── server/
│ └── tools.py # Voice agent tools
└── chatbot.py # Main agent initialization
```### 3. Agent Initialization Flow
The agent is initialized through several key functions in `chatbot.py`:
1. `loadCharacters()`:
- Loads character configurations from JSON files
- Supports multiple characters with fallback to default
- Handles character file path resolution2. `process_character_config()`:
- Transforms character JSON into agent personality
- Processes bio, lore, knowledge, style guidelines
- Formats examples and KOL lists3. `create_agent_tools()`:
- Registers tools based on environment configuration
- Supports multiple tool categories (browser, Twitter, podcast, etc.)
- Handles tool dependencies and state management4. `initialize_agent()`:
- Orchestrates the entire setup process
- Initializes LLM, character, and knowledge bases
- Configures tools and agent state### 4. Voice Agent Structure
The voice agent is implemented in `server/src/server/app.py` using WebSocket communication:
```
server/src/server/
├── app.py # Main server implementation
├── tools.py # Voice agent tools
├── prompt.py # Voice agent instructions
└── static/ # Web interface files
└── index.html
```Key components:
1. Server Setup:
```python
app = Starlette(
routes=[
Route("/", homepage),
WebSocketRoute("/ws", websocket_endpoint)
]
)
```2. WebSocket Communication:
- Browser ↔️ Server real-time communication
- Handles voice input/output streams
- Maintains persistent connection for conversation3. Agent Configuration:
```python
agent = OpenAIVoiceReactAgent(
model="gpt-4o-realtime-preview", # gpt-4o-realtime-preview and gpt-4o-mini-realtime-preview are the only models that support the voice agent
tools=TOOLS,
instructions=full_instructions,
voice="verse" # Available: alloy, ash, ballad, coral, echo, sage, shimmer, verse
)
```4. Character Integration:
- Reuses `loadCharacters()` and `process_character_config()`
- Combines base instructions with character personality
- Maintains consistent persona across interfaces### 5. Tool Registration
Tools are registered in two places:
1. Main chatbot interface (`chatbot.py`) via `create_agent_tools()`
2. Voice agent interface (`server/src/server/tools.py`) via `create_tools()`Look at the existing action implementations in `/hyperbolic_agentkit_core` for examples of:
- Adding individual tools and toolkits
- Configuring via environment variables
- Managing dependencies and state### 6. Tool Categories
The framework includes several categories of pre-built tools you can reference:
- Browser automation tools
- Knowledge base tools
- Social media tools (Twitter/X)
- Blockchain tools (CDP)
- Compute tools (Hyperbolic)
- Web search tools
- HTTP request toolsWhen adding a new capability, examine similar implementations in existing agent folders for patterns and best practices.
## Support and Resources
- [Hyperbolic Documentation](https://docs.hyperbolic.xyz/docs/getting-started)
- [CDP Documentation](https://docs.cdp.coinbase.com/agentkit/docs/welcome)
- [X API Documentation](https://docs.x.com/x-api/introduction)
- [Report Issues](https://github.com/yourusername/Hyperbolic-AgentKit/issues)## Contributing
1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE.md) file for details.
This project incorporates work from:
- [CDP Agentkit](https://github.com/coinbase/cdp-agentkit) (Apache License 2.0)
- [langchain-ai/react-voice-agent](https://github.com/langchain-ai/react-voice-agent) (MIT License)