fix: clean up OpenRouter-generated provider configs (#37)
- Merge unique models from duplicate providers into their hand-written counterparts and remove the duplicates: - alibaba (tongyi-deepresearch) → qwen - amazon (nova-2-lite, nova-micro, nova-premier) → bedrock - bytedance (ui-tars) → volcengine - nvidia (nemotron-3-nano, nemotron-3-super, etc.) → nvidia-nim - rekaai (reka-flash-3) → reka - Set correct official API base_url for providers with public APIs: arcee-ai, inception, morph, reka, upstage - Set key_required=false for 20 providers only accessible through hosting platforms (no public API) - Update sync-pricing.py with SKIP_DUPLICATES, PROVIDER_API mapping, and default key_required=false for future auto-generated providers
This commit is contained in:
35 files changed
+162
-260
No files matched your search
@@ -5,7 +5,7 @@ id = "aion-labs"
|
|||||||
display_name = "Aion Labs"
|
display_name = "Aion Labs"
|
||||||
api_key_env = "AION_LABS_API_KEY"
|
api_key_env = "AION_LABS_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "aion-1.0"
|
id = "aion-1.0"
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
# alibaba — auto-generated from OpenRouter API
|
|
||||||
|
|
||||||
[provider]
|
|
||||||
id = "alibaba"
|
|
||||||
display_name = "Alibaba"
|
|
||||||
api_key_env = "ALIBABA_API_KEY"
|
|
||||||
base_url = ""
|
|
||||||
key_required = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "tongyi-deepresearch-30b-a3b"
|
|
||||||
display_name = "Tongyi DeepResearch 30B A3B"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 131072
|
|
||||||
max_output_tokens = 131072
|
|
||||||
input_cost_per_m = 0.09
|
|
||||||
output_cost_per_m = 0.45
|
|
||||||
supports_streaming = true
|
|
||||||
@@ -5,7 +5,7 @@ id = "allenai"
|
|||||||
display_name = "Allenai"
|
display_name = "Allenai"
|
||||||
api_key_env = "ALLENAI_API_KEY"
|
api_key_env = "ALLENAI_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "olmo-2-0325-32b-instruct"
|
id = "olmo-2-0325-32b-instruct"
|
||||||
|
|||||||
@@ -1,58 +0,0 @@
|
|||||||
# amazon — auto-generated from OpenRouter API
|
|
||||||
|
|
||||||
[provider]
|
|
||||||
id = "amazon"
|
|
||||||
display_name = "Amazon"
|
|
||||||
api_key_env = "AMAZON_API_KEY"
|
|
||||||
base_url = ""
|
|
||||||
key_required = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nova-2-lite-v1"
|
|
||||||
display_name = "Amazon: Nova 2 Lite"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 1000000
|
|
||||||
max_output_tokens = 65535
|
|
||||||
input_cost_per_m = 0.3
|
|
||||||
output_cost_per_m = 2.5
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nova-lite-v1"
|
|
||||||
display_name = "Amazon: Nova Lite 1.0"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 300000
|
|
||||||
max_output_tokens = 5120
|
|
||||||
input_cost_per_m = 0.06
|
|
||||||
output_cost_per_m = 0.24
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nova-micro-v1"
|
|
||||||
display_name = "Amazon: Nova Micro 1.0"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 128000
|
|
||||||
max_output_tokens = 5120
|
|
||||||
input_cost_per_m = 0.035
|
|
||||||
output_cost_per_m = 0.14
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nova-premier-v1"
|
|
||||||
display_name = "Amazon: Nova Premier 1.0"
|
|
||||||
tier = "smart"
|
|
||||||
context_window = 1000000
|
|
||||||
max_output_tokens = 32000
|
|
||||||
input_cost_per_m = 2.5
|
|
||||||
output_cost_per_m = 12.5
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nova-pro-v1"
|
|
||||||
display_name = "Amazon: Nova Pro 1.0"
|
|
||||||
tier = "smart"
|
|
||||||
context_window = 300000
|
|
||||||
max_output_tokens = 5120
|
|
||||||
input_cost_per_m = 0.8
|
|
||||||
output_cost_per_m = 3.2
|
|
||||||
supports_streaming = true
|
|
||||||
@@ -3,8 +3,8 @@
|
|||||||
[provider]
|
[provider]
|
||||||
id = "arcee-ai"
|
id = "arcee-ai"
|
||||||
display_name = "Arcee Ai"
|
display_name = "Arcee Ai"
|
||||||
api_key_env = "ARCEE_AI_API_KEY"
|
api_key_env = "ARCEE_API_KEY"
|
||||||
base_url = ""
|
base_url = "https://api.arcee.ai/v1"
|
||||||
key_required = true
|
key_required = true
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
|
|||||||
@@ -111,3 +111,33 @@ supports_tools = true
|
|||||||
supports_vision = false
|
supports_vision = false
|
||||||
supports_streaming = true
|
supports_streaming = true
|
||||||
aliases = []
|
aliases = []
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "bedrock/amazon.nova-2-lite-v1:0"
|
||||||
|
display_name = "Amazon: Nova 2 Lite"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 1000000
|
||||||
|
max_output_tokens = 65535
|
||||||
|
input_cost_per_m = 0.3
|
||||||
|
output_cost_per_m = 2.5
|
||||||
|
supports_streaming = true
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "bedrock/amazon.nova-micro-v1:0"
|
||||||
|
display_name = "Amazon: Nova Micro 1.0"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 128000
|
||||||
|
max_output_tokens = 5120
|
||||||
|
input_cost_per_m = 0.035
|
||||||
|
output_cost_per_m = 0.14
|
||||||
|
supports_streaming = true
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "bedrock/amazon.nova-premier-v1:0"
|
||||||
|
display_name = "Amazon: Nova Premier 1.0"
|
||||||
|
tier = "frontier"
|
||||||
|
context_window = 1000000
|
||||||
|
max_output_tokens = 65535
|
||||||
|
input_cost_per_m = 2.5
|
||||||
|
output_cost_per_m = 12.5
|
||||||
|
supports_streaming = true
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# bytedance — auto-generated from OpenRouter API
|
|
||||||
|
|
||||||
[provider]
|
|
||||||
id = "bytedance"
|
|
||||||
display_name = "Bytedance"
|
|
||||||
api_key_env = "BYTEDANCE_API_KEY"
|
|
||||||
base_url = ""
|
|
||||||
key_required = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "ui-tars-1.5-7b"
|
|
||||||
display_name = "ByteDance: UI-TARS 7B "
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 128000
|
|
||||||
max_output_tokens = 2048
|
|
||||||
input_cost_per_m = 0.1
|
|
||||||
output_cost_per_m = 0.2
|
|
||||||
supports_streaming = true
|
|
||||||
@@ -5,7 +5,7 @@ id = "deepcogito"
|
|||||||
display_name = "Deepcogito"
|
display_name = "Deepcogito"
|
||||||
api_key_env = "DEEPCOGITO_API_KEY"
|
api_key_env = "DEEPCOGITO_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "cogito-v2.1-671b"
|
id = "cogito-v2.1-671b"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "eleutherai"
|
|||||||
display_name = "Eleutherai"
|
display_name = "Eleutherai"
|
||||||
api_key_env = "ELEUTHERAI_API_KEY"
|
api_key_env = "ELEUTHERAI_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "llemma_7b"
|
id = "llemma_7b"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "essentialai"
|
|||||||
display_name = "Essentialai"
|
display_name = "Essentialai"
|
||||||
api_key_env = "ESSENTIALAI_API_KEY"
|
api_key_env = "ESSENTIALAI_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "rnj-1-instruct"
|
id = "rnj-1-instruct"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "ibm-granite"
|
|||||||
display_name = "Ibm Granite"
|
display_name = "Ibm Granite"
|
||||||
api_key_env = "IBM_GRANITE_API_KEY"
|
api_key_env = "IBM_GRANITE_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "granite-4.0-h-micro"
|
id = "granite-4.0-h-micro"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
id = "inception"
|
id = "inception"
|
||||||
display_name = "Inception"
|
display_name = "Inception"
|
||||||
api_key_env = "INCEPTION_API_KEY"
|
api_key_env = "INCEPTION_API_KEY"
|
||||||
base_url = ""
|
base_url = "https://api.inceptionlabs.ai/v1"
|
||||||
key_required = true
|
key_required = true
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "inflection"
|
|||||||
display_name = "Inflection"
|
display_name = "Inflection"
|
||||||
api_key_env = "INFLECTION_API_KEY"
|
api_key_env = "INFLECTION_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "inflection-3-pi"
|
id = "inflection-3-pi"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "kwaipilot"
|
|||||||
display_name = "Kwaipilot"
|
display_name = "Kwaipilot"
|
||||||
api_key_env = "KWAIPILOT_API_KEY"
|
api_key_env = "KWAIPILOT_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "kat-coder-pro"
|
id = "kat-coder-pro"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "liquid"
|
|||||||
display_name = "Liquid"
|
display_name = "Liquid"
|
||||||
api_key_env = "LIQUID_API_KEY"
|
api_key_env = "LIQUID_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "lfm-2-24b-a2b"
|
id = "lfm-2-24b-a2b"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "meituan"
|
|||||||
display_name = "Meituan"
|
display_name = "Meituan"
|
||||||
api_key_env = "MEITUAN_API_KEY"
|
api_key_env = "MEITUAN_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "longcat-flash-chat"
|
id = "longcat-flash-chat"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "meta-llama"
|
|||||||
display_name = "Meta Llama"
|
display_name = "Meta Llama"
|
||||||
api_key_env = "META_LLAMA_API_KEY"
|
api_key_env = "META_LLAMA_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "llama-3-70b-instruct"
|
id = "llama-3-70b-instruct"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "microsoft"
|
|||||||
display_name = "Microsoft"
|
display_name = "Microsoft"
|
||||||
api_key_env = "MICROSOFT_API_KEY"
|
api_key_env = "MICROSOFT_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "phi-4"
|
id = "phi-4"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
id = "morph"
|
id = "morph"
|
||||||
display_name = "Morph"
|
display_name = "Morph"
|
||||||
api_key_env = "MORPH_API_KEY"
|
api_key_env = "MORPH_API_KEY"
|
||||||
base_url = ""
|
base_url = "https://api.morphlabs.io/v1"
|
||||||
key_required = true
|
key_required = true
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "nex-agi"
|
|||||||
display_name = "Nex Agi"
|
display_name = "Nex Agi"
|
||||||
api_key_env = "NEX_AGI_API_KEY"
|
api_key_env = "NEX_AGI_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "deepseek-v3.1-nex-n1"
|
id = "deepseek-v3.1-nex-n1"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "nousresearch"
|
|||||||
display_name = "Nousresearch"
|
display_name = "Nousresearch"
|
||||||
api_key_env = "NOUSRESEARCH_API_KEY"
|
api_key_env = "NOUSRESEARCH_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "hermes-2-pro-llama-3-8b"
|
id = "hermes-2-pro-llama-3-8b"
|
||||||
|
|||||||
@@ -307,3 +307,44 @@ supports_tools = true
|
|||||||
supports_vision = false
|
supports_vision = false
|
||||||
supports_streaming = true
|
supports_streaming = true
|
||||||
aliases = ["phi-4-mini"]
|
aliases = ["phi-4-mini"]
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "nvidia/nemotron-3-nano-30b-a3b"
|
||||||
|
display_name = "Nvidia: Nemotron 3 Nano 30B"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 131072
|
||||||
|
max_output_tokens = 32768
|
||||||
|
input_cost_per_m = 0.0
|
||||||
|
output_cost_per_m = 0.0
|
||||||
|
supports_streaming = true
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "nvidia/nemotron-3-super-120b-a12b"
|
||||||
|
display_name = "Nvidia: Nemotron 3 Super 120B"
|
||||||
|
tier = "smart"
|
||||||
|
context_window = 131072
|
||||||
|
max_output_tokens = 32768
|
||||||
|
input_cost_per_m = 0.0
|
||||||
|
output_cost_per_m = 0.0
|
||||||
|
supports_streaming = true
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "nvidia/nemotron-nano-12b-v2-vl"
|
||||||
|
display_name = "Nvidia: Nemotron Nano 12B V2 VL"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 131072
|
||||||
|
max_output_tokens = 32768
|
||||||
|
input_cost_per_m = 0.0
|
||||||
|
output_cost_per_m = 0.0
|
||||||
|
supports_vision = true
|
||||||
|
supports_streaming = true
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "nvidia/nemotron-nano-9b-v2"
|
||||||
|
display_name = "Nvidia: Nemotron Nano 9B V2"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 131072
|
||||||
|
max_output_tokens = 32768
|
||||||
|
input_cost_per_m = 0.0
|
||||||
|
output_cost_per_m = 0.0
|
||||||
|
supports_streaming = true
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
# nvidia — auto-generated from OpenRouter API
|
|
||||||
|
|
||||||
[provider]
|
|
||||||
id = "nvidia"
|
|
||||||
display_name = "Nvidia"
|
|
||||||
api_key_env = "NVIDIA_API_KEY"
|
|
||||||
base_url = ""
|
|
||||||
key_required = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "llama-3.1-nemotron-70b-instruct"
|
|
||||||
display_name = "NVIDIA: Llama 3.1 Nemotron 70B Instruct"
|
|
||||||
tier = "smart"
|
|
||||||
context_window = 131072
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 1.2
|
|
||||||
output_cost_per_m = 1.2
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "llama-3.1-nemotron-ultra-253b-v1"
|
|
||||||
display_name = "NVIDIA: Llama 3.1 Nemotron Ultra 253B v1"
|
|
||||||
tier = "smart"
|
|
||||||
context_window = 131072
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.6
|
|
||||||
output_cost_per_m = 1.8
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "llama-3.3-nemotron-super-49b-v1.5"
|
|
||||||
display_name = "NVIDIA: Llama 3.3 Nemotron Super 49B V1.5"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 131072
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.1
|
|
||||||
output_cost_per_m = 0.4
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-3-nano-30b-a3b"
|
|
||||||
display_name = "NVIDIA: Nemotron 3 Nano 30B A3B"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 262144
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.05
|
|
||||||
output_cost_per_m = 0.2
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-3-nano-30b-a3b:free"
|
|
||||||
display_name = "NVIDIA: Nemotron 3 Nano 30B A3B (free)"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 256000
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.0
|
|
||||||
output_cost_per_m = 0.0
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-3-super-120b-a12b"
|
|
||||||
display_name = "NVIDIA: Nemotron 3 Super"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 262144
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.1
|
|
||||||
output_cost_per_m = 0.5
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-3-super-120b-a12b:free"
|
|
||||||
display_name = "NVIDIA: Nemotron 3 Super (free)"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 262144
|
|
||||||
max_output_tokens = 262144
|
|
||||||
input_cost_per_m = 0.0
|
|
||||||
output_cost_per_m = 0.0
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-nano-12b-v2-vl"
|
|
||||||
display_name = "NVIDIA: Nemotron Nano 12B 2 VL"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 131072
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.2
|
|
||||||
output_cost_per_m = 0.6
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-nano-12b-v2-vl:free"
|
|
||||||
display_name = "NVIDIA: Nemotron Nano 12B 2 VL (free)"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 128000
|
|
||||||
max_output_tokens = 128000
|
|
||||||
input_cost_per_m = 0.0
|
|
||||||
output_cost_per_m = 0.0
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-nano-9b-v2"
|
|
||||||
display_name = "NVIDIA: Nemotron Nano 9B V2"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 131072
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.04
|
|
||||||
output_cost_per_m = 0.16
|
|
||||||
supports_streaming = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "nemotron-nano-9b-v2:free"
|
|
||||||
display_name = "NVIDIA: Nemotron Nano 9B V2 (free)"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 128000
|
|
||||||
max_output_tokens = 16384
|
|
||||||
input_cost_per_m = 0.0
|
|
||||||
output_cost_per_m = 0.0
|
|
||||||
supports_streaming = true
|
|
||||||
@@ -5,7 +5,7 @@ id = "prime-intellect"
|
|||||||
display_name = "Prime Intellect"
|
display_name = "Prime Intellect"
|
||||||
api_key_env = "PRIME_INTELLECT_API_KEY"
|
api_key_env = "PRIME_INTELLECT_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "intellect-3"
|
id = "intellect-3"
|
||||||
|
|||||||
@@ -157,3 +157,13 @@ supports_tools = false
|
|||||||
supports_vision = true
|
supports_vision = true
|
||||||
supports_streaming = true
|
supports_streaming = true
|
||||||
aliases = []
|
aliases = []
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "tongyi-deepresearch-30b-a3b"
|
||||||
|
display_name = "Tongyi DeepResearch 30B A3B"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 131072
|
||||||
|
max_output_tokens = 131072
|
||||||
|
input_cost_per_m = 0.09
|
||||||
|
output_cost_per_m = 0.45
|
||||||
|
supports_streaming = true
|
||||||
+11
-1
@@ -4,7 +4,7 @@
|
|||||||
id = "reka"
|
id = "reka"
|
||||||
display_name = "Reka"
|
display_name = "Reka"
|
||||||
api_key_env = "REKA_API_KEY"
|
api_key_env = "REKA_API_KEY"
|
||||||
base_url = ""
|
base_url = "https://api.reka.ai/v1"
|
||||||
key_required = true
|
key_required = true
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
@@ -16,3 +16,13 @@ max_output_tokens = 16384
|
|||||||
input_cost_per_m = 0.1
|
input_cost_per_m = 0.1
|
||||||
output_cost_per_m = 0.1
|
output_cost_per_m = 0.1
|
||||||
supports_streaming = true
|
supports_streaming = true
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "reka-flash-3"
|
||||||
|
display_name = "Reka: Flash 3"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 131072
|
||||||
|
max_output_tokens = 32768
|
||||||
|
input_cost_per_m = 0.15
|
||||||
|
output_cost_per_m = 0.6
|
||||||
|
supports_streaming = true
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# rekaai — auto-generated from OpenRouter API
|
|
||||||
|
|
||||||
[provider]
|
|
||||||
id = "rekaai"
|
|
||||||
display_name = "Rekaai"
|
|
||||||
api_key_env = "REKAAI_API_KEY"
|
|
||||||
base_url = ""
|
|
||||||
key_required = true
|
|
||||||
|
|
||||||
[[models]]
|
|
||||||
id = "reka-flash-3"
|
|
||||||
display_name = "Reka: Flash 3"
|
|
||||||
tier = "fast"
|
|
||||||
context_window = 65536
|
|
||||||
max_output_tokens = 65536
|
|
||||||
input_cost_per_m = 0.1
|
|
||||||
output_cost_per_m = 0.2
|
|
||||||
supports_streaming = true
|
|
||||||
@@ -5,7 +5,7 @@ id = "relace"
|
|||||||
display_name = "Relace"
|
display_name = "Relace"
|
||||||
api_key_env = "RELACE_API_KEY"
|
api_key_env = "RELACE_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "relace-apply-3"
|
id = "relace-apply-3"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "switchpoint"
|
|||||||
display_name = "Switchpoint"
|
display_name = "Switchpoint"
|
||||||
api_key_env = "SWITCHPOINT_API_KEY"
|
api_key_env = "SWITCHPOINT_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "router"
|
id = "router"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "tencent"
|
|||||||
display_name = "Tencent"
|
display_name = "Tencent"
|
||||||
api_key_env = "TENCENT_API_KEY"
|
api_key_env = "TENCENT_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "hunyuan-a13b-instruct"
|
id = "hunyuan-a13b-instruct"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ id = "tngtech"
|
|||||||
display_name = "Tngtech"
|
display_name = "Tngtech"
|
||||||
api_key_env = "TNGTECH_API_KEY"
|
api_key_env = "TNGTECH_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "deepseek-r1t2-chimera"
|
id = "deepseek-r1t2-chimera"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
id = "upstage"
|
id = "upstage"
|
||||||
display_name = "Upstage"
|
display_name = "Upstage"
|
||||||
api_key_env = "UPSTAGE_API_KEY"
|
api_key_env = "UPSTAGE_API_KEY"
|
||||||
base_url = ""
|
base_url = "https://api.upstage.ai/v1"
|
||||||
key_required = true
|
key_required = true
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
|
|||||||
@@ -98,3 +98,13 @@ supports_tools = true
|
|||||||
supports_vision = true
|
supports_vision = true
|
||||||
supports_streaming = true
|
supports_streaming = true
|
||||||
aliases = ["doubao-vision"]
|
aliases = ["doubao-vision"]
|
||||||
|
|
||||||
|
[[models]]
|
||||||
|
id = "ui-tars-1.5-7b"
|
||||||
|
display_name = "ByteDance: UI-TARS 7B"
|
||||||
|
tier = "fast"
|
||||||
|
context_window = 128000
|
||||||
|
max_output_tokens = 2048
|
||||||
|
input_cost_per_m = 0.1
|
||||||
|
output_cost_per_m = 0.2
|
||||||
|
supports_streaming = true
|
||||||
@@ -5,7 +5,7 @@ id = "xiaomi"
|
|||||||
display_name = "Xiaomi"
|
display_name = "Xiaomi"
|
||||||
api_key_env = "XIAOMI_API_KEY"
|
api_key_env = "XIAOMI_API_KEY"
|
||||||
base_url = ""
|
base_url = ""
|
||||||
key_required = true
|
key_required = false
|
||||||
|
|
||||||
[[models]]
|
[[models]]
|
||||||
id = "mimo-v2-flash"
|
id = "mimo-v2-flash"
|
||||||
|
|||||||
+35
-4
@@ -36,6 +36,27 @@ SKIP_PROVIDERS = {
|
|||||||
"anthracite-org", "alpindale", "alfredpros", "mancer",
|
"anthracite-org", "alpindale", "alfredpros", "mancer",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Skip creating NEW provider files for these — they overlap with hand-written
|
||||||
|
# providers but may contain unique models, so existing files are kept.
|
||||||
|
SKIP_DUPLICATES = {
|
||||||
|
"alibaba", # overlaps with qwen.toml but has unique models
|
||||||
|
"amazon", # overlaps with bedrock.toml but has unique models
|
||||||
|
"bytedance", # overlaps with volcengine.toml but has unique models
|
||||||
|
"nvidia", # overlaps with nvidia-nim.toml but has unique models
|
||||||
|
"rekaai", # overlaps with reka.toml but has unique models
|
||||||
|
}
|
||||||
|
|
||||||
|
# Providers with known public APIs — set their official base_url + api_key_env.
|
||||||
|
# Providers NOT in this map are OpenRouter-only and get key_required = false.
|
||||||
|
PROVIDER_API = {
|
||||||
|
"arcee-ai": ("https://api.arcee.ai/v1", "ARCEE_API_KEY"),
|
||||||
|
"inception": ("https://api.inceptionlabs.ai/v1", "INCEPTION_API_KEY"),
|
||||||
|
"morph": ("https://api.morphlabs.io/v1", "MORPH_API_KEY"),
|
||||||
|
"nvidia": ("https://integrate.api.nvidia.com/v1", "NVIDIA_API_KEY"),
|
||||||
|
"reka": ("https://api.reka.ai/v1", "REKA_API_KEY"),
|
||||||
|
"upstage": ("https://api.upstage.ai/v1", "UPSTAGE_API_KEY"),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def fetch_openrouter_models():
|
def fetch_openrouter_models():
|
||||||
"""Fetch all models from OpenRouter."""
|
"""Fetch all models from OpenRouter."""
|
||||||
@@ -119,8 +140,18 @@ def generate_provider_toml(provider_id, models, dry_run=False):
|
|||||||
if toml_path.exists():
|
if toml_path.exists():
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
# Derive api_key_env from provider name: FOO_BAR -> FOO_BAR_API_KEY
|
if our_name in SKIP_DUPLICATES:
|
||||||
env_key = our_name.upper().replace("-", "_") + "_API_KEY"
|
return 0
|
||||||
|
|
||||||
|
# Check if provider has a known public API
|
||||||
|
if our_name in PROVIDER_API:
|
||||||
|
base_url, env_key = PROVIDER_API[our_name]
|
||||||
|
key_required = "true"
|
||||||
|
else:
|
||||||
|
# No known public API — only accessible via OpenRouter/hosting providers
|
||||||
|
env_key = our_name.upper().replace("-", "_") + "_API_KEY"
|
||||||
|
base_url = ""
|
||||||
|
key_required = "false"
|
||||||
|
|
||||||
lines = [
|
lines = [
|
||||||
f'# {provider_id} — auto-generated from OpenRouter API',
|
f'# {provider_id} — auto-generated from OpenRouter API',
|
||||||
@@ -129,8 +160,8 @@ def generate_provider_toml(provider_id, models, dry_run=False):
|
|||||||
f'id = "{our_name}"',
|
f'id = "{our_name}"',
|
||||||
f'display_name = "{provider_id.replace("-", " ").title()}"',
|
f'display_name = "{provider_id.replace("-", " ").title()}"',
|
||||||
f'api_key_env = "{env_key}"',
|
f'api_key_env = "{env_key}"',
|
||||||
f'base_url = ""',
|
f'base_url = "{base_url}"',
|
||||||
f"key_required = true",
|
f"key_required = {key_required}",
|
||||||
f"",
|
f"",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user