Fetch Gemini limits programatically

This commit is contained in:
Jun Siang Cheah committed 2024-08-17 14:35:59 +01:00
1 parent f9d4785076
commit 185200f05b
4 files changed
+34 -10

No files matched your search

+1
View File
@@ -1,2 +1,3 @@
venv
.venv
.env
+4 -4
View File
@@ -44,19 +44,19 @@ This lists various services that provide free access or credits towards API-base
<td rowspan="6"><a href="https://aistudio.google.com" target="_blank">Google AI Studio</a></td>
<td rowspan="4">Free tier Gemini API access not available within UK/CH/EEA/EU/<br>Data is used for training.</td>
<td>Gemini 1.5 Flash</td>
<td>15 requests/min<br>1500 requests/day<br>1 million tokens/min</td>
<td>1000000 tokens/minute<br>1500 requests/day<br>15 requests/minute</td>
</tr>
<tr>
<td>Gemini 1.5 Pro</td>
<td>2 request/min<br>50 requests/day<br>32000 tokens/min</td>
<td>32000 tokens/minute<br>50 requests/day<br>2 requests/minute</td>
</tr>
<tr>
<td>Gemini 1.5 Pro (Experimental 0801)</td>
<td>2 request/min<br>50 requests/day<br>1 million tokens/min</td>
<td>1000000 tokens/minute<br>50 requests/day<br>2 requests/minute</td>
</tr>
<tr>
<td>Gemini 1.0 Pro</td>
<td>15 requests/min<br>1500 requests/day<br>32000 tokens/min</td>
<td>32000 tokens/minute<br>1500 requests/day<br>15 requests/minute</td>
</tr>
<tr>
<td rowspan="2">Embeddings are available in UK/CH/EEA/EU</td>
+28 -6
View File
@@ -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<br>100 contents/batch|\n"
# )
table += """<tr>
gemini_models = fetch_gemini_limits()
table += f"""<tr>
<td rowspan="6"><a href="https://aistudio.google.com" target="_blank">Google AI Studio</a></td>
<td rowspan="4">Free tier Gemini API access not available within UK/CH/EEA/EU/<br>Data is used for training.</td>
<td>Gemini 1.5 Flash</td>
<td>15 requests/min<br>1500 requests/day<br>1 million tokens/min</td>
<td>{get_human_limits({"limits": gemini_models["gemini-1.5-flash"]})}</td>
</tr>
<tr>
<td>Gemini 1.5 Pro</td>
<td>2 request/min<br>50 requests/day<br>32000 tokens/min</td>
<td>{get_human_limits({"limits": gemini_models["gemini-1.5-pro"]})}</td>
</tr>
<tr>
<td>Gemini 1.5 Pro (Experimental 0801)</td>
<td>2 request/min<br>50 requests/day<br>1 million tokens/min</td>
<td>{get_human_limits({"limits": gemini_models["gemini-1.5-pro-exp"]})}</td>
</tr>
<tr>
<td>Gemini 1.0 Pro</td>
<td>15 requests/min<br>1500 requests/day<br>32000 tokens/min</td>
<td>{get_human_limits({"limits": gemini_models["gemini-1.0-pro"]})}</td>
</tr>
<tr>
<td rowspan="2">Embeddings are available in UK/CH/EEA/EU</td>
+1
View File
@@ -1,2 +1,3 @@
requests
python-dotenv
google-cloud-quotas