langchain-core 1.0.0a7__py3-none-any.whl → 1.0.0rc1__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 (135) hide show
  1. langchain_core/__init__.py +1 -1
  2. langchain_core/_api/__init__.py +0 -1
  3. langchain_core/_api/beta_decorator.py +17 -20
  4. langchain_core/_api/deprecation.py +30 -35
  5. langchain_core/_import_utils.py +1 -1
  6. langchain_core/agents.py +7 -6
  7. langchain_core/caches.py +4 -10
  8. langchain_core/callbacks/__init__.py +1 -8
  9. langchain_core/callbacks/base.py +232 -243
  10. langchain_core/callbacks/file.py +33 -33
  11. langchain_core/callbacks/manager.py +353 -416
  12. langchain_core/callbacks/stdout.py +21 -22
  13. langchain_core/callbacks/streaming_stdout.py +32 -32
  14. langchain_core/callbacks/usage.py +54 -51
  15. langchain_core/chat_history.py +76 -55
  16. langchain_core/document_loaders/langsmith.py +21 -21
  17. langchain_core/documents/__init__.py +0 -1
  18. langchain_core/documents/base.py +37 -40
  19. langchain_core/documents/transformers.py +28 -29
  20. langchain_core/embeddings/fake.py +46 -52
  21. langchain_core/exceptions.py +5 -5
  22. langchain_core/indexing/api.py +11 -11
  23. langchain_core/indexing/base.py +24 -24
  24. langchain_core/language_models/__init__.py +0 -2
  25. langchain_core/language_models/_utils.py +51 -53
  26. langchain_core/language_models/base.py +23 -24
  27. langchain_core/language_models/chat_models.py +121 -144
  28. langchain_core/language_models/fake_chat_models.py +5 -5
  29. langchain_core/language_models/llms.py +10 -12
  30. langchain_core/load/dump.py +1 -1
  31. langchain_core/load/load.py +16 -16
  32. langchain_core/load/serializable.py +35 -34
  33. langchain_core/messages/__init__.py +1 -16
  34. langchain_core/messages/ai.py +105 -104
  35. langchain_core/messages/base.py +26 -26
  36. langchain_core/messages/block_translators/__init__.py +17 -17
  37. langchain_core/messages/block_translators/anthropic.py +2 -2
  38. langchain_core/messages/block_translators/bedrock_converse.py +2 -2
  39. langchain_core/messages/block_translators/google_genai.py +2 -2
  40. langchain_core/messages/block_translators/groq.py +117 -21
  41. langchain_core/messages/block_translators/langchain_v0.py +2 -2
  42. langchain_core/messages/block_translators/openai.py +4 -4
  43. langchain_core/messages/chat.py +1 -1
  44. langchain_core/messages/content.py +189 -193
  45. langchain_core/messages/function.py +5 -5
  46. langchain_core/messages/human.py +15 -17
  47. langchain_core/messages/modifier.py +1 -1
  48. langchain_core/messages/system.py +12 -14
  49. langchain_core/messages/tool.py +45 -49
  50. langchain_core/messages/utils.py +384 -396
  51. langchain_core/output_parsers/__init__.py +1 -14
  52. langchain_core/output_parsers/base.py +22 -23
  53. langchain_core/output_parsers/json.py +3 -3
  54. langchain_core/output_parsers/list.py +1 -1
  55. langchain_core/output_parsers/openai_functions.py +46 -44
  56. langchain_core/output_parsers/openai_tools.py +7 -7
  57. langchain_core/output_parsers/pydantic.py +10 -11
  58. langchain_core/output_parsers/string.py +1 -1
  59. langchain_core/output_parsers/transform.py +2 -2
  60. langchain_core/output_parsers/xml.py +1 -1
  61. langchain_core/outputs/__init__.py +1 -1
  62. langchain_core/outputs/chat_generation.py +14 -14
  63. langchain_core/outputs/generation.py +5 -5
  64. langchain_core/outputs/llm_result.py +5 -5
  65. langchain_core/prompt_values.py +5 -5
  66. langchain_core/prompts/__init__.py +3 -23
  67. langchain_core/prompts/base.py +32 -37
  68. langchain_core/prompts/chat.py +216 -222
  69. langchain_core/prompts/dict.py +2 -2
  70. langchain_core/prompts/few_shot.py +76 -83
  71. langchain_core/prompts/few_shot_with_templates.py +6 -8
  72. langchain_core/prompts/image.py +11 -13
  73. langchain_core/prompts/loading.py +1 -1
  74. langchain_core/prompts/message.py +2 -2
  75. langchain_core/prompts/prompt.py +14 -16
  76. langchain_core/prompts/string.py +19 -7
  77. langchain_core/prompts/structured.py +24 -25
  78. langchain_core/rate_limiters.py +36 -38
  79. langchain_core/retrievers.py +41 -182
  80. langchain_core/runnables/base.py +565 -590
  81. langchain_core/runnables/branch.py +7 -7
  82. langchain_core/runnables/config.py +37 -44
  83. langchain_core/runnables/configurable.py +8 -9
  84. langchain_core/runnables/fallbacks.py +8 -8
  85. langchain_core/runnables/graph.py +28 -27
  86. langchain_core/runnables/graph_ascii.py +19 -18
  87. langchain_core/runnables/graph_mermaid.py +20 -31
  88. langchain_core/runnables/graph_png.py +7 -7
  89. langchain_core/runnables/history.py +20 -20
  90. langchain_core/runnables/passthrough.py +8 -8
  91. langchain_core/runnables/retry.py +3 -3
  92. langchain_core/runnables/router.py +1 -1
  93. langchain_core/runnables/schema.py +33 -33
  94. langchain_core/runnables/utils.py +30 -34
  95. langchain_core/stores.py +72 -102
  96. langchain_core/sys_info.py +27 -29
  97. langchain_core/tools/__init__.py +1 -14
  98. langchain_core/tools/base.py +63 -63
  99. langchain_core/tools/convert.py +92 -92
  100. langchain_core/tools/render.py +9 -9
  101. langchain_core/tools/retriever.py +1 -1
  102. langchain_core/tools/simple.py +6 -7
  103. langchain_core/tools/structured.py +17 -18
  104. langchain_core/tracers/__init__.py +1 -9
  105. langchain_core/tracers/base.py +35 -35
  106. langchain_core/tracers/context.py +12 -17
  107. langchain_core/tracers/event_stream.py +3 -3
  108. langchain_core/tracers/langchain.py +8 -8
  109. langchain_core/tracers/log_stream.py +17 -18
  110. langchain_core/tracers/memory_stream.py +2 -2
  111. langchain_core/tracers/schemas.py +0 -129
  112. langchain_core/utils/aiter.py +31 -31
  113. langchain_core/utils/env.py +5 -5
  114. langchain_core/utils/function_calling.py +48 -120
  115. langchain_core/utils/html.py +4 -4
  116. langchain_core/utils/input.py +2 -2
  117. langchain_core/utils/interactive_env.py +1 -1
  118. langchain_core/utils/iter.py +19 -19
  119. langchain_core/utils/json.py +1 -1
  120. langchain_core/utils/json_schema.py +2 -2
  121. langchain_core/utils/mustache.py +5 -5
  122. langchain_core/utils/pydantic.py +17 -17
  123. langchain_core/utils/strings.py +4 -4
  124. langchain_core/utils/utils.py +25 -28
  125. langchain_core/vectorstores/base.py +43 -64
  126. langchain_core/vectorstores/in_memory.py +83 -85
  127. langchain_core/version.py +1 -1
  128. {langchain_core-1.0.0a7.dist-info → langchain_core-1.0.0rc1.dist-info}/METADATA +23 -11
  129. langchain_core-1.0.0rc1.dist-info/RECORD +172 -0
  130. langchain_core/memory.py +0 -120
  131. langchain_core/pydantic_v1/__init__.py +0 -30
  132. langchain_core/pydantic_v1/dataclasses.py +0 -23
  133. langchain_core/pydantic_v1/main.py +0 -23
  134. langchain_core-1.0.0a7.dist-info/RECORD +0 -176
  135. {langchain_core-1.0.0a7.dist-info → langchain_core-1.0.0rc1.dist-info}/WHEEL +0 -0
