langchain-core 1.0.0a6__py3-none-any.whl → 1.0.3__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.
Files changed (165) hide show
  1. langchain_core/__init__.py +1 -1
  2. langchain_core/_api/__init__.py +3 -4
  3. langchain_core/_api/beta_decorator.py +23 -26
  4. langchain_core/_api/deprecation.py +51 -64
  5. langchain_core/_api/path.py +3 -6
  6. langchain_core/_import_utils.py +3 -4
  7. langchain_core/agents.py +20 -22
  8. langchain_core/caches.py +65 -66
  9. langchain_core/callbacks/__init__.py +1 -8
  10. langchain_core/callbacks/base.py +321 -336
  11. langchain_core/callbacks/file.py +44 -44
  12. langchain_core/callbacks/manager.py +436 -513
  13. langchain_core/callbacks/stdout.py +29 -30
  14. langchain_core/callbacks/streaming_stdout.py +32 -32
  15. langchain_core/callbacks/usage.py +60 -57
  16. langchain_core/chat_history.py +53 -68
  17. langchain_core/document_loaders/base.py +27 -25
  18. langchain_core/document_loaders/blob_loaders.py +1 -1
  19. langchain_core/document_loaders/langsmith.py +44 -48
  20. langchain_core/documents/__init__.py +23 -3
  21. langchain_core/documents/base.py +98 -90
  22. langchain_core/documents/compressor.py +10 -10
  23. langchain_core/documents/transformers.py +34 -35
  24. langchain_core/embeddings/fake.py +50 -54
  25. langchain_core/example_selectors/length_based.py +1 -1
  26. langchain_core/example_selectors/semantic_similarity.py +28 -32
  27. langchain_core/exceptions.py +21 -20
  28. langchain_core/globals.py +3 -151
  29. langchain_core/indexing/__init__.py +1 -1
  30. langchain_core/indexing/api.py +121 -126
  31. langchain_core/indexing/base.py +73 -75
  32. langchain_core/indexing/in_memory.py +4 -6
  33. langchain_core/language_models/__init__.py +14 -29
  34. langchain_core/language_models/_utils.py +58 -61
  35. langchain_core/language_models/base.py +53 -162
  36. langchain_core/language_models/chat_models.py +298 -387
  37. langchain_core/language_models/fake.py +11 -11
  38. langchain_core/language_models/fake_chat_models.py +42 -36
  39. langchain_core/language_models/llms.py +125 -235
  40. langchain_core/load/dump.py +9 -12
  41. langchain_core/load/load.py +18 -28
  42. langchain_core/load/mapping.py +2 -4
  43. langchain_core/load/serializable.py +42 -40
  44. langchain_core/messages/__init__.py +10 -16
  45. langchain_core/messages/ai.py +148 -148
  46. langchain_core/messages/base.py +53 -51
  47. langchain_core/messages/block_translators/__init__.py +19 -22
  48. langchain_core/messages/block_translators/anthropic.py +6 -6
  49. langchain_core/messages/block_translators/bedrock_converse.py +5 -5
  50. langchain_core/messages/block_translators/google_genai.py +10 -7
  51. langchain_core/messages/block_translators/google_vertexai.py +4 -32
  52. langchain_core/messages/block_translators/groq.py +117 -21
  53. langchain_core/messages/block_translators/langchain_v0.py +5 -5
  54. langchain_core/messages/block_translators/openai.py +11 -11
  55. langchain_core/messages/chat.py +2 -6
  56. langchain_core/messages/content.py +337 -328
  57. langchain_core/messages/function.py +6 -10
  58. langchain_core/messages/human.py +24 -31
  59. langchain_core/messages/modifier.py +2 -2
  60. langchain_core/messages/system.py +19 -29
  61. langchain_core/messages/tool.py +74 -90
  62. langchain_core/messages/utils.py +474 -504
  63. langchain_core/output_parsers/__init__.py +13 -10
  64. langchain_core/output_parsers/base.py +61 -61
  65. langchain_core/output_parsers/format_instructions.py +9 -4
  66. langchain_core/output_parsers/json.py +12 -10
  67. langchain_core/output_parsers/list.py +21 -23
  68. langchain_core/output_parsers/openai_functions.py +49 -47
  69. langchain_core/output_parsers/openai_tools.py +16 -21
  70. langchain_core/output_parsers/pydantic.py +13 -14
  71. langchain_core/output_parsers/string.py +5 -5
  72. langchain_core/output_parsers/transform.py +15 -17
  73. langchain_core/output_parsers/xml.py +35 -34
  74. langchain_core/outputs/__init__.py +1 -1
  75. langchain_core/outputs/chat_generation.py +18 -18
  76. langchain_core/outputs/chat_result.py +1 -3
  77. langchain_core/outputs/generation.py +10 -11
  78. langchain_core/outputs/llm_result.py +10 -10
  79. langchain_core/prompt_values.py +11 -17
  80. langchain_core/prompts/__init__.py +3 -27
  81. langchain_core/prompts/base.py +48 -56
  82. langchain_core/prompts/chat.py +275 -325
  83. langchain_core/prompts/dict.py +5 -5
  84. langchain_core/prompts/few_shot.py +81 -88
  85. langchain_core/prompts/few_shot_with_templates.py +11 -13
  86. langchain_core/prompts/image.py +12 -14
  87. langchain_core/prompts/loading.py +4 -6
  88. langchain_core/prompts/message.py +3 -3
  89. langchain_core/prompts/prompt.py +24 -39
  90. langchain_core/prompts/string.py +26 -10
  91. langchain_core/prompts/structured.py +49 -53
  92. langchain_core/rate_limiters.py +51 -60
  93. langchain_core/retrievers.py +61 -198
  94. langchain_core/runnables/base.py +1476 -1626
  95. langchain_core/runnables/branch.py +53 -57
  96. langchain_core/runnables/config.py +72 -89
  97. langchain_core/runnables/configurable.py +120 -137
  98. langchain_core/runnables/fallbacks.py +83 -79
  99. langchain_core/runnables/graph.py +91 -97
  100. langchain_core/runnables/graph_ascii.py +27 -28
  101. langchain_core/runnables/graph_mermaid.py +38 -50
  102. langchain_core/runnables/graph_png.py +15 -16
  103. langchain_core/runnables/history.py +135 -148
  104. langchain_core/runnables/passthrough.py +124 -150
  105. langchain_core/runnables/retry.py +46 -51
  106. langchain_core/runnables/router.py +25 -30
  107. langchain_core/runnables/schema.py +75 -80
  108. langchain_core/runnables/utils.py +60 -67
  109. langchain_core/stores.py +85 -121
  110. langchain_core/structured_query.py +8 -8
  111. langchain_core/sys_info.py +27 -29
  112. langchain_core/tools/__init__.py +1 -14
  113. langchain_core/tools/base.py +284 -229
  114. langchain_core/tools/convert.py +160 -155
  115. langchain_core/tools/render.py +10 -10
  116. langchain_core/tools/retriever.py +12 -11
  117. langchain_core/tools/simple.py +19 -24
  118. langchain_core/tools/structured.py +32 -39
  119. langchain_core/tracers/__init__.py +1 -9
  120. langchain_core/tracers/base.py +97 -99
  121. langchain_core/tracers/context.py +29 -52
  122. langchain_core/tracers/core.py +49 -53
  123. langchain_core/tracers/evaluation.py +11 -11
  124. langchain_core/tracers/event_stream.py +65 -64
  125. langchain_core/tracers/langchain.py +21 -21
  126. langchain_core/tracers/log_stream.py +45 -45
  127. langchain_core/tracers/memory_stream.py +3 -3
  128. langchain_core/tracers/root_listeners.py +16 -16
  129. langchain_core/tracers/run_collector.py +2 -4
  130. langchain_core/tracers/schemas.py +0 -129
  131. langchain_core/tracers/stdout.py +3 -3
  132. langchain_core/utils/__init__.py +1 -4
  133. langchain_core/utils/_merge.py +2 -2
  134. langchain_core/utils/aiter.py +57 -61
  135. langchain_core/utils/env.py +9 -9
  136. langchain_core/utils/function_calling.py +89 -186
  137. langchain_core/utils/html.py +7 -8
  138. langchain_core/utils/input.py +6 -6
  139. langchain_core/utils/interactive_env.py +1 -1
  140. langchain_core/utils/iter.py +36 -40
  141. langchain_core/utils/json.py +4 -3
  142. langchain_core/utils/json_schema.py +9 -9
  143. langchain_core/utils/mustache.py +8 -10
  144. langchain_core/utils/pydantic.py +33 -35
  145. langchain_core/utils/strings.py +6 -9
  146. langchain_core/utils/usage.py +1 -1
  147. langchain_core/utils/utils.py +66 -62
  148. langchain_core/vectorstores/base.py +182 -216
  149. langchain_core/vectorstores/in_memory.py +101 -176
  150. langchain_core/vectorstores/utils.py +5 -5
  151. langchain_core/version.py +1 -1
  152. langchain_core-1.0.3.dist-info/METADATA +69 -0
  153. langchain_core-1.0.3.dist-info/RECORD +172 -0
  154. {langchain_core-1.0.0a6.dist-info → langchain_core-1.0.3.dist-info}/WHEEL +1 -1
  155. langchain_core/memory.py +0 -120
  156. langchain_core/messages/block_translators/ollama.py +0 -47
  157. langchain_core/prompts/pipeline.py +0 -138
  158. langchain_core/pydantic_v1/__init__.py +0 -30
  159. langchain_core/pydantic_v1/dataclasses.py +0 -23
  160. langchain_core/pydantic_v1/main.py +0 -23
  161. langchain_core/tracers/langchain_v1.py +0 -31
  162. langchain_core/utils/loading.py +0 -35
  163. langchain_core-1.0.0a6.dist-info/METADATA +0 -67
  164. langchain_core-1.0.0a6.dist-info/RECORD +0 -181
  165. langchain_core-1.0.0a6.dist-info/entry_points.txt +0 -4
