BaseLLM
Base OpenAI LLM service implementation.
- class pipecat.services.openai.base_llm.BaseOpenAILLMService(*, model, api_key=None, base_url=None, organization=None, project=None, default_headers=None, params=None, **kwargs)[source]
Bases:
LLMService
Base class for all services that use the AsyncOpenAI client.
This service consumes OpenAILLMContextFrame frames, which contain a reference to an OpenAILLMContext object. The context defines what is sent to the LLM for completion, including user, assistant, and system messages, as well as tool choices and function call configurations.
- Parameters:
model (str) – The OpenAI model name to use (e.g., “gpt-4.1”, “gpt-4o”).
api_key – OpenAI API key. If None, uses environment variable.
base_url – Custom base URL for OpenAI API. If None, uses default.
organization – OpenAI organization ID.
project – OpenAI project ID.
default_headers (Mapping[str, str] | None) – Additional HTTP headers to include in requests.
params (InputParams | None) – Input parameters for model configuration and behavior.
**kwargs – Additional arguments passed to the parent LLMService.
- class InputParams(*, frequency_penalty=<factory>, presence_penalty=<factory>, seed=<factory>, temperature=<factory>, top_k=None, top_p=<factory>, max_tokens=<factory>, max_completion_tokens=<factory>, extra=<factory>)[source]
Bases:
BaseModel
Input parameters for OpenAI model configuration.
- Parameters:
frequency_penalty (float | None) – Penalty for frequent tokens (-2.0 to 2.0).
presence_penalty (float | None) – Penalty for new tokens (-2.0 to 2.0).
seed (int | None) – Random seed for deterministic outputs.
temperature (float | None) – Sampling temperature (0.0 to 2.0).
top_k (int | None) – Top-k sampling parameter (currently ignored by OpenAI).
top_p (float | None) – Top-p (nucleus) sampling parameter (0.0 to 1.0).
max_tokens (int | None) – Maximum tokens in response (deprecated, use max_completion_tokens).
max_completion_tokens (int | None) – Maximum completion tokens to generate.
extra (Dict[str, Any] | None) – Additional model-specific parameters.
- frequency_penalty: float | None
- presence_penalty: float | None
- seed: int | None
- temperature: float | None
- top_k: int | None
- top_p: float | None
- max_tokens: int | None
- max_completion_tokens: int | None
- extra: Dict[str, Any] | None
- model_config: ClassVar[ConfigDict] = {}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- create_client(api_key=None, base_url=None, organization=None, project=None, default_headers=None, **kwargs)[source]
Create an AsyncOpenAI client instance.
- Parameters:
api_key – OpenAI API key.
base_url – Custom base URL for the API.
organization – OpenAI organization ID.
project – OpenAI project ID.
default_headers – Additional HTTP headers.
**kwargs – Additional client configuration arguments.
- Returns:
Configured AsyncOpenAI client instance.
- can_generate_metrics()[source]
Check if this service can generate processing metrics.
- Returns:
True, as OpenAI service supports metrics generation.
- Return type:
bool
- async get_chat_completions(context, messages)[source]
Get streaming chat completions from OpenAI API.
- Parameters:
context (OpenAILLMContext) – The LLM context containing tools and configuration.
messages (List[ChatCompletionDeveloperMessageParam | ChatCompletionSystemMessageParam | ChatCompletionUserMessageParam | ChatCompletionAssistantMessageParam | ChatCompletionToolMessageParam | ChatCompletionFunctionMessageParam]) – List of chat completion messages to send.
- Returns:
Async stream of chat completion chunks.
- Return type:
AsyncStream[ChatCompletionChunk]
- async process_frame(frame, direction)[source]
Process frames for LLM completion requests.
Handles OpenAILLMContextFrame, LLMMessagesFrame, VisionImageRawFrame, and LLMUpdateSettingsFrame to trigger LLM completions and manage settings.
- Parameters:
frame (Frame) – The frame to process.
direction (FrameDirection) – The direction of frame processing.