chopratejas commited on
Commit
f5ffba6
·
2 Parent(s): 9dceb8af59690a

Merge pull request #8 from nicolabeghin/proxy-custom-openai-api-url

Browse files
Files changed (2) hide show
  1. docs/proxy.md +2 -0
  2. 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),