langchain 0.3.25__py3-none-any.whl → 0.3.27__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 might be problematic. Click here for more details.

Files changed (582) hide show
  1. langchain/__init__.py +110 -96
  2. langchain/_api/__init__.py +2 -2
  3. langchain/_api/deprecation.py +3 -3
  4. langchain/_api/module_import.py +51 -46
  5. langchain/_api/path.py +1 -1
  6. langchain/adapters/openai.py +8 -8
  7. langchain/agents/__init__.py +15 -12
  8. langchain/agents/agent.py +160 -133
  9. langchain/agents/agent_iterator.py +31 -14
  10. langchain/agents/agent_toolkits/__init__.py +7 -6
  11. langchain/agents/agent_toolkits/ainetwork/toolkit.py +1 -1
  12. langchain/agents/agent_toolkits/amadeus/toolkit.py +1 -1
  13. langchain/agents/agent_toolkits/azure_cognitive_services.py +1 -1
  14. langchain/agents/agent_toolkits/clickup/toolkit.py +1 -1
  15. langchain/agents/agent_toolkits/conversational_retrieval/openai_functions.py +6 -4
  16. langchain/agents/agent_toolkits/csv/__init__.py +4 -2
  17. langchain/agents/agent_toolkits/file_management/__init__.py +1 -1
  18. langchain/agents/agent_toolkits/file_management/toolkit.py +1 -1
  19. langchain/agents/agent_toolkits/github/toolkit.py +9 -9
  20. langchain/agents/agent_toolkits/gitlab/toolkit.py +1 -1
  21. langchain/agents/agent_toolkits/json/base.py +1 -1
  22. langchain/agents/agent_toolkits/multion/toolkit.py +1 -1
  23. langchain/agents/agent_toolkits/office365/toolkit.py +1 -1
  24. langchain/agents/agent_toolkits/openapi/base.py +1 -1
  25. langchain/agents/agent_toolkits/openapi/planner.py +2 -2
  26. langchain/agents/agent_toolkits/openapi/planner_prompt.py +10 -10
  27. langchain/agents/agent_toolkits/openapi/prompt.py +1 -1
  28. langchain/agents/agent_toolkits/openapi/toolkit.py +1 -1
  29. langchain/agents/agent_toolkits/pandas/__init__.py +4 -2
  30. langchain/agents/agent_toolkits/playwright/__init__.py +1 -1
  31. langchain/agents/agent_toolkits/playwright/toolkit.py +1 -1
  32. langchain/agents/agent_toolkits/powerbi/base.py +1 -1
  33. langchain/agents/agent_toolkits/powerbi/chat_base.py +1 -1
  34. langchain/agents/agent_toolkits/powerbi/prompt.py +2 -2
  35. langchain/agents/agent_toolkits/powerbi/toolkit.py +1 -1
  36. langchain/agents/agent_toolkits/python/__init__.py +4 -2
  37. langchain/agents/agent_toolkits/spark/__init__.py +4 -2
  38. langchain/agents/agent_toolkits/spark_sql/base.py +1 -1
  39. langchain/agents/agent_toolkits/spark_sql/toolkit.py +1 -1
  40. langchain/agents/agent_toolkits/sql/prompt.py +1 -1
  41. langchain/agents/agent_toolkits/sql/toolkit.py +1 -1
  42. langchain/agents/agent_toolkits/vectorstore/base.py +2 -2
  43. langchain/agents/agent_toolkits/vectorstore/prompt.py +2 -4
  44. langchain/agents/agent_toolkits/vectorstore/toolkit.py +12 -11
  45. langchain/agents/agent_toolkits/xorbits/__init__.py +4 -2
  46. langchain/agents/agent_toolkits/zapier/toolkit.py +1 -1
  47. langchain/agents/agent_types.py +7 -7
  48. langchain/agents/chat/base.py +6 -12
  49. langchain/agents/chat/output_parser.py +9 -6
  50. langchain/agents/chat/prompt.py +3 -4
  51. langchain/agents/conversational/base.py +9 -5
  52. langchain/agents/conversational/output_parser.py +4 -2
  53. langchain/agents/conversational/prompt.py +2 -3
  54. langchain/agents/conversational_chat/base.py +7 -5
  55. langchain/agents/conversational_chat/output_parser.py +9 -11
  56. langchain/agents/conversational_chat/prompt.py +5 -6
  57. langchain/agents/format_scratchpad/__init__.py +3 -3
  58. langchain/agents/format_scratchpad/log_to_messages.py +1 -1
  59. langchain/agents/format_scratchpad/openai_functions.py +8 -6
  60. langchain/agents/format_scratchpad/tools.py +5 -3
  61. langchain/agents/format_scratchpad/xml.py +33 -2
  62. langchain/agents/initialize.py +18 -9
  63. langchain/agents/json_chat/base.py +18 -18
  64. langchain/agents/json_chat/prompt.py +2 -3
  65. langchain/agents/load_tools.py +2 -1
  66. langchain/agents/loading.py +28 -18
  67. langchain/agents/mrkl/base.py +9 -4
  68. langchain/agents/mrkl/output_parser.py +17 -13
  69. langchain/agents/mrkl/prompt.py +1 -2
  70. langchain/agents/openai_assistant/base.py +80 -70
  71. langchain/agents/openai_functions_agent/base.py +47 -38
  72. langchain/agents/openai_functions_multi_agent/base.py +40 -27
  73. langchain/agents/openai_tools/base.py +8 -8
  74. langchain/agents/output_parsers/__init__.py +3 -3
  75. langchain/agents/output_parsers/json.py +7 -7
  76. langchain/agents/output_parsers/openai_functions.py +15 -7
  77. langchain/agents/output_parsers/openai_tools.py +9 -4
  78. langchain/agents/output_parsers/react_json_single_input.py +10 -5
  79. langchain/agents/output_parsers/react_single_input.py +15 -11
  80. langchain/agents/output_parsers/self_ask.py +3 -2
  81. langchain/agents/output_parsers/tools.py +18 -13
  82. langchain/agents/output_parsers/xml.py +99 -28
  83. langchain/agents/react/agent.py +4 -4
  84. langchain/agents/react/base.py +22 -17
  85. langchain/agents/react/output_parser.py +5 -6
  86. langchain/agents/react/textworld_prompt.py +0 -1
  87. langchain/agents/react/wiki_prompt.py +14 -15
  88. langchain/agents/schema.py +3 -2
  89. langchain/agents/self_ask_with_search/base.py +19 -15
  90. langchain/agents/self_ask_with_search/prompt.py +0 -1
  91. langchain/agents/structured_chat/base.py +14 -11
  92. langchain/agents/structured_chat/output_parser.py +16 -18
  93. langchain/agents/structured_chat/prompt.py +3 -4
  94. langchain/agents/tool_calling_agent/base.py +7 -6
  95. langchain/agents/tools.py +2 -2
  96. langchain/agents/utils.py +2 -3
  97. langchain/agents/xml/base.py +5 -5
  98. langchain/agents/xml/prompt.py +1 -2
  99. langchain/cache.py +12 -12
  100. langchain/callbacks/__init__.py +11 -11
  101. langchain/callbacks/aim_callback.py +2 -2
  102. langchain/callbacks/argilla_callback.py +1 -1
  103. langchain/callbacks/arize_callback.py +1 -1
  104. langchain/callbacks/arthur_callback.py +1 -1
  105. langchain/callbacks/base.py +7 -7
  106. langchain/callbacks/clearml_callback.py +1 -1
  107. langchain/callbacks/comet_ml_callback.py +1 -1
  108. langchain/callbacks/confident_callback.py +1 -1
  109. langchain/callbacks/context_callback.py +1 -1
  110. langchain/callbacks/flyte_callback.py +1 -1
  111. langchain/callbacks/human.py +2 -2
  112. langchain/callbacks/infino_callback.py +1 -1
  113. langchain/callbacks/labelstudio_callback.py +1 -1
  114. langchain/callbacks/llmonitor_callback.py +1 -1
  115. langchain/callbacks/manager.py +6 -6
  116. langchain/callbacks/mlflow_callback.py +2 -2
  117. langchain/callbacks/openai_info.py +1 -1
  118. langchain/callbacks/promptlayer_callback.py +1 -1
  119. langchain/callbacks/sagemaker_callback.py +1 -1
  120. langchain/callbacks/streaming_aiter.py +4 -1
  121. langchain/callbacks/streaming_aiter_final_only.py +5 -3
  122. langchain/callbacks/streaming_stdout_final_only.py +5 -3
  123. langchain/callbacks/streamlit/__init__.py +3 -2
  124. langchain/callbacks/streamlit/mutable_expander.py +1 -1
  125. langchain/callbacks/streamlit/streamlit_callback_handler.py +3 -3
  126. langchain/callbacks/tracers/__init__.py +1 -1
  127. langchain/callbacks/tracers/base.py +2 -1
  128. langchain/callbacks/tracers/comet.py +1 -1
  129. langchain/callbacks/tracers/evaluation.py +1 -1
  130. langchain/callbacks/tracers/log_stream.py +1 -1
  131. langchain/callbacks/tracers/logging.py +1 -1
  132. langchain/callbacks/tracers/stdout.py +1 -1
  133. langchain/callbacks/trubrics_callback.py +1 -1
  134. langchain/callbacks/utils.py +4 -4
  135. langchain/callbacks/wandb_callback.py +1 -1
  136. langchain/callbacks/whylabs_callback.py +1 -1
  137. langchain/chains/api/base.py +36 -22
  138. langchain/chains/api/news_docs.py +1 -2
  139. langchain/chains/api/open_meteo_docs.py +1 -2
  140. langchain/chains/api/openapi/requests_chain.py +1 -1
  141. langchain/chains/api/openapi/response_chain.py +1 -1
  142. langchain/chains/api/podcast_docs.py +1 -2
  143. langchain/chains/api/prompt.py +1 -2
  144. langchain/chains/api/tmdb_docs.py +1 -2
  145. langchain/chains/base.py +89 -55
  146. langchain/chains/chat_vector_db/prompts.py +2 -3
  147. langchain/chains/combine_documents/__init__.py +1 -1
  148. langchain/chains/combine_documents/base.py +24 -11
  149. langchain/chains/combine_documents/map_reduce.py +39 -31
  150. langchain/chains/combine_documents/map_rerank.py +34 -21
  151. langchain/chains/combine_documents/reduce.py +47 -26
  152. langchain/chains/combine_documents/refine.py +26 -17
  153. langchain/chains/combine_documents/stuff.py +19 -12
  154. langchain/chains/constitutional_ai/base.py +4 -4
  155. langchain/chains/constitutional_ai/principles.py +22 -25
  156. langchain/chains/constitutional_ai/prompts.py +25 -28
  157. langchain/chains/conversation/base.py +6 -7
  158. langchain/chains/conversation/memory.py +5 -5
  159. langchain/chains/conversation/prompt.py +5 -5
  160. langchain/chains/conversational_retrieval/base.py +41 -20
  161. langchain/chains/conversational_retrieval/prompts.py +2 -3
  162. langchain/chains/elasticsearch_database/base.py +8 -9
  163. langchain/chains/elasticsearch_database/prompts.py +2 -3
  164. langchain/chains/ernie_functions/__init__.py +2 -2
  165. langchain/chains/example_generator.py +3 -1
  166. langchain/chains/flare/base.py +26 -12
  167. langchain/chains/graph_qa/cypher.py +2 -2
  168. langchain/chains/graph_qa/falkordb.py +1 -1
  169. langchain/chains/graph_qa/gremlin.py +1 -1
  170. langchain/chains/graph_qa/neptune_sparql.py +1 -1
  171. langchain/chains/graph_qa/prompts.py +2 -2
  172. langchain/chains/history_aware_retriever.py +2 -1
  173. langchain/chains/hyde/base.py +6 -5
  174. langchain/chains/hyde/prompts.py +5 -6
  175. langchain/chains/llm.py +77 -61
  176. langchain/chains/llm_bash/__init__.py +2 -1
  177. langchain/chains/llm_checker/base.py +7 -5
  178. langchain/chains/llm_checker/prompt.py +3 -4
  179. langchain/chains/llm_math/base.py +16 -9
  180. langchain/chains/llm_math/prompt.py +1 -2
  181. langchain/chains/llm_summarization_checker/base.py +9 -6
  182. langchain/chains/llm_symbolic_math/__init__.py +2 -1
  183. langchain/chains/loading.py +170 -153
  184. langchain/chains/mapreduce.py +4 -3
  185. langchain/chains/moderation.py +8 -9
  186. langchain/chains/natbot/base.py +8 -8
  187. langchain/chains/natbot/crawler.py +73 -76
  188. langchain/chains/natbot/prompt.py +2 -3
  189. langchain/chains/openai_functions/__init__.py +7 -7
  190. langchain/chains/openai_functions/base.py +13 -10
  191. langchain/chains/openai_functions/citation_fuzzy_match.py +12 -11
  192. langchain/chains/openai_functions/extraction.py +19 -19
  193. langchain/chains/openai_functions/openapi.py +35 -35
  194. langchain/chains/openai_functions/qa_with_structure.py +19 -12
  195. langchain/chains/openai_functions/tagging.py +2 -4
  196. langchain/chains/openai_tools/extraction.py +7 -8
  197. langchain/chains/qa_generation/base.py +4 -3
  198. langchain/chains/qa_generation/prompt.py +5 -5
  199. langchain/chains/qa_with_sources/base.py +14 -6
  200. langchain/chains/qa_with_sources/loading.py +16 -8
  201. langchain/chains/qa_with_sources/map_reduce_prompt.py +8 -9
  202. langchain/chains/qa_with_sources/refine_prompts.py +0 -1
  203. langchain/chains/qa_with_sources/retrieval.py +14 -5
  204. langchain/chains/qa_with_sources/stuff_prompt.py +6 -7
  205. langchain/chains/qa_with_sources/vector_db.py +17 -6
  206. langchain/chains/query_constructor/base.py +34 -33
  207. langchain/chains/query_constructor/ir.py +4 -4
  208. langchain/chains/query_constructor/parser.py +37 -32
  209. langchain/chains/query_constructor/prompt.py +5 -6
  210. langchain/chains/question_answering/chain.py +21 -10
  211. langchain/chains/question_answering/map_reduce_prompt.py +14 -14
  212. langchain/chains/question_answering/map_rerank_prompt.py +3 -3
  213. langchain/chains/question_answering/refine_prompts.py +2 -5
  214. langchain/chains/question_answering/stuff_prompt.py +5 -5
  215. langchain/chains/retrieval.py +1 -3
  216. langchain/chains/retrieval_qa/base.py +34 -27
  217. langchain/chains/retrieval_qa/prompt.py +1 -2
  218. langchain/chains/router/__init__.py +3 -3
  219. langchain/chains/router/base.py +24 -20
  220. langchain/chains/router/embedding_router.py +12 -8
  221. langchain/chains/router/llm_router.py +17 -16
  222. langchain/chains/router/multi_prompt.py +2 -2
  223. langchain/chains/router/multi_retrieval_qa.py +10 -5
  224. langchain/chains/sequential.py +30 -18
  225. langchain/chains/sql_database/prompt.py +14 -16
  226. langchain/chains/sql_database/query.py +6 -5
  227. langchain/chains/structured_output/__init__.py +1 -1
  228. langchain/chains/structured_output/base.py +75 -67
  229. langchain/chains/summarize/chain.py +11 -5
  230. langchain/chains/summarize/map_reduce_prompt.py +0 -1
  231. langchain/chains/summarize/stuff_prompt.py +0 -1
  232. langchain/chains/transform.py +5 -6
  233. langchain/chat_loaders/facebook_messenger.py +1 -1
  234. langchain/chat_loaders/langsmith.py +1 -1
  235. langchain/chat_loaders/utils.py +3 -3
  236. langchain/chat_models/__init__.py +20 -19
  237. langchain/chat_models/anthropic.py +1 -1
  238. langchain/chat_models/azureml_endpoint.py +1 -1
  239. langchain/chat_models/baidu_qianfan_endpoint.py +1 -1
  240. langchain/chat_models/base.py +160 -123
  241. langchain/chat_models/bedrock.py +1 -1
  242. langchain/chat_models/fake.py +1 -1
  243. langchain/chat_models/meta.py +1 -1
  244. langchain/chat_models/pai_eas_endpoint.py +1 -1
  245. langchain/chat_models/promptlayer_openai.py +1 -1
  246. langchain/chat_models/volcengine_maas.py +1 -1
  247. langchain/docstore/base.py +1 -1
  248. langchain/document_loaders/__init__.py +9 -9
  249. langchain/document_loaders/airbyte.py +3 -3
  250. langchain/document_loaders/assemblyai.py +1 -1
  251. langchain/document_loaders/azure_blob_storage_container.py +1 -1
  252. langchain/document_loaders/azure_blob_storage_file.py +1 -1
  253. langchain/document_loaders/baiducloud_bos_file.py +1 -1
  254. langchain/document_loaders/base.py +1 -1
  255. langchain/document_loaders/blob_loaders/__init__.py +1 -1
  256. langchain/document_loaders/blockchain.py +1 -1
  257. langchain/document_loaders/chatgpt.py +1 -1
  258. langchain/document_loaders/college_confidential.py +1 -1
  259. langchain/document_loaders/confluence.py +1 -1
  260. langchain/document_loaders/email.py +1 -1
  261. langchain/document_loaders/facebook_chat.py +1 -1
  262. langchain/document_loaders/markdown.py +1 -1
  263. langchain/document_loaders/notebook.py +1 -1
  264. langchain/document_loaders/org_mode.py +1 -1
  265. langchain/document_loaders/parsers/__init__.py +1 -1
  266. langchain/document_loaders/parsers/docai.py +1 -1
  267. langchain/document_loaders/parsers/generic.py +1 -1
  268. langchain/document_loaders/parsers/html/__init__.py +1 -1
  269. langchain/document_loaders/parsers/html/bs4.py +1 -1
  270. langchain/document_loaders/parsers/language/cobol.py +1 -1
  271. langchain/document_loaders/parsers/language/python.py +1 -1
  272. langchain/document_loaders/parsers/msword.py +1 -1
  273. langchain/document_loaders/parsers/pdf.py +5 -5
  274. langchain/document_loaders/parsers/registry.py +1 -1
  275. langchain/document_loaders/pdf.py +8 -8
  276. langchain/document_loaders/powerpoint.py +1 -1
  277. langchain/document_loaders/pyspark_dataframe.py +1 -1
  278. langchain/document_loaders/telegram.py +2 -2
  279. langchain/document_loaders/tencent_cos_directory.py +1 -1
  280. langchain/document_loaders/unstructured.py +5 -5
  281. langchain/document_loaders/url_playwright.py +1 -1
  282. langchain/document_loaders/whatsapp_chat.py +1 -1
  283. langchain/document_loaders/youtube.py +2 -2
  284. langchain/document_transformers/__init__.py +3 -3
  285. langchain/document_transformers/beautiful_soup_transformer.py +1 -1
  286. langchain/document_transformers/doctran_text_extract.py +1 -1
  287. langchain/document_transformers/doctran_text_qa.py +1 -1
  288. langchain/document_transformers/doctran_text_translate.py +1 -1
  289. langchain/document_transformers/embeddings_redundant_filter.py +3 -3
  290. langchain/document_transformers/google_translate.py +1 -1
  291. langchain/document_transformers/html2text.py +1 -1
  292. langchain/document_transformers/nuclia_text_transform.py +1 -1
  293. langchain/embeddings/__init__.py +5 -5
  294. langchain/embeddings/base.py +33 -24
  295. langchain/embeddings/cache.py +117 -26
  296. langchain/embeddings/fake.py +1 -1
  297. langchain/embeddings/huggingface.py +2 -2
  298. langchain/evaluation/__init__.py +22 -22
  299. langchain/evaluation/agents/trajectory_eval_chain.py +24 -24
  300. langchain/evaluation/agents/trajectory_eval_prompt.py +6 -9
  301. langchain/evaluation/comparison/__init__.py +1 -1
  302. langchain/evaluation/comparison/eval_chain.py +21 -14
  303. langchain/evaluation/comparison/prompt.py +1 -2
  304. langchain/evaluation/criteria/__init__.py +1 -1
  305. langchain/evaluation/criteria/eval_chain.py +21 -12
  306. langchain/evaluation/criteria/prompt.py +2 -3
  307. langchain/evaluation/embedding_distance/base.py +24 -21
  308. langchain/evaluation/loading.py +15 -11
  309. langchain/evaluation/parsing/base.py +4 -1
  310. langchain/evaluation/parsing/json_distance.py +5 -2
  311. langchain/evaluation/parsing/json_schema.py +12 -8
  312. langchain/evaluation/qa/__init__.py +1 -1
  313. langchain/evaluation/qa/eval_chain.py +13 -6
  314. langchain/evaluation/qa/eval_prompt.py +7 -8
  315. langchain/evaluation/qa/generate_chain.py +2 -1
  316. langchain/evaluation/qa/generate_prompt.py +2 -4
  317. langchain/evaluation/schema.py +38 -30
  318. langchain/evaluation/scoring/__init__.py +1 -1
  319. langchain/evaluation/scoring/eval_chain.py +23 -16
  320. langchain/evaluation/scoring/prompt.py +0 -1
  321. langchain/evaluation/string_distance/base.py +15 -10
  322. langchain/globals.py +12 -11
  323. langchain/graphs/__init__.py +6 -6
  324. langchain/graphs/graph_document.py +1 -1
  325. langchain/graphs/networkx_graph.py +2 -2
  326. langchain/hub.py +9 -11
  327. langchain/indexes/__init__.py +3 -3
  328. langchain/indexes/_sql_record_manager.py +63 -46
  329. langchain/indexes/prompts/entity_extraction.py +1 -2
  330. langchain/indexes/prompts/entity_summarization.py +1 -2
  331. langchain/indexes/prompts/knowledge_triplet_extraction.py +1 -3
  332. langchain/indexes/vectorstore.py +35 -19
  333. langchain/llms/__init__.py +13 -13
  334. langchain/llms/ai21.py +1 -1
  335. langchain/llms/azureml_endpoint.py +4 -4
  336. langchain/llms/base.py +15 -7
  337. langchain/llms/bedrock.py +1 -1
  338. langchain/llms/cloudflare_workersai.py +1 -1
  339. langchain/llms/gradient_ai.py +1 -1
  340. langchain/llms/loading.py +1 -1
  341. langchain/llms/openai.py +1 -1
  342. langchain/llms/sagemaker_endpoint.py +1 -1
  343. langchain/load/dump.py +1 -1
  344. langchain/load/load.py +1 -1
  345. langchain/load/serializable.py +3 -3
  346. langchain/memory/__init__.py +3 -3
  347. langchain/memory/buffer.py +11 -8
  348. langchain/memory/chat_memory.py +14 -8
  349. langchain/memory/chat_message_histories/__init__.py +1 -1
  350. langchain/memory/chat_message_histories/astradb.py +1 -1
  351. langchain/memory/chat_message_histories/cassandra.py +1 -1
  352. langchain/memory/chat_message_histories/cosmos_db.py +1 -1
  353. langchain/memory/chat_message_histories/dynamodb.py +1 -1
  354. langchain/memory/chat_message_histories/elasticsearch.py +1 -1
  355. langchain/memory/chat_message_histories/file.py +1 -1
  356. langchain/memory/chat_message_histories/firestore.py +1 -1
  357. langchain/memory/chat_message_histories/momento.py +1 -1
  358. langchain/memory/chat_message_histories/mongodb.py +1 -1
  359. langchain/memory/chat_message_histories/neo4j.py +1 -1
  360. langchain/memory/chat_message_histories/postgres.py +1 -1
  361. langchain/memory/chat_message_histories/redis.py +1 -1
  362. langchain/memory/chat_message_histories/rocksetdb.py +1 -1
  363. langchain/memory/chat_message_histories/singlestoredb.py +1 -1
  364. langchain/memory/chat_message_histories/streamlit.py +1 -1
  365. langchain/memory/chat_message_histories/upstash_redis.py +1 -1
  366. langchain/memory/chat_message_histories/xata.py +1 -1
  367. langchain/memory/chat_message_histories/zep.py +1 -1
  368. langchain/memory/combined.py +13 -12
  369. langchain/memory/entity.py +84 -61
  370. langchain/memory/prompt.py +10 -11
  371. langchain/memory/readonly.py +0 -2
  372. langchain/memory/simple.py +1 -3
  373. langchain/memory/summary.py +13 -11
  374. langchain/memory/summary_buffer.py +17 -8
  375. langchain/memory/utils.py +3 -2
  376. langchain/memory/vectorstore.py +13 -6
  377. langchain/memory/vectorstore_token_buffer_memory.py +5 -5
  378. langchain/model_laboratory.py +12 -11
  379. langchain/output_parsers/__init__.py +4 -4
  380. langchain/output_parsers/boolean.py +7 -4
  381. langchain/output_parsers/combining.py +10 -5
  382. langchain/output_parsers/datetime.py +32 -31
  383. langchain/output_parsers/enum.py +5 -3
  384. langchain/output_parsers/fix.py +52 -52
  385. langchain/output_parsers/format_instructions.py +6 -8
  386. langchain/output_parsers/json.py +2 -2
  387. langchain/output_parsers/list.py +2 -2
  388. langchain/output_parsers/loading.py +9 -9
  389. langchain/output_parsers/openai_functions.py +3 -3
  390. langchain/output_parsers/openai_tools.py +1 -1
  391. langchain/output_parsers/pandas_dataframe.py +43 -47
  392. langchain/output_parsers/prompts.py +1 -2
  393. langchain/output_parsers/rail_parser.py +1 -1
  394. langchain/output_parsers/regex.py +7 -8
  395. langchain/output_parsers/regex_dict.py +7 -10
  396. langchain/output_parsers/retry.py +77 -78
  397. langchain/output_parsers/structured.py +11 -6
  398. langchain/output_parsers/yaml.py +15 -11
  399. langchain/prompts/__init__.py +5 -3
  400. langchain/prompts/base.py +5 -5
  401. langchain/prompts/chat.py +10 -9
  402. langchain/prompts/example_selector/__init__.py +3 -1
  403. langchain/prompts/example_selector/semantic_similarity.py +2 -2
  404. langchain/prompts/few_shot.py +1 -1
  405. langchain/prompts/loading.py +3 -3
  406. langchain/prompts/prompt.py +1 -1
  407. langchain/retrievers/__init__.py +5 -5
  408. langchain/retrievers/bedrock.py +2 -2
  409. langchain/retrievers/bm25.py +1 -1
  410. langchain/retrievers/contextual_compression.py +15 -13
  411. langchain/retrievers/docarray.py +1 -1
  412. langchain/retrievers/document_compressors/__init__.py +7 -5
  413. langchain/retrievers/document_compressors/base.py +13 -7
  414. langchain/retrievers/document_compressors/chain_extract.py +4 -5
  415. langchain/retrievers/document_compressors/chain_extract_prompt.py +2 -3
  416. langchain/retrievers/document_compressors/chain_filter.py +11 -12
  417. langchain/retrievers/document_compressors/chain_filter_prompt.py +1 -2
  418. langchain/retrievers/document_compressors/cohere_rerank.py +17 -19
  419. langchain/retrievers/document_compressors/embeddings_filter.py +23 -23
  420. langchain/retrievers/document_compressors/flashrank_rerank.py +1 -1
  421. langchain/retrievers/document_compressors/listwise_rerank.py +11 -6
  422. langchain/retrievers/ensemble.py +28 -25
  423. langchain/retrievers/google_cloud_documentai_warehouse.py +1 -1
  424. langchain/retrievers/google_vertex_ai_search.py +2 -2
  425. langchain/retrievers/kendra.py +10 -10
  426. langchain/retrievers/llama_index.py +1 -1
  427. langchain/retrievers/merger_retriever.py +11 -11
  428. langchain/retrievers/milvus.py +1 -1
  429. langchain/retrievers/multi_query.py +32 -26
  430. langchain/retrievers/multi_vector.py +20 -8
  431. langchain/retrievers/parent_document_retriever.py +18 -9
  432. langchain/retrievers/re_phraser.py +6 -5
  433. langchain/retrievers/self_query/base.py +138 -119
  434. langchain/retrievers/time_weighted_retriever.py +18 -7
  435. langchain/retrievers/zilliz.py +1 -1
  436. langchain/runnables/hub.py +2 -1
  437. langchain/runnables/openai_functions.py +6 -2
  438. langchain/schema/__init__.py +23 -23
  439. langchain/schema/cache.py +1 -1
  440. langchain/schema/callbacks/base.py +7 -7
  441. langchain/schema/callbacks/manager.py +19 -19
  442. langchain/schema/callbacks/tracers/base.py +3 -2
  443. langchain/schema/callbacks/tracers/evaluation.py +1 -1
  444. langchain/schema/callbacks/tracers/langchain.py +1 -1
  445. langchain/schema/callbacks/tracers/langchain_v1.py +1 -1
  446. langchain/schema/callbacks/tracers/log_stream.py +1 -1
  447. langchain/schema/callbacks/tracers/schemas.py +8 -8
  448. langchain/schema/callbacks/tracers/stdout.py +3 -3
  449. langchain/schema/document.py +1 -1
  450. langchain/schema/language_model.py +2 -2
  451. langchain/schema/messages.py +12 -12
  452. langchain/schema/output.py +3 -3
  453. langchain/schema/output_parser.py +3 -3
  454. langchain/schema/runnable/__init__.py +3 -3
  455. langchain/schema/runnable/base.py +9 -9
  456. langchain/schema/runnable/config.py +5 -5
  457. langchain/schema/runnable/configurable.py +1 -1
  458. langchain/schema/runnable/history.py +1 -1
  459. langchain/schema/runnable/passthrough.py +1 -1
  460. langchain/schema/runnable/utils.py +16 -16
  461. langchain/schema/vectorstore.py +1 -1
  462. langchain/smith/__init__.py +1 -1
  463. langchain/smith/evaluation/__init__.py +2 -2
  464. langchain/smith/evaluation/config.py +10 -7
  465. langchain/smith/evaluation/name_generation.py +3 -3
  466. langchain/smith/evaluation/progress.py +11 -2
  467. langchain/smith/evaluation/runner_utils.py +181 -129
  468. langchain/smith/evaluation/string_run_evaluator.py +75 -68
  469. langchain/storage/__init__.py +2 -2
  470. langchain/storage/_lc_store.py +4 -2
  471. langchain/storage/encoder_backed.py +6 -2
  472. langchain/storage/file_system.py +19 -16
  473. langchain/storage/in_memory.py +1 -1
  474. langchain/storage/upstash_redis.py +1 -1
  475. langchain/text_splitter.py +15 -15
  476. langchain/tools/__init__.py +28 -26
  477. langchain/tools/ainetwork/app.py +1 -1
  478. langchain/tools/ainetwork/base.py +1 -1
  479. langchain/tools/ainetwork/owner.py +1 -1
  480. langchain/tools/ainetwork/rule.py +1 -1
  481. langchain/tools/ainetwork/transfer.py +1 -1
  482. langchain/tools/ainetwork/value.py +1 -1
  483. langchain/tools/amadeus/closest_airport.py +1 -1
  484. langchain/tools/amadeus/flight_search.py +1 -1
  485. langchain/tools/azure_cognitive_services/__init__.py +1 -1
  486. langchain/tools/base.py +4 -4
  487. langchain/tools/bearly/tool.py +1 -1
  488. langchain/tools/bing_search/__init__.py +1 -1
  489. langchain/tools/bing_search/tool.py +1 -1
  490. langchain/tools/dataforseo_api_search/__init__.py +1 -1
  491. langchain/tools/dataforseo_api_search/tool.py +1 -1
  492. langchain/tools/ddg_search/tool.py +1 -1
  493. langchain/tools/e2b_data_analysis/tool.py +2 -2
  494. langchain/tools/edenai/__init__.py +1 -1
  495. langchain/tools/file_management/__init__.py +1 -1
  496. langchain/tools/file_management/copy.py +1 -1
  497. langchain/tools/file_management/delete.py +1 -1
  498. langchain/tools/gmail/__init__.py +2 -2
  499. langchain/tools/gmail/get_message.py +1 -1
  500. langchain/tools/gmail/search.py +1 -1
  501. langchain/tools/gmail/send_message.py +1 -1
  502. langchain/tools/google_finance/__init__.py +1 -1
  503. langchain/tools/google_finance/tool.py +1 -1
  504. langchain/tools/google_scholar/__init__.py +1 -1
  505. langchain/tools/google_scholar/tool.py +1 -1
  506. langchain/tools/google_search/__init__.py +1 -1
  507. langchain/tools/google_search/tool.py +1 -1
  508. langchain/tools/google_serper/__init__.py +1 -1
  509. langchain/tools/google_serper/tool.py +1 -1
  510. langchain/tools/google_trends/__init__.py +1 -1
  511. langchain/tools/google_trends/tool.py +1 -1
  512. langchain/tools/jira/tool.py +20 -1
  513. langchain/tools/json/tool.py +25 -3
  514. langchain/tools/memorize/tool.py +1 -1
  515. langchain/tools/multion/__init__.py +1 -1
  516. langchain/tools/multion/update_session.py +1 -1
  517. langchain/tools/office365/__init__.py +2 -2
  518. langchain/tools/office365/events_search.py +1 -1
  519. langchain/tools/office365/messages_search.py +1 -1
  520. langchain/tools/office365/send_event.py +1 -1
  521. langchain/tools/office365/send_message.py +1 -1
  522. langchain/tools/openapi/utils/api_models.py +6 -6
  523. langchain/tools/playwright/__init__.py +5 -5
  524. langchain/tools/playwright/click.py +1 -1
  525. langchain/tools/playwright/extract_hyperlinks.py +1 -1
  526. langchain/tools/playwright/get_elements.py +1 -1
  527. langchain/tools/playwright/navigate.py +1 -1
  528. langchain/tools/plugin.py +2 -2
  529. langchain/tools/powerbi/tool.py +1 -1
  530. langchain/tools/python/__init__.py +2 -1
  531. langchain/tools/reddit_search/tool.py +1 -1
  532. langchain/tools/render.py +2 -2
  533. langchain/tools/requests/tool.py +2 -2
  534. langchain/tools/searchapi/tool.py +1 -1
  535. langchain/tools/searx_search/tool.py +1 -1
  536. langchain/tools/slack/get_message.py +1 -1
  537. langchain/tools/spark_sql/tool.py +1 -1
  538. langchain/tools/sql_database/tool.py +1 -1
  539. langchain/tools/tavily_search/__init__.py +1 -1
  540. langchain/tools/tavily_search/tool.py +1 -1
  541. langchain/tools/zapier/__init__.py +1 -1
  542. langchain/tools/zapier/tool.py +24 -2
  543. langchain/utilities/__init__.py +4 -4
  544. langchain/utilities/arcee.py +4 -4
  545. langchain/utilities/clickup.py +4 -4
  546. langchain/utilities/dalle_image_generator.py +1 -1
  547. langchain/utilities/dataforseo_api_search.py +1 -1
  548. langchain/utilities/opaqueprompts.py +1 -1
  549. langchain/utilities/reddit_search.py +1 -1
  550. langchain/utilities/sql_database.py +1 -1
  551. langchain/utilities/tavily_search.py +1 -1
  552. langchain/utilities/vertexai.py +2 -2
  553. langchain/utils/__init__.py +1 -1
  554. langchain/utils/aiter.py +1 -1
  555. langchain/utils/html.py +3 -3
  556. langchain/utils/input.py +1 -1
  557. langchain/utils/iter.py +1 -1
  558. langchain/utils/json_schema.py +1 -3
  559. langchain/utils/strings.py +1 -1
  560. langchain/utils/utils.py +6 -6
  561. langchain/vectorstores/__init__.py +5 -5
  562. langchain/vectorstores/alibabacloud_opensearch.py +1 -1
  563. langchain/vectorstores/azure_cosmos_db.py +1 -1
  564. langchain/vectorstores/clickhouse.py +1 -1
  565. langchain/vectorstores/elastic_vector_search.py +1 -1
  566. langchain/vectorstores/elasticsearch.py +2 -2
  567. langchain/vectorstores/myscale.py +1 -1
  568. langchain/vectorstores/neo4j_vector.py +1 -1
  569. langchain/vectorstores/pgembedding.py +1 -1
  570. langchain/vectorstores/qdrant.py +1 -1
  571. langchain/vectorstores/redis/__init__.py +1 -1
  572. langchain/vectorstores/redis/base.py +1 -1
  573. langchain/vectorstores/redis/filters.py +4 -4
  574. langchain/vectorstores/redis/schema.py +6 -6
  575. langchain/vectorstores/sklearn.py +2 -2
  576. langchain/vectorstores/starrocks.py +1 -1
  577. langchain/vectorstores/utils.py +1 -1
  578. {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/METADATA +5 -5
  579. {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/RECORD +582 -582
  580. {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/WHEEL +1 -1
  581. {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/entry_points.txt +0 -0
  582. {langchain-0.3.25.dist-info → langchain-0.3.27.dist-info}/licenses/LICENSE +0 -0
@@ -27,11 +27,12 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
27
27
  """Get the translator class corresponding to the vector store class."""
28
28
  try:
29
29
  import langchain_community # noqa: F401
30
- except ImportError:
31
- raise ImportError(
30
+ except ImportError as err:
31
+ msg = (
32
32
  "The langchain-community package must be installed to use this feature."
33
33
  " Please install it using `pip install langchain-community`."
34
34
  )
35
+ raise ImportError(msg) from err
35
36
 
36
37
  from langchain_community.query_constructors.astradb import AstraDBTranslator
37
38
  from langchain_community.query_constructors.chroma import ChromaTranslator
@@ -118,108 +119,116 @@ def _get_builtin_translator(vectorstore: VectorStore) -> Visitor:
118
119
  }
119
120
  if isinstance(vectorstore, DatabricksVectorSearch):
120
121
  return DatabricksVectorSearchTranslator()
121
- elif isinstance(vectorstore, MyScale):
122
+ if isinstance(vectorstore, MyScale):
122
123
  return MyScaleTranslator(metadata_key=vectorstore.metadata_column)
123
- elif isinstance(vectorstore, Redis):
124
+ if isinstance(vectorstore, Redis):
124
125
  return RedisTranslator.from_vectorstore(vectorstore)
125
- elif isinstance(vectorstore, TencentVectorDB):
126
+ if isinstance(vectorstore, TencentVectorDB):
126
127
  fields = [
127
128
  field.name for field in (vectorstore.meta_fields or []) if field.index
128
129
  ]
129
130
  return TencentVectorDBTranslator(fields)
130
- elif vectorstore.__class__ in BUILTIN_TRANSLATORS:
131
+ if vectorstore.__class__ in BUILTIN_TRANSLATORS:
131
132
  return BUILTIN_TRANSLATORS[vectorstore.__class__]()
133
+ try:
134
+ from langchain_astradb.vectorstores import AstraDBVectorStore
135
+ except ImportError:
136
+ pass
132
137
  else:
133
- try:
134
- from langchain_astradb.vectorstores import AstraDBVectorStore
135
- except ImportError:
136
- pass
137
- else:
138
- if isinstance(vectorstore, AstraDBVectorStore):
139
- return AstraDBTranslator()
140
-
141
- try:
142
- from langchain_elasticsearch.vectorstores import ElasticsearchStore
143
- except ImportError:
144
- pass
145
- else:
146
- if isinstance(vectorstore, ElasticsearchStore):
147
- return ElasticsearchTranslator()
148
-
149
- try:
150
- from langchain_pinecone import PineconeVectorStore
151
- except ImportError:
152
- pass
153
- else:
154
- if isinstance(vectorstore, PineconeVectorStore):
155
- return PineconeTranslator()
156
-
157
- try:
158
- from langchain_mongodb import MongoDBAtlasVectorSearch
159
- except ImportError:
160
- pass
161
- else:
162
- if isinstance(vectorstore, MongoDBAtlasVectorSearch):
163
- return MongoDBAtlasTranslator()
164
-
165
- try:
166
- from langchain_neo4j import Neo4jVector
167
- except ImportError:
168
- pass
169
- else:
170
- if isinstance(vectorstore, Neo4jVector):
171
- return Neo4jTranslator()
172
-
173
- try:
174
- # Trying langchain_chroma import if exists
175
- from langchain_chroma import Chroma
176
- except ImportError:
177
- pass
178
- else:
179
- if isinstance(vectorstore, Chroma):
180
- return ChromaTranslator()
181
-
182
- try:
183
- from langchain_postgres import PGVector
184
- from langchain_postgres import PGVectorTranslator as NewPGVectorTranslator
185
- except ImportError:
186
- pass
187
- else:
188
- if isinstance(vectorstore, PGVector):
189
- return NewPGVectorTranslator()
190
-
191
- try:
192
- from langchain_qdrant import QdrantVectorStore
193
- except ImportError:
194
- pass
195
- else:
196
- if isinstance(vectorstore, QdrantVectorStore):
197
- return QdrantTranslator(metadata_key=vectorstore.metadata_payload_key)
198
-
199
- try:
200
- # Added in langchain-community==0.2.11
201
- from langchain_community.query_constructors.hanavector import HanaTranslator
202
- from langchain_community.vectorstores import HanaDB
203
- except ImportError:
204
- pass
205
- else:
206
- if isinstance(vectorstore, HanaDB):
207
- return HanaTranslator()
208
-
209
- try:
210
- # Trying langchain_weaviate (weaviate v4) import if exists
211
- from langchain_weaviate.vectorstores import WeaviateVectorStore
212
-
213
- except ImportError:
214
- pass
215
- else:
216
- if isinstance(vectorstore, WeaviateVectorStore):
217
- return WeaviateTranslator()
218
-
219
- raise ValueError(
220
- f"Self query retriever with Vector Store type {vectorstore.__class__}"
221
- f" not supported."
222
- )
138
+ if isinstance(vectorstore, AstraDBVectorStore):
139
+ return AstraDBTranslator()
140
+
141
+ try:
142
+ from langchain_elasticsearch.vectorstores import ElasticsearchStore
143
+ except ImportError:
144
+ pass
145
+ else:
146
+ if isinstance(vectorstore, ElasticsearchStore):
147
+ return ElasticsearchTranslator()
148
+
149
+ try:
150
+ from langchain_pinecone import PineconeVectorStore
151
+ except ImportError:
152
+ pass
153
+ else:
154
+ if isinstance(vectorstore, PineconeVectorStore):
155
+ return PineconeTranslator()
156
+
157
+ try:
158
+ from langchain_milvus import Milvus
159
+ except ImportError:
160
+ pass
161
+ else:
162
+ if isinstance(vectorstore, Milvus):
163
+ return MilvusTranslator()
164
+
165
+ try:
166
+ from langchain_mongodb import MongoDBAtlasVectorSearch
167
+ except ImportError:
168
+ pass
169
+ else:
170
+ if isinstance(vectorstore, MongoDBAtlasVectorSearch):
171
+ return MongoDBAtlasTranslator()
172
+
173
+ try:
174
+ from langchain_neo4j import Neo4jVector
175
+ except ImportError:
176
+ pass
177
+ else:
178
+ if isinstance(vectorstore, Neo4jVector):
179
+ return Neo4jTranslator()
180
+
181
+ try:
182
+ # Trying langchain_chroma import if exists
183
+ from langchain_chroma import Chroma
184
+ except ImportError:
185
+ pass
186
+ else:
187
+ if isinstance(vectorstore, Chroma):
188
+ return ChromaTranslator()
189
+
190
+ try:
191
+ from langchain_postgres import PGVector
192
+ from langchain_postgres import PGVectorTranslator as NewPGVectorTranslator
193
+ except ImportError:
194
+ pass
195
+ else:
196
+ if isinstance(vectorstore, PGVector):
197
+ return NewPGVectorTranslator()
198
+
199
+ try:
200
+ from langchain_qdrant import QdrantVectorStore
201
+ except ImportError:
202
+ pass
203
+ else:
204
+ if isinstance(vectorstore, QdrantVectorStore):
205
+ return QdrantTranslator(metadata_key=vectorstore.metadata_payload_key)
206
+
207
+ try:
208
+ # Added in langchain-community==0.2.11
209
+ from langchain_community.query_constructors.hanavector import HanaTranslator
210
+ from langchain_community.vectorstores import HanaDB
211
+ except ImportError:
212
+ pass
213
+ else:
214
+ if isinstance(vectorstore, HanaDB):
215
+ return HanaTranslator()
216
+
217
+ try:
218
+ # Trying langchain_weaviate (weaviate v4) import if exists
219
+ from langchain_weaviate.vectorstores import WeaviateVectorStore
220
+
221
+ except ImportError:
222
+ pass
223
+ else:
224
+ if isinstance(vectorstore, WeaviateVectorStore):
225
+ return WeaviateTranslator()
226
+
227
+ msg = (
228
+ f"Self query retriever with Vector Store type {vectorstore.__class__}"
229
+ f" not supported."
230
+ )
231
+ raise ValueError(msg)
223
232
 
224
233
 
225
234
  class SelfQueryRetriever(BaseRetriever):
@@ -230,7 +239,7 @@ class SelfQueryRetriever(BaseRetriever):
230
239
  """The underlying vector store from which documents will be retrieved."""
231
240
  query_constructor: Runnable[dict, StructuredQuery] = Field(alias="llm_chain")
232
241
  """The query constructor chain for generating the vector store queries.
233
-
242
+
234
243
  llm_chain is legacy name kept for backwards compatibility."""
235
244
  search_type: str = "similarity"
236
245
  """The search type to perform on the vector store."""
@@ -254,7 +263,7 @@ class SelfQueryRetriever(BaseRetriever):
254
263
  """Validate translator."""
255
264
  if "structured_query_translator" not in values:
256
265
  values["structured_query_translator"] = _get_builtin_translator(
257
- values["vectorstore"]
266
+ values["vectorstore"],
258
267
  )
259
268
  return values
260
269
 
@@ -264,10 +273,12 @@ class SelfQueryRetriever(BaseRetriever):
264
273
  return self.query_constructor
265
274
 
266
275
  def _prepare_query(
267
- self, query: str, structured_query: StructuredQuery
276
+ self,
277
+ query: str,
278
+ structured_query: StructuredQuery,
268
279
  ) -> tuple[str, dict[str, Any]]:
269
280
  new_query, new_kwargs = self.structured_query_translator.visit_structured_query(
270
- structured_query
281
+ structured_query,
271
282
  )
272
283
  if structured_query.limit is not None:
273
284
  new_kwargs["k"] = structured_query.limit
@@ -277,19 +288,24 @@ class SelfQueryRetriever(BaseRetriever):
277
288
  return new_query, search_kwargs
278
289
 
279
290
  def _get_docs_with_query(
280
- self, query: str, search_kwargs: dict[str, Any]
291
+ self,
292
+ query: str,
293
+ search_kwargs: dict[str, Any],
281
294
  ) -> list[Document]:
282
- docs = self.vectorstore.search(query, self.search_type, **search_kwargs)
283
- return docs
295
+ return self.vectorstore.search(query, self.search_type, **search_kwargs)
284
296
 
285
297
  async def _aget_docs_with_query(
286
- self, query: str, search_kwargs: dict[str, Any]
298
+ self,
299
+ query: str,
300
+ search_kwargs: dict[str, Any],
287
301
  ) -> list[Document]:
288
- docs = await self.vectorstore.asearch(query, self.search_type, **search_kwargs)
289
- return docs
302
+ return await self.vectorstore.asearch(query, self.search_type, **search_kwargs)
290
303
 
291
304
  def _get_relevant_documents(
292
- self, query: str, *, run_manager: CallbackManagerForRetrieverRun
305
+ self,
306
+ query: str,
307
+ *,
308
+ run_manager: CallbackManagerForRetrieverRun,
293
309
  ) -> list[Document]:
294
310
  """Get documents relevant for a query.
295
311
 
@@ -300,16 +316,19 @@ class SelfQueryRetriever(BaseRetriever):
300
316
  List of relevant documents
301
317
  """
302
318
  structured_query = self.query_constructor.invoke(
303
- {"query": query}, config={"callbacks": run_manager.get_child()}
319
+ {"query": query},
320
+ config={"callbacks": run_manager.get_child()},
304
321
  )
305
322
  if self.verbose:
306
- logger.info(f"Generated Query: {structured_query}")
323
+ logger.info("Generated Query: %s", structured_query)
307
324
  new_query, search_kwargs = self._prepare_query(query, structured_query)
308
- docs = self._get_docs_with_query(new_query, search_kwargs)
309
- return docs
325
+ return self._get_docs_with_query(new_query, search_kwargs)
310
326
 
311
327
  async def _aget_relevant_documents(
312
- self, query: str, *, run_manager: AsyncCallbackManagerForRetrieverRun
328
+ self,
329
+ query: str,
330
+ *,
331
+ run_manager: AsyncCallbackManagerForRetrieverRun,
313
332
  ) -> list[Document]:
314
333
  """Get documents relevant for a query.
315
334
 
@@ -320,13 +339,13 @@ class SelfQueryRetriever(BaseRetriever):
320
339
  List of relevant documents
321
340
  """
322
341
  structured_query = await self.query_constructor.ainvoke(
323
- {"query": query}, config={"callbacks": run_manager.get_child()}
342
+ {"query": query},
343
+ config={"callbacks": run_manager.get_child()},
324
344
  )
325
345
  if self.verbose:
326
- logger.info(f"Generated Query: {structured_query}")
346
+ logger.info("Generated Query: %s", structured_query)
327
347
  new_query, search_kwargs = self._prepare_query(query, structured_query)
328
- docs = await self._aget_docs_with_query(new_query, search_kwargs)
329
- return docs
348
+ return await self._aget_docs_with_query(new_query, search_kwargs)
330
349
 
331
350
  @classmethod
332
351
  def from_llm(
@@ -337,8 +356,8 @@ class SelfQueryRetriever(BaseRetriever):
337
356
  metadata_field_info: Sequence[Union[AttributeInfo, dict]],
338
357
  structured_query_translator: Optional[Visitor] = None,
339
358
  chain_kwargs: Optional[dict] = None,
340
- enable_limit: bool = False,
341
- use_original_query: bool = False,
359
+ enable_limit: bool = False, # noqa: FBT001,FBT002
360
+ use_original_query: bool = False, # noqa: FBT001,FBT002
342
361
  **kwargs: Any,
343
362
  ) -> "SelfQueryRetriever":
344
363
  if structured_query_translator is None:
@@ -367,7 +386,7 @@ class SelfQueryRetriever(BaseRetriever):
367
386
  **chain_kwargs,
368
387
  )
369
388
  query_constructor = query_constructor.with_config(
370
- run_name=QUERY_CONSTRUCTOR_RUN_NAME
389
+ run_name=QUERY_CONSTRUCTOR_RUN_NAME,
371
390
  )
372
391
  return cls( # type: ignore[call-arg]
373
392
  query_constructor=query_constructor,
@@ -24,7 +24,7 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
24
24
  vectorstore: VectorStore
25
25
  """The vectorstore to store documents and determine salience."""
26
26
 
27
- search_kwargs: dict = Field(default_factory=lambda: dict(k=100))
27
+ search_kwargs: dict = Field(default_factory=lambda: {"k": 100})
28
28
  """Keyword arguments to pass to the vectorstore similarity search."""
29
29
 
30
30
  # TODO: abstract as a queue
@@ -81,7 +81,8 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
81
81
  """Return documents that are salient to the query."""
82
82
  docs_and_scores: list[tuple[Document, float]]
83
83
  docs_and_scores = self.vectorstore.similarity_search_with_relevance_scores(
84
- query, **self.search_kwargs
84
+ query,
85
+ **self.search_kwargs,
85
86
  )
86
87
  results = {}
87
88
  for fetched_doc, relevance in docs_and_scores:
@@ -96,7 +97,8 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
96
97
  docs_and_scores: list[tuple[Document, float]]
97
98
  docs_and_scores = (
98
99
  await self.vectorstore.asimilarity_search_with_relevance_scores(
99
- query, **self.search_kwargs
100
+ query,
101
+ **self.search_kwargs,
100
102
  )
101
103
  )
102
104
  results = {}
@@ -108,7 +110,8 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
108
110
  return results
109
111
 
110
112
  def _get_rescored_docs(
111
- self, docs_and_scores: dict[Any, tuple[Document, Optional[float]]]
113
+ self,
114
+ docs_and_scores: dict[Any, tuple[Document, Optional[float]]],
112
115
  ) -> list[Document]:
113
116
  current_time = datetime.datetime.now()
114
117
  rescored_docs = [
@@ -126,7 +129,10 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
126
129
  return result
127
130
 
128
131
  def _get_relevant_documents(
129
- self, query: str, *, run_manager: CallbackManagerForRetrieverRun
132
+ self,
133
+ query: str,
134
+ *,
135
+ run_manager: CallbackManagerForRetrieverRun,
130
136
  ) -> list[Document]:
131
137
  docs_and_scores = {
132
138
  doc.metadata["buffer_idx"]: (doc, self.default_salience)
@@ -137,7 +143,10 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
137
143
  return self._get_rescored_docs(docs_and_scores)
138
144
 
139
145
  async def _aget_relevant_documents(
140
- self, query: str, *, run_manager: AsyncCallbackManagerForRetrieverRun
146
+ self,
147
+ query: str,
148
+ *,
149
+ run_manager: AsyncCallbackManagerForRetrieverRun,
141
150
  ) -> list[Document]:
142
151
  docs_and_scores = {
143
152
  doc.metadata["buffer_idx"]: (doc, self.default_salience)
@@ -164,7 +173,9 @@ class TimeWeightedVectorStoreRetriever(BaseRetriever):
164
173
  return self.vectorstore.add_documents(dup_docs, **kwargs)
165
174
 
166
175
  async def aadd_documents(
167
- self, documents: list[Document], **kwargs: Any
176
+ self,
177
+ documents: list[Document],
178
+ **kwargs: Any,
168
179
  ) -> list[str]:
169
180
  """Add documents to vectorstore."""
170
181
  current_time = kwargs.get("current_time")
@@ -23,6 +23,6 @@ def __getattr__(name: str) -> Any:
23
23
 
24
24
 
25
25
  __all__ = [
26
- "ZillizRetriever",
27
26
  "ZillizRetreiver",
27
+ "ZillizRetriever",
28
28
  ]
@@ -1,6 +1,7 @@
1
1
  from typing import Any, Optional
2
2
 
3
- from langchain_core.runnables.base import Input, Output, RunnableBindingBase
3
+ from langchain_core.runnables.base import RunnableBindingBase
4
+ from langchain_core.runnables.utils import Input, Output
4
5
 
5
6
 
6
7
  class HubRunnable(RunnableBindingBase[Input, Output]):
@@ -37,8 +37,12 @@ class OpenAIFunctionsRouter(RunnableBindingBase[BaseMessage, Any]):
37
37
  functions: Optional[list[OpenAIFunction]] = None,
38
38
  ):
39
39
  if functions is not None:
40
- assert len(functions) == len(runnables)
41
- assert all(func["name"] in runnables for func in functions)
40
+ if len(functions) != len(runnables):
41
+ msg = "The number of functions does not match the number of runnables."
42
+ raise ValueError(msg)
43
+ if not all(func["name"] in runnables for func in functions):
44
+ msg = "One or more function names are not found in runnables."
45
+ raise ValueError(msg)
42
46
  router = (
43
47
  JsonOutputFunctionsParser(args_only=False)
44
48
  | {"key": itemgetter("name"), "input": itemgetter("arguments")}
@@ -43,40 +43,40 @@ Memory = BaseMemory
43
43
  _message_to_dict = message_to_dict
44
44
 
45
45
  __all__ = [
46
- "BaseCache",
47
- "BaseMemory",
48
- "BaseStore",
49
- "AgentFinish",
46
+ "RUN_KEY",
47
+ "AIMessage",
50
48
  "AgentAction",
51
- "Document",
49
+ "AgentFinish",
50
+ "BaseCache",
52
51
  "BaseChatMessageHistory",
53
52
  "BaseDocumentTransformer",
53
+ "BaseLLMOutputParser",
54
+ "BaseMemory",
54
55
  "BaseMessage",
56
+ "BaseOutputParser",
57
+ "BasePromptTemplate",
58
+ "BaseRetriever",
59
+ "BaseStore",
60
+ "ChatGeneration",
55
61
  "ChatMessage",
62
+ "ChatResult",
63
+ "Document",
56
64
  "FunctionMessage",
65
+ "Generation",
57
66
  "HumanMessage",
58
- "AIMessage",
59
- "SystemMessage",
60
- "messages_from_dict",
61
- "messages_to_dict",
62
- "message_to_dict",
63
- "_message_to_dict",
64
- "_message_from_dict",
65
- "get_buffer_string",
66
- "RunInfo",
67
67
  "LLMResult",
68
- "ChatResult",
69
- "ChatGeneration",
70
- "Generation",
71
- "PromptValue",
72
68
  "LangChainException",
73
- "BaseRetriever",
74
- "RUN_KEY",
75
69
  "Memory",
76
70
  "OutputParserException",
71
+ "PromptValue",
72
+ "RunInfo",
77
73
  "StrOutputParser",
78
- "BaseOutputParser",
79
- "BaseLLMOutputParser",
80
- "BasePromptTemplate",
74
+ "SystemMessage",
75
+ "_message_from_dict",
76
+ "_message_to_dict",
81
77
  "format_document",
78
+ "get_buffer_string",
79
+ "message_to_dict",
80
+ "messages_from_dict",
81
+ "messages_to_dict",
82
82
  ]
langchain/schema/cache.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from langchain_core.caches import RETURN_VAL_TYPE, BaseCache
2
2
 
3
- __all__ = ["BaseCache", "RETURN_VAL_TYPE"]
3
+ __all__ = ["RETURN_VAL_TYPE", "BaseCache"]
@@ -11,13 +11,13 @@ from langchain_core.callbacks.base import (
11
11
  )
12
12
 
13
13
  __all__ = [
14
- "RetrieverManagerMixin",
15
- "LLMManagerMixin",
16
- "ChainManagerMixin",
17
- "ToolManagerMixin",
18
- "CallbackManagerMixin",
19
- "RunManagerMixin",
20
- "BaseCallbackHandler",
21
14
  "AsyncCallbackHandler",
15
+ "BaseCallbackHandler",
22
16
  "BaseCallbackManager",
17
+ "CallbackManagerMixin",
18
+ "ChainManagerMixin",
19
+ "LLMManagerMixin",
20
+ "RetrieverManagerMixin",
21
+ "RunManagerMixin",
22
+ "ToolManagerMixin",
23
23
  ]
@@ -28,28 +28,28 @@ from langchain_core.tracers.context import (
28
28
  from langchain_core.utils.env import env_var_is_set
29
29
 
30
30
  __all__ = [
31
- "tracing_enabled",
32
- "tracing_v2_enabled",
33
- "collect_runs",
34
- "trace_as_chain_group",
35
- "handle_event",
36
- "BaseRunManager",
37
- "RunManager",
38
- "ParentRunManager",
39
- "AsyncRunManager",
40
- "AsyncParentRunManager",
41
- "CallbackManagerForLLMRun",
42
- "AsyncCallbackManagerForLLMRun",
43
- "CallbackManagerForChainRun",
31
+ "AsyncCallbackManager",
32
+ "AsyncCallbackManagerForChainGroup",
44
33
  "AsyncCallbackManagerForChainRun",
45
- "CallbackManagerForToolRun",
46
- "AsyncCallbackManagerForToolRun",
47
- "CallbackManagerForRetrieverRun",
34
+ "AsyncCallbackManagerForLLMRun",
48
35
  "AsyncCallbackManagerForRetrieverRun",
36
+ "AsyncCallbackManagerForToolRun",
37
+ "AsyncParentRunManager",
38
+ "AsyncRunManager",
39
+ "BaseRunManager",
49
40
  "CallbackManager",
50
41
  "CallbackManagerForChainGroup",
51
- "AsyncCallbackManager",
52
- "AsyncCallbackManagerForChainGroup",
53
- "register_configure_hook",
42
+ "CallbackManagerForChainRun",
43
+ "CallbackManagerForLLMRun",
44
+ "CallbackManagerForRetrieverRun",
45
+ "CallbackManagerForToolRun",
46
+ "ParentRunManager",
47
+ "RunManager",
48
+ "collect_runs",
54
49
  "env_var_is_set",
50
+ "handle_event",
51
+ "register_configure_hook",
52
+ "trace_as_chain_group",
53
+ "tracing_enabled",
54
+ "tracing_v2_enabled",
55
55
  ]
@@ -1,3 +1,4 @@
1
- from langchain_core.tracers.base import BaseTracer, TracerException
1
+ from langchain_core.exceptions import TracerException
2
+ from langchain_core.tracers.base import BaseTracer
2
3
 
3
- __all__ = ["TracerException", "BaseTracer"]
4
+ __all__ = ["BaseTracer", "TracerException"]
@@ -3,4 +3,4 @@ from langchain_core.tracers.evaluation import (
3
3
  wait_for_all_evaluators,
4
4
  )
5
5
 
6
- __all__ = ["wait_for_all_evaluators", "EvaluatorCallbackHandler"]
6
+ __all__ = ["EvaluatorCallbackHandler", "wait_for_all_evaluators"]
@@ -5,4 +5,4 @@ from langchain_core.tracers.langchain import (
5
5
  wait_for_all_tracers,
6
6
  )
7
7
 
8
- __all__ = ["log_error_once", "wait_for_all_tracers", "get_client", "LangChainTracer"]
8
+ __all__ = ["LangChainTracer", "get_client", "log_error_once", "wait_for_all_tracers"]
@@ -1,3 +1,3 @@
1
1
  from langchain_core.tracers.langchain_v1 import LangChainTracerV1, get_headers
2
2
 
3
- __all__ = ["get_headers", "LangChainTracerV1"]
3
+ __all__ = ["LangChainTracerV1", "get_headers"]
@@ -6,4 +6,4 @@ from langchain_core.tracers.log_stream import (
6
6
  RunState,
7
7
  )
8
8
 
9
- __all__ = ["LogEntry", "RunState", "RunLogPatch", "RunLog", "LogStreamCallbackHandler"]
9
+ __all__ = ["LogEntry", "LogStreamCallbackHandler", "RunLog", "RunLogPatch", "RunState"]
@@ -13,15 +13,15 @@ from langchain_core.tracers.schemas import (
13
13
  )
14
14
 
15
15
  __all__ = [
16
- "RunTypeEnum",
17
- "TracerSessionV1Base",
18
- "TracerSessionV1Create",
19
- "TracerSessionV1",
20
- "TracerSessionBase",
21
- "TracerSession",
22
16
  "BaseRun",
23
- "LLMRun",
24
17
  "ChainRun",
25
- "ToolRun",
18
+ "LLMRun",
26
19
  "Run",
20
+ "RunTypeEnum",
21
+ "ToolRun",
22
+ "TracerSession",
23
+ "TracerSessionBase",
24
+ "TracerSessionV1",
25
+ "TracerSessionV1Base",
26
+ "TracerSessionV1Create",
27
27
  ]