Spaces:
Build error
Build error
Merge pull request #8 from nicolabeghin/proxy-custom-openai-api-url
Browse files- docs/proxy.md +2 -0
- headroom/proxy/server.py +7 -0
docs/proxy.md
CHANGED
|
@@ -32,6 +32,7 @@ headroom proxy \
|
|
| 32 |
| `--no-rate-limit` | `false` | Disable rate limiting |
|
| 33 |
| `--log-file` | None | Path to JSONL log file |
|
| 34 |
| `--budget` | None | Daily budget limit in USD |
|
|
|
|
| 35 |
|
| 36 |
### LLMLingua Options (ML Compression)
|
| 37 |
|
|
@@ -204,6 +205,7 @@ headroom_latency_ms_sum
|
|
| 204 |
export HEADROOM_HOST=0.0.0.0
|
| 205 |
export HEADROOM_PORT=8787
|
| 206 |
export HEADROOM_BUDGET=100.0
|
|
|
|
| 207 |
headroom proxy
|
| 208 |
```
|
| 209 |
|
|
|
|
| 32 |
| `--no-rate-limit` | `false` | Disable rate limiting |
|
| 33 |
| `--log-file` | None | Path to JSONL log file |
|
| 34 |
| `--budget` | None | Daily budget limit in USD |
|
| 35 |
+
| `--openai-api-url` | `https://api.openai.com` | Custom OpenAI API URL endpoint |
|
| 36 |
|
| 37 |
### LLMLingua Options (ML Compression)
|
| 38 |
|
|
|
|
| 205 |
export HEADROOM_HOST=0.0.0.0
|
| 206 |
export HEADROOM_PORT=8787
|
| 207 |
export HEADROOM_BUDGET=100.0
|
| 208 |
+
export OPENAI_TARGET_API_URL=https://custom.openai.endpoint.com
|
| 209 |
headroom proxy
|
| 210 |
```
|
| 211 |
|
headroom/proxy/server.py
CHANGED
|
@@ -169,6 +169,7 @@ class ProxyConfig:
|
|
| 169 |
# Server
|
| 170 |
host: str = "127.0.0.1"
|
| 171 |
port: int = 8787
|
|
|
|
| 172 |
|
| 173 |
# Optimization
|
| 174 |
optimize: bool = True
|
|
@@ -760,6 +761,10 @@ class HeadroomProxy:
|
|
| 760 |
def __init__(self, config: ProxyConfig):
|
| 761 |
self.config = config
|
| 762 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 763 |
# Initialize providers
|
| 764 |
self.anthropic_provider = AnthropicProvider()
|
| 765 |
self.openai_provider = OpenAIProvider()
|
|
@@ -2562,6 +2567,7 @@ if __name__ == "__main__":
|
|
| 2562 |
# Server
|
| 2563 |
parser.add_argument("--host", default="127.0.0.1")
|
| 2564 |
parser.add_argument("--port", type=int, default=8787)
|
|
|
|
| 2565 |
|
| 2566 |
# Optimization
|
| 2567 |
parser.add_argument("--no-optimize", action="store_true", help="Disable optimization")
|
|
@@ -2659,6 +2665,7 @@ if __name__ == "__main__":
|
|
| 2659 |
config = ProxyConfig(
|
| 2660 |
host=_get_env_str("HEADROOM_HOST", args.host),
|
| 2661 |
port=_get_env_int("HEADROOM_PORT", args.port),
|
|
|
|
| 2662 |
optimize=optimize,
|
| 2663 |
min_tokens_to_crush=_get_env_int("HEADROOM_MIN_TOKENS", args.min_tokens),
|
| 2664 |
max_items_after_crush=_get_env_int("HEADROOM_MAX_ITEMS", args.max_items),
|
|
|
|
| 169 |
# Server
|
| 170 |
host: str = "127.0.0.1"
|
| 171 |
port: int = 8787
|
| 172 |
+
openai_api_url: str | None = None # Custom OpenAI API URL override
|
| 173 |
|
| 174 |
# Optimization
|
| 175 |
optimize: bool = True
|
|
|
|
| 761 |
def __init__(self, config: ProxyConfig):
|
| 762 |
self.config = config
|
| 763 |
|
| 764 |
+
# Override OPENAI_API_URL with config if set
|
| 765 |
+
if config.openai_api_url:
|
| 766 |
+
HeadroomProxy.OPENAI_API_URL = config.openai_api_url
|
| 767 |
+
|
| 768 |
# Initialize providers
|
| 769 |
self.anthropic_provider = AnthropicProvider()
|
| 770 |
self.openai_provider = OpenAIProvider()
|
|
|
|
| 2567 |
# Server
|
| 2568 |
parser.add_argument("--host", default="127.0.0.1")
|
| 2569 |
parser.add_argument("--port", type=int, default=8787)
|
| 2570 |
+
parser.add_argument("--openai-api-url", help=f"Custom OpenAI API URL (default: {HeadroomProxy.OPENAI_API_URL})")
|
| 2571 |
|
| 2572 |
# Optimization
|
| 2573 |
parser.add_argument("--no-optimize", action="store_true", help="Disable optimization")
|
|
|
|
| 2665 |
config = ProxyConfig(
|
| 2666 |
host=_get_env_str("HEADROOM_HOST", args.host),
|
| 2667 |
port=_get_env_int("HEADROOM_PORT", args.port),
|
| 2668 |
+
openai_api_url=_get_env_str("OPENAI_TARGET_API_URL", args.openai_api_url),
|
| 2669 |
optimize=optimize,
|
| 2670 |
min_tokens_to_crush=_get_env_int("HEADROOM_MIN_TOKENS", args.min_tokens),
|
| 2671 |
max_items_after_crush=_get_env_int("HEADROOM_MAX_ITEMS", args.max_items),
|