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:
parent
d0693a192e
commit
e04d87cb1f
3 changed files with 13 additions and 0 deletions
|
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
||||||
from dataclasses import dataclass, fields, replace
|
from dataclasses import dataclass, fields, replace
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
|
from openai._types import Body, Query
|
||||||
from openai.types.shared import Reasoning
|
from openai.types.shared import Reasoning
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -58,6 +59,14 @@ class ModelSettings:
|
||||||
"""Whether to include usage chunk.
|
"""Whether to include usage chunk.
|
||||||
Defaults to True if not provided."""
|
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:
|
def resolve(self, override: ModelSettings | None) -> ModelSettings:
|
||||||
"""Produce a new ModelSettings by overlaying any non-None values from the
|
"""Produce a new ModelSettings by overlaying any non-None values from the
|
||||||
override on top of this instance."""
|
override on top of this instance."""
|
||||||
|
|
|
||||||
|
|
@ -540,6 +540,8 @@ class OpenAIChatCompletionsModel(Model):
|
||||||
store=self._non_null_or_not_given(store),
|
store=self._non_null_or_not_given(store),
|
||||||
reasoning_effort=self._non_null_or_not_given(reasoning_effort),
|
reasoning_effort=self._non_null_or_not_given(reasoning_effort),
|
||||||
extra_headers=_HEADERS,
|
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),
|
metadata=self._non_null_or_not_given(model_settings.metadata),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -245,6 +245,8 @@ class OpenAIResponsesModel(Model):
|
||||||
parallel_tool_calls=parallel_tool_calls,
|
parallel_tool_calls=parallel_tool_calls,
|
||||||
stream=stream,
|
stream=stream,
|
||||||
extra_headers=_HEADERS,
|
extra_headers=_HEADERS,
|
||||||
|
extra_query=model_settings.extra_query,
|
||||||
|
extra_body=model_settings.extra_body,
|
||||||
text=response_format,
|
text=response_format,
|
||||||
store=self._non_null_or_not_given(model_settings.store),
|
store=self._non_null_or_not_given(model_settings.store),
|
||||||
reasoning=self._non_null_or_not_given(model_settings.reasoning),
|
reasoning=self._non_null_or_not_given(model_settings.reasoning),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue