diff --git a/ai_agent.py b/ai_agent.py index 303fb3d..c2d66b0 100644 --- a/ai_agent.py +++ b/ai_agent.py @@ -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