diff --git a/README.md b/README.md index 4c6f61f..985ab9a 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ uv venv && uv pip install -e . - `--max-pages` and `--max-tokens` to limit input size and save OCR cost - Mistral OCR and DeepSeek OCR as optional PDF engines (`pip install "openaireview[mistral]"`) - `openaireview extract` subcommand for two-stage OCR + review workflow -- Multi-provider routing: OpenRouter, OpenAI, Anthropic, Gemini, Mistral (`--provider`) +- Multi-provider routing: OpenRouter, Requesty, OpenAI, Anthropic, Gemini, Mistral (`--provider`) - Table and figure extraction from arXiv HTML (tables as markdown) - pymupdf4llm + GNN layout as default PDF fallback (replaces raw PyMuPDF) - Mobile-responsive visualization UI @@ -65,6 +65,8 @@ First, set an API key for any supported provider: ```bash export OPENROUTER_API_KEY=your_key_here # OpenRouter (supports all models) # or +export REQUESTY_API_KEY=your_key_here # Requesty (OpenAI-compatible gateway) +# or export OPENAI_API_KEY=your_key_here # OpenAI native # or export ANTHROPIC_API_KEY=your_key_here # Anthropic native @@ -100,7 +102,7 @@ Review an academic paper for technical and logical issues. Accepts a local file |---|---|---| | `--method` | `progressive` | Review method: `zero_shot`, `local`, `progressive`, `progressive_full` | | `--model` | `anthropic/claude-opus-4-6` | Model to use | -| `--provider` | (auto) | LLM provider: `openrouter`, `openai`, `anthropic`, `gemini`, `mistral` | +| `--provider` | (auto) | LLM provider: `openrouter`, `requesty`, `openai`, `anthropic`, `gemini`, `mistral` | | `--ocr` | (auto) | PDF OCR engine: `mistral`, `deepseek`, `marker`, `pymupdf` | | `--max-pages` | (all) | Only process first N pages of a PDF (saves OCR cost) | | `--max-tokens` | (all) | Truncate input text to first N tokens before review | @@ -138,6 +140,7 @@ Start a local visualization server to browse review results. | Variable | Default | Description | |---|---|---| | `OPENROUTER_API_KEY` | | OpenRouter API key (supports all models) | +| `REQUESTY_API_KEY` | | Requesty API key (OpenAI-compatible gateway) | | `OPENAI_API_KEY` | | OpenAI native API key | | `ANTHROPIC_API_KEY` | | Anthropic native API key | | `GEMINI_API_KEY` | | Google Gemini native API key | @@ -145,7 +148,7 @@ Start a local visualization server to browse review results. | `MODEL` | `anthropic/claude-opus-4-6` | Default model | | `REVIEW_PROVIDER` | (auto) | Force a specific LLM provider | -Set one API key. The provider is auto-detected from whichever key is set (priority: OpenRouter > OpenAI > Anthropic > Gemini > Mistral). See `.env.example` for a template. +Set one API key. The provider is auto-detected from whichever key is set (priority: OpenRouter > Requesty > OpenAI > Anthropic > Gemini > Mistral). See `.env.example` for a template. ## Supported Models & Pricing diff --git a/src/reviewer/cli.py b/src/reviewer/cli.py index f4b49ad..4095bae 100644 --- a/src/reviewer/cli.py +++ b/src/reviewer/cli.py @@ -535,7 +535,7 @@ def main() -> None: ) review_parser.add_argument( "--provider", - choices=["openrouter", "openai", "anthropic", "gemini", "mistral"], + choices=["openrouter", "requesty", "openai", "anthropic", "gemini", "mistral"], default=None, help="LLM provider (default: auto-detect from API keys, or REVIEW_PROVIDER env var)", ) diff --git a/src/reviewer/client.py b/src/reviewer/client.py index fdf7a29..102b15a 100644 --- a/src/reviewer/client.py +++ b/src/reviewer/client.py @@ -1,4 +1,4 @@ -"""API client with support for OpenRouter, OpenAI, Anthropic, Gemini, and Mistral.""" +"""API client with support for OpenRouter, Requesty, OpenAI, Anthropic, Gemini, and Mistral.""" import os import sys @@ -15,6 +15,7 @@ # Provider configs: (env_var, base_url or None for default, model_prefix_to_strip) PROVIDERS = { "openrouter": ("OPENROUTER_API_KEY", "https://openrouter.ai/api/v1", None), + "requesty": ("REQUESTY_API_KEY", "https://router.requesty.ai/v1", None), "openai": ("OPENAI_API_KEY", None, None), "anthropic": ("ANTHROPIC_API_KEY", "https://api.anthropic.com/v1/", "anthropic/"), "gemini": ("GEMINI_API_KEY", "https://generativelanguage.googleapis.com/v1beta/openai/", "google/"), @@ -22,7 +23,7 @@ } # Auto-detection priority order -PROVIDER_PRIORITY = ["openrouter", "openai", "anthropic", "gemini", "mistral"] +PROVIDER_PRIORITY = ["openrouter", "requesty", "openai", "anthropic", "gemini", "mistral"] # Model prefix → native provider mapping (for smart auto-detection) MODEL_VENDOR_TO_PROVIDER = {