| import json |
| import os |
|
|
| def generate_portkey_config(local: bool = True): |
| if local: |
| config = { |
| "strategy": { |
| "mode": "fallback" |
| }, |
| "cache": { |
| "mode": "semantic", |
| "max_age": 10000 |
| }, |
| "retry": { |
| "attempts": 3, |
| }, |
| "targets": [ |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| { |
| "provider": "anthropic", |
| "api_key": os.getenv("ANTHROPIC_API_KEY"), |
| "override_params": { |
| "model": "claude-3-5-sonnet-20240620", |
| |
| |
| } |
| }, |
| { |
| "provider": "openai", |
| "api_key": os.getenv("OPENAI_API_KEY"), |
| "override_params": { |
| "model": "gpt-4o", |
| |
| |
| } |
| }, |
| { |
| "provider": "anthropic", |
| "api_key": os.getenv("ANTHROPIC_API_KEY"), |
| "override_params": { |
| "model": "claude-3-opus-20240229", |
| |
| |
| } |
| } |
| ] |
| } |
| else: |
| config = { |
| "strategy": { |
| "mode": "fallback" |
| }, |
| "cache": { |
| "mode": "semantic", |
| "max_age": 10000 |
| }, |
| "retry": { |
| "attempts": 3, |
| }, |
| "targets": [ |
| { |
| "virtual_key": os.getenv("PORTKEY_OPENAI_VIRTUAL_KEY"), |
| "override_params": { |
| "model": "gpt-4o", |
| |
| |
| } |
| }, |
| { |
| "provider": "anthropic", |
| "api_key": os.getenv("POETRY_ANTHROPIC_API_KEY"), |
| "override_params": { |
| "model": "claude-3-5-sonnet-20240620", |
| |
| |
| } |
| }, |
| { |
| "virtual_key": os.getenv("PORTKEY_ANTHROPIC_API_KEY"), |
| "override_params": { |
| "model": "claude-3-opus-20240229", |
| |
| |
| } |
| }, |
| { |
| "virtual_key": os.getenv("PORTKEY_MISTRAL_API_KEY"), |
| "override_params": { |
| "model": "codestral-latest", |
| |
| |
| } |
| } |
| ] |
| } |
| |
| return json.dumps(config) |
|
|