Add CLI arguments for model and API configuration

This commit is contained in:
Nenad Ilic 2025-04-26 15:00:25 +02:00
parent 57dac558f4
commit bfa1482f82
2 changed files with 33 additions and 3 deletions

View File

@ -35,13 +35,28 @@ After setup and installing dependencies, you can run the proxy in either of thes
### 1. Recommended: Run via the CLI/main entrypoint ### 1. Recommended: Run via the CLI/main entrypoint
```bash ```bash
# Run as module: # Run as module with environment variables:
python -m claudex.main --host 0.0.0.0 --port 8082 --reload python -m claudex.main --host 0.0.0.0 --port 8082 --reload
# Or (if installed as a script): # Or with command line arguments:
claudex --host 0.0.0.0 --port 8082 --reload python -m claudex.main --target-api-base https://api.openrouter.ai/v1 --big-model openai/gpt-4.1 --small-model openai/gpt-4.1-mini --log-level INFO
# Or if installed as a script:
claudex --host 0.0.0.0 --port 8082 --target-api-base https://api.openrouter.ai/v1 --big-model openai/gpt-4.1 --small-model openai/gpt-4.1-mini
``` ```
#### CLI Options
- `--host` - Host to bind (default: 0.0.0.0)
- `--port` - Port to bind (default: 8082)
- `--reload` - Enable live-reload for development
- `--target-api-base` - Base URL for target OpenAI-compatible API
- `--big-model` - Target model for Claude Sonnet/larger models
- `--small-model` - Target model for Claude Haiku/smaller models
- `--log-level` - Logging level (DEBUG, INFO, WARNING, ERROR)
Note: The API key must still be provided via the TARGET_API_KEY environment variable for security reasons.
### 2. Alternative: Run directly with Uvicorn ### 2. Alternative: Run directly with Uvicorn
```bash ```bash

View File

@ -1,4 +1,5 @@
import uvicorn import uvicorn
import os
from .proxy import app from .proxy import app
def main(): def main():
@ -7,8 +8,22 @@ def main():
parser.add_argument('--host', default='0.0.0.0', help='Host to bind (default: 0.0.0.0)') parser.add_argument('--host', default='0.0.0.0', help='Host to bind (default: 0.0.0.0)')
parser.add_argument('--port', type=int, default=8082, help='Port to bind (default: 8082)') parser.add_argument('--port', type=int, default=8082, help='Port to bind (default: 8082)')
parser.add_argument('--reload', action='store_true', help='Enable live-reload (for development)') parser.add_argument('--reload', action='store_true', help='Enable live-reload (for development)')
parser.add_argument('--target-api-base', help='Base URL for target OpenAI-compatible API (default: from TARGET_API_BASE env)')
parser.add_argument('--big-model', help='Target model for Claude Sonnet/larger models (default: from BIG_MODEL_TARGET env)')
parser.add_argument('--small-model', help='Target model for Claude Haiku/smaller models (default: from SMALL_MODEL_TARGET env)')
parser.add_argument('--log-level', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'], default=None, help='Logging level (default: from LOG_LEVEL env)')
args = parser.parse_args() args = parser.parse_args()
# Set environment variables from CLI arguments if provided
if args.target_api_base:
os.environ['TARGET_API_BASE'] = args.target_api_base
if args.big_model:
os.environ['BIG_MODEL_TARGET'] = args.big_model
if args.small_model:
os.environ['SMALL_MODEL_TARGET'] = args.small_model
if args.log_level:
os.environ['LOG_LEVEL'] = args.log_level
uvicorn.run("claudex.proxy:app", host=args.host, port=args.port, reload=args.reload) uvicorn.run("claudex.proxy:app", host=args.host, port=args.port, reload=args.reload)
if __name__ == "__main__": if __name__ == "__main__":