langchain-core 1.0.0a5__py3-none-any.whl → 1.0.0a7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of langchain-core might be problematic. Click here for more details.

Files changed (132) hide show
  1. langchain_core/_api/__init__.py +3 -3
  2. langchain_core/_api/beta_decorator.py +6 -6
  3. langchain_core/_api/deprecation.py +21 -29
  4. langchain_core/_api/path.py +3 -6
  5. langchain_core/_import_utils.py +2 -3
  6. langchain_core/agents.py +10 -11
  7. langchain_core/caches.py +7 -7
  8. langchain_core/callbacks/base.py +91 -91
  9. langchain_core/callbacks/file.py +11 -11
  10. langchain_core/callbacks/manager.py +86 -89
  11. langchain_core/callbacks/stdout.py +8 -8
  12. langchain_core/callbacks/usage.py +4 -4
  13. langchain_core/chat_history.py +1 -37
  14. langchain_core/document_loaders/base.py +2 -2
  15. langchain_core/document_loaders/langsmith.py +15 -15
  16. langchain_core/documents/base.py +16 -16
  17. langchain_core/documents/compressor.py +4 -4
  18. langchain_core/example_selectors/length_based.py +1 -1
  19. langchain_core/example_selectors/semantic_similarity.py +17 -19
  20. langchain_core/exceptions.py +3 -3
  21. langchain_core/globals.py +3 -151
  22. langchain_core/indexing/api.py +44 -43
  23. langchain_core/indexing/base.py +30 -30
  24. langchain_core/indexing/in_memory.py +3 -3
  25. langchain_core/language_models/_utils.py +5 -7
  26. langchain_core/language_models/base.py +18 -132
  27. langchain_core/language_models/chat_models.py +118 -227
  28. langchain_core/language_models/fake.py +11 -11
  29. langchain_core/language_models/fake_chat_models.py +35 -29
  30. langchain_core/language_models/llms.py +91 -201
  31. langchain_core/load/dump.py +1 -1
  32. langchain_core/load/load.py +11 -12
  33. langchain_core/load/mapping.py +2 -4
  34. langchain_core/load/serializable.py +2 -4
  35. langchain_core/messages/ai.py +17 -20
  36. langchain_core/messages/base.py +28 -26
  37. langchain_core/messages/block_translators/__init__.py +17 -7
  38. langchain_core/messages/block_translators/anthropic.py +3 -3
  39. langchain_core/messages/block_translators/bedrock_converse.py +2 -2
  40. langchain_core/messages/block_translators/google_genai.py +502 -20
  41. langchain_core/messages/block_translators/langchain_v0.py +2 -2
  42. langchain_core/messages/block_translators/openai.py +6 -6
  43. langchain_core/messages/content.py +120 -124
  44. langchain_core/messages/human.py +7 -7
  45. langchain_core/messages/system.py +7 -7
  46. langchain_core/messages/tool.py +24 -24
  47. langchain_core/messages/utils.py +67 -79
  48. langchain_core/output_parsers/base.py +12 -14
  49. langchain_core/output_parsers/json.py +4 -4
  50. langchain_core/output_parsers/list.py +3 -5
  51. langchain_core/output_parsers/openai_functions.py +3 -3
  52. langchain_core/output_parsers/openai_tools.py +3 -3
  53. langchain_core/output_parsers/pydantic.py +2 -2
  54. langchain_core/output_parsers/transform.py +13 -15
  55. langchain_core/output_parsers/xml.py +7 -9
  56. langchain_core/outputs/chat_generation.py +4 -4
  57. langchain_core/outputs/chat_result.py +1 -3
  58. langchain_core/outputs/generation.py +2 -2
  59. langchain_core/outputs/llm_result.py +5 -5
  60. langchain_core/prompts/__init__.py +1 -5
  61. langchain_core/prompts/base.py +10 -15
  62. langchain_core/prompts/chat.py +31 -82
  63. langchain_core/prompts/dict.py +2 -2
  64. langchain_core/prompts/few_shot.py +5 -5
  65. langchain_core/prompts/few_shot_with_templates.py +4 -4
  66. langchain_core/prompts/loading.py +3 -5
  67. langchain_core/prompts/prompt.py +4 -16
  68. langchain_core/prompts/string.py +2 -1
  69. langchain_core/prompts/structured.py +16 -23
  70. langchain_core/rate_limiters.py +3 -4
  71. langchain_core/retrievers.py +14 -14
  72. langchain_core/runnables/base.py +938 -1054
  73. langchain_core/runnables/branch.py +36 -40
  74. langchain_core/runnables/config.py +27 -35
  75. langchain_core/runnables/configurable.py +108 -124
  76. langchain_core/runnables/fallbacks.py +76 -72
  77. langchain_core/runnables/graph.py +39 -45
  78. langchain_core/runnables/graph_ascii.py +9 -11
  79. langchain_core/runnables/graph_mermaid.py +18 -19
  80. langchain_core/runnables/graph_png.py +8 -9
  81. langchain_core/runnables/history.py +114 -127
  82. langchain_core/runnables/passthrough.py +113 -139
  83. langchain_core/runnables/retry.py +43 -48
  84. langchain_core/runnables/router.py +23 -28
  85. langchain_core/runnables/schema.py +42 -44
  86. langchain_core/runnables/utils.py +28 -31
  87. langchain_core/stores.py +9 -13
  88. langchain_core/structured_query.py +8 -8
  89. langchain_core/tools/base.py +63 -115
  90. langchain_core/tools/convert.py +31 -35
  91. langchain_core/tools/render.py +1 -1
  92. langchain_core/tools/retriever.py +4 -4
  93. langchain_core/tools/simple.py +13 -17
  94. langchain_core/tools/structured.py +12 -15
  95. langchain_core/tracers/base.py +62 -64
  96. langchain_core/tracers/context.py +17 -35
  97. langchain_core/tracers/core.py +49 -53
  98. langchain_core/tracers/evaluation.py +11 -11
  99. langchain_core/tracers/event_stream.py +58 -60
  100. langchain_core/tracers/langchain.py +13 -13
  101. langchain_core/tracers/log_stream.py +22 -24
  102. langchain_core/tracers/root_listeners.py +14 -14
  103. langchain_core/tracers/run_collector.py +2 -4
  104. langchain_core/tracers/schemas.py +8 -8
  105. langchain_core/tracers/stdout.py +2 -1
  106. langchain_core/utils/__init__.py +0 -3
  107. langchain_core/utils/_merge.py +2 -2
  108. langchain_core/utils/aiter.py +24 -28
  109. langchain_core/utils/env.py +4 -4
  110. langchain_core/utils/function_calling.py +31 -41
  111. langchain_core/utils/html.py +3 -4
  112. langchain_core/utils/input.py +3 -3
  113. langchain_core/utils/iter.py +15 -19
  114. langchain_core/utils/json.py +3 -2
  115. langchain_core/utils/json_schema.py +6 -6
  116. langchain_core/utils/mustache.py +3 -5
  117. langchain_core/utils/pydantic.py +16 -18
  118. langchain_core/utils/usage.py +1 -1
  119. langchain_core/utils/utils.py +29 -29
  120. langchain_core/vectorstores/base.py +18 -21
  121. langchain_core/vectorstores/in_memory.py +14 -87
  122. langchain_core/vectorstores/utils.py +2 -2
  123. langchain_core/version.py +1 -1
  124. {langchain_core-1.0.0a5.dist-info → langchain_core-1.0.0a7.dist-info}/METADATA +10 -31
  125. langchain_core-1.0.0a7.dist-info/RECORD +176 -0
  126. {langchain_core-1.0.0a5.dist-info → langchain_core-1.0.0a7.dist-info}/WHEEL +1 -1
  127. langchain_core/messages/block_translators/ollama.py +0 -47
  128. langchain_core/prompts/pipeline.py +0 -138
  129. langchain_core/tracers/langchain_v1.py +0 -31
  130. langchain_core/utils/loading.py +0 -35
  131. langchain_core-1.0.0a5.dist-info/RECORD +0 -181
  132. langchain_core-1.0.0a5.dist-info/entry_points.txt +0 -4
