diff --git a/.gitignore b/.gitignore
index 2d19ec7..91666db 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
venv
+.venv
.env
\ No newline at end of file
diff --git a/README.md b/README.md
index 5da38d8..10c1a62 100644
--- a/README.md
+++ b/README.md
@@ -44,19 +44,19 @@ This lists various services that provide free access or credits towards API-base
Google AI Studio |
Free tier Gemini API access not available within UK/CH/EEA/EU/ Data is used for training. |
Gemini 1.5 Flash |
- 15 requests/min 1500 requests/day 1 million tokens/min |
+ 1000000 tokens/minute 1500 requests/day 15 requests/minute |
| Gemini 1.5 Pro |
- 2 request/min 50 requests/day 32000 tokens/min |
+ 32000 tokens/minute 50 requests/day 2 requests/minute |
| Gemini 1.5 Pro (Experimental 0801) |
- 2 request/min 50 requests/day 1 million tokens/min |
+ 1000000 tokens/minute 50 requests/day 2 requests/minute |
| Gemini 1.0 Pro |
- 15 requests/min 1500 requests/day 32000 tokens/min |
+ 32000 tokens/minute 1500 requests/day 15 requests/minute |
| Embeddings are available in UK/CH/EEA/EU |
diff --git a/src/pull_available_models.py b/src/pull_available_models.py
index db81e3f..b6d0c3e 100644
--- a/src/pull_available_models.py
+++ b/src/pull_available_models.py
@@ -1,8 +1,11 @@
#!/usr/bin/env python3
+from collections import defaultdict
+from pprint import pprint
import requests
import os
from dotenv import load_dotenv
+from google.cloud import cloudquotas_v1
load_dotenv()
@@ -158,7 +161,7 @@ def fetch_groq_models():
)
r.raise_for_status()
models = r.json()["data"]
- print(f"Fetched models: {models}")
+ pprint(models)
ret_models = []
for model in models:
limits = get_groq_limits_for_model(model["id"])
@@ -349,8 +352,26 @@ def fetch_hyperbolic_models():
},
}
)
+ pprint(ret_models)
return ret_models
+def fetch_gemini_limits():
+ print("Fetching Gemini limits...")
+ client = cloudquotas_v1.CloudQuotasClient()
+ request = cloudquotas_v1.ListQuotaInfosRequest(
+ parent=f"projects/{os.environ["GCP_PROJECT_ID"]}/locations/global/services/generativelanguage.googleapis.com")
+ pager = client.list_quota_infos(request=request)
+ models = defaultdict(dict)
+ for quota in pager:
+ if quota.metric == 'generativelanguage.googleapis.com/generate_content_free_tier_input_token_count':
+ for dimension in quota.dimensions_infos:
+ models[dimension.dimensions.get("model")][f"tokens/{quota.refresh_interval}"] = dimension.details.value
+ elif quota.metric == 'generativelanguage.googleapis.com/generate_content_free_tier_requests':
+ for dimension in quota.dimensions_infos:
+ models[dimension.dimensions.get("model")][f"requests/{quota.refresh_interval}"] = dimension.details.value
+ pprint(models)
+ return models
+
def get_human_limits(model):
if "limits" not in model:
@@ -390,23 +411,24 @@ def main():
# markdown_table += (
# "|^|^|embedding-001|1500 requests/min
100 contents/batch|\n"
# )
- table += """
+ gemini_models = fetch_gemini_limits()
+ table += f"""
| Google AI Studio |
Free tier Gemini API access not available within UK/CH/EEA/EU/ Data is used for training. |
Gemini 1.5 Flash |
- 15 requests/min 1500 requests/day 1 million tokens/min |
+ {get_human_limits({"limits": gemini_models["gemini-1.5-flash"]})} |
| Gemini 1.5 Pro |
- 2 request/min 50 requests/day 32000 tokens/min |
+ {get_human_limits({"limits": gemini_models["gemini-1.5-pro"]})} |
| Gemini 1.5 Pro (Experimental 0801) |
- 2 request/min 50 requests/day 1 million tokens/min |
+ {get_human_limits({"limits": gemini_models["gemini-1.5-pro-exp"]})} |
| Gemini 1.0 Pro |
- 15 requests/min 1500 requests/day 32000 tokens/min |
+ {get_human_limits({"limits": gemini_models["gemini-1.0-pro"]})} |
| Embeddings are available in UK/CH/EEA/EU |
diff --git a/src/requirements.txt b/src/requirements.txt
index df7458c..1218650 100644
--- a/src/requirements.txt
+++ b/src/requirements.txt
@@ -1,2 +1,3 @@
requests
python-dotenv
+google-cloud-quotas