langchain-core 1.0.0a6__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.
- langchain_core/_api/__init__.py +3 -3
- langchain_core/_api/beta_decorator.py +6 -6
- langchain_core/_api/deprecation.py +21 -29
- langchain_core/_api/path.py +3 -6
- langchain_core/_import_utils.py +2 -3
- langchain_core/agents.py +10 -11
- langchain_core/caches.py +7 -7
- langchain_core/callbacks/base.py +91 -91
- langchain_core/callbacks/file.py +11 -11
- langchain_core/callbacks/manager.py +86 -89
- langchain_core/callbacks/stdout.py +8 -8
- langchain_core/callbacks/usage.py +4 -4
- langchain_core/chat_history.py +1 -37
- langchain_core/document_loaders/base.py +2 -2
- langchain_core/document_loaders/langsmith.py +15 -15
- langchain_core/documents/base.py +16 -16
- langchain_core/documents/compressor.py +4 -4
- langchain_core/example_selectors/length_based.py +1 -1
- langchain_core/example_selectors/semantic_similarity.py +17 -19
- langchain_core/exceptions.py +3 -3
- langchain_core/globals.py +3 -151
- langchain_core/indexing/api.py +44 -43
- langchain_core/indexing/base.py +30 -30
- langchain_core/indexing/in_memory.py +3 -3
- langchain_core/language_models/_utils.py +5 -7
- langchain_core/language_models/base.py +18 -132
- langchain_core/language_models/chat_models.py +118 -227
- langchain_core/language_models/fake.py +11 -11
- langchain_core/language_models/fake_chat_models.py +35 -29
- langchain_core/language_models/llms.py +91 -201
- langchain_core/load/dump.py +1 -1
- langchain_core/load/load.py +11 -12
- langchain_core/load/mapping.py +2 -4
- langchain_core/load/serializable.py +2 -4
- langchain_core/messages/ai.py +17 -20
- langchain_core/messages/base.py +23 -25
- langchain_core/messages/block_translators/__init__.py +2 -5
- langchain_core/messages/block_translators/anthropic.py +3 -3
- langchain_core/messages/block_translators/bedrock_converse.py +2 -2
- langchain_core/messages/block_translators/langchain_v0.py +2 -2
- langchain_core/messages/block_translators/openai.py +6 -6
- langchain_core/messages/content.py +120 -124
- langchain_core/messages/human.py +7 -7
- langchain_core/messages/system.py +7 -7
- langchain_core/messages/tool.py +24 -24
- langchain_core/messages/utils.py +67 -79
- langchain_core/output_parsers/base.py +12 -14
- langchain_core/output_parsers/json.py +4 -4
- langchain_core/output_parsers/list.py +3 -5
- langchain_core/output_parsers/openai_functions.py +3 -3
- langchain_core/output_parsers/openai_tools.py +3 -3
- langchain_core/output_parsers/pydantic.py +2 -2
- langchain_core/output_parsers/transform.py +13 -15
- langchain_core/output_parsers/xml.py +7 -9
- langchain_core/outputs/chat_generation.py +4 -4
- langchain_core/outputs/chat_result.py +1 -3
- langchain_core/outputs/generation.py +2 -2
- langchain_core/outputs/llm_result.py +5 -5
- langchain_core/prompts/__init__.py +1 -5
- langchain_core/prompts/base.py +10 -15
- langchain_core/prompts/chat.py +31 -82
- langchain_core/prompts/dict.py +2 -2
- langchain_core/prompts/few_shot.py +5 -5
- langchain_core/prompts/few_shot_with_templates.py +4 -4
- langchain_core/prompts/loading.py +3 -5
- langchain_core/prompts/prompt.py +4 -16
- langchain_core/prompts/string.py +2 -1
- langchain_core/prompts/structured.py +16 -23
- langchain_core/rate_limiters.py +3 -4
- langchain_core/retrievers.py +14 -14
- langchain_core/runnables/base.py +928 -1042
- langchain_core/runnables/branch.py +36 -40
- langchain_core/runnables/config.py +27 -35
- langchain_core/runnables/configurable.py +108 -124
- langchain_core/runnables/fallbacks.py +76 -72
- langchain_core/runnables/graph.py +39 -45
- langchain_core/runnables/graph_ascii.py +9 -11
- langchain_core/runnables/graph_mermaid.py +18 -19
- langchain_core/runnables/graph_png.py +8 -9
- langchain_core/runnables/history.py +114 -127
- langchain_core/runnables/passthrough.py +113 -139
- langchain_core/runnables/retry.py +43 -48
- langchain_core/runnables/router.py +23 -28
- langchain_core/runnables/schema.py +42 -44
- langchain_core/runnables/utils.py +28 -31
- langchain_core/stores.py +9 -13
- langchain_core/structured_query.py +8 -8
- langchain_core/tools/base.py +62 -115
- langchain_core/tools/convert.py +31 -35
- langchain_core/tools/render.py +1 -1
- langchain_core/tools/retriever.py +4 -4
- langchain_core/tools/simple.py +13 -17
- langchain_core/tools/structured.py +12 -15
- langchain_core/tracers/base.py +62 -64
- langchain_core/tracers/context.py +17 -35
- langchain_core/tracers/core.py +49 -53
- langchain_core/tracers/evaluation.py +11 -11
- langchain_core/tracers/event_stream.py +58 -60
- langchain_core/tracers/langchain.py +13 -13
- langchain_core/tracers/log_stream.py +22 -24
- langchain_core/tracers/root_listeners.py +14 -14
- langchain_core/tracers/run_collector.py +2 -4
- langchain_core/tracers/schemas.py +8 -8
- langchain_core/tracers/stdout.py +2 -1
- langchain_core/utils/__init__.py +0 -3
- langchain_core/utils/_merge.py +2 -2
- langchain_core/utils/aiter.py +24 -28
- langchain_core/utils/env.py +4 -4
- langchain_core/utils/function_calling.py +31 -41
- langchain_core/utils/html.py +3 -4
- langchain_core/utils/input.py +3 -3
- langchain_core/utils/iter.py +15 -19
- langchain_core/utils/json.py +3 -2
- langchain_core/utils/json_schema.py +6 -6
- langchain_core/utils/mustache.py +3 -5
- langchain_core/utils/pydantic.py +16 -18
- langchain_core/utils/usage.py +1 -1
- langchain_core/utils/utils.py +29 -29
- langchain_core/vectorstores/base.py +18 -21
- langchain_core/vectorstores/in_memory.py +14 -87
- langchain_core/vectorstores/utils.py +2 -2
- langchain_core/version.py +1 -1
- {langchain_core-1.0.0a6.dist-info → langchain_core-1.0.0a7.dist-info}/METADATA +10 -21
- langchain_core-1.0.0a7.dist-info/RECORD +176 -0
- {langchain_core-1.0.0a6.dist-info → langchain_core-1.0.0a7.dist-info}/WHEEL +1 -1
- langchain_core/messages/block_translators/ollama.py +0 -47
- langchain_core/prompts/pipeline.py +0 -138
- langchain_core/tracers/langchain_v1.py +0 -31
- langchain_core/utils/loading.py +0 -35
- langchain_core-1.0.0a6.dist-info/RECORD +0 -181
- langchain_core-1.0.0a6.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,
|
|
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:
|
|
66
|
+
callback_manager: CallbackManager | None = None,
|
|
66
67
|
*,
|
|
67
|
-
inputs:
|
|
68
|
-
project_name:
|
|
69
|
-
example_id:
|
|
70
|
-
run_id:
|
|
71
|
-
tags:
|
|
72
|
-
metadata:
|
|
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
|
-
|
|
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:
|
|
150
|
+
callback_manager: AsyncCallbackManager | None = None,
|
|
150
151
|
*,
|
|
151
|
-
inputs:
|
|
152
|
-
project_name:
|
|
153
|
-
example_id:
|
|
154
|
-
run_id:
|
|
155
|
-
tags:
|
|
156
|
-
metadata:
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
468
|
-
tags:
|
|
469
|
-
inheritable_tags:
|
|
470
|
-
metadata:
|
|
471
|
-
inheritable_metadata:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
1429
|
-
inputs:
|
|
1430
|
-
run_id:
|
|
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:
|
|
1473
|
+
serialized: dict[str, Any] | None,
|
|
1475
1474
|
input_str: str,
|
|
1476
|
-
run_id:
|
|
1477
|
-
parent_run_id:
|
|
1478
|
-
inputs:
|
|
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:
|
|
1530
|
+
serialized: dict[str, Any] | None,
|
|
1532
1531
|
query: str,
|
|
1533
|
-
run_id:
|
|
1534
|
-
parent_run_id:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
1630
|
-
local_tags:
|
|
1631
|
-
inheritable_metadata:
|
|
1632
|
-
local_metadata:
|
|
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:
|
|
1674
|
-
parent_run_id:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
1977
|
-
inputs:
|
|
1978
|
-
run_id:
|
|
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:
|
|
2022
|
+
serialized: dict[str, Any] | None,
|
|
2024
2023
|
input_str: str,
|
|
2025
|
-
run_id:
|
|
2026
|
-
parent_run_id:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
2118
|
+
serialized: dict[str, Any] | None,
|
|
2120
2119
|
query: str,
|
|
2121
|
-
run_id:
|
|
2122
|
-
parent_run_id:
|
|
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:
|
|
2172
|
-
local_tags:
|
|
2173
|
-
inheritable_metadata:
|
|
2174
|
-
local_metadata:
|
|
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:
|
|
2215
|
-
parent_run_id:
|
|
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:
|
|
2354
|
-
local_tags:
|
|
2355
|
-
inheritable_metadata:
|
|
2356
|
-
local_metadata:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
74
|
-
observation_prefix:
|
|
75
|
-
llm_prefix:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
134
|
+
!!! version-added "Added in version 0.3.49"
|
|
135
135
|
|
|
136
136
|
"""
|
|
137
|
-
usage_metadata_callback_var: ContextVar[
|
|
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)
|
langchain_core/chat_history.py
CHANGED
|
@@ -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
|
|
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
|
|
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:
|
|
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
|
|