@@ -8,10 +8,11 @@ import functools
8
8
  import logging
9
9
  import uuid
10
10
  from abc import ABC, abstractmethod
11
+ from collections.abc import Callable
11
12
  from concurrent.futures import ThreadPoolExecutor
12
13
  from contextlib import asynccontextmanager, contextmanager
13
14
  from contextvars import copy_context
14
- from typing import TYPE_CHECKING, Any, Callable, Optional, TypeVar, Union, cast
15
+ from typing import TYPE_CHECKING, Any, TypeVar, cast
15
16
  from uuid import UUID
16
17
 
17
18
  from langsmith.run_helpers import get_tracing_context
@@ -62,14 +63,14 @@ def _get_debug() -> bool:
62
63
  @contextmanager
63
64
  def trace_as_chain_group(
64
65
  group_name: str,
65
- callback_manager: Optional[CallbackManager] = None,
66
+ callback_manager: CallbackManager | None = None,
66
67
  *,
67
- inputs: Optional[dict[str, Any]] = None,
68
- project_name: Optional[str] = None,
69
- example_id: Optional[Union[str, UUID]] = None,
70
- run_id: Optional[UUID] = None,
71
- tags: Optional[list[str]] = None,
72
- metadata: Optional[dict[str, Any]] = None,
68
+ inputs: dict[str, Any] | None = None,
69
+ project_name: str | None = None,
70
+ example_id: str | UUID | None = None,
71
+ run_id: UUID | None = None,
72
+ tags: list[str] | None = None,
73
+ metadata: dict[str, Any] | None = None,
73
74
  ) -> Generator[CallbackManagerForChainGroup, None, None]:
