From c9ff0fa312d3f123bdaead701d145308d8f7a77a Mon Sep 17 00:00:00 2001 From: Jun Siang Cheah Date: Mon, 16 Jun 2025 23:08:16 +0100 Subject: [PATCH] update --- README.md | 15 +++--- src/pull_available_models.py | 97 ++++++++++++++++++++---------------- 2 files changed, 61 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index d637ad4..027ce74 100644 --- a/README.md +++ b/README.md @@ -88,13 +88,11 @@ Models share a common quota. - [Mistral Nemo](https://openrouter.ai/mistralai/mistral-nemo:free) - [Mistral Small 24B Instruct 2501](https://openrouter.ai/mistralai/mistral-small-24b-instruct-2501:free) - [Mistral Small 3.1 24B Instruct](https://openrouter.ai/mistralai/mistral-small-3.1-24b-instruct:free) -- [Moonlight-16B-A3B-Instruct](https://openrouter.ai/moonshotai/moonlight-16b-a3b-instruct:free) - [OlympicCoder 32B](https://openrouter.ai/open-r1/olympiccoder-32b:free) - [QwQ 32B ArliAI RpR v1](https://openrouter.ai/arliai/qwq-32b-arliai-rpr-v1:free) - [Qwen 2.5 72B Instruct](https://openrouter.ai/qwen/qwen-2.5-72b-instruct:free) - [Qwen 2.5 7B Instruct](https://openrouter.ai/qwen/qwen-2.5-7b-instruct:free) - [Qwen 2.5 VL 32B Instruct](https://openrouter.ai/qwen/qwen2.5-vl-32b-instruct:free) -- [Qwen 2.5 VL 3B Instruct](https://openrouter.ai/qwen/qwen2.5-vl-3b-instruct:free) - [Qwen 2.5 VL 7B Instruct](https://openrouter.ai/qwen/qwen-2.5-vl-7b-instruct:free) - [Qwen QwQ 32B](https://openrouter.ai/qwen/qwq-32b:free) - [Qwen2.5 Coder 32B Instruct](https://openrouter.ai/qwen/qwen-2.5-coder-32b-instruct:free) @@ -194,7 +192,7 @@ Free tier restricted to 8K context. ### [Groq](https://console.groq.com) - + @@ -203,7 +201,7 @@ Free tier restricted to 8K context. - + @@ -333,6 +331,7 @@ Data is sent to individual hosts. - deepseek-ai/deepseek-r1-0528 - deepseek-ai/deepseek-r1-0528-qwen3-8b - microsoft/mai-ds-r1-fp8 +- moonshotai/kimi-dev-72b - qwen/qwen3-14b - qwen/qwen3-235b-a22b - qwen/qwen3-30b-a3b @@ -400,13 +399,11 @@ Data is sent to individual hosts. Very stringent payment verification for Google Cloud.
Model NameModel Limits
Allam 2 7B7,000 requests/day
6,000 tokens/minute
Allam 2 7B
DeepSeek R1 Distill Llama 70B1,000 requests/day
6,000 tokens/minute
Distil Whisper Large v37,200 audio-seconds/minute
2,000 requests/day
Gemma 2 9B Instruct14,400 requests/day
15,000 tokens/minute
Llama 3 70B14,400 requests/day
6,000 tokens/minute
Llama 3 8B14,400 requests/day
6,000 tokens/minute
Llama 3.1 8B14,400 requests/day
6,000 tokens/minute
Llama 3.3 70B1,000 requests/day
12,000 tokens/minute
Llama 3.3 70B
Llama 4 Maverick 17B 128E Instruct1,000 requests/day
6,000 tokens/minute
Llama 4 Scout Instruct1,000 requests/day
30,000 tokens/minute
Llama Guard 3 8B14,400 requests/day
15,000 tokens/minute
- - - - + +
Model NameModel Limits
Gemini 2.5 Pro (Experimental)10 requests/minute
Shared Quota
Gemini 2.0 Flash (Experimental)
Gemini 2.0 Flash Thinking (Experimental)
Gemini 2.0 Pro (Experimental)
Gemini 2.5 Pro (Experimental)10 requests/minute
Shared Quota
Llama 3.2 90B Vision Instruct30 requests/minute
Free during preview
Llama 3.1 70B Instruct60 requests/minute
Free during preview
Llama 3.1 8B Instruct60 requests/minute
Free during preview
DeepSeek R1-052860 requests/minute
Free during preview
@@ -548,6 +545,7 @@ Very stringent payment verification for Google Cloud. **Credits:** $5 for 3 months **Models:** +- - E5-Mistral-7B-Instruct - Llama 3.1 405B - Llama 3.1 8B @@ -560,7 +558,6 @@ Very stringent payment verification for Google Cloud. - Qwen/QwQ-32B - Qwen/Qwen2-Audio-7B-Instruct - Qwen/Qwen3-32B -- deepseek-ai/DeepSeek-R1 - deepseek-ai/DeepSeek-R1-0528 - deepseek-ai/DeepSeek-R1-Distill-Llama-70B - deepseek-ai/DeepSeek-V3-0324 diff --git a/src/pull_available_models.py b/src/pull_available_models.py index 3b7a437..0a26187 100644 --- a/src/pull_available_models.py +++ b/src/pull_available_models.py @@ -51,19 +51,28 @@ def get_model_name(id): def get_groq_limits_for_stt_model(model_id, logger): logger.info(f"Getting limits for STT model {model_id}...") - r = requests.post( - "https://api.groq.com/openai/v1/audio/transcriptions", - headers={ - "Authorization": f'Bearer {os.environ["GROQ_API_KEY"]}', - }, - data={ - "model": model_id, - }, - files={ - "file": open(os.path.join(script_dir, "1-second-of-silence.mp3"), "rb"), - }, - ) - r.raise_for_status() + try: + r = requests.post( + "https://api.groq.com/openai/v1/audio/transcriptions", + headers={ + "Authorization": f'Bearer {os.environ["GROQ_API_KEY"]}', + }, + data={ + "model": model_id, + }, + files={ + "file": open(os.path.join(script_dir, "1-second-of-silence.mp3"), "rb"), + }, + ) + except Exception as e: + logger.error(f"Failed to get limits for model {model_id}: {e}") + return {} + try: + r.raise_for_status() + except Exception as e: + logger.error(f"Failed to get limits for model {model_id}: {e}") + logger.error(r.text) + return {} audio_seconds_per_minute = int(r.headers["x-ratelimit-limit-audio-seconds"]) rpd = int(r.headers["x-ratelimit-limit-requests"]) return { @@ -78,20 +87,25 @@ def get_groq_limits_for_model(model_id, script_dir, logger): if "tts" in model_id: return None logger.info(f"Getting limits for chat model {model_id}...") - r = requests.post( - "https://api.groq.com/openai/v1/chat/completions", - headers={ - "Authorization": f'Bearer {os.environ["GROQ_API_KEY"]}', - "Content-Type": "application/json", - }, - json={ - "model": model_id, - "messages": [{"role": "user", "content": "Hi!"}], - "max_tokens": 1, - "stream": True, - }, - stream=True, - ) + + try: + r = requests.post( + "https://api.groq.com/openai/v1/chat/completions", + headers={ + "Authorization": f'Bearer {os.environ["GROQ_API_KEY"]}', + "Content-Type": "application/json", + }, + json={ + "model": model_id, + "messages": [{"role": "user", "content": "Hi!"}], + "max_tokens": 1, + "stream": True, + }, + stream=True, + ) + except Exception as e: + logger.error(f"Failed to get limits for model {model_id}: {e}") + return {} try: r.raise_for_status() rpd = int(r.headers["x-ratelimit-limit-requests"]) @@ -925,22 +939,15 @@ def main(): "id": "gemini-2.5-pro-exp-03-25", "name": "Gemini 2.5 Pro (Experimental)", "limits": {"requests/minute": 10}, - }, + } + ] + vertex_deepseek_models = [ { - "id": "gemini-2.0-flash-exp", - "name": "Gemini 2.0 Flash (Experimental)", - "limits": {"requests/minute": 10}, - }, - { - "id": "gemini-2.0-flash-thinking-exp-01-21", - "name": "Gemini 2.0 Flash Thinking (Experimental)", - "limits": {"requests/minute": 10}, - }, - { - "id": "gemini-exp-1206", - "name": "Gemini 2.0 Pro (Experimental)", - "limits": {"requests/minute": 10}, - }, + "id": "deepseek-r1-0528-maas", + "name": "DeepSeek R1-0528", + "urlId": "deepseek-r1-0528-maas", + "limits": {"requests/minute": 60}, + } ] model_list_markdown += "### [Google Cloud Vertex AI](https://console.cloud.google.com/vertex-ai/model-garden)\n\n" model_list_markdown += "Very stringent payment verification for Google Cloud.\n\n" @@ -963,6 +970,12 @@ def main(): limits_str = get_human_limits(model) model_list_markdown += f'{model['name']}{limits_str}
Free during preview\n' + # Write DeepSeek models to table + if vertex_deepseek_models: + for model in vertex_deepseek_models: + limits_str = get_human_limits(model) + model_list_markdown += f'{model['name']}{limits_str}
Free during preview\n' + model_list_markdown += "\n\n" # --- Trial Providers Section Generation ---