Возврат реальной ошибки провайдера вместо "Provider returned error".

This commit is contained in:
Kirill Kirilenko 2026-02-15 22:40:15 +03:00
parent 41dfd3b4a0
commit ba902e30a7

View file

@ -12,7 +12,7 @@ from typing import List, Tuple, Any, Optional, Union, Dict, Awaitable
from openrouter import OpenRouter, RetryConfig
from openrouter.components import AssistantMessage, AssistantMessageTypedDict, ChatMessageContentItemTypedDict, \
ChatMessageToolCall, MessageTypedDict, ToolDefinitionJSONTypedDict
from openrouter.errors import ResponseValidationError
from openrouter.errors import ResponseValidationError, ChatError
from openrouter.utils import BackoffStrategy
from database import BasicDatabase
@ -364,11 +364,23 @@ class AiAgent:
# https://github.com/OpenRouterTeam/python-sdk/issues/44
body = json.loads(e.body)
if "error" in body:
raw_response = json.loads(body["error"]["metadata"]["raw"])
message = str(raw_response["error"]["message"])
raise RuntimeError(message)
else:
raise RuntimeError("Ошибка валидации ответа от провайдера.") from e
try:
raw_response = json.loads(body["error"]["metadata"]["raw"])
message = str(raw_response["error"]["message"])
e = RuntimeError(message)
except Exception:
pass
raise e
except ChatError as e:
if e.message == "Provider returned error":
body = json.loads(e.body)
try:
raw_response = json.loads(body["error"]["metadata"]["raw"])
message = str(raw_response["error"]["message"])
e = RuntimeError(message)
except Exception:
pass
raise e
agent: AiAgent