This commit is contained in:
Muspi Merol 2026-10-08 18:52:51 -04:00 • committed by GitHub
commit 7530fe89b1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 1 deletions

View file

@ -210,6 +210,8 @@ class LangfuseOtelLogger(OpenTelemetry):
"type": "function_call",
"arguments": arguments_obj,
}
if (namespace := getattr(item, "namespace", None)) is not None:
langfuse_tool_call["namespace"] = namespace
output_items_data.append(langfuse_tool_call)
if output_items_data:
safe_set_attribute(

View file

@ -902,7 +902,8 @@ class TestLangfuseOtelResponsesAPI:
== "The weather in San Francisco is sunny, 20°C."
)
def test_responses_api_with_function_calls(self):
@pytest.mark.parametrize("namespace", (None, "weather", ""))
def test_responses_api_with_function_calls(self, namespace: str | None):
"""Test Langfuse OTEL logger with Responses API function_call output."""
from litellm.types.integrations.langfuse_otel import LangfuseSpanAttributes
from openai.types.responses import ResponseFunctionToolCall
@ -916,6 +917,7 @@ class TestLangfuseOtelResponsesAPI:
id="fc-123",
type="function_call",
name="get_weather",
namespace=namespace,
call_id="call-abc",
arguments='{"location": "San Francisco", "unit": "celsius"}',
status="completed",
@ -963,6 +965,10 @@ class TestLangfuseOtelResponsesAPI:
assert output_data[0]["call_id"] == "call-abc"
assert output_data[0]["arguments"]["location"] == "San Francisco"
assert output_data[0]["arguments"]["unit"] == "celsius"
if namespace is None:
assert "namespace" not in output_data[0]
else:
assert output_data[0]["namespace"] == namespace
def test_responses_api_function_call_with_redacted_arguments(self):
"""Sentinel arguments (invalid JSON) must not kill the whole observation output."""