Skip to content

Commit 0f3dce2

Browse files
committed
fixed typecheck
1 parent 3067e5f commit 0f3dce2

2 files changed

Lines changed: 16 additions & 19 deletions

File tree

instrumentation-genai/opentelemetry-instrumentation-langchain/src/opentelemetry/instrumentation/langchain/callback_handler.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,7 @@ def on_chain_end(
152152
self._invocation_manager.delete_invocation_state(run_id)
153153
return
154154

155-
if isinstance(invocation, (WorkflowInvocation, AgentInvocation)):
156-
invocation.output_messages = make_last_output_message(outputs)
155+
invocation.output_messages = make_last_output_message(outputs)
157156

158157
invocation.stop()
159158

instrumentation-genai/opentelemetry-instrumentation-langchain/src/opentelemetry/instrumentation/langchain/utils.py

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ def make_input_message(data: Any) -> list[InputMessage]:
1717
"""Create structured input message with full data as JSON."""
1818
if not isinstance(data, dict):
1919
return []
20+
data_dict: dict[str, Any] = data
2021
input_messages: list[InputMessage] = []
21-
messages = data.get("messages")
22+
messages: Any = data_dict.get("messages")
2223
if messages is not None:
2324
for msg in messages:
24-
content = getattr(msg, "content", "")
25-
if content:
25+
content: Any = getattr(msg, "content", "")
26+
if content and isinstance(content, str):
2627
input_message = InputMessage(
2728
role="user", parts=[Text(content)]
2829
)
@@ -32,9 +33,9 @@ def make_input_message(data: Any) -> list[InputMessage]:
3233
# Common in LangGraph where nodes use structured state fields
3334
# (e.g., user_query) rather than a message list.
3435
exclude_keys = {"messages", "intermediate_steps"}
35-
input_data = {
36+
input_data: dict[str, Any] = {
3637
k: v
37-
for k, v in data.items()
38+
for k, v in data_dict.items()
3839
if k not in exclude_keys and v is not None
3940
}
4041
if input_data:
@@ -46,22 +47,19 @@ def make_input_message(data: Any) -> list[InputMessage]:
4647

4748
def make_output_message(data: dict[str, Any]) -> list[OutputMessage]:
4849
"""Create structured output message with full data as JSON."""
49-
if not isinstance(data, dict):
50-
return []
5150
output_messages: list[OutputMessage] = []
52-
messages = data.get("messages")
51+
messages: Any = data.get("messages")
5352
if messages is None:
5453
return []
5554
for msg in messages:
56-
content = getattr(msg, "content", "")
57-
if content:
58-
if isinstance(msg, AIMessage):
59-
output_message = OutputMessage(
60-
role="assistant",
61-
parts=[Text(msg.content)],
62-
finish_reason="stop",
63-
)
64-
output_messages.append(output_message)
55+
content: Any = getattr(msg, "content", "")
56+
if content and isinstance(msg, AIMessage) and isinstance(content, str):
57+
output_message = OutputMessage(
58+
role="assistant",
59+
parts=[Text(content)],
60+
finish_reason="stop",
61+
)
62+
output_messages.append(output_message)
6563
return output_messages
6664

6765

0 commit comments

Comments
 (0)