-
Notifications
You must be signed in to change notification settings - Fork 2k
Open
Description
Feature Request: Venice AI Provider Integration
Summary
Add Venice AI as a new LLM provider option in Letta, enabling users to use Venice AI models for chat completions, streaming, tool calling, and embeddings generation.
Motivation
Venice AI provides access to multiple LLM models through a unified API. Integrating Venice AI as a provider would give Letta users:
- Access to a diverse set of models through a single provider
- OpenAI-compatible API format for seamless integration
- Dynamic model discovery (models listed from API, not hardcoded)
- Support for chat completions, streaming, tool calling, and embeddings
Proposed Solution
Implement a Venice AI provider that:
- Extends
LLMClientBasefollowing Letta's existing provider patterns - Supports all core LLM operations (chat, streaming, embeddings, tool calling)
- Dynamically lists available models from Venice API
- Handles errors and retries appropriately
- Maintains 100% test coverage
Benefits
- More Model Options: Users gain access to Venice AI's model catalog
- Unified Interface: Works seamlessly with Letta's existing agent and LLM infrastructure
- OpenAI-Compatible: Venice uses OpenAI-compatible format, making integration straightforward
- Dynamic Discovery: Models are automatically discovered from API (no hardcoded lists)
- Full Feature Support: Chat, streaming, tool calling, and embeddings all supported
Implementation Details
The implementation would include:
VeniceClient: LLM client extendingLLMClientBaseVeniceProvider: Provider class for dynamic model listing- Configuration via
VENICE_API_KEYenvironment variable or settings - Comprehensive test coverage (unit, integration, E2E)
- Full documentation
Configuration
Users would configure Venice AI by setting:
export VENICE_API_KEY="your-api-key"Or in settings:
venice_api_key = "your-api-key"Models would be automatically discovered and available as venice/{model_id}.
Additional Context
Venice AI provides an OpenAI-compatible API, which means:
- Request/response formats are already compatible with Letta's OpenAI client patterns
- Streaming uses Server-Sent Events (SSE) format
- Tool calling follows OpenAI function calling format
- Embeddings use OpenAI-compatible endpoint
This makes the integration straightforward and maintainable.
Metadata
Metadata
Assignees
Labels
No labels