From b9f81d64e44e53c2a00b9b4e174feac6885f5aa5 Mon Sep 17 00:00:00 2001 From: Hassieb Pakzad <68423100+hassiebp@users.noreply.github.com> Date: Tue, 12 Aug 2025 11:00:53 +0200 Subject: [PATCH] feat(openai): add support for response.parse --- langfuse/openai.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/langfuse/openai.py b/langfuse/openai.py index b8d9ea2d7..96ba14a0c 100644 --- a/langfuse/openai.py +++ b/langfuse/openai.py @@ -23,7 +23,7 @@ from dataclasses import dataclass from datetime import datetime from inspect import isclass -from typing import Optional, cast, Any +from typing import Any, Optional, cast from openai._types import NotGiven from packaging.version import Version @@ -161,6 +161,22 @@ class OpenAiDefinition: sync=False, min_version="1.66.0", ), + OpenAiDefinition( + module="openai.resources.responses", + object="Responses", + method="parse", + type="chat", + sync=True, + min_version="1.66.0", + ), + OpenAiDefinition( + module="openai.resources.responses", + object="AsyncResponses", + method="parse", + type="chat", + sync=False, + min_version="1.66.0", + ), ] @@ -570,7 +586,10 @@ def _extract_streamed_openai_response(resource: Any, chunks: Any) -> Any: ) curr["arguments"] += getattr(tool_call_chunk, "arguments", "") - elif delta.get("tool_calls", None) is not None and len(delta.get("tool_calls")) > 0: + elif ( + delta.get("tool_calls", None) is not None + and len(delta.get("tool_calls")) > 0 + ): curr = completion["tool_calls"] tool_call_chunk = getattr( delta.get("tool_calls", None)[0], "function", None