@@ -10,7 +10,7 @@ import string
10
10
  import time
11
11
  from dataclasses import asdict
12
12
  from pathlib import Path
13
- from typing import TYPE_CHECKING, Any, Literal, Optional
13
+ from typing import TYPE_CHECKING, Any, Literal
14
14
 
15
15
  import yaml
16
16
 
@@ -45,50 +45,44 @@ def draw_mermaid(
45
45
  nodes: dict[str, Node],
46
46
  edges: list[Edge],
47
47
  *,
48
- first_node: Optional[str] = None,
49
- last_node: Optional[str] = None,
48
+ first_node: str | None = None,
49
+ last_node: str | None = None,
50
50
  with_styles: bool = True,
51
51
  curve_style: CurveStyle = CurveStyle.LINEAR,
52
- node_styles: Optional[NodeStyles] = None,
52
+ node_styles: NodeStyles | None = None,
53
53
  wrap_label_n_words: int = 9,
54
- frontmatter_config: Optional[dict[str, Any]] = None,
54
+ frontmatter_config: dict[str, Any] | None = None,
55
55
  ) -> str:
56
56
  """Draws a Mermaid graph using the provided graph data.
57
57
 
58
58
  Args:
59
- nodes (dict[str, str]): List of node ids.
60
- edges (list[Edge]): List of edges, object with a source,
61
- target and data.
62
- first_node (str, optional): Id of the first node. Defaults to None.
63
- last_node (str, optional): Id of the last node. Defaults to None.
64
- with_styles (bool, optional): Whether to include styles in the graph.
65
- Defaults to True.
66
- curve_style (CurveStyle, optional): Curve style for the edges.
67
- Defaults to CurveStyle.LINEAR.
68
- node_styles (NodeStyles, optional): Node colors for different types.
69
- Defaults to NodeStyles().
70
- wrap_label_n_words (int, optional): Words to wrap the edge labels.
71
- Defaults to 9.
72
- frontmatter_config (dict[str, Any], optional): Mermaid frontmatter config.
59
+ nodes: List of node ids.
60
+ edges: List of edges, object with a source, target and data.
61
+ first_node: Id of the first node.
62
+ last_node: Id of the last node.
63
+ with_styles: Whether to include styles in the graph.
64
+ curve_style: Curve style for the edges.
65
+ node_styles: Node colors for different types.
66
+ wrap_label_n_words: Words to wrap the edge labels.
67
+ frontmatter_config: Mermaid frontmatter config.
73
68
  Can be used to customize theme and styles. Will be converted to YAML and
74
- added to the beginning of the mermaid graph. Defaults to None.
69
+ added to the beginning of the mermaid graph.
75
70
 
76
71
  See more here: https://mermaid.js.org/config/configuration.html.
77
72
 
78
73
  Example config:
79
74
 
80
- .. code-block:: python
81
-
75
+ ```python
82
76
  {
83
77
  "config": {
84
78
  "theme": "neutral",
85
79
  "look": "handDrawn",
86
- "themeVariables": { "primaryColor": "#e2e2e2"},
80
+ "themeVariables": {"primaryColor": "#e2e2e2"},
87
81
  }
88
82
  }
89
-
83
+ ```
90
84
  Returns:
91
- str: Mermaid graph syntax.
85
+ Mermaid graph syntax.
92
86
 
93
87
  """