74
75
  """Get a callback manager for a chain group in a context manager.
75
76
 
@@ -92,7 +93,7 @@ def trace_as_chain_group(
92
93
  metadata (dict[str, Any], optional): The metadata to apply to all runs.
93
94
  Defaults to None.
94
95
 
95
- .. note::
96
+ !!! note
96
97
  Must have ``LANGCHAIN_TRACING_V2`` env var set to true to see the trace in
97
98
  LangSmith.
98
99
 
@@ -146,14 +147,14 @@ def trace_as_chain_group(
146
147
  @asynccontextmanager
147
148
  async def atrace_as_chain_group(
148
149
  group_name: str,
149
- callback_manager: Optional[AsyncCallbackManager] = None,
150
+ callback_manager: AsyncCallbackManager | None = None,
150
151
  *,
151
- inputs: Optional[dict[str, Any]] = None,
152
- project_name: Optional[str] = None,
153
- example_id: Optional[Union[str, UUID]] = None,
154
- run_id: Optional[UUID] = None,
155
- tags: Optional[list[str]] = None,
156
- metadata: Optional[dict[str, Any]] = None,
152
+ inputs: dict[str, Any] | None = None,
153
+ project_name: str | None = None,
154
+ example_id: str | UUID | None = None,
155
+ run_id: UUID | None = None,
156
+ tags: list[str] | None = None,
157
+ metadata: dict[str, Any] | None = None,
157
158
  ) -> AsyncGenerator[AsyncCallbackManagerForChainGroup, None]:
158
159
  """Get an async callback manager for a chain group in a context manager.
159
160
 
@@ -179,7 +180,7 @@ async def atrace_as_chain_group(
179
180
  Yields:
180
181
  The async callback manager for the chain group.
181
182
 
182
- .. note::
183
+ !!! note
183
184
  Must have ``LANGCHAIN_TRACING_V2`` env var set to true to see the trace in
184
185
  LangSmith.
185
186
 
@@ -251,13 +252,13 @@ def shielded(func: Func) -> Func:
251
252
  def handle_event(
252
253
  handlers: list[BaseCallbackHandler],
253
254
  event_name: str,
254
- ignore_condition_name: Optional[str],
255
+ ignore_condition_name: str | None,
255
256
  *args: Any,
256
257
  **kwargs: Any,
257
258
  ) -> None:
258
259
  """Generic event handler for CallbackManager.
259
260
 
260
- .. note::
261
+ !!! note
261
262
  This function is used by ``LangServe`` to handle events.
262
263
 
263
264
  Args:
@@ -272,7 +273,7 @@ def handle_event(
272
273
  coros: list[Coroutine[Any, Any, Any]] = []
273
274
 
274
275
  try:
275
- message_strings: Optional[list[str]] = None
276
+ message_strings: list[str] | None = None
276
277
  for handler in handlers:
277
278
  try:
278
279
  if ignore_condition_name is None or not getattr(
@@ -366,7 +367,7 @@ def _run_coros(coros: list[Coroutine[Any, Any, Any]]) -> None:
366
367
  async def _ahandle_event_for_handler(
367
368
  handler: BaseCallbackHandler,
368
369
  event_name: str,
369
- ignore_condition_name: Optional[str],
370
+ ignore_condition_name: str | None,
370
371
  *args: Any,
371
372
  **kwargs: Any,
372
373
  ) -> None:
@@ -418,13 +419,13 @@ async def _ahandle_event_for_handler(
418
419
  async def ahandle_event(
419
420
  handlers: list[BaseCallbackHandler],
420
421
  event_name: str,
421
- ignore_condition_name: Optional[str],
422
+ ignore_condition_name: str | None,
422
423
  *args: Any,
423
424
  **kwargs: Any,
424
425
  ) -> None:
425
426
  """Async generic event handler for ``AsyncCallbackManager``.
426
427
 
427
- .. note::
428
+ !!! note
428
429
  This function is used by ``LangServe`` to handle events.
429
430
 
430
431
  Args:
@@ -464,11 +465,11 @@ class BaseRunManager(RunManagerMixin):
464
465
  run_id: UUID,
465
466
  handlers: list[BaseCallbackHandler],
466
467
  inheritable_handlers: list[BaseCallbackHandler],
467
- parent_run_id: Optional[UUID] = None,
468
- tags: Optional[list[str]] = None,
469
- inheritable_tags: Optional[list[str]] = None,
470
- metadata: Optional[dict[str, Any]] = None,
471
- inheritable_metadata: Optional[dict[str, Any]] = None,
468
+ parent_run_id: UUID | None = None,
469
+ tags: list[str] | None = None,
470
+ inheritable_tags: list[str] | None = None,
471
+ metadata: dict[str, Any] | None = None,
472
+ inheritable_metadata: dict[str, Any] | None = None,
472
473
  ) -> None:
473
474
  """Initialize the run manager.
474
475
 
@@ -572,7 +573,7 @@ class RunManager(BaseRunManager):
572
573
  class ParentRunManager(RunManager):
573
574
  """Sync Parent Run Manager."""
574
575
 
575
- def get_child(self, tag: Optional[str] = None) -> CallbackManager:
576
+ def get_child(self, tag: str | None = None) -> CallbackManager:
576
577
  """Get a child callback manager.
577
578
 
578
579
  Args:
@@ -657,7 +658,7 @@ class AsyncRunManager(BaseRunManager, ABC):
657
658
  class AsyncParentRunManager(AsyncRunManager):
658
659
  """Async Parent Run Manager."""
659
660
 
660
- def get_child(self, tag: Optional[str] = None) -> AsyncCallbackManager:
661
+ def get_child(self, tag: str | None = None) -> AsyncCallbackManager:
661
662
  """Get a child callback manager.
662
663
 
663
664
  Args:
@@ -684,7 +685,7 @@ class CallbackManagerForLLMRun(RunManager, LLMManagerMixin):
684
685
  self,
685
686
  token: str,
686
687
  *,
687
- chunk: Optional[Union[GenerationChunk, ChatGenerationChunk]] = None,
688
+ chunk: GenerationChunk | ChatGenerationChunk | None = None,
688
689
  **kwargs: Any,
689
690
  ) -> None:
690
691
  """Run when LLM generates a new token.
@@ -783,7 +784,7 @@ class AsyncCallbackManagerForLLMRun(AsyncRunManager, LLMManagerMixin):
783
784
  self,
784
785
  token: str,
785
786
  *,
786
- chunk: Optional[Union[GenerationChunk, ChatGenerationChunk]] = None,
787
+ chunk: GenerationChunk | ChatGenerationChunk | None = None,
787
788
  **kwargs: Any,
788
789
  ) -> None:
789
790
  """Run when LLM generates a new token.
@@ -865,7 +866,7 @@ class AsyncCallbackManagerForLLMRun(AsyncRunManager, LLMManagerMixin):
865
866
  class CallbackManagerForChainRun(ParentRunManager, ChainManagerMixin):
866
867
  """Callback manager for chain run."""
867
868
 
868
- def on_chain_end(self, outputs: Union[dict[str, Any], Any], **kwargs: Any) -> None:
869
+ def on_chain_end(self, outputs: dict[str, Any] | Any, **kwargs: Any) -> None:
869
870
  """Run when chain ends running.
870
871
 
871
872
  Args:
@@ -973,9 +974,7 @@ class AsyncCallbackManagerForChainRun(AsyncParentRunManager, ChainManagerMixin):
973
974
  )
974
975
 
975
976
  @shielded
976
- async def on_chain_end(
977
- self, outputs: Union[dict[str, Any], Any], **kwargs: Any
978
- ) -> None:
977
+ async def on_chain_end(self, outputs: dict[str, Any] | Any, **kwargs: Any) -> None:
979
978
  """Run when a chain ends running.
980
979
 
981
980
  Args:
@@ -1320,7 +1319,7 @@ class CallbackManager(BaseCallbackManager):
1320
1319
  self,
1321
1320
  serialized: dict[str, Any],
1322
1321
  prompts: list[str],
1323
- run_id: Optional[UUID] = None,
1322
+ run_id: UUID | None = None,
1324
1323
  **kwargs: Any,
1325
1324
  ) -> list[CallbackManagerForLLMRun]:
1326
1325
  """Run when LLM starts running.
@@ -1372,7 +1371,7 @@ class CallbackManager(BaseCallbackManager):
1372
1371
  self,
1373
1372
  serialized: dict[str, Any],
1374
1373
  messages: list[list[BaseMessage]],
1375
- run_id: Optional[UUID] = None,
1374
+ run_id: UUID | None = None,
1376
1375
  **kwargs: Any,
1377
1376
  ) -> list[CallbackManagerForLLMRun]:
1378
1377
  """Run when chat model starts running.
@@ -1425,9 +1424,9 @@ class CallbackManager(BaseCallbackManager):
1425
1424
 
1426
1425
  def on_chain_start(
1427
1426
  self,
1428
- serialized: Optional[dict[str, Any]],
1429
- inputs: Union[dict[str, Any], Any],
1430
- run_id: Optional[UUID] = None,
1427
+ serialized: dict[str, Any] | None,
1428
+ inputs: dict[str, Any] | Any,
1429
+ run_id: UUID | None = None,
1431
1430
  **kwargs: Any,
1432
1431
  ) -> CallbackManagerForChainRun:
1433
1432
  """Run when chain starts running.
@@ -1471,11 +1470,11 @@ class CallbackManager(BaseCallbackManager):
1471
1470
  @override
1472
1471
  def on_tool_start(
1473
1472
  self,
1474
- serialized: Optional[dict[str, Any]],
1473
+ serialized: dict[str, Any] | None,
1475
1474
  input_str: str,
1476
- run_id: Optional[UUID] = None,
1477
- parent_run_id: Optional[UUID] = None,
1478
- inputs: Optional[dict[str, Any]] = None,
1475
+ run_id: UUID | None = None,
1476
+ parent_run_id: UUID | None = None,
1477
+ inputs: dict[str, Any] | None = None,
1479
1478
  **kwargs: Any,
1480
1479
  ) -> CallbackManagerForToolRun:
