Handle developer messages conservatively for OpenRouter
This commit is contained in:
@@ -37,6 +37,7 @@ class OpenRouterLLMService(OpenAILLMService):
|
||||
|
||||
Settings = OpenRouterLLMSettings
|
||||
_settings: Settings
|
||||
supports_developer_role = False
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
||||
@@ -23,6 +23,7 @@ from pipecat.services.openai.responses.llm import (
|
||||
OpenAIResponsesHttpLLMService,
|
||||
OpenAIResponsesLLMService,
|
||||
)
|
||||
from pipecat.services.openrouter.llm import OpenRouterLLMService
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -105,6 +106,35 @@ async def test_openai_run_inference_client_exception():
|
||||
await service.run_inference(mock_context)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_openrouter_run_inference_converts_developer_messages_to_user():
|
||||
"""Test OpenRouter requests convert developer messages for broad model compatibility."""
|
||||
with patch.object(OpenRouterLLMService, "create_client"):
|
||||
service = OpenRouterLLMService(settings=OpenRouterLLMService.Settings(model="gpt-4"))
|
||||
service._client = AsyncMock()
|
||||
|
||||
mock_context = MagicMock(spec=LLMContext)
|
||||
mock_adapter = MagicMock()
|
||||
mock_adapter.get_llm_invocation_params.return_value = OpenAILLMInvocationParams(
|
||||
messages=[{"role": "user", "content": "Tool result"}],
|
||||
tools=OPENAI_NOT_GIVEN,
|
||||
tool_choice=OPENAI_NOT_GIVEN,
|
||||
)
|
||||
service.get_llm_adapter = MagicMock(return_value=mock_adapter)
|
||||
|
||||
mock_response = MagicMock()
|
||||
mock_response.choices = [MagicMock()]
|
||||
mock_response.choices[0].message.content = "Done"
|
||||
service._client.chat.completions.create.return_value = mock_response
|
||||
|
||||
result = await service.run_inference(mock_context)
|
||||
|
||||
assert result == "Done"
|
||||
mock_adapter.get_llm_invocation_params.assert_called_once_with(
|
||||
mock_context, system_instruction=None, convert_developer_to_user=True
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_anthropic_run_inference_with_llm_context():
|
||||
"""Test run_inference with LLMContext returns expected response for Anthropic."""
|
||||
|
||||
Reference in New Issue
Block a user