94
88
  # Initialize Mermaid graph configuration
@@ -164,7 +158,7 @@ def draw_mermaid(
164
158
  src_parts = edge.source.split(":")
165
159
  tgt_parts = edge.target.split(":")
166
160
  common_prefix = ":".join(
167
- src for src, tgt in zip(src_parts, tgt_parts) if src == tgt
161
+ src for src, tgt in zip(src_parts, tgt_parts, strict=False) if src == tgt
168
162
  )
169
163
  edge_groups.setdefault(common_prefix, []).append(edge)
170
164
 
@@ -280,34 +274,28 @@ def _generate_mermaid_graph_styles(node_colors: NodeStyles) -> str:
280
274
 
281
275
  def draw_mermaid_png(
282
276
  mermaid_syntax: str,
283
- output_file_path: Optional[str] = None,
277
+ output_file_path: str | None = None,
284
278
  draw_method: MermaidDrawMethod = MermaidDrawMethod.API,
285
- background_color: Optional[str] = "white",
279
+ background_color: str | None = "white",
286
280
  padding: int = 10,
287
281
  max_retries: int = 1,
288
282
  retry_delay: float = 1.0,
289
- base_url: Optional[str] = None,
283
+ base_url: str | None = None,
290
284
  ) -> bytes:
291
285
  """Draws a Mermaid graph as PNG using provided syntax.
292
286
 
293
287
  Args:
294
- mermaid_syntax (str): Mermaid graph syntax.
295
- output_file_path (str, optional): Path to save the PNG image.
296
- Defaults to None.
297
- draw_method (MermaidDrawMethod, optional): Method to draw the graph.
298
- Defaults to MermaidDrawMethod.API.
299
- background_color (str, optional): Background color of the image.
300
- Defaults to "white".
301
- padding (int, optional): Padding around the image. Defaults to 10.
302
- max_retries (int, optional): Maximum number of retries (MermaidDrawMethod.API).
303
- Defaults to 1.
304
- retry_delay (float, optional): Delay between retries (MermaidDrawMethod.API).
305
- Defaults to 1.0.
306
- base_url (str, optional): Base URL for the Mermaid.ink API.
307
- Defaults to None.
288
+ mermaid_syntax: Mermaid graph syntax.
289
+ output_file_path: Path to save the PNG image.
290
+ draw_method: Method to draw the graph.
291
+ background_color: Background color of the image.
292
+ padding: Padding around the image.
293
+ max_retries: Maximum number of retries (MermaidDrawMethod.API).
294
+ retry_delay: Delay between retries (MermaidDrawMethod.API).
295
+ base_url: Base URL for the Mermaid.ink API.
308
296
 
309
297
  Returns:
310
- bytes: PNG image bytes.
298
+ PNG image bytes.
311
299
 
312
300
  Raises:
313
301
  ValueError: If an invalid draw method is provided.
@@ -340,8 +328,8 @@ def draw_mermaid_png(
340
328
 
341
329
  async def _render_mermaid_using_pyppeteer(
342
330
  mermaid_syntax: str,
343
- output_file_path: Optional[str] = None,
344
- background_color: Optional[str] = "white",
331
+ output_file_path: str | None = None,
332
+ background_color: str | None = "white",
345
333
  padding: int = 10,
346
334
  device_scale_factor: int = 3,
347
335
  ) -> bytes:
@@ -412,12 +400,12 @@ async def _render_mermaid_using_pyppeteer(
412
400
  def _render_mermaid_using_api(
413
401
  mermaid_syntax: str,
414
402
  *,
415
- output_file_path: Optional[str] = None,
416
- background_color: Optional[str] = "white",
417
- file_type: Optional[Literal["jpeg", "png", "webp"]] = "png",
403
+ output_file_path: str | None = None,
404
+ background_color: str | None = "white",
405
+ file_type: Literal["jpeg", "png", "webp"] | None = "png",
418
406
  max_retries: int = 1,
419
407
  retry_delay: float = 1.0,
420
- base_url: Optional[str] = None,
408
+ base_url: str | None = None,
421
409
  ) -> bytes:
422
410
  """Renders Mermaid graph using the Mermaid.INK API."""
423
411
  # Defaults to using the public mermaid.ink server.
@@ -1,6 +1,6 @@
1
1
  """Helper class to draw a state graph into a PNG file."""
2
2
 
3
- from typing import Any, Optional
3
+ from typing import Any
4
4
 
5
5
  from langchain_core.runnables.graph import Graph, LabelsDict
6
6
 
@@ -15,18 +15,17 @@ except ImportError:
15
15
  class PngDrawer:
16
16
  """Helper class to draw a state graph into a PNG file.
17
17
 
18
- It requires ``graphviz`` and ``pygraphviz`` to be installed.
18
+ It requires `graphviz` and `pygraphviz` to be installed.
19
19
 
20
20
  Example:
21
-
22
- .. code-block:: python
23
-
24
- drawer = PngDrawer()
25
- drawer.draw(state_graph, "graph.png")
21
+ ```python
22
+ drawer = PngDrawer()
23
+ drawer.draw(state_graph, "graph.png")
24
+ ```
26
25
  """
27
26
 
28
27
  def __init__(
29
- self, fontname: Optional[str] = None, labels: Optional[LabelsDict] = None
28
+ self, fontname: str | None = None, labels: LabelsDict | None = None
30
29
  ) -> None:
31
30
  """Initializes the PNG drawer.
32
31
 
@@ -46,7 +45,7 @@ class PngDrawer:
46
45
  }