1481
1480
  """Run when tool starts running.
@@ -1528,10 +1527,10 @@ class CallbackManager(BaseCallbackManager):
1528
1527
  @override
1529
1528
  def on_retriever_start(
1530
1529
  self,
1531
- serialized: Optional[dict[str, Any]],
1530
+ serialized: dict[str, Any] | None,
1532
1531
  query: str,
1533
- run_id: Optional[UUID] = None,
1534
- parent_run_id: Optional[UUID] = None,
1532
+ run_id: UUID | None = None,
1533
+ parent_run_id: UUID | None = None,
1535
1534
  **kwargs: Any,
1536
1535
  ) -> CallbackManagerForRetrieverRun:
1537
1536
  """Run when the retriever starts running.
@@ -1577,7 +1576,7 @@ class CallbackManager(BaseCallbackManager):
1577
1576
  self,
1578
1577
  name: str,
1579
1578
  data: Any,
1580
- run_id: Optional[UUID] = None,
1579
+ run_id: UUID | None = None,
1581
1580
  **kwargs: Any,
1582
1581
  ) -> None:
1583
1582
  """Dispatch an adhoc event to the handlers (async version).
@@ -1594,7 +1593,7 @@ class CallbackManager(BaseCallbackManager):
1594
1593
  Raises:
1595
1594
  ValueError: If additional keyword arguments are passed.
1596
1595
 
1597
- .. versionadded:: 0.2.14
1596
+ !!! version-added "Added in version 0.2.14"
1598
1597
 
1599
1598
  """
1600
1599
  if not self.handlers:
@@ -1626,10 +1625,10 @@ class CallbackManager(BaseCallbackManager):
1626
1625
  inheritable_callbacks: Callbacks = None,
1627
1626
  local_callbacks: Callbacks = None,
1628
1627
  verbose: bool = False, # noqa: FBT001,FBT002
1629
- inheritable_tags: Optional[list[str]] = None,
1630
- local_tags: Optional[list[str]] = None,
1631
- inheritable_metadata: Optional[dict[str, Any]] = None,
1632
- local_metadata: Optional[dict[str, Any]] = None,
1628
+ inheritable_tags: list[str] | None = None,
1629
+ local_tags: list[str] | None = None,
1630
+ inheritable_metadata: dict[str, Any] | None = None,
1631
+ local_metadata: dict[str, Any] | None = None,
1633
1632
  ) -> CallbackManager:
1634
1633
  """Configure the callback manager.
1635
1634
 
@@ -1670,8 +1669,8 @@ class CallbackManagerForChainGroup(CallbackManager):
1670
1669
  def __init__(
1671
1670
  self,
1672
1671
  handlers: list[BaseCallbackHandler],
1673
- inheritable_handlers: Optional[list[BaseCallbackHandler]] = None,
1674
- parent_run_id: Optional[UUID] = None,
1672
+ inheritable_handlers: list[BaseCallbackHandler] | None = None,
1673
+ parent_run_id: UUID | None = None,
1675
1674
  *,
1676
1675
  parent_run_manager: CallbackManagerForChainRun,
1677
1676
  **kwargs: Any,
@@ -1775,7 +1774,7 @@ class CallbackManagerForChainGroup(CallbackManager):
1775
1774
  manager.add_handler(handler, inherit=True)
1776
1775
  return manager
1777
1776
 
1778
- def on_chain_end(self, outputs: Union[dict[str, Any], Any], **kwargs: Any) -> None:
1777
+ def on_chain_end(self, outputs: dict[str, Any] | Any, **kwargs: Any) -> None:
1779
1778
  """Run when traced chain group ends.
1780
1779
 
1781
1780
  Args:
@@ -1814,7 +1813,7 @@ class AsyncCallbackManager(BaseCallbackManager):
1814
1813
  self,
1815
1814
  serialized: dict[str, Any],
1816
1815
  prompts: list[str],
1817
- run_id: Optional[UUID] = None,
1816
+ run_id: UUID | None = None,
1818
1817
  **kwargs: Any,
1819
1818
  ) -> list[AsyncCallbackManagerForLLMRun]:
1820
1819
  """Run when LLM starts running.
@@ -1903,7 +1902,7 @@ class AsyncCallbackManager(BaseCallbackManager):
1903
1902
  self,
1904
1903
  serialized: dict[str, Any],
1905
1904
  messages: list[list[BaseMessage]],
1906
- run_id: Optional[UUID] = None,
1905
+ run_id: UUID | None = None,
1907
1906
  **kwargs: Any,
1908
1907
  ) -> list[AsyncCallbackManagerForLLMRun]:
1909
1908
  """Async run when LLM starts running.
@@ -1973,9 +1972,9 @@ class AsyncCallbackManager(BaseCallbackManager):
1973
1972
 
1974
1973
  async def on_chain_start(
1975
1974
  self,
1976
- serialized: Optional[dict[str, Any]],
1977
- inputs: Union[dict[str, Any], Any],
1978
- run_id: Optional[UUID] = None,
1975
+ serialized: dict[str, Any] | None,
1976
+ inputs: dict[str, Any] | Any,
1977
+ run_id: UUID | None = None,
1979
1978
  **kwargs: Any,
1980
1979
  ) -> AsyncCallbackManagerForChainRun:
1981
1980
  """Async run when chain starts running.
@@ -2020,10 +2019,10 @@ class AsyncCallbackManager(BaseCallbackManager):
2020
2019
  @override
2021
2020
  async def on_tool_start(
2022
2021
  self,
2023
- serialized: Optional[dict[str, Any]],
2022
+ serialized: dict[str, Any] | None,
2024
2023
  input_str: str,
2025
- run_id: Optional[UUID] = None,
2026
- parent_run_id: Optional[UUID] = None,
2024
+ run_id: UUID | None = None,
2025
+ parent_run_id: UUID | None = None,
2027
2026
  **kwargs: Any,
2028
2027
  ) -> AsyncCallbackManagerForToolRun:
2029
2028
  """Run when the tool starts running.
@@ -2071,7 +2070,7 @@ class AsyncCallbackManager(BaseCallbackManager):
2071
2070
  self,
2072
2071
  name: str,
2073
2072
  data: Any,
2074
- run_id: Optional[UUID] = None,
2073
+ run_id: UUID | None = None,
2075
2074
  **kwargs: Any,
2076
2075
  ) -> None:
2077
2076
  """Dispatch an adhoc event to the handlers (async version).
@@ -2088,7 +2087,7 @@ class AsyncCallbackManager(BaseCallbackManager):
2088
2087
  Raises:
2089
2088
  ValueError: If additional keyword arguments are passed.
2090
2089
 
2091
- .. versionadded:: 0.2.14
2090
+ !!! version-added "Added in version 0.2.14"
2092
2091
  """
2093
2092
  if not self.handlers:
2094
2093
  return
@@ -2116,10 +2115,10 @@ class AsyncCallbackManager(BaseCallbackManager):
2116
2115
  @override
2117
2116
  async def on_retriever_start(
2118
2117
  self,
2119
- serialized: Optional[dict[str, Any]],
2118
+ serialized: dict[str, Any] | None,
2120
2119
  query: str,
2121
- run_id: Optional[UUID] = None,
2122
- parent_run_id: Optional[UUID] = None,
2120
+ run_id: UUID | None = None,
2121
+ parent_run_id: UUID | None = None,
2123
2122
  **kwargs: Any,
2124
2123
  ) -> AsyncCallbackManagerForRetrieverRun:
2125
2124
  """Run when the retriever starts running.
@@ -2168,10 +2167,10 @@ class AsyncCallbackManager(BaseCallbackManager):
2168
2167
  inheritable_callbacks: Callbacks = None,
2169
2168
  local_callbacks: Callbacks = None,
2170
2169
  verbose: bool = False, # noqa: FBT001,FBT002
2171
- inheritable_tags: Optional[list[str]] = None,
2172
- local_tags: Optional[list[str]] = None,
2173
- inheritable_metadata: Optional[dict[str, Any]] = None,
2174
- local_metadata: Optional[dict[str, Any]] = None,
2170
+ inheritable_tags: list[str] | None = None,
2171
+ local_tags: list[str] | None = None,
2172
+ inheritable_metadata: dict[str, Any] | None = None,
2173
+ local_metadata: dict[str, Any] | None = None,
2175
2174
  ) -> AsyncCallbackManager:
2176
2175
  """Configure the async callback manager.
2177
2176
 
