From fb04afa763b3cac1d48d86da3c23b543e875f9a9 Mon Sep 17 00:00:00 2001 From: DJoeyG Date: Sun, 22 Mar 2026 09:41:40 +0000 Subject: [PATCH] handle text format analogously to response format --- langfuse/openai.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/langfuse/openai.py b/langfuse/openai.py index 16d293e73..54ecda1ab 100644 --- a/langfuse/openai.py +++ b/langfuse/openai.py @@ -185,6 +185,15 @@ class OpenAiDefinition: ] +def _resolve_format_metadata(key: str, kwargs: Any) -> dict: + if key not in kwargs: + return {} + value = kwargs[key] + if isclass(value) and issubclass(value, BaseModel): + return {key: value.model_json_schema()} + return {key: value} + + class OpenAiArgsExtractor: def __init__( self, @@ -201,13 +210,11 @@ def __init__( self.args = {} self.args["metadata"] = ( metadata - if "response_format" not in kwargs + if "response_format" not in kwargs and "text_format" not in kwargs else { **(metadata or {}), - "response_format": kwargs["response_format"].model_json_schema() - if isclass(kwargs["response_format"]) - and issubclass(kwargs["response_format"], BaseModel) - else kwargs["response_format"], + **_resolve_format_metadata("response_format", kwargs), + **_resolve_format_metadata("text_format", kwargs), } ) self.args["name"] = name @@ -232,6 +239,7 @@ def get_openai_args(self) -> Any: # OpenAI does not support non-string type values in metadata when using # model distillation feature self.kwargs["metadata"].pop("response_format", None) + self.kwargs["metadata"].pop("text_format", None) return self.kwargs