langchain 0.3.26__py3-none-any.whl → 0.4.0.dev0__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 (591) 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 +174 -151
  9. langchain/agents/agent_iterator.py +50 -26
  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 +4 -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 +6 -6
  48. langchain/agents/chat/base.py +8 -12
  49. langchain/agents/chat/output_parser.py +9 -6
  50. langchain/agents/chat/prompt.py +3 -4
  51. langchain/agents/conversational/base.py +11 -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 +9 -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 +17 -9
  63. langchain/agents/json_chat/base.py +19 -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 +11 -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 +81 -71
  71. langchain/agents/openai_functions_agent/agent_token_buffer_memory.py +2 -0
  72. langchain/agents/openai_functions_agent/base.py +47 -37
  73. langchain/agents/openai_functions_multi_agent/base.py +40 -27
  74. langchain/agents/openai_tools/base.py +9 -8
  75. langchain/agents/output_parsers/__init__.py +3 -3
  76. langchain/agents/output_parsers/json.py +8 -6
  77. langchain/agents/output_parsers/openai_functions.py +24 -9
  78. langchain/agents/output_parsers/openai_tools.py +16 -4
  79. langchain/agents/output_parsers/react_json_single_input.py +13 -5
  80. langchain/agents/output_parsers/react_single_input.py +18 -11
  81. langchain/agents/output_parsers/self_ask.py +5 -2
  82. langchain/agents/output_parsers/tools.py +32 -13
  83. langchain/agents/output_parsers/xml.py +102 -28
  84. langchain/agents/react/agent.py +5 -4
  85. langchain/agents/react/base.py +26 -17
  86. langchain/agents/react/output_parser.py +7 -6
  87. langchain/agents/react/textworld_prompt.py +0 -1
  88. langchain/agents/react/wiki_prompt.py +14 -15
  89. langchain/agents/schema.py +5 -2
  90. langchain/agents/self_ask_with_search/base.py +23 -15
  91. langchain/agents/self_ask_with_search/prompt.py +0 -1
  92. langchain/agents/structured_chat/base.py +19 -11
  93. langchain/agents/structured_chat/output_parser.py +29 -18
  94. langchain/agents/structured_chat/prompt.py +3 -4
  95. langchain/agents/tool_calling_agent/base.py +8 -6
  96. langchain/agents/tools.py +5 -2
  97. langchain/agents/utils.py +2 -3
  98. langchain/agents/xml/base.py +12 -6
  99. langchain/agents/xml/prompt.py +1 -2
  100. langchain/cache.py +12 -12
  101. langchain/callbacks/__init__.py +11 -11
  102. langchain/callbacks/aim_callback.py +2 -2
  103. langchain/callbacks/argilla_callback.py +1 -1
  104. langchain/callbacks/arize_callback.py +1 -1
  105. langchain/callbacks/arthur_callback.py +1 -1
  106. langchain/callbacks/base.py +7 -7
  107. langchain/callbacks/clearml_callback.py +1 -1
  108. langchain/callbacks/comet_ml_callback.py +1 -1
  109. langchain/callbacks/confident_callback.py +1 -1
  110. langchain/callbacks/context_callback.py +1 -1
  111. langchain/callbacks/flyte_callback.py +1 -1
  112. langchain/callbacks/human.py +2 -2
  113. langchain/callbacks/infino_callback.py +1 -1
  114. langchain/callbacks/labelstudio_callback.py +1 -1
  115. langchain/callbacks/llmonitor_callback.py +1 -1
  116. langchain/callbacks/manager.py +5 -5
  117. langchain/callbacks/mlflow_callback.py +2 -2
  118. langchain/callbacks/openai_info.py +1 -1
  119. langchain/callbacks/promptlayer_callback.py +1 -1
  120. langchain/callbacks/sagemaker_callback.py +1 -1
  121. langchain/callbacks/streaming_aiter.py +17 -3
  122. langchain/callbacks/streaming_aiter_final_only.py +16 -5
  123. langchain/callbacks/streaming_stdout_final_only.py +10 -3
  124. langchain/callbacks/streamlit/__init__.py +3 -2
  125. langchain/callbacks/streamlit/mutable_expander.py +1 -1
  126. langchain/callbacks/streamlit/streamlit_callback_handler.py +3 -3
  127. langchain/callbacks/tracers/__init__.py +1 -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 +12 -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 +41 -23
  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 +96 -56
  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 +30 -11
  149. langchain/chains/combine_documents/map_reduce.py +41 -30
  150. langchain/chains/combine_documents/map_rerank.py +39 -24
  151. langchain/chains/combine_documents/reduce.py +48 -26
  152. langchain/chains/combine_documents/refine.py +27 -17
  153. langchain/chains/combine_documents/stuff.py +24 -13
  154. langchain/chains/constitutional_ai/base.py +11 -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 +9 -4
  158. langchain/chains/conversation/memory.py +5 -5
  159. langchain/chains/conversation/prompt.py +5 -5
  160. langchain/chains/conversational_retrieval/base.py +108 -79
  161. langchain/chains/conversational_retrieval/prompts.py +2 -3
  162. langchain/chains/elasticsearch_database/base.py +10 -10
  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 +28 -12
  167. langchain/chains/flare/prompts.py +2 -0
  168. langchain/chains/graph_qa/cypher.py +2 -2
  169. langchain/chains/graph_qa/falkordb.py +1 -1
  170. langchain/chains/graph_qa/gremlin.py +1 -1
  171. langchain/chains/graph_qa/neptune_sparql.py +1 -1
  172. langchain/chains/graph_qa/prompts.py +2 -2
  173. langchain/chains/history_aware_retriever.py +2 -1
  174. langchain/chains/hyde/base.py +6 -5
  175. langchain/chains/hyde/prompts.py +5 -6
  176. langchain/chains/llm.py +82 -61
  177. langchain/chains/llm_bash/__init__.py +3 -2
  178. langchain/chains/llm_checker/base.py +19 -6
  179. langchain/chains/llm_checker/prompt.py +3 -4
  180. langchain/chains/llm_math/base.py +25 -10
  181. langchain/chains/llm_math/prompt.py +1 -2
  182. langchain/chains/llm_summarization_checker/base.py +22 -7
  183. langchain/chains/llm_symbolic_math/__init__.py +3 -2
  184. langchain/chains/loading.py +155 -97
  185. langchain/chains/mapreduce.py +4 -3
  186. langchain/chains/moderation.py +11 -9
  187. langchain/chains/natbot/base.py +11 -9
  188. langchain/chains/natbot/crawler.py +102 -76
  189. langchain/chains/natbot/prompt.py +2 -3
  190. langchain/chains/openai_functions/__init__.py +7 -7
  191. langchain/chains/openai_functions/base.py +15 -10
  192. langchain/chains/openai_functions/citation_fuzzy_match.py +21 -11
  193. langchain/chains/openai_functions/extraction.py +19 -19
  194. langchain/chains/openai_functions/openapi.py +39 -35
  195. langchain/chains/openai_functions/qa_with_structure.py +22 -15
  196. langchain/chains/openai_functions/tagging.py +4 -4
  197. langchain/chains/openai_tools/extraction.py +7 -8
  198. langchain/chains/qa_generation/base.py +8 -3
  199. langchain/chains/qa_generation/prompt.py +5 -5
  200. langchain/chains/qa_with_sources/base.py +17 -6
  201. langchain/chains/qa_with_sources/loading.py +16 -8
  202. langchain/chains/qa_with_sources/map_reduce_prompt.py +8 -9
  203. langchain/chains/qa_with_sources/refine_prompts.py +0 -1
  204. langchain/chains/qa_with_sources/retrieval.py +15 -6
  205. langchain/chains/qa_with_sources/stuff_prompt.py +6 -7
  206. langchain/chains/qa_with_sources/vector_db.py +21 -8
  207. langchain/chains/query_constructor/base.py +37 -34
  208. langchain/chains/query_constructor/ir.py +4 -4
  209. langchain/chains/query_constructor/parser.py +101 -34
  210. langchain/chains/query_constructor/prompt.py +5 -6
  211. langchain/chains/question_answering/chain.py +21 -10
  212. langchain/chains/question_answering/map_reduce_prompt.py +14 -14
  213. langchain/chains/question_answering/map_rerank_prompt.py +3 -3
  214. langchain/chains/question_answering/refine_prompts.py +2 -5
  215. langchain/chains/question_answering/stuff_prompt.py +5 -5
  216. langchain/chains/retrieval.py +1 -3
  217. langchain/chains/retrieval_qa/base.py +38 -27
  218. langchain/chains/retrieval_qa/prompt.py +1 -2
  219. langchain/chains/router/__init__.py +3 -3
  220. langchain/chains/router/base.py +38 -22
  221. langchain/chains/router/embedding_router.py +15 -8
  222. langchain/chains/router/llm_router.py +23 -20
  223. langchain/chains/router/multi_prompt.py +5 -2
  224. langchain/chains/router/multi_retrieval_qa.py +28 -5
  225. langchain/chains/sequential.py +30 -18
  226. langchain/chains/sql_database/prompt.py +14 -16
  227. langchain/chains/sql_database/query.py +7 -5
  228. langchain/chains/structured_output/__init__.py +1 -1
  229. langchain/chains/structured_output/base.py +77 -67
  230. langchain/chains/summarize/chain.py +11 -5
  231. langchain/chains/summarize/map_reduce_prompt.py +0 -1
  232. langchain/chains/summarize/stuff_prompt.py +0 -1
  233. langchain/chains/transform.py +9 -6
  234. langchain/chat_loaders/facebook_messenger.py +1 -1
  235. langchain/chat_loaders/langsmith.py +1 -1
  236. langchain/chat_loaders/utils.py +3 -3
  237. langchain/chat_models/__init__.py +20 -19
  238. langchain/chat_models/anthropic.py +1 -1
  239. langchain/chat_models/azureml_endpoint.py +1 -1
  240. langchain/chat_models/baidu_qianfan_endpoint.py +1 -1
  241. langchain/chat_models/base.py +213 -139
  242. langchain/chat_models/bedrock.py +1 -1
  243. langchain/chat_models/fake.py +1 -1
  244. langchain/chat_models/meta.py +1 -1
  245. langchain/chat_models/pai_eas_endpoint.py +1 -1
  246. langchain/chat_models/promptlayer_openai.py +1 -1
  247. langchain/chat_models/volcengine_maas.py +1 -1
  248. langchain/docstore/base.py +1 -1
  249. langchain/document_loaders/__init__.py +9 -9
  250. langchain/document_loaders/airbyte.py +3 -3
  251. langchain/document_loaders/assemblyai.py +1 -1
  252. langchain/document_loaders/azure_blob_storage_container.py +1 -1
  253. langchain/document_loaders/azure_blob_storage_file.py +1 -1
  254. langchain/document_loaders/baiducloud_bos_file.py +1 -1
  255. langchain/document_loaders/base.py +1 -1
  256. langchain/document_loaders/blob_loaders/__init__.py +1 -1
  257. langchain/document_loaders/blob_loaders/schema.py +1 -4
  258. langchain/document_loaders/blockchain.py +1 -1
  259. langchain/document_loaders/chatgpt.py +1 -1
  260. langchain/document_loaders/college_confidential.py +1 -1
  261. langchain/document_loaders/confluence.py +1 -1
  262. langchain/document_loaders/email.py +1 -1
  263. langchain/document_loaders/facebook_chat.py +1 -1
  264. langchain/document_loaders/markdown.py +1 -1
  265. langchain/document_loaders/notebook.py +1 -1
  266. langchain/document_loaders/org_mode.py +1 -1
  267. langchain/document_loaders/parsers/__init__.py +1 -1
  268. langchain/document_loaders/parsers/docai.py +1 -1
  269. langchain/document_loaders/parsers/generic.py +1 -1
  270. langchain/document_loaders/parsers/html/__init__.py +1 -1
  271. langchain/document_loaders/parsers/html/bs4.py +1 -1
  272. langchain/document_loaders/parsers/language/cobol.py +1 -1
  273. langchain/document_loaders/parsers/language/python.py +1 -1
  274. langchain/document_loaders/parsers/msword.py +1 -1
  275. langchain/document_loaders/parsers/pdf.py +5 -5
  276. langchain/document_loaders/parsers/registry.py +1 -1
  277. langchain/document_loaders/pdf.py +8 -8
  278. langchain/document_loaders/powerpoint.py +1 -1
  279. langchain/document_loaders/pyspark_dataframe.py +1 -1
  280. langchain/document_loaders/telegram.py +2 -2
  281. langchain/document_loaders/tencent_cos_directory.py +1 -1
  282. langchain/document_loaders/unstructured.py +5 -5
  283. langchain/document_loaders/url_playwright.py +1 -1
  284. langchain/document_loaders/whatsapp_chat.py +1 -1
  285. langchain/document_loaders/youtube.py +2 -2
  286. langchain/document_transformers/__init__.py +3 -3
  287. langchain/document_transformers/beautiful_soup_transformer.py +1 -1
  288. langchain/document_transformers/doctran_text_extract.py +1 -1
  289. langchain/document_transformers/doctran_text_qa.py +1 -1
  290. langchain/document_transformers/doctran_text_translate.py +1 -1
  291. langchain/document_transformers/embeddings_redundant_filter.py +3 -3
  292. langchain/document_transformers/google_translate.py +1 -1
  293. langchain/document_transformers/html2text.py +1 -1
  294. langchain/document_transformers/nuclia_text_transform.py +1 -1
  295. langchain/embeddings/__init__.py +5 -5
  296. langchain/embeddings/base.py +35 -24
  297. langchain/embeddings/cache.py +37 -32
  298. langchain/embeddings/fake.py +1 -1
  299. langchain/embeddings/huggingface.py +2 -2
  300. langchain/evaluation/__init__.py +22 -22
  301. langchain/evaluation/agents/trajectory_eval_chain.py +26 -25
  302. langchain/evaluation/agents/trajectory_eval_prompt.py +6 -9
  303. langchain/evaluation/comparison/__init__.py +1 -1
  304. langchain/evaluation/comparison/eval_chain.py +21 -13
  305. langchain/evaluation/comparison/prompt.py +1 -2
  306. langchain/evaluation/criteria/__init__.py +1 -1
  307. langchain/evaluation/criteria/eval_chain.py +23 -11
  308. langchain/evaluation/criteria/prompt.py +2 -3
  309. langchain/evaluation/embedding_distance/base.py +34 -20
  310. langchain/evaluation/exact_match/base.py +14 -1
  311. langchain/evaluation/loading.py +16 -11
  312. langchain/evaluation/parsing/base.py +20 -4
  313. langchain/evaluation/parsing/json_distance.py +24 -10
  314. langchain/evaluation/parsing/json_schema.py +13 -12
  315. langchain/evaluation/qa/__init__.py +1 -1
  316. langchain/evaluation/qa/eval_chain.py +20 -5
  317. langchain/evaluation/qa/eval_prompt.py +7 -8
  318. langchain/evaluation/qa/generate_chain.py +4 -1
  319. langchain/evaluation/qa/generate_prompt.py +2 -4
  320. langchain/evaluation/regex_match/base.py +9 -1
  321. langchain/evaluation/schema.py +38 -30
  322. langchain/evaluation/scoring/__init__.py +1 -1
  323. langchain/evaluation/scoring/eval_chain.py +23 -15
  324. langchain/evaluation/scoring/prompt.py +0 -1
  325. langchain/evaluation/string_distance/base.py +20 -9
  326. langchain/globals.py +12 -11
  327. langchain/graphs/__init__.py +6 -6
  328. langchain/graphs/graph_document.py +1 -1
  329. langchain/graphs/networkx_graph.py +2 -2
  330. langchain/hub.py +9 -11
  331. langchain/indexes/__init__.py +3 -3
  332. langchain/indexes/_sql_record_manager.py +63 -46
  333. langchain/indexes/prompts/entity_extraction.py +1 -2
  334. langchain/indexes/prompts/entity_summarization.py +1 -2
  335. langchain/indexes/prompts/knowledge_triplet_extraction.py +1 -3
  336. langchain/indexes/vectorstore.py +35 -19
  337. langchain/llms/__init__.py +13 -13
  338. langchain/llms/ai21.py +1 -1
  339. langchain/llms/azureml_endpoint.py +4 -4
  340. langchain/llms/base.py +15 -7
  341. langchain/llms/bedrock.py +1 -1
  342. langchain/llms/cloudflare_workersai.py +1 -1
  343. langchain/llms/gradient_ai.py +1 -1
  344. langchain/llms/loading.py +1 -1
  345. langchain/llms/openai.py +1 -1
  346. langchain/llms/sagemaker_endpoint.py +1 -1
  347. langchain/load/dump.py +1 -1
  348. langchain/load/load.py +1 -1
  349. langchain/load/serializable.py +3 -3
  350. langchain/memory/__init__.py +3 -3
  351. langchain/memory/buffer.py +14 -7
  352. langchain/memory/buffer_window.py +2 -0
  353. langchain/memory/chat_memory.py +14 -8
  354. langchain/memory/chat_message_histories/__init__.py +1 -1
  355. langchain/memory/chat_message_histories/astradb.py +1 -1
  356. langchain/memory/chat_message_histories/cassandra.py +1 -1
  357. langchain/memory/chat_message_histories/cosmos_db.py +1 -1
  358. langchain/memory/chat_message_histories/dynamodb.py +1 -1
  359. langchain/memory/chat_message_histories/elasticsearch.py +1 -1
  360. langchain/memory/chat_message_histories/file.py +1 -1
  361. langchain/memory/chat_message_histories/firestore.py +1 -1
  362. langchain/memory/chat_message_histories/momento.py +1 -1
  363. langchain/memory/chat_message_histories/mongodb.py +1 -1
  364. langchain/memory/chat_message_histories/neo4j.py +1 -1
  365. langchain/memory/chat_message_histories/postgres.py +1 -1
  366. langchain/memory/chat_message_histories/redis.py +1 -1
  367. langchain/memory/chat_message_histories/rocksetdb.py +1 -1
  368. langchain/memory/chat_message_histories/singlestoredb.py +1 -1
  369. langchain/memory/chat_message_histories/streamlit.py +1 -1
  370. langchain/memory/chat_message_histories/upstash_redis.py +1 -1
  371. langchain/memory/chat_message_histories/xata.py +1 -1
  372. langchain/memory/chat_message_histories/zep.py +1 -1
  373. langchain/memory/combined.py +14 -13
  374. langchain/memory/entity.py +131 -61
  375. langchain/memory/prompt.py +10 -11
  376. langchain/memory/readonly.py +0 -2
  377. langchain/memory/simple.py +4 -3
  378. langchain/memory/summary.py +43 -11
  379. langchain/memory/summary_buffer.py +20 -8
  380. langchain/memory/token_buffer.py +2 -0
  381. langchain/memory/utils.py +3 -2
  382. langchain/memory/vectorstore.py +12 -5
  383. langchain/memory/vectorstore_token_buffer_memory.py +5 -5
  384. langchain/model_laboratory.py +12 -11
  385. langchain/output_parsers/__init__.py +4 -4
  386. langchain/output_parsers/boolean.py +7 -4
  387. langchain/output_parsers/combining.py +14 -7
  388. langchain/output_parsers/datetime.py +32 -31
  389. langchain/output_parsers/enum.py +10 -4
  390. langchain/output_parsers/fix.py +60 -53
  391. langchain/output_parsers/format_instructions.py +6 -8
  392. langchain/output_parsers/json.py +2 -2
  393. langchain/output_parsers/list.py +2 -2
  394. langchain/output_parsers/loading.py +9 -9
  395. langchain/output_parsers/openai_functions.py +3 -3
  396. langchain/output_parsers/openai_tools.py +1 -1
  397. langchain/output_parsers/pandas_dataframe.py +59 -48
  398. langchain/output_parsers/prompts.py +1 -2
  399. langchain/output_parsers/rail_parser.py +1 -1
  400. langchain/output_parsers/regex.py +9 -8
  401. langchain/output_parsers/regex_dict.py +7 -10
  402. langchain/output_parsers/retry.py +99 -80
  403. langchain/output_parsers/structured.py +21 -6
  404. langchain/output_parsers/yaml.py +19 -11
  405. langchain/prompts/__init__.py +5 -3
  406. langchain/prompts/base.py +5 -5
  407. langchain/prompts/chat.py +8 -8
  408. langchain/prompts/example_selector/__init__.py +3 -1
  409. langchain/prompts/example_selector/semantic_similarity.py +2 -2
  410. langchain/prompts/few_shot.py +1 -1
  411. langchain/prompts/loading.py +3 -3
  412. langchain/prompts/prompt.py +1 -1
  413. langchain/pydantic_v1/__init__.py +1 -1
  414. langchain/retrievers/__init__.py +5 -5
  415. langchain/retrievers/bedrock.py +2 -2
  416. langchain/retrievers/bm25.py +1 -1
  417. langchain/retrievers/contextual_compression.py +14 -8
  418. langchain/retrievers/docarray.py +1 -1
  419. langchain/retrievers/document_compressors/__init__.py +5 -4
  420. langchain/retrievers/document_compressors/base.py +12 -6
  421. langchain/retrievers/document_compressors/chain_extract.py +5 -3
  422. langchain/retrievers/document_compressors/chain_extract_prompt.py +2 -3
  423. langchain/retrievers/document_compressors/chain_filter.py +9 -9
  424. langchain/retrievers/document_compressors/chain_filter_prompt.py +1 -2
  425. langchain/retrievers/document_compressors/cohere_rerank.py +17 -15
  426. langchain/retrievers/document_compressors/cross_encoder_rerank.py +2 -0
  427. langchain/retrievers/document_compressors/embeddings_filter.py +24 -17
  428. langchain/retrievers/document_compressors/flashrank_rerank.py +1 -1
  429. langchain/retrievers/document_compressors/listwise_rerank.py +8 -5
  430. langchain/retrievers/ensemble.py +30 -27
  431. langchain/retrievers/google_cloud_documentai_warehouse.py +1 -1
  432. langchain/retrievers/google_vertex_ai_search.py +2 -2
  433. langchain/retrievers/kendra.py +10 -10
  434. langchain/retrievers/llama_index.py +1 -1
  435. langchain/retrievers/merger_retriever.py +11 -11
  436. langchain/retrievers/milvus.py +1 -1
  437. langchain/retrievers/multi_query.py +35 -27
  438. langchain/retrievers/multi_vector.py +24 -9
  439. langchain/retrievers/parent_document_retriever.py +33 -9
  440. langchain/retrievers/re_phraser.py +6 -5
  441. langchain/retrievers/self_query/base.py +157 -127
  442. langchain/retrievers/time_weighted_retriever.py +21 -7
  443. langchain/retrievers/zilliz.py +1 -1
  444. langchain/runnables/hub.py +12 -0
  445. langchain/runnables/openai_functions.py +12 -2
  446. langchain/schema/__init__.py +23 -23
  447. langchain/schema/cache.py +1 -1
  448. langchain/schema/callbacks/base.py +7 -7
  449. langchain/schema/callbacks/manager.py +19 -19
  450. langchain/schema/callbacks/tracers/base.py +1 -1
  451. langchain/schema/callbacks/tracers/evaluation.py +1 -1
  452. langchain/schema/callbacks/tracers/langchain.py +1 -1
  453. langchain/schema/callbacks/tracers/langchain_v1.py +1 -1
  454. langchain/schema/callbacks/tracers/log_stream.py +1 -1
  455. langchain/schema/callbacks/tracers/schemas.py +8 -8
  456. langchain/schema/callbacks/tracers/stdout.py +3 -3
  457. langchain/schema/document.py +1 -1
  458. langchain/schema/language_model.py +2 -2
  459. langchain/schema/messages.py +12 -12
  460. langchain/schema/output.py +3 -3
  461. langchain/schema/output_parser.py +3 -3
  462. langchain/schema/runnable/__init__.py +3 -3
  463. langchain/schema/runnable/base.py +9 -9
  464. langchain/schema/runnable/config.py +5 -5
  465. langchain/schema/runnable/configurable.py +1 -1
  466. langchain/schema/runnable/history.py +1 -1
  467. langchain/schema/runnable/passthrough.py +1 -1
  468. langchain/schema/runnable/utils.py +16 -16
  469. langchain/schema/vectorstore.py +1 -1
  470. langchain/smith/__init__.py +2 -1
  471. langchain/smith/evaluation/__init__.py +2 -2
  472. langchain/smith/evaluation/config.py +9 -23
  473. langchain/smith/evaluation/name_generation.py +3 -3
  474. langchain/smith/evaluation/progress.py +22 -4
  475. langchain/smith/evaluation/runner_utils.py +416 -247
  476. langchain/smith/evaluation/string_run_evaluator.py +102 -68
  477. langchain/storage/__init__.py +2 -2
  478. langchain/storage/_lc_store.py +4 -2
  479. langchain/storage/encoder_backed.py +7 -2
  480. langchain/storage/file_system.py +19 -16
  481. langchain/storage/in_memory.py +1 -1
  482. langchain/storage/upstash_redis.py +1 -1
  483. langchain/text_splitter.py +15 -15
  484. langchain/tools/__init__.py +28 -26
  485. langchain/tools/ainetwork/app.py +1 -1
  486. langchain/tools/ainetwork/base.py +1 -1
  487. langchain/tools/ainetwork/owner.py +1 -1
  488. langchain/tools/ainetwork/rule.py +1 -1
  489. langchain/tools/ainetwork/transfer.py +1 -1
  490. langchain/tools/ainetwork/value.py +1 -1
  491. langchain/tools/amadeus/closest_airport.py +1 -1
  492. langchain/tools/amadeus/flight_search.py +1 -1
  493. langchain/tools/azure_cognitive_services/__init__.py +1 -1
  494. langchain/tools/base.py +4 -4
  495. langchain/tools/bearly/tool.py +1 -1
  496. langchain/tools/bing_search/__init__.py +1 -1
  497. langchain/tools/bing_search/tool.py +1 -1
  498. langchain/tools/dataforseo_api_search/__init__.py +1 -1
  499. langchain/tools/dataforseo_api_search/tool.py +1 -1
  500. langchain/tools/ddg_search/tool.py +1 -1
  501. langchain/tools/e2b_data_analysis/tool.py +2 -2
  502. langchain/tools/edenai/__init__.py +1 -1
  503. langchain/tools/file_management/__init__.py +1 -1
  504. langchain/tools/file_management/copy.py +1 -1
  505. langchain/tools/file_management/delete.py +1 -1
  506. langchain/tools/gmail/__init__.py +2 -2
  507. langchain/tools/gmail/get_message.py +1 -1
  508. langchain/tools/gmail/search.py +1 -1
  509. langchain/tools/gmail/send_message.py +1 -1
  510. langchain/tools/google_finance/__init__.py +1 -1
  511. langchain/tools/google_finance/tool.py +1 -1
  512. langchain/tools/google_scholar/__init__.py +1 -1
  513. langchain/tools/google_scholar/tool.py +1 -1
  514. langchain/tools/google_search/__init__.py +1 -1
  515. langchain/tools/google_search/tool.py +1 -1
  516. langchain/tools/google_serper/__init__.py +1 -1
  517. langchain/tools/google_serper/tool.py +1 -1
  518. langchain/tools/google_trends/__init__.py +1 -1
  519. langchain/tools/google_trends/tool.py +1 -1
  520. langchain/tools/jira/tool.py +20 -1
  521. langchain/tools/json/tool.py +25 -3
  522. langchain/tools/memorize/tool.py +1 -1
  523. langchain/tools/multion/__init__.py +1 -1
  524. langchain/tools/multion/update_session.py +1 -1
  525. langchain/tools/office365/__init__.py +2 -2
  526. langchain/tools/office365/events_search.py +1 -1
  527. langchain/tools/office365/messages_search.py +1 -1
  528. langchain/tools/office365/send_event.py +1 -1
  529. langchain/tools/office365/send_message.py +1 -1
  530. langchain/tools/openapi/utils/api_models.py +6 -6
  531. langchain/tools/playwright/__init__.py +5 -5
  532. langchain/tools/playwright/click.py +1 -1
  533. langchain/tools/playwright/extract_hyperlinks.py +1 -1
  534. langchain/tools/playwright/get_elements.py +1 -1
  535. langchain/tools/playwright/navigate.py +1 -1
  536. langchain/tools/plugin.py +2 -2
  537. langchain/tools/powerbi/tool.py +1 -1
  538. langchain/tools/python/__init__.py +3 -2
  539. langchain/tools/reddit_search/tool.py +1 -1
  540. langchain/tools/render.py +2 -2
  541. langchain/tools/requests/tool.py +2 -2
  542. langchain/tools/searchapi/tool.py +1 -1
  543. langchain/tools/searx_search/tool.py +1 -1
  544. langchain/tools/slack/get_message.py +1 -1
  545. langchain/tools/spark_sql/tool.py +1 -1
  546. langchain/tools/sql_database/tool.py +1 -1
  547. langchain/tools/tavily_search/__init__.py +1 -1
  548. langchain/tools/tavily_search/tool.py +1 -1
  549. langchain/tools/zapier/__init__.py +1 -1
  550. langchain/tools/zapier/tool.py +24 -2
  551. langchain/utilities/__init__.py +4 -4
  552. langchain/utilities/arcee.py +4 -4
  553. langchain/utilities/clickup.py +4 -4
  554. langchain/utilities/dalle_image_generator.py +1 -1
  555. langchain/utilities/dataforseo_api_search.py +1 -1
  556. langchain/utilities/opaqueprompts.py +1 -1
  557. langchain/utilities/reddit_search.py +1 -1
  558. langchain/utilities/sql_database.py +1 -1
  559. langchain/utilities/tavily_search.py +1 -1
  560. langchain/utilities/vertexai.py +2 -2
  561. langchain/utils/__init__.py +1 -1
  562. langchain/utils/aiter.py +1 -1
  563. langchain/utils/html.py +3 -3
  564. langchain/utils/input.py +1 -1
  565. langchain/utils/iter.py +1 -1
  566. langchain/utils/json_schema.py +1 -3
  567. langchain/utils/strings.py +1 -1
  568. langchain/utils/utils.py +6 -6
  569. langchain/vectorstores/__init__.py +5 -5
  570. langchain/vectorstores/alibabacloud_opensearch.py +1 -1
  571. langchain/vectorstores/azure_cosmos_db.py +1 -1
  572. langchain/vectorstores/clickhouse.py +1 -1
  573. langchain/vectorstores/elastic_vector_search.py +1 -1
  574. langchain/vectorstores/elasticsearch.py +2 -2
  575. langchain/vectorstores/myscale.py +1 -1
  576. langchain/vectorstores/neo4j_vector.py +1 -1
  577. langchain/vectorstores/pgembedding.py +1 -1
  578. langchain/vectorstores/qdrant.py +1 -1
  579. langchain/vectorstores/redis/__init__.py +1 -1
  580. langchain/vectorstores/redis/base.py +1 -1
  581. langchain/vectorstores/redis/filters.py +4 -4
  582. langchain/vectorstores/redis/schema.py +6 -6
  583. langchain/vectorstores/sklearn.py +2 -2
  584. langchain/vectorstores/starrocks.py +1 -1
  585. langchain/vectorstores/utils.py +1 -1
  586. {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/METADATA +4 -14
  587. {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/RECORD +590 -591
  588. {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/WHEEL +1 -1
  589. langchain/smith/evaluation/utils.py +0 -0
  590. {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/entry_points.txt +0 -0
  591. {langchain-0.3.26.dist-info → langchain-0.4.0.dev0.dist-info}/licenses/LICENSE +0 -0
@@ -147,7 +147,9 @@ class AgentExecutorIterator:
147
147
  self.iterations += 1
148
148
  self.time_elapsed = time.time() - self.start_time
149
149
  logger.debug(
150
- f"Agent Iterations: {self.iterations} ({self.time_elapsed:.2f}s elapsed)"
150
+ "Agent Iterations: %s (%.2fs elapsed)",
151
+ self.iterations,
152
+ self.time_elapsed,
151
153
  )
152
154
 
153
155
  def make_final_outputs(
@@ -155,19 +157,28 @@ class AgentExecutorIterator:
155
157
  outputs: dict[str, Any],
156
158
  run_manager: Union[CallbackManagerForChainRun, AsyncCallbackManagerForChainRun],
157
159
  ) -> AddableDict:
160
+ """Make final outputs for the iterator.
161
+
162
+ Args:
163
+ outputs: The outputs from the agent executor.
164
+ run_manager: The run manager to use for callbacks.
165
+ """
158
166
  # have access to intermediate steps by design in iterator,
159
167
  # so return only outputs may as well always be true.
160
168
 
161
169
  prepared_outputs = AddableDict(
162
170
  self.agent_executor.prep_outputs(
163
- self.inputs, outputs, return_only_outputs=True
164
- )
171
+ self.inputs,
172
+ outputs,
173
+ return_only_outputs=True,
174
+ ),
165
175
  )
166
176
  if self.include_run_info:
167
177
  prepared_outputs[RUN_KEY] = RunInfo(run_id=run_manager.run_id)
168
178
  return prepared_outputs
169
179
 
170
180
  def __iter__(self: AgentExecutorIterator) -> Iterator[AddableDict]:
181
+ """Create an async iterator for the AgentExecutor."""
171
182
  logger.debug("Initialising AgentExecutorIterator")
172
183
  self.reset()
173
184
  callback_manager = CallbackManager.configure(
@@ -186,13 +197,14 @@ class AgentExecutorIterator:
186
197
  name=self.run_name,
187
198
  )
188
199
  try:
189
- while self.agent_executor._should_continue(
190
- self.iterations, self.time_elapsed
200
+ while self.agent_executor._should_continue( # noqa: SLF001
201
+ self.iterations,
202
+ self.time_elapsed,
191
203
  ):
192
204
  # take the next step: this plans next action, executes it,
193
205
  # yielding action and observation as they are generated
194
206
  next_step_seq: NextStepOutput = []
195
- for chunk in self.agent_executor._iter_next_step(
207
+ for chunk in self.agent_executor._iter_next_step( # noqa: SLF001
196
208
  self.name_to_tool_map,
197
209
  self.color_mapping,
198
210
  self.inputs,
@@ -209,7 +221,7 @@ class AgentExecutorIterator:
209
221
  yield AddableDict(steps=[chunk], messages=chunk.messages)
210
222
 
211
223
  # convert iterator output to format handled by _process_next_step_output
212
- next_step = self.agent_executor._consume_next_step(next_step_seq)
224
+ next_step = self.agent_executor._consume_next_step(next_step_seq) # noqa: SLF001
213
225
  # update iterations and time elapsed
214
226
  self.update_iterations()
215
227
  # decide if this is the final output
@@ -253,13 +265,14 @@ class AgentExecutorIterator:
253
265
  )
254
266
  try:
255
267
  async with asyncio_timeout(self.agent_executor.max_execution_time):
256
- while self.agent_executor._should_continue(
257
- self.iterations, self.time_elapsed
268
+ while self.agent_executor._should_continue( # noqa: SLF001
269
+ self.iterations,
270
+ self.time_elapsed,
258
271
  ):
259
272
  # take the next step: this plans next action, executes it,
260
273
  # yielding action and observation as they are generated
261
274
  next_step_seq: NextStepOutput = []
262
- async for chunk in self.agent_executor._aiter_next_step(
275
+ async for chunk in self.agent_executor._aiter_next_step( # noqa: SLF001
263
276
  self.name_to_tool_map,
264
277
  self.color_mapping,
265
278
  self.inputs,
@@ -272,20 +285,23 @@ class AgentExecutorIterator:
272
285
  if self.yield_actions:
273
286
  if isinstance(chunk, AgentAction):
274
287
  yield AddableDict(
275
- actions=[chunk], messages=chunk.messages
288
+ actions=[chunk],
289
+ messages=chunk.messages,
276
290
  )
277
291
  elif isinstance(chunk, AgentStep):
278
292
  yield AddableDict(
279
- steps=[chunk], messages=chunk.messages
293
+ steps=[chunk],
294
+ messages=chunk.messages,
280
295
  )
281
296
 
282
297
  # convert iterator output to format handled by _process_next_step
283
- next_step = self.agent_executor._consume_next_step(next_step_seq)
298
+ next_step = self.agent_executor._consume_next_step(next_step_seq) # noqa: SLF001
284
299
  # update iterations and time elapsed
285
300
  self.update_iterations()
286
301
  # decide if this is the final output
287
302
  output = await self._aprocess_next_step_output(
288
- next_step, run_manager
303
+ next_step,
304
+ run_manager,
289
305
  )
290
306
  is_final = "intermediate_step" not in output
291
307
  # yield the final output always
@@ -317,7 +333,7 @@ class AgentExecutorIterator:
317
333
  logger.debug("Processing output of Agent loop step")
318
334
  if isinstance(next_step_output, AgentFinish):
319
335
  logger.debug(
320
- "Hit AgentFinish: _return -> on_chain_end -> run final output logic"
336
+ "Hit AgentFinish: _return -> on_chain_end -> run final output logic",
321
337
  )
322
338
  return self._return(next_step_output, run_manager=run_manager)
323
339
 
@@ -327,7 +343,7 @@ class AgentExecutorIterator:
327
343
  # Check for tool return
328
344
  if len(next_step_output) == 1:
329
345
  next_step_action = next_step_output[0]
330
- tool_return = self.agent_executor._get_tool_return(next_step_action)
346
+ tool_return = self.agent_executor._get_tool_return(next_step_action) # noqa: SLF001
331
347
  if tool_return is not None:
332
348
  return self._return(tool_return, run_manager=run_manager)
333
349
 
@@ -345,7 +361,7 @@ class AgentExecutorIterator:
345
361
  logger.debug("Processing output of async Agent loop step")
346
362
  if isinstance(next_step_output, AgentFinish):
347
363
  logger.debug(
348
- "Hit AgentFinish: _areturn -> on_chain_end -> run final output logic"
364
+ "Hit AgentFinish: _areturn -> on_chain_end -> run final output logic",
349
365
  )
350
366
  return await self._areturn(next_step_output, run_manager=run_manager)
351
367
 
@@ -355,7 +371,7 @@ class AgentExecutorIterator:
355
371
  # Check for tool return
356
372
  if len(next_step_output) == 1:
357
373
  next_step_action = next_step_output[0]
358
- tool_return = self.agent_executor._get_tool_return(next_step_action)
374
+ tool_return = self.agent_executor._get_tool_return(next_step_action) # noqa: SLF001
359
375
  if tool_return is not None:
360
376
  return await self._areturn(tool_return, run_manager=run_manager)
361
377
 
@@ -367,7 +383,7 @@ class AgentExecutorIterator:
367
383
  """
368
384
  logger.warning("Stopping agent prematurely due to triggering stop condition")
369
385
  # this manually constructs agent finish with output key
370
- output = self.agent_executor._action_agent.return_stopped_response(
386
+ output = self.agent_executor._action_agent.return_stopped_response( # noqa: SLF001
371
387
  self.agent_executor.early_stopping_method,
372
388
  self.intermediate_steps,
373
389
  **self.inputs,
@@ -380,7 +396,7 @@ class AgentExecutorIterator:
380
396
  the stopped response.
381
397
  """
382
398
  logger.warning("Stopping agent prematurely due to triggering stop condition")
383
- output = self.agent_executor._action_agent.return_stopped_response(
399
+ output = self.agent_executor._action_agent.return_stopped_response( # noqa: SLF001
384
400
  self.agent_executor.early_stopping_method,
385
401
  self.intermediate_steps,
386
402
  **self.inputs,
@@ -388,26 +404,34 @@ class AgentExecutorIterator:
388
404
  return await self._areturn(output, run_manager=run_manager)
389
405
 
390
406
  def _return(
391
- self, output: AgentFinish, run_manager: CallbackManagerForChainRun
407
+ self,
408
+ output: AgentFinish,
409
+ run_manager: CallbackManagerForChainRun,
392
410
  ) -> AddableDict:
393
411
  """
394
412
  Return the final output of the iterator.
395
413
  """
396
- returned_output = self.agent_executor._return(
397
- output, self.intermediate_steps, run_manager=run_manager
414
+ returned_output = self.agent_executor._return( # noqa: SLF001
415
+ output,
416
+ self.intermediate_steps,
417
+ run_manager=run_manager,
398
418
  )
399
419
  returned_output["messages"] = output.messages
400
420
  run_manager.on_chain_end(returned_output)
401
421
  return self.make_final_outputs(returned_output, run_manager)
402
422
 
403
423
  async def _areturn(
404
- self, output: AgentFinish, run_manager: AsyncCallbackManagerForChainRun
424
+ self,
425
+ output: AgentFinish,
426
+ run_manager: AsyncCallbackManagerForChainRun,
405
427
  ) -> AddableDict:
406
428
  """
407
429
  Return the final output of the async iterator.
408
430
  """
409
- returned_output = await self.agent_executor._areturn(
410
- output, self.intermediate_steps, run_manager=run_manager
431
+ returned_output = await self.agent_executor._areturn( # noqa: SLF001
432
+ output,
433
+ self.intermediate_steps,
434
+ run_manager=run_manager,
411
435
  )
412
436
  returned_output["messages"] = output.messages
413
437
  await run_manager.on_chain_end(returned_output)
@@ -121,12 +121,13 @@ def __getattr__(name: str) -> Any:
121
121
  relative_path = as_import_path(Path(__file__).parent, suffix=name)
122
122
  old_path = "langchain." + relative_path
123
123
  new_path = "langchain_experimental." + relative_path
124
- raise ImportError(
124
+ msg = (
125
125
  f"{name} has been moved to langchain experimental. "
126
126
  "See https://github.com/langchain-ai/langchain/discussions/11680"
127
127
  "for more information.\n"
128
128
  f"Please update your import statement from: `{old_path}` to `{new_path}`."
129
129
  )
130
+ raise ImportError(msg)
130
131
  return _import_attribute(name)
131
132
 
132
133
 
@@ -139,28 +140,28 @@ __all__ = [
139
140
  "JiraToolkit",
140
141
  "JsonToolkit",
141
142
  "MultionToolkit",
142
- "NasaToolkit",
143
143
  "NLAToolkit",
144
+ "NasaToolkit",
144
145
  "O365Toolkit",
145
146
  "OpenAPIToolkit",
146
147
  "PlayWrightBrowserToolkit",
147
148
  "PowerBIToolkit",
148
- "SlackToolkit",
149
- "SteamToolkit",
150
149
  "SQLDatabaseToolkit",
150
+ "SlackToolkit",
151
151
  "SparkSQLToolkit",
152
+ "SteamToolkit",
152
153
  "VectorStoreInfo",
153
154
  "VectorStoreRouterToolkit",
154
155
  "VectorStoreToolkit",
155
156
  "ZapierToolkit",
157
+ "create_conversational_retrieval_agent",
156
158
  "create_json_agent",
157
159
  "create_openapi_agent",
158
160
  "create_pbi_agent",
159
161
  "create_pbi_chat_agent",
162
+ "create_retriever_tool",
160
163
  "create_spark_sql_agent",
161
164
  "create_sql_agent",
162
165
  "create_vectorstore_agent",
163
166
  "create_vectorstore_router_agent",
164
- "create_conversational_retrieval_agent",
165
- "create_retriever_tool",
166
167
  ]
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "AINetworkToolkit": "langchain_community.agent_toolkits.ainetwork.toolkit"
12
+ "AINetworkToolkit": "langchain_community.agent_toolkits.ainetwork.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "AmadeusToolkit": "langchain_community.agent_toolkits.amadeus.toolkit"
12
+ "AmadeusToolkit": "langchain_community.agent_toolkits.amadeus.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
13
13
  DEPRECATED_LOOKUP = {
14
14
  "AzureCognitiveServicesToolkit": (
15
15
  "langchain_community.agent_toolkits.azure_cognitive_services"
16
- )
16
+ ),
17
17
  }
18
18
 
19
19
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "ClickupToolkit": "langchain_community.agent_toolkits.clickup.toolkit"
12
+ "ClickupToolkit": "langchain_community.agent_toolkits.clickup.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -20,17 +20,17 @@ def _get_default_system_message() -> SystemMessage:
20
20
  "Do your best to answer the questions. "
21
21
  "Feel free to use any tools available to look up "
22
22
  "relevant information, only if necessary"
23
- )
23
+ ),
24
24
  )
25
25
 
26
26
 
27
27
  def create_conversational_retrieval_agent(
28
28
  llm: BaseLanguageModel,
29
29
  tools: list[BaseTool],
30
- remember_intermediate_steps: bool = True,
30
+ remember_intermediate_steps: bool = True, # noqa: FBT001,FBT002
31
31
  memory_key: str = "chat_history",
32
32
  system_message: Optional[SystemMessage] = None,
33
- verbose: bool = False,
33
+ verbose: bool = False, # noqa: FBT001,FBT002
34
34
  max_token_limit: int = 2000,
35
35
  **kwargs: Any,
36
36
  ) -> AgentExecutor:
@@ -58,7 +58,9 @@ def create_conversational_retrieval_agent(
58
58
 
59
59
  if remember_intermediate_steps:
60
60
  memory: BaseMemory = AgentTokenBufferMemory(
61
- memory_key=memory_key, llm=llm, max_token_limit=max_token_limit
61
+ memory_key=memory_key,
62
+ llm=llm,
63
+ max_token_limit=max_token_limit,
62
64
  )
63
65
  else:
64
66
  memory = ConversationTokenBufferMemory(
@@ -14,7 +14,7 @@ def __getattr__(name: str) -> Any:
14
14
 
15
15
  old_path = "langchain." + here + "." + name
16
16
  new_path = "langchain_experimental." + here + "." + name
17
- raise ImportError(
17
+ msg = (
18
18
  "This agent has been moved to langchain experiment. "
19
19
  "This agent relies on python REPL tool under the hood, so to use it "
20
20
  "safely please sandbox the python REPL. "
@@ -23,4 +23,6 @@ def __getattr__(name: str) -> Any:
23
23
  "To keep using this code as is, install langchain experimental and "
24
24
  f"update your import statement from:\n `{old_path}` to `{new_path}`."
25
25
  )
26
- raise AttributeError(f"{name} does not exist")
26
+ raise ImportError(msg)
27
+ msg = f"{name} does not exist"
28
+ raise AttributeError(msg)
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
15
15
  DEPRECATED_LOOKUP = {
16
16
  "FileManagementToolkit": (
17
17
  "langchain_community.agent_toolkits.file_management.toolkit"
18
- )
18
+ ),
19
19
  }
20
20
 
21
21
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
13
13
  DEPRECATED_LOOKUP = {
14
14
  "FileManagementToolkit": (
15
15
  "langchain_community.agent_toolkits.file_management.toolkit"
16
- )
16
+ ),
17
17
  }
18
18
 
19
19
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -51,19 +51,19 @@ def __getattr__(name: str) -> Any:
51
51
 
52
52
 
53
53
  __all__ = [
54
- "NoInput",
55
- "GetIssue",
54
+ "BranchName",
56
55
  "CommentOnIssue",
57
- "GetPR",
58
- "CreatePR",
59
56
  "CreateFile",
60
- "ReadFile",
61
- "UpdateFile",
57
+ "CreatePR",
58
+ "CreateReviewRequest",
62
59
  "DeleteFile",
63
60
  "DirectoryPath",
64
- "BranchName",
61
+ "GetIssue",
62
+ "GetPR",
63
+ "GitHubToolkit",
64
+ "NoInput",
65
+ "ReadFile",
65
66
  "SearchCode",
66
- "CreateReviewRequest",
67
67
  "SearchIssuesAndPRs",
68
- "GitHubToolkit",
68
+ "UpdateFile",
69
69
  ]
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "GitLabToolkit": "langchain_community.agent_toolkits.gitlab.toolkit"
12
+ "GitLabToolkit": "langchain_community.agent_toolkits.gitlab.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "create_json_agent": "langchain_community.agent_toolkits.json.base"
12
+ "create_json_agent": "langchain_community.agent_toolkits.json.base",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "MultionToolkit": "langchain_community.agent_toolkits.multion.toolkit"
12
+ "MultionToolkit": "langchain_community.agent_toolkits.multion.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "O365Toolkit": "langchain_community.agent_toolkits.office365.toolkit"
12
+ "O365Toolkit": "langchain_community.agent_toolkits.office365.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "create_openapi_agent": "langchain_community.agent_toolkits.openapi.base"
12
+ "create_openapi_agent": "langchain_community.agent_toolkits.openapi.base",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -43,10 +43,10 @@ def __getattr__(name: str) -> Any:
43
43
 
44
44
 
45
45
  __all__ = [
46
+ "RequestsDeleteToolWithParsing",
46
47
  "RequestsGetToolWithParsing",
47
- "RequestsPostToolWithParsing",
48
48
  "RequestsPatchToolWithParsing",
49
+ "RequestsPostToolWithParsing",
49
50
  "RequestsPutToolWithParsing",
50
- "RequestsDeleteToolWithParsing",
51
51
  "create_openapi_agent",
52
52
  ]
@@ -83,21 +83,21 @@ def __getattr__(name: str) -> Any:
83
83
 
84
84
 
85
85
  __all__ = [
86
- "API_PLANNER_PROMPT",
87
- "API_PLANNER_TOOL_NAME",
88
- "API_PLANNER_TOOL_DESCRIPTION",
89
86
  "API_CONTROLLER_PROMPT",
90
- "API_CONTROLLER_TOOL_NAME",
91
87
  "API_CONTROLLER_TOOL_DESCRIPTION",
88
+ "API_CONTROLLER_TOOL_NAME",
92
89
  "API_ORCHESTRATOR_PROMPT",
93
- "REQUESTS_GET_TOOL_DESCRIPTION",
90
+ "API_PLANNER_PROMPT",
91
+ "API_PLANNER_TOOL_DESCRIPTION",
92
+ "API_PLANNER_TOOL_NAME",
93
+ "PARSING_DELETE_PROMPT",
94
94
  "PARSING_GET_PROMPT",
95
- "REQUESTS_POST_TOOL_DESCRIPTION",
96
- "PARSING_POST_PROMPT",
97
- "REQUESTS_PATCH_TOOL_DESCRIPTION",
98
95
  "PARSING_PATCH_PROMPT",
99
- "REQUESTS_PUT_TOOL_DESCRIPTION",
96
+ "PARSING_POST_PROMPT",
100
97
  "PARSING_PUT_PROMPT",
101
98
  "REQUESTS_DELETE_TOOL_DESCRIPTION",
102
- "PARSING_DELETE_PROMPT",
99
+ "REQUESTS_GET_TOOL_DESCRIPTION",
100
+ "REQUESTS_PATCH_TOOL_DESCRIPTION",
101
+ "REQUESTS_POST_TOOL_DESCRIPTION",
102
+ "REQUESTS_PUT_TOOL_DESCRIPTION",
103
103
  ]
@@ -26,4 +26,4 @@ def __getattr__(name: str) -> Any:
26
26
  return _import_attribute(name)
27
27
 
28
28
 
29
- __all__ = ["OPENAPI_PREFIX", "OPENAPI_SUFFIX", "DESCRIPTION"]
29
+ __all__ = ["DESCRIPTION", "OPENAPI_PREFIX", "OPENAPI_SUFFIX"]
@@ -25,6 +25,6 @@ def __getattr__(name: str) -> Any:
25
25
 
26
26
 
27
27
  __all__ = [
28
- "RequestsToolkit",
29
28
  "OpenAPIToolkit",
29
+ "RequestsToolkit",
30
30
  ]
@@ -14,7 +14,7 @@ def __getattr__(name: str) -> Any:
14
14
 
15
15
  old_path = "langchain." + here + "." + name
16
16
  new_path = "langchain_experimental." + here + "." + name
17
- raise ImportError(
17
+ msg = (
18
18
  "This agent has been moved to langchain experiment. "
19
19
  "This agent relies on python REPL tool under the hood, so to use it "
20
20
  "safely please sandbox the python REPL. "
@@ -23,4 +23,6 @@ def __getattr__(name: str) -> Any:
23
23
  "To keep using this code as is, install langchain experimental and "
24
24
  f"update your import statement from:\n `{old_path}` to `{new_path}`."
25
25
  )
26
- raise AttributeError(f"{name} does not exist")
26
+ raise ImportError(msg)
27
+ msg = f"{name} does not exist"
28
+ raise AttributeError(msg)
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
13
13
  # Used to consolidate logic for raising deprecation warnings and
14
14
  # handling optional imports.
15
15
  DEPRECATED_LOOKUP = {
16
- "PlayWrightBrowserToolkit": "langchain_community.agent_toolkits.playwright.toolkit"
16
+ "PlayWrightBrowserToolkit": "langchain_community.agent_toolkits.playwright.toolkit",
17
17
  }
18
18
 
19
19
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
11
11
  # Used to consolidate logic for raising deprecation warnings and
12
12
  # handling optional imports.
13
13
  DEPRECATED_LOOKUP = {
14
- "PlayWrightBrowserToolkit": "langchain_community.agent_toolkits.playwright.toolkit"
14
+ "PlayWrightBrowserToolkit": "langchain_community.agent_toolkits.playwright.toolkit",
15
15
  }
16
16
 
17
17
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "create_pbi_agent": "langchain_community.agent_toolkits.powerbi.base"
12
+ "create_pbi_agent": "langchain_community.agent_toolkits.powerbi.base",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -11,7 +11,7 @@ if TYPE_CHECKING:
11
11
  # Used to consolidate logic for raising deprecation warnings and
12
12
  # handling optional imports.
13
13
  DEPRECATED_LOOKUP = {
14
- "create_pbi_chat_agent": "langchain_community.agent_toolkits.powerbi.chat_base"
14
+ "create_pbi_chat_agent": "langchain_community.agent_toolkits.powerbi.chat_base",
15
15
  }
16
16
 
17
17
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -29,8 +29,8 @@ def __getattr__(name: str) -> Any:
29
29
 
30
30
 
31
31
  __all__ = [
32
- "POWERBI_PREFIX",
33
- "POWERBI_SUFFIX",
34
32
  "POWERBI_CHAT_PREFIX",
35
33
  "POWERBI_CHAT_SUFFIX",
34
+ "POWERBI_PREFIX",
35
+ "POWERBI_SUFFIX",
36
36
  ]
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "PowerBIToolkit": "langchain_community.agent_toolkits.powerbi.toolkit"
12
+ "PowerBIToolkit": "langchain_community.agent_toolkits.powerbi.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -14,7 +14,7 @@ def __getattr__(name: str) -> Any:
14
14
 
15
15
  old_path = "langchain." + here + "." + name
16
16
  new_path = "langchain_experimental." + here + "." + name
17
- raise ImportError(
17
+ msg = (
18
18
  "This agent has been moved to langchain experiment. "
19
19
  "This agent relies on python REPL tool under the hood, so to use it "
20
20
  "safely please sandbox the python REPL. "
@@ -23,4 +23,6 @@ def __getattr__(name: str) -> Any:
23
23
  "To keep using this code as is, install langchain experimental and "
24
24
  f"update your import statement from:\n `{old_path}` to `{new_path}`."
25
25
  )
26
- raise AttributeError(f"{name} does not exist")
26
+ raise ImportError(msg)
27
+ msg = f"{name} does not exist"
28
+ raise AttributeError(msg)
@@ -14,7 +14,7 @@ def __getattr__(name: str) -> Any:
14
14
 
15
15
  old_path = "langchain." + here + "." + name
16
16
  new_path = "langchain_experimental." + here + "." + name
17
- raise ImportError(
17
+ msg = (
18
18
  "This agent has been moved to langchain experiment. "
19
19
  "This agent relies on python REPL tool under the hood, so to use it "
20
20
  "safely please sandbox the python REPL. "
@@ -23,4 +23,6 @@ def __getattr__(name: str) -> Any:
23
23
  "To keep using this code as is, install langchain experimental and "
24
24
  f"update your import statement from:\n `{old_path}` to `{new_path}`."
25
25
  )
26
- raise AttributeError(f"{name} does not exist")
26
+ raise ImportError(msg)
27
+ msg = f"{name} does not exist"
28
+ raise AttributeError(msg)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "create_spark_sql_agent": "langchain_community.agent_toolkits.spark_sql.base"
12
+ "create_spark_sql_agent": "langchain_community.agent_toolkits.spark_sql.base",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -9,7 +9,7 @@ if TYPE_CHECKING:
9
9
  # Used to consolidate logic for raising deprecation warnings and
10
10
  # handling optional imports.
11
11
  DEPRECATED_LOOKUP = {
12
- "SparkSQLToolkit": "langchain_community.agent_toolkits.spark_sql.toolkit"
12
+ "SparkSQLToolkit": "langchain_community.agent_toolkits.spark_sql.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)