Fix API issues
This commit is contained in:
@@ -52,8 +52,9 @@ class ResilientModel:
|
||||
try:
|
||||
return self.model.generate_content(*args, **kwargs)
|
||||
except Exception as e:
|
||||
is_quota = "429" in str(e) or "quota" in str(e).lower()
|
||||
if is_quota and retries < max_retries:
|
||||
err_str = str(e).lower()
|
||||
is_retryable = "429" in err_str or "quota" in err_str or "500" in err_str or "503" in err_str or "504" in err_str or "deadline" in err_str or "internal error" in err_str
|
||||
if is_retryable and retries < max_retries:
|
||||
delay = base_delay * (2 ** retries)
|
||||
utils.log("SYSTEM", f"⚠️ Quota error on {self.role} ({self.name}). Retrying in {delay}s...")
|
||||
time.sleep(delay)
|
||||
@@ -75,7 +76,7 @@ def get_optimal_model(base_type="pro"):
|
||||
if not candidates: return f"models/gemini-1.5-{base_type}"
|
||||
def score(n):
|
||||
# Prioritize stable models (higher quotas) over experimental/beta ones
|
||||
if "exp" in n or "beta" in n: return 0
|
||||
if "exp" in n or "beta" in n or "preview" in n: return 0
|
||||
if "latest" in n: return 50
|
||||
return 100
|
||||
return sorted(candidates, key=score, reverse=True)[0]
|
||||
@@ -138,7 +139,7 @@ def select_best_models(force_refresh=False):
|
||||
- ARTIST: Needs visual prompt understanding.
|
||||
|
||||
CONSTRAINTS:
|
||||
- Avoid 'experimental' unless no stable version exists.
|
||||
- Avoid 'experimental' or 'preview' unless no stable version exists.
|
||||
- Prioritize 'latest' or stable versions.
|
||||
|
||||
OUTPUT_FORMAT (JSON):
|
||||
|
||||
Reference in New Issue
Block a user