Add extra request parameters extra_query and extra_body (#500)

Added the possibility to pass `extra_query` and `extra_body` parameters
when sending a request.
In this implementation I added the attributes to `ModelSettings` as
suggested by @rm-openai in #487 .

I'll be happy to add some tests if you have any suggestions.
This commit is contained in:
Daniele Morotti 2025-04-14 16:37:00 +02:00 committed by GitHub
parent d0693a192e
commit e04d87cb1f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 0 deletions

View file

@ -3,6 +3,7 @@ from __future__ import annotations
from dataclasses import dataclass, fields, replace
from typing import Literal
from openai._types import Body, Query
from openai.types.shared import Reasoning
@ -58,6 +59,14 @@ class ModelSettings:
"""Whether to include usage chunk.
Defaults to True if not provided."""
extra_query: Query | None = None
"""Additional query fields to provide with the request.
Defaults to None if not provided."""
extra_body: Body | None = None
"""Additional body fields to provide with the request.
Defaults to None if not provided."""
def resolve(self, override: ModelSettings | None) -> ModelSettings:
"""Produce a new ModelSettings by overlaying any non-None values from the
override on top of this instance."""

View file

@ -540,6 +540,8 @@ class OpenAIChatCompletionsModel(Model):
store=self._non_null_or_not_given(store),
reasoning_effort=self._non_null_or_not_given(reasoning_effort),
extra_headers=_HEADERS,
extra_query=model_settings.extra_query,
extra_body=model_settings.extra_body,
metadata=self._non_null_or_not_given(model_settings.metadata),
)

View file

@ -245,6 +245,8 @@ class OpenAIResponsesModel(Model):
parallel_tool_calls=parallel_tool_calls,
stream=stream,
extra_headers=_HEADERS,
extra_query=model_settings.extra_query,
extra_body=model_settings.extra_body,
text=response_format,
store=self._non_null_or_not_given(model_settings.store),
reasoning=self._non_null_or_not_given(model_settings.reasoning),