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.