From 09beaccaf05411b04c3299ea94168eb1d68b6351 Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Wed, 20 Aug 2025 10:24:43 -0400 Subject: [PATCH] Assorted minor improvements after code review --- src/pipecat/adapters/base_llm_adapter.py | 1 + src/pipecat/adapters/services/gemini_adapter.py | 8 +++++--- src/pipecat/adapters/services/open_ai_adapter.py | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/pipecat/adapters/base_llm_adapter.py b/src/pipecat/adapters/base_llm_adapter.py index c17f337d5..d24dd4b26 100644 --- a/src/pipecat/adapters/base_llm_adapter.py +++ b/src/pipecat/adapters/base_llm_adapter.py @@ -28,6 +28,7 @@ class BaseLLMAdapter(ABC, Generic[TLLMInvocationParams]): Provides a standard interface for converting to provider-specific formats. Handles: + - Extracting provider-specific parameters for LLM invocation from a universal LLM context - Converting standardized tools schema to provider-specific tool formats. diff --git a/src/pipecat/adapters/services/gemini_adapter.py b/src/pipecat/adapters/services/gemini_adapter.py index b38a01077..732d008d6 100644 --- a/src/pipecat/adapters/services/gemini_adapter.py +++ b/src/pipecat/adapters/services/gemini_adapter.py @@ -9,7 +9,7 @@ import base64 import json from dataclasses import dataclass -from typing import Any, List, Optional, TypedDict +from typing import Any, Dict, List, Optional, TypedDict from loguru import logger from openai import NotGiven @@ -71,7 +71,7 @@ class GeminiLLMAdapter(BaseLLMAdapter[GeminiLLMInvocationParams]): "tools": self.from_standard_tools(context.tools), } - def to_provider_tools_format(self, tools_schema: ToolsSchema) -> List[Any]: + def to_provider_tools_format(self, tools_schema: ToolsSchema) -> List[Dict[str, Any]]: """Convert tool schemas to Gemini's function-calling format. Args: @@ -139,11 +139,13 @@ class GeminiLLMAdapter(BaseLLMAdapter[GeminiLLMInvocationParams]): System messages are added back to the context as user messages when needed. The final message order is preserved as: + 1. Function calls (from model) 2. Function responses (from user) 3. Text messages (converted from system messages) - Note: + Note:: + System messages are only added back when there are no regular text messages in the context, ensuring proper conversation continuity after function calls. diff --git a/src/pipecat/adapters/services/open_ai_adapter.py b/src/pipecat/adapters/services/open_ai_adapter.py index 9762b2aa9..2ba5b0319 100644 --- a/src/pipecat/adapters/services/open_ai_adapter.py +++ b/src/pipecat/adapters/services/open_ai_adapter.py @@ -40,6 +40,7 @@ class OpenAILLMAdapter(BaseLLMAdapter[OpenAILLMInvocationParams]): """OpenAI-specific adapter for Pipecat. Handles: + - Extracting parameters for OpenAI's ChatCompletion API from a universal LLM context - Converting Pipecat's standardized tools schema to OpenAI's function-calling format.