@@ -3,25 +3,10 @@
3
3
  It is more general than a vector store. A retriever does not need to be able to
4
4
  store documents, only to return (or retrieve) it. Vector stores can be used as
5
5
  the backbone of a retriever, but there are other types of retrievers as well.
6
-
7
- **Class hierarchy:**
8
-
9
- .. code-block::
10
-
11
- BaseRetriever --> <name>Retriever # Examples: ArxivRetriever, MergerRetriever
12
-
13
- **Main helpers:**
14
-
15
- .. code-block::
16
-
17
- RetrieverInput, RetrieverOutput, RetrieverLike, RetrieverOutputLike,
18
- Document, Serializable, Callbacks,
19
- CallbackManagerForRetrieverRun, AsyncCallbackManagerForRetrieverRun
20
6
  """
21
7
 
22
8
  from __future__ import annotations
23
9
 
24
- import warnings
25
10
  from abc import ABC, abstractmethod
26
11
  from inspect import signature
27
12
  from typing import TYPE_CHECKING, Any
@@ -29,8 +14,6 @@ from typing import TYPE_CHECKING, Any
29
14
  from pydantic import ConfigDict
30
15
  from typing_extensions import Self, TypedDict, override
31
16
 
32
- from langchain_core._api import deprecated
33
- from langchain_core.callbacks import Callbacks
34
17
  from langchain_core.callbacks.manager import AsyncCallbackManager, CallbackManager
35
18
  from langchain_core.documents import Document
36
19
  from langchain_core.runnables import (
@@ -87,48 +70,45 @@ class BaseRetriever(RunnableSerializable[RetrieverInput, RetrieverOutput], ABC):
87
70
 
88
71
  Example: A retriever that returns the first 5 documents from a list of documents
89
72
 
90
- .. code-block:: python
73
+ ```python
74
+ from langchain_core.documents import Document
75
+ from langchain_core.retrievers import BaseRetriever
91
76
 
92
- from langchain_core.documents import Document
93
- from langchain_core.retrievers import BaseRetriever
77
+ class SimpleRetriever(BaseRetriever):
78
+ docs: list[Document]
79
+ k: int = 5
94
80
 
95
- class SimpleRetriever(BaseRetriever):
96
- docs: list[Document]
97
- k: int = 5
81
+ def _get_relevant_documents(self, query: str) -> list[Document]:
82
+ \"\"\"Return the first k documents from the list of documents\"\"\"
83
+ return self.docs[:self.k]
98
84
 
99
- def _get_relevant_documents(self, query: str) -> list[Document]:
100
- \"\"\"Return the first k documents from the list of documents\"\"\"
101
- return self.docs[:self.k]
102
-
103
- async def _aget_relevant_documents(self, query: str) -> list[Document]:
104
- \"\"\"(Optional) async native implementation.\"\"\"
105
- return self.docs[:self.k]
85
+ async def _aget_relevant_documents(self, query: str) -> list[Document]:
86
+ \"\"\"(Optional) async native implementation.\"\"\"
87
+ return self.docs[:self.k]
88
+ ```
106
89
 
107
90
  Example: A simple retriever based on a scikit-learn vectorizer
108
91
 
109
- .. code-block:: python
110
-
111
- from sklearn.metrics.pairwise import cosine_similarity
112
-
92
+ ```python
93
+ from sklearn.metrics.pairwise import cosine_similarity
113
94
 
114
- class TFIDFRetriever(BaseRetriever, BaseModel):
115
- vectorizer: Any
116
- docs: list[Document]
117
- tfidf_array: Any
118
- k: int = 4
119
95
 
120
- class Config:
121
- arbitrary_types_allowed = True
96
+ class TFIDFRetriever(BaseRetriever, BaseModel):
97
+ vectorizer: Any
98
+ docs: list[Document]
99
+ tfidf_array: Any
100
+ k: int = 4
122
101
 
123
- def _get_relevant_documents(self, query: str) -> list[Document]:
124
- # Ip -- (n_docs,x), Op -- (n_docs,n_Feats)
125
- query_vec = self.vectorizer.transform([query])
126
- # Op -- (n_docs,1) -- Cosine Sim with each doc
127
- results = cosine_similarity(self.tfidf_array, query_vec).reshape(
128
- (-1,)
129
- )
130
- return [self.docs[i] for i in results.argsort()[-self.k :][::-1]]
102
+ class Config:
103
+ arbitrary_types_allowed = True
131
104
 
105
+ def _get_relevant_documents(self, query: str) -> list[Document]:
106
+ # Ip -- (n_docs,x), Op -- (n_docs,n_Feats)
107
+ query_vec = self.vectorizer.transform([query])
108
+ # Op -- (n_docs,1) -- Cosine Sim with each doc
109
+ results = cosine_similarity(self.tfidf_array, query_vec).reshape((-1,))
110
+ return [self.docs[i] for i in results.argsort()[-self.k :][::-1]]
111
+ ```
132
112
  """
