fix: validate and size governed patch outputs
This commit is contained in:
@@ -56,6 +56,17 @@ PROVIDER_LOG = os.path.join(REPO_ROOT, ".specify/logs/level5/provider-usage.json
|
||||
REQUEST_TIMEOUT = max(1, int(os.environ.get("CASAN_MODEL_TIMEOUT_SEC", "60")))
|
||||
|
||||
|
||||
def generation_max_tokens(role):
|
||||
"""Return a bounded generation budget shared by every model provider."""
|
||||
if role in ("classify", "judge"):
|
||||
return 16
|
||||
try:
|
||||
configured = int(os.environ.get("CASAN_MODEL_GENERATE_MAX_TOKENS", "1400"))
|
||||
except ValueError:
|
||||
configured = 1400
|
||||
return min(max(configured, 64), 8192)
|
||||
|
||||
|
||||
def enforce_call_budget():
|
||||
"""Fail closed when a run exceeds CASAN_MODEL_MAX_CALLS. The count is tracked in
|
||||
CASAN_MODEL_CALL_COUNTER_FILE so it spans the many per-step model-call processes
|
||||
@@ -205,7 +216,7 @@ def call_openai(model_name, prompt, role):
|
||||
"model": model_name,
|
||||
"messages": [{"role": "user", "content": prompt}],
|
||||
"temperature": 0 if role in ("classify", "judge") else 0.2,
|
||||
"max_tokens": 16 if role in ("classify", "judge") else 512,
|
||||
"max_tokens": generation_max_tokens(role),
|
||||
}
|
||||
data = json.dumps(body).encode()
|
||||
req = urllib.request.Request(
|
||||
@@ -272,7 +283,7 @@ def call_openai_compatible(model_name, prompt, role):
|
||||
"model": model_name,
|
||||
"messages": [{"role": "user", "content": prompt}],
|
||||
"temperature": 0 if role in ("classify", "judge") else 0.2,
|
||||
"max_tokens": 16 if role in ("classify", "judge") else 512,
|
||||
"max_tokens": generation_max_tokens(role),
|
||||
}
|
||||
data = json.dumps(body).encode()
|
||||
req = urllib.request.Request(
|
||||
@@ -335,7 +346,7 @@ def call_anthropic(model_name, prompt, role):
|
||||
url = f"https://{host}/v1/messages"
|
||||
body = {
|
||||
"model": model_name,
|
||||
"max_tokens": 16 if role in ("classify", "judge") else 512,
|
||||
"max_tokens": generation_max_tokens(role),
|
||||
"messages": [{"role": "user", "content": prompt}],
|
||||
}
|
||||
data = json.dumps(body).encode()
|
||||
|
||||
Reference in New Issue
Block a user