Skip to content

Commit feb570b

Browse files
2getsandeshnirga
andauthored
fix(langchain): Added new method for fetching model name from association metadata (#3237)
Co-authored-by: Nir Gazit <[email protected]>
1 parent 4f13da7 commit feb570b

File tree

7 files changed

+901
-1127
lines changed

7 files changed

+901
-1127
lines changed

packages/opentelemetry-instrumentation-langchain/opentelemetry/instrumentation/langchain/callback_handler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
SpanHolder,
3838
_set_span_attribute,
3939
extract_model_name_from_response_metadata,
40+
_extract_model_name_from_association_metadata,
4041
set_chat_request,
4142
set_chat_response,
4243
set_chat_response_usage,
@@ -508,6 +509,9 @@ def on_llm_end(
508509
_set_span_attribute(span, GEN_AI_RESPONSE_ID, id)
509510
if model_name is None:
510511
model_name = extract_model_name_from_response_metadata(response)
512+
if model_name is None and hasattr(context_api, "get_value"):
513+
association_properties = context_api.get_value("association_properties") or {}
514+
model_name = _extract_model_name_from_association_metadata(association_properties)
511515
token_usage = (response.llm_output or {}).get("token_usage") or (
512516
response.llm_output or {}
513517
).get("usage")

packages/opentelemetry-instrumentation-langchain/opentelemetry/instrumentation/langchain/span_utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,11 @@ def extract_model_name_from_response_metadata(response: LLMResult) -> str:
368368
and (model_name := generation.message.response_metadata.get("model_name"))
369369
):
370370
return model_name
371+
372+
373+
def _extract_model_name_from_association_metadata(metadata: Optional[dict[str, Any]] = None) -> str:
374+
if metadata:
375+
return metadata.get("ls_model_name") or "unknown"
371376
return "unknown"
372377

373378

packages/opentelemetry-instrumentation-langchain/tests/cassettes/test_agents/test_agents.yaml

Lines changed: 260 additions & 415 deletions
Large diffs are not rendered by default.

packages/opentelemetry-instrumentation-langchain/tests/cassettes/test_agents/test_agents_with_events_with_content.yaml

Lines changed: 378 additions & 279 deletions
Large diffs are not rendered by default.

packages/opentelemetry-instrumentation-langchain/tests/cassettes/test_agents/test_agents_with_events_with_no_content.yaml

Lines changed: 249 additions & 427 deletions
Large diffs are not rendered by default.

packages/opentelemetry-instrumentation-langchain/tests/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,5 +151,4 @@ def vcr_config():
151151
return {
152152
"filter_headers": ["authorization", "x-api-key"],
153153
"filter_body": ["api_key"],
154-
"ignore_hosts": ["api.hub.langchain.com", "api.smith.langchain.com"],
155154
}

packages/opentelemetry-instrumentation-langchain/tests/test_agents.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def test_agents_with_events_with_content(
119119
"content": "",
120120
"tool_calls": [
121121
{
122-
"id": "call_vZSljoj56JmSCeTYR9UgYkdK",
122+
"id": "call_jb8sWc3LhC4ZZn9Ma9E2QoS4",
123123
"function": {
124124
"name": "tavily_search_results_json",
125125
"arguments": {"query": "OpenLLMetry"},
@@ -137,7 +137,7 @@ def test_agents_with_events_with_content(
137137
"message": {"content": ""},
138138
"tool_calls": [
139139
{
140-
"id": "call_vZSljoj56JmSCeTYR9UgYkdK",
140+
"id": "call_jb8sWc3LhC4ZZn9Ma9E2QoS4",
141141
"function": {
142142
"name": "tavily_search_results_json",
143143
"arguments": {"query": "OpenLLMetry"},
@@ -198,7 +198,7 @@ def test_agents_with_events_with_no_content(
198198
}
199199

200200
logs = log_exporter.get_finished_logs()
201-
assert len(logs) == 15
201+
assert len(logs) == 8
202202
assert all(
203203
log.log_record.attributes.get(GenAIAttributes.GEN_AI_SYSTEM) == "langchain"
204204
for log in logs
@@ -217,7 +217,7 @@ def test_agents_with_events_with_no_content(
217217
{
218218
"tool_calls": [
219219
{
220-
"id": "call_vZSljoj56JmSCeTYR9UgYkdK",
220+
"id": "call_h7poF0eyI0elJPMut3w8QcHi",
221221
"function": {"name": "tavily_search_results_json"},
222222
"type": "function",
223223
}
@@ -232,7 +232,7 @@ def test_agents_with_events_with_no_content(
232232
"message": {},
233233
"tool_calls": [
234234
{
235-
"id": "call_vZSljoj56JmSCeTYR9UgYkdK",
235+
"id": "call_h7poF0eyI0elJPMut3w8QcHi",
236236
"function": {"name": "tavily_search_results_json"},
237237
"type": "function",
238238
}

0 commit comments

Comments
 (0)