跳到主要内容

Provider Management

Providers are connections to AI model APIs. Viben CLI supports multiple provider types, allowing you to configure and switch between different AI services.

Provider Types​

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

Commands​

List Providers​

List all configured 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

For JSON output (useful for scripts and agent integration):

viben provider list --json

Create Provider​

Create a new provider configuration:

# Full syntax
viben provider create -n <name> -t <type> --api-key <key>

# With custom base URL
viben provider create -n <name> -t <type> --api-key <key> --base-url <url>

# With config file
viben provider create -n <name> -t <type> -c <config-file>

# Shorthand (auto-generates name based on type)
viben provider create -t <type> --api-key <key>

Examples:

# Create Anthropic provider
viben provider create -n anthropic-main -t anthropic --api-key "sk-ant-xxx"

# Create OpenAI provider (shorthand)
viben provider create -t openai --api-key "sk-xxx"

# Create custom provider with base URL
viben provider create -n deepseek -t custom \
--api-key "sk-xxx" \
--base-url "https://api.deepseek.com/v1"

Remove Provider​

Remove an existing provider:

viben provider remove -n <name>

Example:

viben provider remove -n old-provider

Set Default Provider​

Set a provider as the default:

viben provider set-default -n <name>

Example:

viben provider set-default -n anthropic-main

Check Provider Status​

Check connectivity and health of providers:

# Check all providers
viben provider status

# Check specific provider
viben provider status -n <name>

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

Configuration File​

Providers are stored in ~/.viben/providers.yaml:

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

# Default provider
default: anthropic-main

providers:
# ============================================================
# Anthropic (Claude)
# Environment: ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL
# ============================================================
anthropic-main:
type: anthropic
# Option 1: Use environment variable (recommended)
# Automatically reads ANTHROPIC_API_KEY

# Option 2: Explicit environment variable reference
# ANTHROPIC_API_KEY: "env:ANTHROPIC_API_KEY"

# Option 3: Encrypted storage (via viben provider create)
# ANTHROPIC_API_KEY: "encrypted:xxx"

# Optional settings
# ANTHROPIC_BASE_URL: "https://api.anthropic.com"
# timeout: 120000
# max_retries: 3

# ============================================================
# OpenAI
# Environment: OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_ORG_ID
# ============================================================
openai-main:
type: openai
# Automatically reads OPENAI_API_KEY, OPENAI_BASE_URL
# Optional:
# OPENAI_ORG_ID: "org-xxxxx"

# ============================================================
# Azure OpenAI
# Environment: AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT,
# AZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT
# ============================================================
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 read from environment

# ============================================================
# Google AI (Gemini)
# Environment: GOOGLE_API_KEY, GOOGLE_PROJECT_ID, GOOGLE_LOCATION
# ============================================================
google-gemini:
type: google
# Automatically reads GOOGLE_API_KEY
# Optional:
# GOOGLE_PROJECT_ID: "my-project"
# GOOGLE_LOCATION: "us-central1"

# ============================================================
# OpenRouter
# Environment: OPENROUTER_API_KEY
# ============================================================
openrouter:
type: openrouter
# Automatically reads OPENROUTER_API_KEY
# Optional:
# site_url: "https://myapp.com"
# app_name: "My App"

# ============================================================
# Ollama (Local Models)
# Environment: OLLAMA_HOST
# ============================================================
local-ollama:
type: ollama
OLLAMA_HOST: "http://localhost:11434"
# No API key required

# ============================================================
# Custom OpenAI-compatible API
# Environment: OPENAI_API_KEY, OPENAI_BASE_URL
# ============================================================
custom-api:
type: custom
OPENAI_BASE_URL: "https://api.example.com/v1"
# OPENAI_API_KEY read from environment
# Optional: custom headers
# headers:
# X-Custom-Header: "value"

Environment Variables​

You can configure providers using environment variables. Viben automatically reads them:

