feat(langchain): export UsageMetadata (#33692)

as well as `InputTokenDetails`, and `OutputTokenDetails` from
`langchain_core.messages`
This commit is contained in:
Mason Daugherty
2025-10-27 19:47:41 -04:00
committed by GitHub
parent f94108b4bc
commit 62769a0dac
8 changed files with 68 additions and 26 deletions

View File

@@ -9,6 +9,9 @@ if TYPE_CHECKING:
from langchain_core.messages.ai import (
AIMessage,
AIMessageChunk,
InputTokenDetails,
OutputTokenDetails,
UsageMetadata,
)
from langchain_core.messages.base import (
BaseMessage,
@@ -87,10 +90,12 @@ __all__ = (
"HumanMessage",
"HumanMessageChunk",
"ImageContentBlock",
"InputTokenDetails",
"InvalidToolCall",
"MessageLikeRepresentation",
"NonStandardAnnotation",
"NonStandardContentBlock",
"OutputTokenDetails",
"PlainTextContentBlock",
"ReasoningContentBlock",
"RemoveMessage",
@@ -104,6 +109,7 @@ __all__ = (
"ToolCallChunk",
"ToolMessage",
"ToolMessageChunk",
"UsageMetadata",
"VideoContentBlock",
"_message_from_dict",
"convert_to_messages",
@@ -145,6 +151,7 @@ _dynamic_imports = {
"HumanMessageChunk": "human",
"NonStandardAnnotation": "content",
"NonStandardContentBlock": "content",
"OutputTokenDetails": "ai",
"PlainTextContentBlock": "content",
"ReasoningContentBlock": "content",
"RemoveMessage": "modifier",
@@ -154,12 +161,14 @@ _dynamic_imports = {
"SystemMessage": "system",
"SystemMessageChunk": "system",
"ImageContentBlock": "content",
"InputTokenDetails": "ai",
"InvalidToolCall": "tool",
"TextContentBlock": "content",
"ToolCall": "tool",
"ToolCallChunk": "tool",
"ToolMessage": "tool",
"ToolMessageChunk": "tool",
"UsageMetadata": "ai",
"VideoContentBlock": "content",
"AnyMessage": "utils",
"MessageLikeRepresentation": "utils",

View File

@@ -48,10 +48,10 @@ class InputTokenDetails(TypedDict, total=False):
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
"""
audio: int
@@ -83,6 +83,8 @@ class OutputTokenDetails(TypedDict, total=False):
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
"""

View File

@@ -55,6 +55,9 @@ EXPECTED_ALL = [
"convert_to_openai_data_block",
"convert_to_openai_image_block",
"convert_to_openai_messages",
"UsageMetadata",
"InputTokenDetails",
"OutputTokenDetails",
]

View File

@@ -680,9 +680,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -798,6 +798,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -2092,9 +2094,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -2210,6 +2212,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({

View File

@@ -1104,9 +1104,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -1222,6 +1222,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({

View File

@@ -2627,9 +2627,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -2744,6 +2744,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -4082,9 +4084,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -4199,6 +4201,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -5568,9 +5572,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -5685,6 +5689,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -6929,9 +6935,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -7046,6 +7052,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -8426,9 +8434,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -8543,6 +8551,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -9832,9 +9842,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -9949,6 +9959,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -11237,9 +11249,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -11354,6 +11366,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
@@ -12684,9 +12698,9 @@
}
```
!!! version-added "Added in version 0.3.9"
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({
'audio': dict({
@@ -12801,6 +12815,8 @@
}
```
May also hold extra provider-specific keys.
!!! version-added "Added in version 0.3.9"
''',
'properties': dict({

View File

@@ -21,10 +21,12 @@ from langchain_core.messages import (
FileContentBlock,
HumanMessage,
ImageContentBlock,
InputTokenDetails,
InvalidToolCall,
MessageLikeRepresentation,
NonStandardAnnotation,
NonStandardContentBlock,
OutputTokenDetails,
PlainTextContentBlock,
ReasoningContentBlock,
RemoveMessage,
@@ -36,6 +38,7 @@ from langchain_core.messages import (
ToolCall,
ToolCallChunk,
ToolMessage,
UsageMetadata,
VideoContentBlock,
trim_messages,
)
@@ -52,10 +55,12 @@ __all__ = [
"FileContentBlock",
"HumanMessage",
"ImageContentBlock",
"InputTokenDetails",
"InvalidToolCall",
"MessageLikeRepresentation",
"NonStandardAnnotation",
"NonStandardContentBlock",
"OutputTokenDetails",
"PlainTextContentBlock",
"ReasoningContentBlock",
"RemoveMessage",
@@ -67,6 +72,7 @@ __all__ = [
"ToolCall",
"ToolCallChunk",
"ToolMessage",
"UsageMetadata",
"VideoContentBlock",
"trim_messages",
]

View File

@@ -1,5 +1,5 @@
version = 1
revision = 2
revision = 3
requires-python = ">=3.10.0, <4.0.0"
resolution-markers = [
"python_full_version >= '3.13' and platform_python_implementation == 'PyPy'",
@@ -1743,7 +1743,7 @@ wheels = [
[[package]]
name = "langchain-core"
version = "1.0.0"
version = "1.0.1"
source = { editable = "../core" }
dependencies = [
{ name = "jsonpatch" },