Restore MSR character analyze config and parsing
This commit is contained in:
@@ -445,6 +445,27 @@ _ANALYZE_PROMPT = (
|
||||
)
|
||||
|
||||
|
||||
def _extract_ollama_generated_text(resp_json: dict) -> str:
|
||||
if not isinstance(resp_json, dict):
|
||||
return ""
|
||||
|
||||
candidates = [resp_json.get("response"), resp_json.get("content"), resp_json.get("thinking")]
|
||||
message = resp_json.get("message")
|
||||
if isinstance(message, dict):
|
||||
candidates.extend([
|
||||
message.get("content"),
|
||||
message.get("reasoning_content"),
|
||||
message.get("thinking"),
|
||||
])
|
||||
|
||||
for candidate in candidates:
|
||||
if isinstance(candidate, str):
|
||||
text = candidate.strip()
|
||||
if text:
|
||||
return text
|
||||
return ""
|
||||
|
||||
|
||||
def _compress_analysis_image_b64(b64_payload: str, max_dim: int = 768, quality: int = 82) -> str:
|
||||
"""Shrink analysis images so multimodal providers do not burn their full context on pixels."""
|
||||
try:
|
||||
@@ -531,12 +552,12 @@ async def analyze_character_endpoint(request):
|
||||
retry_err = await retry_response.text()
|
||||
return web.json_response({"status": "error", "message": f"Ollama HTTP {retry_response.status}: {retry_err}"})
|
||||
resp_json = await retry_response.json()
|
||||
generated_text = (resp_json.get("response") or "").strip()
|
||||
generated_text = _extract_ollama_generated_text(resp_json)
|
||||
else:
|
||||
return web.json_response({"status": "error", "message": f"Ollama HTTP {response.status}: {err_txt}"})
|
||||
else:
|
||||
resp_json = await response.json()
|
||||
generated_text = (resp_json.get("response") or "").strip()
|
||||
generated_text = _extract_ollama_generated_text(resp_json)
|
||||
else:
|
||||
# OpenAI-compatible vision chat (LM Studio / Custom).
|
||||
content = [{"type": "text", "text": _ANALYZE_PROMPT}]
|
||||
|
||||
Reference in New Issue
Block a user