refactor: set default provider to openai and update default models to gpt-4.1/mini
This commit is contained in:
parent
e07c97b7a2
commit
e9c8cf8de6
3 changed files with 51 additions and 46 deletions
18
.env.example
18
.env.example
|
|
@ -5,17 +5,17 @@ GEMINI_API_KEY="your-google-ai-studio-key"
|
|||
|
||||
# Optional: Provider Preference and Model Mapping
|
||||
# Controls which provider (google or openai) is preferred for mapping haiku/sonnet.
|
||||
# Defaults to google if not set.
|
||||
PREFERRED_PROVIDER="google"
|
||||
# Defaults to openai if not set.
|
||||
PREFERRED_PROVIDER="openai"
|
||||
|
||||
# Optional: Specify the exact models to map haiku/sonnet to.
|
||||
# If PREFERRED_PROVIDER=google, these MUST be valid Gemini model names known to the server.
|
||||
# Defaults to gemini-2.5-pro-preview-03-25 and gemini-2.0-flash if PREFERRED_PROVIDER=google.
|
||||
# Defaults to gpt-4o and gpt-4o-mini if PREFERRED_PROVIDER=openai.
|
||||
# BIG_MODEL="gemini-2.5-pro-preview-03-25"
|
||||
# SMALL_MODEL="gemini-2.0-flash"
|
||||
# Defaults to gpt-4.1 and gpt-4.1-mini if PREFERRED_PROVIDER=openai.
|
||||
# BIG_MODEL="gpt-4.1"
|
||||
# SMALL_MODEL="gpt-4.1-mini"
|
||||
|
||||
# Example OpenAI mapping:
|
||||
# PREFERRED_PROVIDER="openai"
|
||||
# BIG_MODEL="gpt-4o"
|
||||
# SMALL_MODEL="gpt-4o-mini"
|
||||
# Example Google mapping:
|
||||
# PREFERRED_PROVIDER="google"
|
||||
# BIG_MODEL="gemini-2.5-pro-preview-03-25"
|
||||
# SMALL_MODEL="gemini-2.0-flash"
|
||||
65
README.md
65
README.md
|
|
@ -12,7 +12,7 @@ A proxy server that lets you use Anthropic clients with Gemini or OpenAI models
|
|||
### Prerequisites
|
||||
|
||||
- OpenAI API key 🔑
|
||||
- Google AI Studio (Gemini) API key (if using default provider) 🔑
|
||||
- Google AI Studio (Gemini) API key (if using Google provider) 🔑
|
||||
- [uv](https://github.com/astral-sh/uv) installed.
|
||||
|
||||
### Setup 🛠️
|
||||
|
|
@ -37,15 +37,15 @@ A proxy server that lets you use Anthropic clients with Gemini or OpenAI models
|
|||
Edit `.env` and fill in your API keys and model configurations:
|
||||
|
||||
* `ANTHROPIC_API_KEY`: (Optional) Needed only if proxying *to* Anthropic models.
|
||||
* `OPENAI_API_KEY`: Your OpenAI API key (Required if using OpenAI models as fallback or primary).
|
||||
* `GEMINI_API_KEY`: Your Google AI Studio (Gemini) API key (Required if using the default Gemini preference).
|
||||
* `PREFERRED_PROVIDER` (Optional): Set to `google` (default) or `openai`. This determines the primary backend for mapping `haiku`/`sonnet`.
|
||||
* `BIG_MODEL` (Optional): The model to map `sonnet` requests to. Defaults to `gemini-2.5-pro-preview-03-25` (if `PREFERRED_PROVIDER=google` and model is known) or `gpt-4o`.
|
||||
* `SMALL_MODEL` (Optional): The model to map `haiku` requests to. Defaults to `gemini-2.0-flash` (if `PREFERRED_PROVIDER=google` and model is known) or `gpt-4o-mini`.
|
||||
* `OPENAI_API_KEY`: Your OpenAI API key (Required if using the default OpenAI preference or as fallback).
|
||||
* `GEMINI_API_KEY`: Your Google AI Studio (Gemini) API key (Required if PREFERRED_PROVIDER=google).
|
||||
* `PREFERRED_PROVIDER` (Optional): Set to `openai` (default) or `google`. This determines the primary backend for mapping `haiku`/`sonnet`.
|
||||
* `BIG_MODEL` (Optional): The model to map `sonnet` requests to. Defaults to `gpt-4.1` (if `PREFERRED_PROVIDER=openai`) or `gemini-2.5-pro-preview-03-25`.
|
||||
* `SMALL_MODEL` (Optional): The model to map `haiku` requests to. Defaults to `gpt-4.1-mini` (if `PREFERRED_PROVIDER=openai`) or `gemini-2.0-flash`.
|
||||
|
||||
**Mapping Logic:**
|
||||
- If `PREFERRED_PROVIDER=google` (default), `haiku`/`sonnet` map to `SMALL_MODEL`/`BIG_MODEL` prefixed with `gemini/` *if* those models are in the server's known `GEMINI_MODELS` list.
|
||||
- Otherwise (if `PREFERRED_PROVIDER=openai` or the specified Google model isn't known), they map to `SMALL_MODEL`/`BIG_MODEL` prefixed with `openai/`.
|
||||
- If `PREFERRED_PROVIDER=openai` (default), `haiku`/`sonnet` map to `SMALL_MODEL`/`BIG_MODEL` prefixed with `openai/`.
|
||||
- If `PREFERRED_PROVIDER=google`, `haiku`/`sonnet` map to `SMALL_MODEL`/`BIG_MODEL` prefixed with `gemini/` *if* those models are in the server's known `GEMINI_MODELS` list (otherwise falls back to OpenAI mapping).
|
||||
|
||||
4. **Run the server**:
|
||||
```bash
|
||||
|
|
@ -90,6 +90,8 @@ The following OpenAI models are supported with automatic `openai/` prefix handli
|
|||
- chatgpt-4o-latest
|
||||
- gpt-4o-mini
|
||||
- gpt-4o-mini-audio-preview
|
||||
- gpt-4.1
|
||||
- gpt-4.1-mini
|
||||
|
||||
#### Gemini Models
|
||||
The following Gemini models are supported with automatic `gemini/` prefix handling:
|
||||
|
|
@ -109,33 +111,34 @@ For example:
|
|||
|
||||
### Customizing Model Mapping
|
||||
|
||||
You can customize which models are used via environment variables:
|
||||
Control the mapping using environment variables in your `.env` file or directly:
|
||||
|
||||
- `BIG_MODEL`: The model to use for Claude Sonnet models (default: "gpt-4o")
|
||||
- `SMALL_MODEL`: The model to use for Claude Haiku models (default: "gpt-4o-mini")
|
||||
|
||||
Add these to your `.env` file to customize:
|
||||
```
|
||||
OPENAI_API_KEY=your-openai-key
|
||||
# For OpenAI models (default)
|
||||
BIG_MODEL=gpt-4o
|
||||
SMALL_MODEL=gpt-4o-mini
|
||||
|
||||
# For Gemini models
|
||||
# BIG_MODEL=gemini-2.5-pro-preview-03-25
|
||||
# SMALL_MODEL=gemini-2.0-flash
|
||||
**Example 1: Default (Use OpenAI)**
|
||||
No changes needed in `.env` beyond API keys, or ensure:
|
||||
```dotenv
|
||||
OPENAI_API_KEY="your-openai-key"
|
||||
GEMINI_API_KEY="your-google-key" # Needed if PREFERRED_PROVIDER=google
|
||||
# PREFERRED_PROVIDER="openai" # Optional, it's the default
|
||||
# BIG_MODEL="gpt-4.1" # Optional, it's the default
|
||||
# SMALL_MODEL="gpt-4.1-mini" # Optional, it's the default
|
||||
```
|
||||
|
||||
Or set them directly when running the server:
|
||||
```bash
|
||||
# Using OpenAI models (with uv)
|
||||
BIG_MODEL=gpt-4o SMALL_MODEL=gpt-4o-mini uv run uvicorn server:app --host 0.0.0.0 --port 8082
|
||||
**Example 2: Prefer Google**
|
||||
```dotenv
|
||||
GEMINI_API_KEY="your-google-key"
|
||||
OPENAI_API_KEY="your-openai-key" # Needed for fallback
|
||||
PREFERRED_PROVIDER="google"
|
||||
# BIG_MODEL="gemini-2.5-pro-preview-03-25" # Optional, it's the default for Google pref
|
||||
# SMALL_MODEL="gemini-2.0-flash" # Optional, it's the default for Google pref
|
||||
```
|
||||
|
||||
# Using Gemini models (with uv)
|
||||
BIG_MODEL=gemini-2.5-pro-preview-03-25 SMALL_MODEL=gemini-2.0-flash uv run uvicorn server:app --host 0.0.0.0 --port 8082
|
||||
|
||||
# Mix and match (with uv)
|
||||
BIG_MODEL=gemini-2.5-pro-preview-03-25 SMALL_MODEL=gpt-4o-mini uv run uvicorn server:app --host 0.0.0.0 --port 8082
|
||||
**Example 3: Use Specific OpenAI Models**
|
||||
```dotenv
|
||||
OPENAI_API_KEY="your-openai-key"
|
||||
GEMINI_API_KEY="your-google-key"
|
||||
PREFERRED_PROVIDER="openai"
|
||||
BIG_MODEL="gpt-4o" # Example specific model
|
||||
SMALL_MODEL="gpt-4o-mini" # Example specific model
|
||||
```
|
||||
|
||||
## How It Works 🧩
|
||||
|
|
|
|||
14
server.py
14
server.py
|
|
@ -82,13 +82,13 @@ ANTHROPIC_API_KEY = os.environ.get("ANTHROPIC_API_KEY")
|
|||
OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY")
|
||||
GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY")
|
||||
|
||||
# Get preferred provider (default to google)
|
||||
PREFERRED_PROVIDER = os.environ.get("PREFERRED_PROVIDER", "google").lower()
|
||||
# Get preferred provider (default to openai)
|
||||
PREFERRED_PROVIDER = os.environ.get("PREFERRED_PROVIDER", "openai").lower()
|
||||
|
||||
# Get model mapping configuration from environment
|
||||
# Default to latest Gemini models if not set
|
||||
BIG_MODEL = os.environ.get("BIG_MODEL", "gemini-2.5-pro-preview-03-25")
|
||||
SMALL_MODEL = os.environ.get("SMALL_MODEL", "gemini-2.0-flash")
|
||||
# Default to latest OpenAI models if not set
|
||||
BIG_MODEL = os.environ.get("BIG_MODEL", "gpt-4.1")
|
||||
SMALL_MODEL = os.environ.get("SMALL_MODEL", "gpt-4.1-mini")
|
||||
|
||||
# List of OpenAI models
|
||||
OPENAI_MODELS = [
|
||||
|
|
@ -101,7 +101,9 @@ OPENAI_MODELS = [
|
|||
"gpt-4o-audio-preview",
|
||||
"chatgpt-4o-latest",
|
||||
"gpt-4o-mini",
|
||||
"gpt-4o-mini-audio-preview"
|
||||
"gpt-4o-mini-audio-preview",
|
||||
"gpt-4.1", # Added default big model
|
||||
"gpt-4.1-mini" # Added default small model
|
||||
]
|
||||
|
||||
# List of Gemini models
|
||||
|
|
|
|||
Loading…
Reference in a new issue