|
|
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) |
|
|
|