跳到主要内容

Provider Configuration

Providers connect Viben to AI services like Anthropic, OpenAI, Google, and others. This page covers how to configure and manage providers.

Overview

Provider configuration is stored in ~/.viben/providers.yaml. Viben supports multiple authentication methods:

  1. Environment variables (recommended) - No secrets in config files
  2. Environment variable references - Use env:VAR_NAME syntax
  3. Encrypted storage - Use encrypted:xxx for stored secrets

Provider Types

TypeDescriptionAuth Methods
anthropicAnthropic Claude APIAPI Key
openaiOpenAI APIAPI Key
azureAzure OpenAIAPI Key, Azure AD
googleGoogle AI (Gemini)API Key, OAuth
openrouterOpenRouterAPI Key
ollamaOllama (local)None
customOpenAI-compatible APIsAPI Key

Configuration File

Basic Structure

# ~/.viben/providers.yaml
version: 1

# Default provider to use
default: anthropic-main

providers:
anthropic-main:
type: anthropic
# Configuration options...

openai-main:
type: openai
# Configuration options...

API Key Configuration Methods

Set environment variables in your shell:

export ANTHROPIC_API_KEY="sk-ant-xxx"
export OPENAI_API_KEY="sk-xxx"

Then create providers that automatically read them:

providers:
anthropic-main:
type: anthropic
# Automatically reads ANTHROPIC_API_KEY

openai-main:
type: openai
# Automatically reads OPENAI_API_KEY

Method 2: Environment Variable References

Explicitly reference environment variables in config:

providers:
anthropic-main:
type: anthropic
ANTHROPIC_API_KEY: "env:ANTHROPIC_API_KEY"

Method 3: Encrypted Storage

Use the CLI to create providers with encrypted keys:

viben provider create -t anthropic --api-key "sk-ant-xxx"

This stores the key encrypted:

providers:
anthropic-main:
type: anthropic
ANTHROPIC_API_KEY: "encrypted:xxx"

Provider-Specific Configuration

Anthropic

anthropic-main:
type: anthropic
# Environment variables: ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL

# Optional configuration
# ANTHROPIC_BASE_URL: "https://api.anthropic.com"
# timeout: 120000
# max_retries: 3
Environment VariableDescriptionRequired
ANTHROPIC_API_KEYAPI key from Anthropic ConsoleYes
ANTHROPIC_BASE_URLCustom API endpointNo

OpenAI

openai-main:
type: openai
# Environment variables: OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_ORG_ID

# Optional configuration
# OPENAI_ORG_ID: "org-xxxxx"
Environment VariableDescriptionRequired
OPENAI_API_KEYAPI key from OpenAIYes
OPENAI_BASE_URLCustom API endpointNo
OPENAI_ORG_IDOrganization IDNo

Azure OpenAI

azure-gpt4:
type: azure
AZURE_OPENAI_ENDPOINT: "https://my-resource.openai.azure.com"
AZURE_OPENAI_API_VERSION: "2024-02-15-preview"
AZURE_OPENAI_DEPLOYMENT: "gpt-4-turbo"
# AZURE_OPENAI_API_KEY from environment
Environment VariableDescriptionRequired
AZURE_OPENAI_API_KEYAzure API keyYes
AZURE_OPENAI_ENDPOINTAzure resource endpointYes
AZURE_OPENAI_API_VERSIONAPI versionYes
AZURE_OPENAI_DEPLOYMENTDeployment nameYes

Google AI (Gemini)

google-gemini:
type: google
# Environment variables: GOOGLE_API_KEY, GOOGLE_PROJECT_ID, GOOGLE_LOCATION

# Optional configuration
# GOOGLE_PROJECT_ID: "my-project"
# GOOGLE_LOCATION: "us-central1"
Environment VariableDescriptionRequired
GOOGLE_API_KEYGoogle AI API keyYes
GOOGLE_PROJECT_IDGCP project IDNo
GOOGLE_LOCATIONRegion locationNo

OpenRouter

openrouter:
type: openrouter
# Environment variable: OPENROUTER_API_KEY

# Optional configuration
# site_url: "https://myapp.com"
# app_name: "My App"
Environment VariableDescriptionRequired
OPENROUTER_API_KEYOpenRouter API keyYes

Ollama (Local)