ProviderAPI Key VariableBase URL VariableOther Variables
anthropicANTHROPIC_API_KEYANTHROPIC_BASE_URL-
openaiOPENAI_API_KEYOPENAI_BASE_URLOPENAI_ORG_ID
azureAZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINTAZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT
googleGOOGLE_API_KEY-GOOGLE_PROJECT_ID, GOOGLE_LOCATION
openrouterOPENROUTER_API_KEY--
ollama-OLLAMA_HOST-
customOPENAI_API_KEYOPENAI_BASE_URL-

Priority Order (highest to lowest):

  1. Command-line arguments (--api-key)
  2. Explicit values in configuration file
  3. Provider-specific environment variables (e.g., ANTHROPIC_API_KEY)
  4. Generic environment variables (e.g., OPENAI_API_KEY for custom type)

Quick Setup with Environment Variables​

The simplest way to configure providers - just set environment variables:

# Set environment variables
export ANTHROPIC_API_KEY="sk-ant-xxx"
export OPENAI_API_KEY="sk-xxx"

# Create providers (automatically uses environment variables)
viben provider create -t anthropic
viben provider create -t openai

# Or explicitly specify (will be encrypted in storage)
viben provider create -t anthropic --api-key "sk-ant-xxx"

Provider Type Details​

Anthropic​

For Claude models:

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

Environment variables:

  • ANTHROPIC_API_KEY (required)
  • ANTHROPIC_BASE_URL (optional)

OpenAI​

For GPT models:

viben provider create -t openai --api-key "sk-xxx"

Environment variables:

  • OPENAI_API_KEY (required)
  • OPENAI_BASE_URL (optional)
  • OPENAI_ORG_ID (optional)

Azure OpenAI​

For Azure-hosted OpenAI models:

viben provider create -n azure-gpt4 -t azure \
--api-key "xxx" \
--base-url "https://my-resource.openai.azure.com"

Configuration file allows additional settings:

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"

Google AI (Gemini)​

For Gemini models:

viben provider create -t google --api-key "xxx"

Environment variables:

  • GOOGLE_API_KEY (required)
  • GOOGLE_PROJECT_ID (optional)
  • GOOGLE_LOCATION (optional)

OpenRouter​

For accessing multiple models through OpenRouter:

viben provider create -t openrouter --api-key "xxx"

Environment variables:

  • OPENROUTER_API_KEY (required)

Ollama (Local)​

For locally-running Ollama:

viben provider create -n local-ollama -t ollama

No API key required. Configure host if needed:

local-ollama:
type: ollama
OLLAMA_HOST: "http://localhost:11434"

Custom (OpenAI-compatible)​

For any OpenAI-compatible API:

viben provider create -n deepseek -t custom \
--api-key "xxx" \
--base-url "https://api.deepseek.com/v1"

Common custom providers:

ProviderBase URLAPI Key Variable
DeepSeekhttps://api.deepseek.com/v1DEEPSEEK_API_KEY
Groqhttps://api.groq.com/openai/v1GROQ_API_KEY
Together AIhttps://api.together.xyz/v1TOGETHER_API_KEY
Fireworks AIhttps://api.fireworks.ai/inference/v1FIREWORKS_API_KEY

Configuration examples for popular providers:

# 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

Security​

API keys are encrypted when stored in the configuration file. The encrypted format looks like:

api_key: "encrypted:sk-ant-xxx"

:::tip Best Practice Use environment variables for API keys instead of storing them in configuration files. This is more secure and follows the 12-factor app methodology. :::

JSON Output​

All commands support --json flag for structured output:

viben provider list --json
{
"success": true,
"data": {
"default": "anthropic-main",
"providers": [
{
"name": "anthropic-main",
"type": "anthropic",
"status": "connected"
},
{
"name": "openai-main",
"type": "openai",
"status": "connected"
}
]
}
}

Error responses follow the standard format:

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

Next Steps​