Merge pull request #3406 from omChauhanDev/fix/openrouter-gemini-messages
fix(openrouter): handle multiple system messages for Gemini models
This commit is contained in:
@@ -10,7 +10,7 @@ This module provides an OpenAI-compatible interface for interacting with OpenRou
|
|||||||
extending the base OpenAI LLM service functionality.
|
extending the base OpenAI LLM service functionality.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from typing import Optional
|
from typing import Any, Dict, Optional
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
@@ -61,3 +61,35 @@ class OpenRouterLLMService(OpenAILLMService):
|
|||||||
"""
|
"""
|
||||||
logger.debug(f"Creating OpenRouter client with api {base_url}")
|
logger.debug(f"Creating OpenRouter client with api {base_url}")
|
||||||
return super().create_client(api_key, base_url, **kwargs)
|
return super().create_client(api_key, base_url, **kwargs)
|
||||||
|
|
||||||
|
def build_chat_completion_params(self, params_from_context: Dict[str, Any]) -> Dict[str, Any]:
|
||||||
|
"""Builds chat parameters, handling model-specific constraints.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
params_from_context: Parameters from the LLM context.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Transformed parameters ready for the API call.
|
||||||
|
"""
|
||||||
|
params = super().build_chat_completion_params(params_from_context)
|
||||||
|
model = getattr(self, "model_name", getattr(self, "model", "")).lower()
|
||||||
|
if "gemini" in model:
|
||||||
|
messages = params.get("messages", [])
|
||||||
|
if not messages:
|
||||||
|
return params
|
||||||
|
transformed_messages = []
|
||||||
|
system_message_seen = False
|
||||||
|
for msg in messages:
|
||||||
|
if msg.get("role") == "system":
|
||||||
|
if not system_message_seen:
|
||||||
|
transformed_messages.append(msg)
|
||||||
|
system_message_seen = True
|
||||||
|
else:
|
||||||
|
new_msg = msg.copy()
|
||||||
|
new_msg["role"] = "user"
|
||||||
|
transformed_messages.append(new_msg)
|
||||||
|
else:
|
||||||
|
transformed_messages.append(msg)
|
||||||
|
params["messages"] = transformed_messages
|
||||||
|
|
||||||
|
return params
|
||||||
|
|||||||
Reference in New Issue
Block a user