47
46
  }
48
47
  The keys are the original labels, and the values are the new labels.
49
- Defaults to None.
48
+
50
49
  """
51
50
  self.fontname = fontname or "arial"
52
51
  self.labels = labels or LabelsDict(nodes={}, edges={})
@@ -96,7 +95,7 @@ class PngDrawer:
96
95
  viz: Any,
97
96
  source: str,
98
97
  target: str,
99
- label: Optional[str] = None,
98
+ label: str | None = None,
100
99
  conditional: bool = False, # noqa: FBT001,FBT002
101
100
  ) -> None:
102
101
  """Adds an edge to the graph.
@@ -105,8 +104,8 @@ class PngDrawer:
105
104
  viz: The graphviz object.
106
105
  source: The source node.
107
106
  target: The target node.
108
- label: The label for the edge. Defaults to None.
109
- conditional: Whether the edge is conditional. Defaults to False.
107
+ label: The label for the edge.
108
+ conditional: Whether the edge is conditional.
110
109
  """
111
110
  viz.add_edge(
112
111
  source,
@@ -117,20 +116,20 @@ class PngDrawer:
117
116
  style="dotted" if conditional else "solid",
118
117
  )
119
118
 
120
- def draw(self, graph: Graph, output_path: Optional[str] = None) -> Optional[bytes]:
119
+ def draw(self, graph: Graph, output_path: str | None = None) -> bytes | None:
121
120
  """Draw the given state graph into a PNG file.
122
121
 
123
122
  Requires `graphviz` and `pygraphviz` to be installed.
124
123
 
125
124
  Args:
126
125
  graph: The graph to draw
127
- output_path: The path to save the PNG. If None, PNG bytes are returned.
126
+ output_path: The path to save the PNG. If `None`, PNG bytes are returned.
128
127
 
129
128
  Raises:
130
- ImportError: If ``pygraphviz`` is not installed.
129
+ ImportError: If `pygraphviz` is not installed.
131
130
 
132
131
  Returns:
133
- The PNG bytes if ``output_path`` is None, else None.
132
+ The PNG bytes if `output_path` is None, else None.
134
133
  """
135
134
  if not _HAS_PYGRAPHVIZ:
136
135
  msg = "Install pygraphviz to draw graphs: `pip install pygraphviz`."