diff --git a/app/domain/gemini_models.py b/app/domain/gemini_models.py index e2fdb19..d2c07df 100644 --- a/app/domain/gemini_models.py +++ b/app/domain/gemini_models.py @@ -1,4 +1,4 @@ -from typing import List, Optional, Dict, Any, Literal +from typing import List, Optional, Dict, Any, Literal, Union from pydantic import BaseModel @@ -34,7 +34,7 @@ class GeminiContent(BaseModel): class GeminiRequest(BaseModel): contents: List[GeminiContent] = [] - tools: Optional[List[Dict[str, Any]]] = [] + tools: Optional[Union[List[Dict[str, Any]], Dict[str, Any]]] = [] safetySettings: Optional[List[SafetySetting]] = None generationConfig: Optional[GenerationConfig] = None systemInstruction: Optional[SystemInstruction] = None diff --git a/app/service/chat/gemini_chat_service.py b/app/service/chat/gemini_chat_service.py index 7d2367e..b109592 100644 --- a/app/service/chat/gemini_chat_service.py +++ b/app/service/chat/gemini_chat_service.py @@ -44,6 +44,8 @@ def _build_tools(model: str, payload: Dict[str, Any]) -> List[Dict[str, Any]]: tool = dict() if payload and isinstance(payload, dict) and "tools" in payload: + if payload.get("tools") and isinstance(payload.get("tools"), dict): + payload["tools"] = [payload.get("tools")] items = payload.get("tools", []) if items and isinstance(items, list): tool.update(_merge_tools(items))