local-ollama:
type: ollama
OLLAMA_HOST: "http://localhost:11434"
# No API key required
Environment VariableDescriptionRequired
OLLAMA_HOSTOllama server URLNo (default: http://localhost:11434)

Custom OpenAI-Compatible APIs

For services that implement the OpenAI API format:

custom-api:
type: custom
OPENAI_BASE_URL: "https://api.example.com/v1"
# OPENAI_API_KEY from environment

# Optional: custom headers
# headers:
# X-Custom-Header: "value"

DeepSeek

deepseek:
type: custom
OPENAI_BASE_URL: "https://api.deepseek.com/v1"
# Uses DEEPSEEK_API_KEY or OPENAI_API_KEY

Groq

groq:
type: custom
OPENAI_BASE_URL: "https://api.groq.com/openai/v1"
# Uses GROQ_API_KEY or OPENAI_API_KEY

Together AI

together:
type: custom
OPENAI_BASE_URL: "https://api.together.xyz/v1"
# Uses TOGETHER_API_KEY or OPENAI_API_KEY

Fireworks AI

fireworks:
type: custom
OPENAI_BASE_URL: "https://api.fireworks.ai/inference/v1"
# Uses FIREWORKS_API_KEY or OPENAI_API_KEY

Environment Variable Priority

When resolving API keys, Viben checks in this order:

  1. Command-line argument (--api-key)
  2. Explicit value in config file
  3. Provider-specific environment variable (e.g., ANTHROPIC_API_KEY)
  4. Generic environment variable (e.g., OPENAI_API_KEY for custom type)

Provider Commands

List Providers

viben provider list

Output:

Providers:
anthropic-main* anthropic ✓ connected
openai-main openai ✓ connected
azure-gpt4 azure ✓ connected
local-ollama ollama ○ not running
custom-api custom ✓ connected

* = default provider

Create Provider

# Using environment variables (recommended)
viben provider create -t anthropic
viben provider create -t openai

# With explicit API key (will be encrypted)
viben provider create -t anthropic --api-key "sk-ant-xxx"

# With custom name
viben provider create -n my-claude -t anthropic --api-key "sk-ant-xxx"

# Custom API with base URL
viben provider create -t custom --api-key "xxx" --base-url "https://api.example.com/v1"

Remove Provider

viben provider remove -n <name>

Set Default Provider

viben provider set-default -n anthropic-main

Check Provider Status

viben provider status

Output:

Provider Status:
anthropic-main anthropic ✓ connected latency: 120ms
openai-main openai ✓ connected latency: 85ms
azure-gpt4 azure ✓ connected latency: 150ms
local-ollama ollama ✗ error connection refused
custom-api custom ✓ connected latency: 200ms

Quick Setup Examples

Minimal Setup (Anthropic Only)

# Set environment variable
export ANTHROPIC_API_KEY="sk-ant-xxx"

# Create provider
viben provider create -t anthropic

Multi-Provider Setup

# Set all API keys
export ANTHROPIC_API_KEY="sk-ant-xxx"
export OPENAI_API_KEY="sk-xxx"
export GOOGLE_API_KEY="xxx"

# Create providers
viben provider create -t anthropic
viben provider create -t openai
viben provider create -t google

# Set default
viben provider set-default -n anthropic-main

Local Development (Ollama)

# Start Ollama server
ollama serve

# Create provider (no API key needed)
viben provider create -t ollama

# Set as default for local testing
viben provider set-default -n local-ollama

JSON Output

All provider commands support --json for structured output:

viben provider list --json

Output:

{
"success": true,
"data": {
"default": "anthropic-main",
"providers": [
{
"name": "anthropic-main",
"type": "anthropic",
"status": "connected",
"latency_ms": 120
},
{
"name": "openai-main",
"type": "openai",
"status": "connected",
"latency_ms": 85
}
]
}
}

Troubleshooting

Connection Errors

# Check provider status
viben provider status -n anthropic-main

# Verify API key is set
echo $ANTHROPIC_API_KEY

# Test with verbose output
viben provider status -n anthropic-main --verbose

Invalid API Key

{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "The API key for provider 'anthropic-main' is invalid"
}
}

Provider Not Found

{
"success": false,
"error": {
"code": "PROVIDER_NOT_FOUND",
"message": "Provider 'unknown' not found in configuration"
}
}

Next Steps