@@ -2211,8 +2210,8 @@ class AsyncCallbackManagerForChainGroup(AsyncCallbackManager):
2211
2210
  def __init__(
2212
2211
  self,
2213
2212
  handlers: list[BaseCallbackHandler],
2214
- inheritable_handlers: Optional[list[BaseCallbackHandler]] = None,
2215
- parent_run_id: Optional[UUID] = None,
2213
+ inheritable_handlers: list[BaseCallbackHandler] | None = None,
2214
+ parent_run_id: UUID | None = None,
2216
2215
  *,
2217
2216
  parent_run_manager: AsyncCallbackManagerForChainRun,
2218
2217
  **kwargs: Any,
@@ -2316,9 +2315,7 @@ class AsyncCallbackManagerForChainGroup(AsyncCallbackManager):
2316
2315
  manager.add_handler(handler, inherit=True)
2317
2316
  return manager
2318
2317
 
2319
- async def on_chain_end(
2320
- self, outputs: Union[dict[str, Any], Any], **kwargs: Any
2321
- ) -> None:
2318
+ async def on_chain_end(self, outputs: dict[str, Any] | Any, **kwargs: Any) -> None:
2322
2319
  """Run when traced chain group ends.
2323
2320
 
2324
2321
  Args:
@@ -2350,10 +2347,10 @@ def _configure(
2350
2347
  callback_manager_cls: type[T],
2351
2348
  inheritable_callbacks: Callbacks = None,
2352
2349
  local_callbacks: Callbacks = None,
2353
- inheritable_tags: Optional[list[str]] = None,
2354
- local_tags: Optional[list[str]] = None,
2355
- inheritable_metadata: Optional[dict[str, Any]] = None,
2356
- local_metadata: Optional[dict[str, Any]] = None,
2350
+ inheritable_tags: list[str] | None = None,
2351
+ local_tags: list[str] | None = None,
2352
+ inheritable_metadata: dict[str, Any] | None = None,
2353
+ local_metadata: dict[str, Any] | None = None,
2357
2354
  *,
2358
2355
  verbose: bool = False,
2359
2356
  ) -> T:
@@ -2383,7 +2380,7 @@ def _configure(
2383
2380
  tracing_context = get_tracing_context()
2384
2381
  tracing_metadata = tracing_context["metadata"]
2385
2382
  tracing_tags = tracing_context["tags"]
2386
- run_tree: Optional[Run] = tracing_context["parent"]
2383
+ run_tree: Run | None = tracing_context["parent"]
2387
2384
  parent_run_id = None if run_tree is None else run_tree.id
2388
2385
  callback_manager = callback_manager_cls(
2389
2386
  handlers=[],
@@ -2528,7 +2525,7 @@ def _configure(
2528
2525
 
2529
2526
 
2530
2527
  async def adispatch_custom_event(
2531
- name: str, data: Any, *, config: Optional[RunnableConfig] = None
2528
+ name: str, data: Any, *, config: RunnableConfig | None = None
2532
2529
  ) -> None:
2533
2530
  """Dispatch an adhoc event to the handlers.
2534
2531
 
@@ -2614,14 +2611,14 @@ async def adispatch_custom_event(
2614
2611
  ):
2615
2612
  print(event)
2616
2613
 
2617
- .. warning::
2614
+ !!! warning
2618
2615
  If using python <= 3.10 and async, you MUST
2619
2616
  specify the `config` parameter or the function will raise an error.
2620
2617
  This is due to a limitation in asyncio for python <= 3.10 that prevents
2621
2618
  LangChain from automatically propagating the config object on the user's
2622
2619
  behalf.
2623
2620
 
2624
- .. versionadded:: 0.2.15
2621
+ !!! version-added "Added in version 0.2.15"
2625
2622
 
2626
2623
  """
2627
2624
  # Import locally to prevent circular imports.
@@ -2654,7 +2651,7 @@ async def adispatch_custom_event(
2654
2651
 
2655
2652
 
2656
2653
  def dispatch_custom_event(
2657
- name: str, data: Any, *, config: Optional[RunnableConfig] = None
2654
+ name: str, data: Any, *, config: RunnableConfig | None = None
2658
2655
  ) -> None:
2659
2656
  """Dispatch an adhoc event.
2660
2657
 
@@ -2697,7 +2694,7 @@ def dispatch_custom_event(
2697
2694
  foo_ = RunnableLambda(foo)
2698
2695
  foo_.invoke({"a": "1"}, {"callbacks": [CustomCallbackManager()]})
2699
2696
 
2700
- .. versionadded:: 0.2.15
2697
+ !!! version-added "Added in version 0.2.15"
2701
2698
 
2702
2699
  """
2703
2700
  # Import locally to prevent circular imports.
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import TYPE_CHECKING, Any, Optional
5
+ from typing import TYPE_CHECKING, Any
6
6
 
7
7
  from typing_extensions import override
8
8
 
@@ -16,7 +16,7 @@ if TYPE_CHECKING:
16
16
  class StdOutCallbackHandler(BaseCallbackHandler):
17
17
  """Callback Handler that prints to std out."""
18
18
 
19
- def __init__(self, color: Optional[str] = None) -> None:
19
+ def __init__(self, color: str | None = None) -> None:
20
20
  """Initialize callback handler.
21
21
 
22
22
  Args:
@@ -55,7 +55,7 @@ class StdOutCallbackHandler(BaseCallbackHandler):
55
55
 
56
56
  @override
57
57
  def on_agent_action(
58
- self, action: AgentAction, color: Optional[str] = None, **kwargs: Any
58
+ self, action: AgentAction, color: str | None = None, **kwargs: Any
59
59
  ) -> Any:
60
60
  """Run on agent action.
61
61
 
@@ -70,9 +70,9 @@ class StdOutCallbackHandler(BaseCallbackHandler):
70
70
  def on_tool_end(
71
71
  self,
72
72
  output: Any,
73
- color: Optional[str] = None,
74
- observation_prefix: Optional[str] = None,
75
- llm_prefix: Optional[str] = None,
73
+ color: str | None = None,
74
+ observation_prefix: str | None = None,
75
+ llm_prefix: str | None = None,
76
76
  **kwargs: Any,
77
77
  ) -> None:
78
78
  """If not the final action, print out observation.
@@ -96,7 +96,7 @@ class StdOutCallbackHandler(BaseCallbackHandler):
96
96
  def on_text(
97
97
  self,
98
98
  text: str,
99
- color: Optional[str] = None,
99
+ color: str | None = None,
100
100
  end: str = "",
101
101
  **kwargs: Any,
102
102
  ) -> None:
@@ -112,7 +112,7 @@ class StdOutCallbackHandler(BaseCallbackHandler):
112
112
 
113
113
  @override
114
114
  def on_agent_finish(
115
- self, finish: AgentFinish, color: Optional[str] = None, **kwargs: Any
115
+ self, finish: AgentFinish, color: str | None = None, **kwargs: Any
116
116
  ) -> None:
117
117
  """Run on the agent end.
118
118
 
@@ -4,7 +4,7 @@ import threading
4
4
  from collections.abc import Generator
5
5
  from contextlib import contextmanager
6
6
  from contextvars import ContextVar
7
- from typing import Any, Optional
7
+ from typing import Any
8
8
 
9
9
  from typing_extensions import override
10
10
 
@@ -44,7 +44,7 @@ class UsageMetadataCallbackHandler(BaseCallbackHandler):
44
44
  'total_tokens': 29,
45
45
  'input_token_details': {'cache_read': 0, 'cache_creation': 0}}}
46
46
 
47
- .. versionadded:: 0.3.49
47
+ !!! version-added "Added in version 0.3.49"
48
48
 
49
49
  """
50
50
 
@@ -131,10 +131,10 @@ def get_usage_metadata_callback(
131
131
  'total_tokens': 29,
132
132
  'input_token_details': {'cache_read': 0, 'cache_creation': 0}}}
133
133
 
134
- .. versionadded:: 0.3.49
134
+ !!! version-added "Added in version 0.3.49"
135
135
 
136
136
  """
137
- usage_metadata_callback_var: ContextVar[Optional[UsageMetadataCallbackHandler]] = (
137
+ usage_metadata_callback_var: ContextVar[UsageMetadataCallbackHandler | None] = (
138
138
  ContextVar(name, default=None)
139
139
  )
140
140
  register_configure_hook(usage_metadata_callback_var, inheritable=True)
@@ -17,14 +17,12 @@
17
17
  from __future__ import annotations
18
18
 
19
19
  from abc import ABC, abstractmethod
20
- from typing import TYPE_CHECKING, Union
20
+ from typing import TYPE_CHECKING
21
21
 
22
22
  from pydantic import BaseModel, Field
23
23
 
24
24
  from langchain_core.messages import (
25
- AIMessage,
26
25
  BaseMessage,
27
- HumanMessage,
28
26
  get_buffer_string,
29
27
  )
30
28
  from langchain_core.runnables.config import run_in_executor
@@ -126,40 +124,6 @@ class BaseChatMessageHistory(ABC):
126
124
  """
127
125
  return await run_in_executor(None, lambda: self.messages)
128
126
 
129
- def add_user_message(self, message: Union[HumanMessage, str]) -> None:
130
- """Convenience method for adding a human message string to the store.
131
-
132
- .. note::
133
- This is a convenience method. Code should favor the bulk ``add_messages``
134
- interface instead to save on round-trips to the persistence layer.
135
-
136
- This method may be deprecated in a future release.
137
-
138
- Args:
139
- message: The human message to add to the store.
140
- """
141
- if isinstance(message, HumanMessage):
142
- self.add_message(message)
143
- else:
144
- self.add_message(HumanMessage(content=message))
145
-
146
- def add_ai_message(self, message: Union[AIMessage, str]) -> None:
147
- """Convenience method for adding an AI message string to the store.
148
-
149
- .. note::
150
- This is a convenience method. Code should favor the bulk ``add_messages``
151
- interface instead to save on round-trips to the persistence layer.
152
-
153
- This method may be deprecated in a future release.
154
-
155
- Args:
156
- message: The AI message to add.
157
- """
158
- if isinstance(message, AIMessage):
159
- self.add_message(message)
160
- else:
161
- self.add_message(AIMessage(content=message))
162
-
163
127
  def add_message(self, message: BaseMessage) -> None:
164
128
  """Add a Message object to the store.
165
129
 
@@ -3,7 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from abc import ABC, abstractmethod
6
- from typing import TYPE_CHECKING, Optional
6
+ from typing import TYPE_CHECKING
7
7
 
8
8
  from langchain_core.runnables import run_in_executor
9
9
 
@@ -51,7 +51,7 @@ class BaseLoader(ABC): # noqa: B024
51
51
  return [document async for document in self.alazy_load()]
52
52
 
53
53
  def load_and_split(
54
- self, text_splitter: Optional[TextSplitter] = None
54
+ self, text_splitter: TextSplitter | None = None
55
55
  ) -> list[Document]:
56
56
  """Load Documents and split into chunks. Chunks are returned as Documents.
57
57