133
113
 
134
114
  model_config = ConfigDict(
@@ -138,14 +118,14 @@ class BaseRetriever(RunnableSerializable[RetrieverInput, RetrieverOutput], ABC):
138
118
  _new_arg_supported: bool = False
139
119
  _expects_other_args: bool = False
140
120
  tags: list[str] | None = None
141
- """Optional list of tags associated with the retriever. Defaults to None.
121
+ """Optional list of tags associated with the retriever.
142
122
  These tags will be associated with each call to this retriever,
143
123
  and passed as arguments to the handlers defined in `callbacks`.
144
124
  You can use these to eg identify a specific instance of a retriever with its
145
125
  use case.
146
126
  """
147
127
  metadata: dict[str, Any] | None = None
148
- """Optional metadata associated with the retriever. Defaults to None.
128
+ """Optional metadata associated with the retriever.
149
129
  This metadata will be associated with each call to this retriever,
150
130
  and passed as arguments to the handlers defined in `callbacks`.
151
131
  You can use these to eg identify a specific instance of a retriever with its
@@ -155,35 +135,6 @@ class BaseRetriever(RunnableSerializable[RetrieverInput, RetrieverOutput], ABC):
155
135
  @override
156
136
  def __init_subclass__(cls, **kwargs: Any) -> None:
157
137
  super().__init_subclass__(**kwargs)
158
- # Version upgrade for old retrievers that implemented the public
159
- # methods directly.
160
- if cls.get_relevant_documents != BaseRetriever.get_relevant_documents:
161
- warnings.warn(
162
- "Retrievers must implement abstract `_get_relevant_documents` method"
163
- " instead of `get_relevant_documents`",
164
- DeprecationWarning,
165
- stacklevel=4,
166
- )
167
- swap = cls.get_relevant_documents
168
- cls.get_relevant_documents = ( # type: ignore[method-assign]
169
- BaseRetriever.get_relevant_documents
170
- )
171
- cls._get_relevant_documents = swap # type: ignore[method-assign]
172
- if (
173
- hasattr(cls, "aget_relevant_documents")
174
- and cls.aget_relevant_documents != BaseRetriever.aget_relevant_documents
175
- ):
176
- warnings.warn(
177
- "Retrievers must implement abstract `_aget_relevant_documents` method"
178
- " instead of `aget_relevant_documents`",
179
- DeprecationWarning,
180
- stacklevel=4,
181
- )
182
- aswap = cls.aget_relevant_documents
183
- cls.aget_relevant_documents = ( # type: ignore[method-assign]
184
- BaseRetriever.aget_relevant_documents
185
- )
186
- cls._aget_relevant_documents = aswap # type: ignore[method-assign]
187
138
  parameters = signature(cls._get_relevant_documents).parameters
188
139
  cls._new_arg_supported = parameters.get("run_manager") is not None
189
140
  if (
@@ -224,18 +175,16 @@ class BaseRetriever(RunnableSerializable[RetrieverInput, RetrieverOutput], ABC):
224
175
 
225
176
  Args:
226
177
  input: The query string.
227
- config: Configuration for the retriever. Defaults to None.
228
- kwargs: Additional arguments to pass to the retriever.
178
+ config: Configuration for the retriever.
179
+ **kwargs: Additional arguments to pass to the retriever.
229
180
 
230
181
  Returns:
231
182
  List of relevant documents.
232
183
 
233
184
  Examples:
234
-
235
- .. code-block:: python
236
-
237
- retriever.invoke("query")
238
-
185
+ ```python
186
+ retriever.invoke("query")
187
+ ```
239
188
  """
240
189
  config = ensure_config(config)
241
190
  inheritable_metadata = {
@@ -287,18 +236,16 @@ class BaseRetriever(RunnableSerializable[RetrieverInput, RetrieverOutput], ABC):
287
236
 
288
237
  Args:
289
238
  input: The query string.
290
- config: Configuration for the retriever. Defaults to None.
291
- kwargs: Additional arguments to pass to the retriever.
239
+ config: Configuration for the retriever.
240
+ **kwargs: Additional arguments to pass to the retriever.
292
241
 
293
242
  Returns:
294
243
  List of relevant documents.
295
244
 
296
245
  Examples:
297
-
298
- .. code-block:: python
299
-
300
- await retriever.ainvoke("query")
301
-
246
+ ```python
247
+ await retriever.ainvoke("query")
248
+ ```
302
249
  """
303
250
  config = ensure_config(config)
304
251
  inheritable_metadata = {
@@ -369,91 +316,3 @@ class BaseRetriever(RunnableSerializable[RetrieverInput, RetrieverOutput], ABC):
369
316
  query,
370
317
  run_manager=run_manager.get_sync(),
371
318
  )
372
-
373
- @deprecated(since="0.1.46", alternative="invoke", removal="1.0")
374
- def get_relevant_documents(
375
- self,
376
- query: str,
377
- *,
378
- callbacks: Callbacks = None,
379
- tags: list[str] | None = None,
380
- metadata: dict[str, Any] | None = None,
381
- run_name: str | None = None,
382
- **kwargs: Any,
383
- ) -> list[Document]:
384
- """Retrieve documents relevant to a query.
385
-
386
- Users should favor using `.invoke` or `.batch` rather than
387
- `get_relevant_documents directly`.
388
-
389
- Args:
390
- query: string to find relevant documents for.
391
- callbacks: Callback manager or list of callbacks. Defaults to None.
392
- tags: Optional list of tags associated with the retriever.
393
- These tags will be associated with each call to this retriever,
394
- and passed as arguments to the handlers defined in `callbacks`.
395
- Defaults to None.
396
- metadata: Optional metadata associated with the retriever.
397
- This metadata will be associated with each call to this retriever,
398
- and passed as arguments to the handlers defined in `callbacks`.
399
- Defaults to None.
400
- run_name: Optional name for the run. Defaults to None.
401
- kwargs: Additional arguments to pass to the retriever.
402
-
403
- Returns:
404
- List of relevant documents.
405
- """
406
- config: RunnableConfig = {}
407
- if callbacks:
408
- config["callbacks"] = callbacks
409
- if tags:
410
- config["tags"] = tags
411
- if metadata:
412
- config["metadata"] = metadata
413
- if run_name:
414
- config["run_name"] = run_name
415
- return self.invoke(query, config, **kwargs)
416
-
417
- @deprecated(since="0.1.46", alternative="ainvoke", removal="1.0")
418
- async def aget_relevant_documents(
419
- self,
420
- query: str,
421
- *,
422
- callbacks: Callbacks = None,
423
- tags: list[str] | None = None,
424
- metadata: dict[str, Any] | None = None,
425
- run_name: str | None = None,
426
- **kwargs: Any,
427
- ) -> list[Document]:
428
- """Asynchronously get documents relevant to a query.
429
-
430
- Users should favor using `.ainvoke` or `.abatch` rather than
431
- `aget_relevant_documents directly`.
432
-
433
- Args:
434
- query: string to find relevant documents for.
435
- callbacks: Callback manager or list of callbacks.
436
- tags: Optional list of tags associated with the retriever.
437
- These tags will be associated with each call to this retriever,
438
- and passed as arguments to the handlers defined in `callbacks`.
439
- Defaults to None.
440
- metadata: Optional metadata associated with the retriever.
441
- This metadata will be associated with each call to this retriever,
442
- and passed as arguments to the handlers defined in `callbacks`.
443
- Defaults to None.
444
- run_name: Optional name for the run. Defaults to None.
445
- kwargs: Additional arguments to pass to the retriever.
446
-
447
- Returns:
448
- List of relevant documents.
449
- """
450
- config: RunnableConfig = {}
451
- if callbacks:
452
- config["callbacks"] = callbacks
453
- if tags:
454
- config["tags"] = tags
455
- if metadata:
456
- config["metadata"] = metadata
457
- if run_name:
458
- config["run_name"] = run_name
459
- return await self.ainvoke(query, config, **kwargs)