Skip to content

Commit ee83993

Browse files
authored
docs: document Anthropic cache TTL count details (#31708)
1 parent e6191d5 commit ee83993

File tree

6 files changed

+68
-0
lines changed

6 files changed

+68
-0
lines changed

docs/docs/integrations/chat/anthropic.ipynb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,26 @@
568568
" ```\n",
569569
" and specifying `\"cache_control\": {\"type\": \"ephemeral\", \"ttl\": \"1h\"}`.\n",
570570
"\n",
571+
" Details of cached token counts will be included on the `InputTokenDetails` of response's `usage_metadata`:\n",
572+
"\n",
573+
" ```python\n",
574+
" response = llm.invoke(messages)\n",
575+
" response.usage_metadata\n",
576+
" ```\n",
577+
" ```\n",
578+
" {\n",
579+
" \"input_tokens\": 1500,\n",
580+
" \"output_tokens\": 200,\n",
581+
" \"total_tokens\": 1700,\n",
582+
" \"input_token_details\": {\n",
583+
" \"cache_read\": 0,\n",
584+
" \"cache_creation\": 1000,\n",
585+
" \"ephemeral_1h_input_tokens\": 750,\n",
586+
" \"ephemeral_5m_input_tokens\": 250,\n",
587+
" }\n",
588+
" }\n",
589+
" ```\n",
590+
"\n",
571591
":::"
572592
]
573593
},

libs/core/langchain_core/messages/ai.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class InputTokenDetails(TypedDict, total=False):
5555
}
5656
5757
.. versionadded:: 0.3.9
58+
59+
May also hold extra provider-specific keys.
5860
"""
5961

6062
audio: int

libs/core/tests/unit_tests/prompts/__snapshots__/test_chat.ambr

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,8 @@
702702
}
703703

704704
.. versionadded:: 0.3.9
705+
706+
May also hold extra provider-specific keys.
705707
''',
706708
'properties': dict({
707709
'audio': dict({
@@ -2132,6 +2134,8 @@
21322134
}
21332135

21342136
.. versionadded:: 0.3.9
2137+
2138+
May also hold extra provider-specific keys.
21352139
''',
21362140
'properties': dict({
21372141
'audio': dict({

libs/core/tests/unit_tests/runnables/__snapshots__/test_graph.ambr

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,6 +1105,8 @@
11051105
}
11061106

11071107
.. versionadded:: 0.3.9
1108+
1109+
May also hold extra provider-specific keys.
11081110
''',
11091111
'properties': dict({
11101112
'audio': dict({

libs/core/tests/unit_tests/runnables/__snapshots__/test_runnable.ambr

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2650,6 +2650,8 @@
26502650
}
26512651

26522652
.. versionadded:: 0.3.9
2653+
2654+
May also hold extra provider-specific keys.
26532655
''',
26542656
'properties': dict({
26552657
'audio': dict({
@@ -4124,6 +4126,8 @@
41244126
}
41254127

41264128
.. versionadded:: 0.3.9
4129+
4130+
May also hold extra provider-specific keys.
41274131
''',
41284132
'properties': dict({
41294133
'audio': dict({
@@ -5629,6 +5633,8 @@
56295633
}
56305634

56315635
.. versionadded:: 0.3.9
5636+
5637+
May also hold extra provider-specific keys.
56325638
''',
56335639
'properties': dict({
56345640
'audio': dict({
@@ -7009,6 +7015,8 @@
70097015
}
70107016

70117017
.. versionadded:: 0.3.9
7018+
7019+
May also hold extra provider-specific keys.
70127020
''',
70137021
'properties': dict({
70147022
'audio': dict({
@@ -8525,6 +8533,8 @@
85258533
}
85268534

85278535
.. versionadded:: 0.3.9
8536+
8537+
May also hold extra provider-specific keys.
85288538
''',
85298539
'properties': dict({
85308540
'audio': dict({
@@ -9950,6 +9960,8 @@
99509960
}
99519961

99529962
.. versionadded:: 0.3.9
9963+
9964+
May also hold extra provider-specific keys.
99539965
''',
99549966
'properties': dict({
99559967
'audio': dict({
@@ -11374,6 +11386,8 @@
1137411386
}
1137511387

1137611388
.. versionadded:: 0.3.9
11389+
11390+
May also hold extra provider-specific keys.
1137711391
''',
1137811392
'properties': dict({
1137911393
'audio': dict({
@@ -12840,6 +12854,8 @@
1284012854
}
1284112855

1284212856
.. versionadded:: 0.3.9
12857+
12858+
May also hold extra provider-specific keys.
1284312859
''',
1284412860
'properties': dict({
1284512861
'audio': dict({

libs/partners/anthropic/langchain_anthropic/chat_models.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,8 @@ class Joke(BaseModel):
955955
956956
.. dropdown:: Extended caching
957957
958+
.. versionadded:: 0.3.15
959+
958960
The cache lifetime is 5 minutes by default. If this is too short, you can
959961
apply one hour caching by enabling the ``"extended-cache-ttl-2025-04-11"``
960962
beta header:
@@ -968,6 +970,28 @@ class Joke(BaseModel):
968970
969971
and specifying ``"cache_control": {"type": "ephemeral", "ttl": "1h"}``.
970972
973+
Details of cached token counts will be included on the ``InputTokenDetails``
974+
of response's ``usage_metadata``:
975+
976+
.. code-block:: python
977+
978+
response = llm.invoke(messages)
979+
response.usage_metadata
980+
981+
.. code-block:: python
982+
983+
{
984+
"input_tokens": 1500,
985+
"output_tokens": 200,
986+
"total_tokens": 1700,
987+
"input_token_details": {
988+
"cache_read": 0,
989+
"cache_creation": 1000,
990+
"ephemeral_1h_input_tokens": 750,
991+
"ephemeral_5m_input_tokens": 250,
992+
}
993+
}
994+
971995
See `Claude documentation <https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching#1-hour-cache-duration-beta>`_
972996
for detail.
973997

0 commit comments

Comments
 (0)