langchain 0.3.26__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 (580) 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 +6 -6
  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 +16 -8
  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 +46 -37
  72. langchain/agents/openai_functions_multi_agent/base.py +39 -26
  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 +6 -6
  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 +5 -5
  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/comet.py +1 -1
  128. langchain/callbacks/tracers/evaluation.py +1 -1
  129. langchain/callbacks/tracers/log_stream.py +1 -1
  130. langchain/callbacks/tracers/logging.py +1 -1
  131. langchain/callbacks/tracers/stdout.py +1 -1
  132. langchain/callbacks/trubrics_callback.py +1 -1
  133. langchain/callbacks/utils.py +4 -4
  134. langchain/callbacks/wandb_callback.py +1 -1
  135. langchain/callbacks/whylabs_callback.py +1 -1
  136. langchain/chains/api/base.py +36 -22
  137. langchain/chains/api/news_docs.py +1 -2
  138. langchain/chains/api/open_meteo_docs.py +1 -2
  139. langchain/chains/api/openapi/requests_chain.py +1 -1
  140. langchain/chains/api/openapi/response_chain.py +1 -1
  141. langchain/chains/api/podcast_docs.py +1 -2
  142. langchain/chains/api/prompt.py +1 -2
  143. langchain/chains/api/tmdb_docs.py +1 -2
  144. langchain/chains/base.py +88 -54
  145. langchain/chains/chat_vector_db/prompts.py +2 -3
  146. langchain/chains/combine_documents/__init__.py +1 -1
  147. langchain/chains/combine_documents/base.py +23 -10
  148. langchain/chains/combine_documents/map_reduce.py +38 -30
  149. langchain/chains/combine_documents/map_rerank.py +33 -20
  150. langchain/chains/combine_documents/reduce.py +47 -26
  151. langchain/chains/combine_documents/refine.py +26 -17
  152. langchain/chains/combine_documents/stuff.py +19 -12
  153. langchain/chains/constitutional_ai/base.py +4 -4
  154. langchain/chains/constitutional_ai/principles.py +22 -25
  155. langchain/chains/constitutional_ai/prompts.py +25 -28
  156. langchain/chains/conversation/base.py +5 -3
  157. langchain/chains/conversation/memory.py +5 -5
  158. langchain/chains/conversation/prompt.py +5 -5
  159. langchain/chains/conversational_retrieval/base.py +41 -20
  160. langchain/chains/conversational_retrieval/prompts.py +2 -3
  161. langchain/chains/elasticsearch_database/base.py +8 -9
  162. langchain/chains/elasticsearch_database/prompts.py +2 -3
  163. langchain/chains/ernie_functions/__init__.py +2 -2
  164. langchain/chains/example_generator.py +3 -1
  165. langchain/chains/flare/base.py +26 -12
  166. langchain/chains/graph_qa/cypher.py +2 -2
  167. langchain/chains/graph_qa/falkordb.py +1 -1
  168. langchain/chains/graph_qa/gremlin.py +1 -1
  169. langchain/chains/graph_qa/neptune_sparql.py +1 -1
  170. langchain/chains/graph_qa/prompts.py +2 -2
  171. langchain/chains/history_aware_retriever.py +2 -1
  172. langchain/chains/hyde/base.py +6 -5
  173. langchain/chains/hyde/prompts.py +5 -6
  174. langchain/chains/llm.py +77 -61
  175. langchain/chains/llm_bash/__init__.py +2 -1
  176. langchain/chains/llm_checker/base.py +7 -5
  177. langchain/chains/llm_checker/prompt.py +3 -4
  178. langchain/chains/llm_math/base.py +16 -9
  179. langchain/chains/llm_math/prompt.py +1 -2
  180. langchain/chains/llm_summarization_checker/base.py +9 -6
  181. langchain/chains/llm_symbolic_math/__init__.py +2 -1
  182. langchain/chains/loading.py +151 -95
  183. langchain/chains/mapreduce.py +4 -3
  184. langchain/chains/moderation.py +8 -9
  185. langchain/chains/natbot/base.py +8 -8
  186. langchain/chains/natbot/crawler.py +73 -76
  187. langchain/chains/natbot/prompt.py +2 -3
  188. langchain/chains/openai_functions/__init__.py +7 -7
  189. langchain/chains/openai_functions/base.py +13 -10
  190. langchain/chains/openai_functions/citation_fuzzy_match.py +12 -11
  191. langchain/chains/openai_functions/extraction.py +19 -19
  192. langchain/chains/openai_functions/openapi.py +35 -35
  193. langchain/chains/openai_functions/qa_with_structure.py +19 -12
  194. langchain/chains/openai_functions/tagging.py +2 -4
  195. langchain/chains/openai_tools/extraction.py +7 -8
  196. langchain/chains/qa_generation/base.py +4 -3
  197. langchain/chains/qa_generation/prompt.py +5 -5
  198. langchain/chains/qa_with_sources/base.py +14 -6
  199. langchain/chains/qa_with_sources/loading.py +16 -8
  200. langchain/chains/qa_with_sources/map_reduce_prompt.py +8 -9
  201. langchain/chains/qa_with_sources/refine_prompts.py +0 -1
  202. langchain/chains/qa_with_sources/retrieval.py +14 -5
  203. langchain/chains/qa_with_sources/stuff_prompt.py +6 -7
  204. langchain/chains/qa_with_sources/vector_db.py +17 -6
  205. langchain/chains/query_constructor/base.py +34 -33
  206. langchain/chains/query_constructor/ir.py +4 -4
  207. langchain/chains/query_constructor/parser.py +37 -32
  208. langchain/chains/query_constructor/prompt.py +5 -6
  209. langchain/chains/question_answering/chain.py +21 -10
  210. langchain/chains/question_answering/map_reduce_prompt.py +14 -14
  211. langchain/chains/question_answering/map_rerank_prompt.py +3 -3
  212. langchain/chains/question_answering/refine_prompts.py +2 -5
  213. langchain/chains/question_answering/stuff_prompt.py +5 -5
  214. langchain/chains/retrieval.py +1 -3
  215. langchain/chains/retrieval_qa/base.py +34 -27
  216. langchain/chains/retrieval_qa/prompt.py +1 -2
  217. langchain/chains/router/__init__.py +3 -3
  218. langchain/chains/router/base.py +24 -20
  219. langchain/chains/router/embedding_router.py +12 -8
  220. langchain/chains/router/llm_router.py +17 -16
  221. langchain/chains/router/multi_prompt.py +2 -2
  222. langchain/chains/router/multi_retrieval_qa.py +10 -5
  223. langchain/chains/sequential.py +30 -18
  224. langchain/chains/sql_database/prompt.py +14 -16
  225. langchain/chains/sql_database/query.py +6 -5
  226. langchain/chains/structured_output/__init__.py +1 -1
  227. langchain/chains/structured_output/base.py +75 -67
  228. langchain/chains/summarize/chain.py +11 -5
  229. langchain/chains/summarize/map_reduce_prompt.py +0 -1
  230. langchain/chains/summarize/stuff_prompt.py +0 -1
  231. langchain/chains/transform.py +5 -6
  232. langchain/chat_loaders/facebook_messenger.py +1 -1
  233. langchain/chat_loaders/langsmith.py +1 -1
  234. langchain/chat_loaders/utils.py +3 -3
  235. langchain/chat_models/__init__.py +20 -19
  236. langchain/chat_models/anthropic.py +1 -1
  237. langchain/chat_models/azureml_endpoint.py +1 -1
  238. langchain/chat_models/baidu_qianfan_endpoint.py +1 -1
  239. langchain/chat_models/base.py +160 -123
  240. langchain/chat_models/bedrock.py +1 -1
  241. langchain/chat_models/fake.py +1 -1
  242. langchain/chat_models/meta.py +1 -1
  243. langchain/chat_models/pai_eas_endpoint.py +1 -1
  244. langchain/chat_models/promptlayer_openai.py +1 -1
  245. langchain/chat_models/volcengine_maas.py +1 -1
  246. langchain/docstore/base.py +1 -1
  247. langchain/document_loaders/__init__.py +9 -9
  248. langchain/document_loaders/airbyte.py +3 -3
  249. langchain/document_loaders/assemblyai.py +1 -1
  250. langchain/document_loaders/azure_blob_storage_container.py +1 -1
  251. langchain/document_loaders/azure_blob_storage_file.py +1 -1
  252. langchain/document_loaders/baiducloud_bos_file.py +1 -1
  253. langchain/document_loaders/base.py +1 -1
  254. langchain/document_loaders/blob_loaders/__init__.py +1 -1
  255. langchain/document_loaders/blockchain.py +1 -1
  256. langchain/document_loaders/chatgpt.py +1 -1
  257. langchain/document_loaders/college_confidential.py +1 -1
  258. langchain/document_loaders/confluence.py +1 -1
  259. langchain/document_loaders/email.py +1 -1
  260. langchain/document_loaders/facebook_chat.py +1 -1
  261. langchain/document_loaders/markdown.py +1 -1
  262. langchain/document_loaders/notebook.py +1 -1
  263. langchain/document_loaders/org_mode.py +1 -1
  264. langchain/document_loaders/parsers/__init__.py +1 -1
  265. langchain/document_loaders/parsers/docai.py +1 -1
  266. langchain/document_loaders/parsers/generic.py +1 -1
  267. langchain/document_loaders/parsers/html/__init__.py +1 -1
  268. langchain/document_loaders/parsers/html/bs4.py +1 -1
  269. langchain/document_loaders/parsers/language/cobol.py +1 -1
  270. langchain/document_loaders/parsers/language/python.py +1 -1
  271. langchain/document_loaders/parsers/msword.py +1 -1
  272. langchain/document_loaders/parsers/pdf.py +5 -5
  273. langchain/document_loaders/parsers/registry.py +1 -1
  274. langchain/document_loaders/pdf.py +8 -8
  275. langchain/document_loaders/powerpoint.py +1 -1
  276. langchain/document_loaders/pyspark_dataframe.py +1 -1
  277. langchain/document_loaders/telegram.py +2 -2
  278. langchain/document_loaders/tencent_cos_directory.py +1 -1
  279. langchain/document_loaders/unstructured.py +5 -5
  280. langchain/document_loaders/url_playwright.py +1 -1
  281. langchain/document_loaders/whatsapp_chat.py +1 -1
  282. langchain/document_loaders/youtube.py +2 -2
  283. langchain/document_transformers/__init__.py +3 -3
  284. langchain/document_transformers/beautiful_soup_transformer.py +1 -1
  285. langchain/document_transformers/doctran_text_extract.py +1 -1
  286. langchain/document_transformers/doctran_text_qa.py +1 -1
  287. langchain/document_transformers/doctran_text_translate.py +1 -1
  288. langchain/document_transformers/embeddings_redundant_filter.py +3 -3
  289. langchain/document_transformers/google_translate.py +1 -1
  290. langchain/document_transformers/html2text.py +1 -1
  291. langchain/document_transformers/nuclia_text_transform.py +1 -1
  292. langchain/embeddings/__init__.py +5 -5
  293. langchain/embeddings/base.py +33 -24
  294. langchain/embeddings/cache.py +36 -31
  295. langchain/embeddings/fake.py +1 -1
  296. langchain/embeddings/huggingface.py +2 -2
  297. langchain/evaluation/__init__.py +22 -22
  298. langchain/evaluation/agents/trajectory_eval_chain.py +23 -23
  299. langchain/evaluation/agents/trajectory_eval_prompt.py +6 -9
  300. langchain/evaluation/comparison/__init__.py +1 -1
  301. langchain/evaluation/comparison/eval_chain.py +20 -13
  302. langchain/evaluation/comparison/prompt.py +1 -2
  303. langchain/evaluation/criteria/__init__.py +1 -1
  304. langchain/evaluation/criteria/eval_chain.py +20 -11
  305. langchain/evaluation/criteria/prompt.py +2 -3
  306. langchain/evaluation/embedding_distance/base.py +23 -20
  307. langchain/evaluation/loading.py +15 -11
  308. langchain/evaluation/parsing/base.py +4 -1
  309. langchain/evaluation/parsing/json_distance.py +5 -2
  310. langchain/evaluation/parsing/json_schema.py +12 -8
  311. langchain/evaluation/qa/__init__.py +1 -1
  312. langchain/evaluation/qa/eval_chain.py +12 -5
  313. langchain/evaluation/qa/eval_prompt.py +7 -8
  314. langchain/evaluation/qa/generate_chain.py +2 -1
  315. langchain/evaluation/qa/generate_prompt.py +2 -4
  316. langchain/evaluation/schema.py +38 -30
  317. langchain/evaluation/scoring/__init__.py +1 -1
  318. langchain/evaluation/scoring/eval_chain.py +22 -15
  319. langchain/evaluation/scoring/prompt.py +0 -1
  320. langchain/evaluation/string_distance/base.py +14 -9
  321. langchain/globals.py +12 -11
  322. langchain/graphs/__init__.py +6 -6
  323. langchain/graphs/graph_document.py +1 -1
  324. langchain/graphs/networkx_graph.py +2 -2
  325. langchain/hub.py +9 -11
  326. langchain/indexes/__init__.py +3 -3
  327. langchain/indexes/_sql_record_manager.py +63 -46
  328. langchain/indexes/prompts/entity_extraction.py +1 -2
  329. langchain/indexes/prompts/entity_summarization.py +1 -2
  330. langchain/indexes/prompts/knowledge_triplet_extraction.py +1 -3
  331. langchain/indexes/vectorstore.py +35 -19
  332. langchain/llms/__init__.py +13 -13
  333. langchain/llms/ai21.py +1 -1
  334. langchain/llms/azureml_endpoint.py +4 -4
  335. langchain/llms/base.py +15 -7
  336. langchain/llms/bedrock.py +1 -1
  337. langchain/llms/cloudflare_workersai.py +1 -1
  338. langchain/llms/gradient_ai.py +1 -1
  339. langchain/llms/loading.py +1 -1
  340. langchain/llms/openai.py +1 -1
  341. langchain/llms/sagemaker_endpoint.py +1 -1
  342. langchain/load/dump.py +1 -1
  343. langchain/load/load.py +1 -1
  344. langchain/load/serializable.py +3 -3
  345. langchain/memory/__init__.py +3 -3
  346. langchain/memory/buffer.py +9 -7
  347. langchain/memory/chat_memory.py +14 -8
  348. langchain/memory/chat_message_histories/__init__.py +1 -1
  349. langchain/memory/chat_message_histories/astradb.py +1 -1
  350. langchain/memory/chat_message_histories/cassandra.py +1 -1
  351. langchain/memory/chat_message_histories/cosmos_db.py +1 -1
  352. langchain/memory/chat_message_histories/dynamodb.py +1 -1
  353. langchain/memory/chat_message_histories/elasticsearch.py +1 -1
  354. langchain/memory/chat_message_histories/file.py +1 -1
  355. langchain/memory/chat_message_histories/firestore.py +1 -1
  356. langchain/memory/chat_message_histories/momento.py +1 -1
  357. langchain/memory/chat_message_histories/mongodb.py +1 -1
  358. langchain/memory/chat_message_histories/neo4j.py +1 -1
  359. langchain/memory/chat_message_histories/postgres.py +1 -1
  360. langchain/memory/chat_message_histories/redis.py +1 -1
  361. langchain/memory/chat_message_histories/rocksetdb.py +1 -1
  362. langchain/memory/chat_message_histories/singlestoredb.py +1 -1
  363. langchain/memory/chat_message_histories/streamlit.py +1 -1
  364. langchain/memory/chat_message_histories/upstash_redis.py +1 -1
  365. langchain/memory/chat_message_histories/xata.py +1 -1
  366. langchain/memory/chat_message_histories/zep.py +1 -1
  367. langchain/memory/combined.py +13 -12
  368. langchain/memory/entity.py +84 -61
  369. langchain/memory/prompt.py +10 -11
  370. langchain/memory/readonly.py +0 -2
  371. langchain/memory/simple.py +1 -3
  372. langchain/memory/summary.py +13 -11
  373. langchain/memory/summary_buffer.py +17 -8
  374. langchain/memory/utils.py +3 -2
  375. langchain/memory/vectorstore.py +12 -5
  376. langchain/memory/vectorstore_token_buffer_memory.py +5 -5
  377. langchain/model_laboratory.py +12 -11
  378. langchain/output_parsers/__init__.py +4 -4
  379. langchain/output_parsers/boolean.py +7 -4
  380. langchain/output_parsers/combining.py +10 -5
  381. langchain/output_parsers/datetime.py +32 -31
  382. langchain/output_parsers/enum.py +5 -3
  383. langchain/output_parsers/fix.py +52 -52
  384. langchain/output_parsers/format_instructions.py +6 -8
  385. langchain/output_parsers/json.py +2 -2
  386. langchain/output_parsers/list.py +2 -2
  387. langchain/output_parsers/loading.py +9 -9
  388. langchain/output_parsers/openai_functions.py +3 -3
  389. langchain/output_parsers/openai_tools.py +1 -1
  390. langchain/output_parsers/pandas_dataframe.py +43 -47
  391. langchain/output_parsers/prompts.py +1 -2
  392. langchain/output_parsers/rail_parser.py +1 -1
  393. langchain/output_parsers/regex.py +7 -8
  394. langchain/output_parsers/regex_dict.py +7 -10
  395. langchain/output_parsers/retry.py +77 -78
  396. langchain/output_parsers/structured.py +11 -6
  397. langchain/output_parsers/yaml.py +15 -11
  398. langchain/prompts/__init__.py +5 -3
  399. langchain/prompts/base.py +5 -5
  400. langchain/prompts/chat.py +8 -8
  401. langchain/prompts/example_selector/__init__.py +3 -1
  402. langchain/prompts/example_selector/semantic_similarity.py +2 -2
  403. langchain/prompts/few_shot.py +1 -1
  404. langchain/prompts/loading.py +3 -3
  405. langchain/prompts/prompt.py +1 -1
  406. langchain/retrievers/__init__.py +5 -5
  407. langchain/retrievers/bedrock.py +2 -2
  408. langchain/retrievers/bm25.py +1 -1
  409. langchain/retrievers/contextual_compression.py +14 -8
  410. langchain/retrievers/docarray.py +1 -1
  411. langchain/retrievers/document_compressors/__init__.py +5 -4
  412. langchain/retrievers/document_compressors/base.py +12 -6
  413. langchain/retrievers/document_compressors/chain_extract.py +2 -2
  414. langchain/retrievers/document_compressors/chain_extract_prompt.py +2 -3
  415. langchain/retrievers/document_compressors/chain_filter.py +9 -9
  416. langchain/retrievers/document_compressors/chain_filter_prompt.py +1 -2
  417. langchain/retrievers/document_compressors/cohere_rerank.py +15 -15
  418. langchain/retrievers/document_compressors/embeddings_filter.py +21 -17
  419. langchain/retrievers/document_compressors/flashrank_rerank.py +1 -1
  420. langchain/retrievers/document_compressors/listwise_rerank.py +7 -5
  421. langchain/retrievers/ensemble.py +28 -25
  422. langchain/retrievers/google_cloud_documentai_warehouse.py +1 -1
  423. langchain/retrievers/google_vertex_ai_search.py +2 -2
  424. langchain/retrievers/kendra.py +10 -10
  425. langchain/retrievers/llama_index.py +1 -1
  426. langchain/retrievers/merger_retriever.py +11 -11
  427. langchain/retrievers/milvus.py +1 -1
  428. langchain/retrievers/multi_query.py +32 -26
  429. langchain/retrievers/multi_vector.py +20 -8
  430. langchain/retrievers/parent_document_retriever.py +18 -9
  431. langchain/retrievers/re_phraser.py +6 -5
  432. langchain/retrievers/self_query/base.py +138 -127
  433. langchain/retrievers/time_weighted_retriever.py +18 -7
  434. langchain/retrievers/zilliz.py +1 -1
  435. langchain/runnables/openai_functions.py +6 -2
  436. langchain/schema/__init__.py +23 -23
  437. langchain/schema/cache.py +1 -1
  438. langchain/schema/callbacks/base.py +7 -7
  439. langchain/schema/callbacks/manager.py +19 -19
  440. langchain/schema/callbacks/tracers/base.py +1 -1
  441. langchain/schema/callbacks/tracers/evaluation.py +1 -1
  442. langchain/schema/callbacks/tracers/langchain.py +1 -1
  443. langchain/schema/callbacks/tracers/langchain_v1.py +1 -1
  444. langchain/schema/callbacks/tracers/log_stream.py +1 -1
  445. langchain/schema/callbacks/tracers/schemas.py +8 -8
  446. langchain/schema/callbacks/tracers/stdout.py +3 -3
  447. langchain/schema/document.py +1 -1
  448. langchain/schema/language_model.py +2 -2
  449. langchain/schema/messages.py +12 -12
  450. langchain/schema/output.py +3 -3
  451. langchain/schema/output_parser.py +3 -3
  452. langchain/schema/runnable/__init__.py +3 -3
  453. langchain/schema/runnable/base.py +9 -9
  454. langchain/schema/runnable/config.py +5 -5
  455. langchain/schema/runnable/configurable.py +1 -1
  456. langchain/schema/runnable/history.py +1 -1
  457. langchain/schema/runnable/passthrough.py +1 -1
  458. langchain/schema/runnable/utils.py +16 -16
  459. langchain/schema/vectorstore.py +1 -1
  460. langchain/smith/__init__.py +1 -1
  461. langchain/smith/evaluation/__init__.py +2 -2
  462. langchain/smith/evaluation/config.py +10 -7
  463. langchain/smith/evaluation/name_generation.py +3 -3
  464. langchain/smith/evaluation/progress.py +11 -2
  465. langchain/smith/evaluation/runner_utils.py +179 -127
  466. langchain/smith/evaluation/string_run_evaluator.py +75 -68
  467. langchain/storage/__init__.py +2 -2
  468. langchain/storage/_lc_store.py +4 -2
  469. langchain/storage/encoder_backed.py +6 -2
  470. langchain/storage/file_system.py +19 -16
  471. langchain/storage/in_memory.py +1 -1
  472. langchain/storage/upstash_redis.py +1 -1
  473. langchain/text_splitter.py +15 -15
  474. langchain/tools/__init__.py +28 -26
  475. langchain/tools/ainetwork/app.py +1 -1
  476. langchain/tools/ainetwork/base.py +1 -1
  477. langchain/tools/ainetwork/owner.py +1 -1
  478. langchain/tools/ainetwork/rule.py +1 -1
  479. langchain/tools/ainetwork/transfer.py +1 -1
  480. langchain/tools/ainetwork/value.py +1 -1
  481. langchain/tools/amadeus/closest_airport.py +1 -1
  482. langchain/tools/amadeus/flight_search.py +1 -1
  483. langchain/tools/azure_cognitive_services/__init__.py +1 -1
  484. langchain/tools/base.py +4 -4
  485. langchain/tools/bearly/tool.py +1 -1
  486. langchain/tools/bing_search/__init__.py +1 -1
  487. langchain/tools/bing_search/tool.py +1 -1
  488. langchain/tools/dataforseo_api_search/__init__.py +1 -1
  489. langchain/tools/dataforseo_api_search/tool.py +1 -1
  490. langchain/tools/ddg_search/tool.py +1 -1
  491. langchain/tools/e2b_data_analysis/tool.py +2 -2
  492. langchain/tools/edenai/__init__.py +1 -1
  493. langchain/tools/file_management/__init__.py +1 -1
  494. langchain/tools/file_management/copy.py +1 -1
  495. langchain/tools/file_management/delete.py +1 -1
  496. langchain/tools/gmail/__init__.py +2 -2
  497. langchain/tools/gmail/get_message.py +1 -1
  498. langchain/tools/gmail/search.py +1 -1
  499. langchain/tools/gmail/send_message.py +1 -1
  500. langchain/tools/google_finance/__init__.py +1 -1
  501. langchain/tools/google_finance/tool.py +1 -1
  502. langchain/tools/google_scholar/__init__.py +1 -1
  503. langchain/tools/google_scholar/tool.py +1 -1
  504. langchain/tools/google_search/__init__.py +1 -1
  505. langchain/tools/google_search/tool.py +1 -1
  506. langchain/tools/google_serper/__init__.py +1 -1
  507. langchain/tools/google_serper/tool.py +1 -1
  508. langchain/tools/google_trends/__init__.py +1 -1
  509. langchain/tools/google_trends/tool.py +1 -1
  510. langchain/tools/jira/tool.py +20 -1
  511. langchain/tools/json/tool.py +25 -3
  512. langchain/tools/memorize/tool.py +1 -1
  513. langchain/tools/multion/__init__.py +1 -1
  514. langchain/tools/multion/update_session.py +1 -1
  515. langchain/tools/office365/__init__.py +2 -2
  516. langchain/tools/office365/events_search.py +1 -1
  517. langchain/tools/office365/messages_search.py +1 -1
  518. langchain/tools/office365/send_event.py +1 -1
  519. langchain/tools/office365/send_message.py +1 -1
  520. langchain/tools/openapi/utils/api_models.py +6 -6
  521. langchain/tools/playwright/__init__.py +5 -5
  522. langchain/tools/playwright/click.py +1 -1
  523. langchain/tools/playwright/extract_hyperlinks.py +1 -1
  524. langchain/tools/playwright/get_elements.py +1 -1
  525. langchain/tools/playwright/navigate.py +1 -1
  526. langchain/tools/plugin.py +2 -2
  527. langchain/tools/powerbi/tool.py +1 -1
  528. langchain/tools/python/__init__.py +2 -1
  529. langchain/tools/reddit_search/tool.py +1 -1
  530. langchain/tools/render.py +2 -2
  531. langchain/tools/requests/tool.py +2 -2
  532. langchain/tools/searchapi/tool.py +1 -1
  533. langchain/tools/searx_search/tool.py +1 -1
  534. langchain/tools/slack/get_message.py +1 -1
  535. langchain/tools/spark_sql/tool.py +1 -1
  536. langchain/tools/sql_database/tool.py +1 -1
  537. langchain/tools/tavily_search/__init__.py +1 -1
  538. langchain/tools/tavily_search/tool.py +1 -1
  539. langchain/tools/zapier/__init__.py +1 -1
  540. langchain/tools/zapier/tool.py +24 -2
  541. langchain/utilities/__init__.py +4 -4
  542. langchain/utilities/arcee.py +4 -4
  543. langchain/utilities/clickup.py +4 -4
  544. langchain/utilities/dalle_image_generator.py +1 -1
  545. langchain/utilities/dataforseo_api_search.py +1 -1
  546. langchain/utilities/opaqueprompts.py +1 -1
  547. langchain/utilities/reddit_search.py +1 -1
  548. langchain/utilities/sql_database.py +1 -1
  549. langchain/utilities/tavily_search.py +1 -1
  550. langchain/utilities/vertexai.py +2 -2
  551. langchain/utils/__init__.py +1 -1
  552. langchain/utils/aiter.py +1 -1
  553. langchain/utils/html.py +3 -3
  554. langchain/utils/input.py +1 -1
  555. langchain/utils/iter.py +1 -1
  556. langchain/utils/json_schema.py +1 -3
  557. langchain/utils/strings.py +1 -1
  558. langchain/utils/utils.py +6 -6
  559. langchain/vectorstores/__init__.py +5 -5
  560. langchain/vectorstores/alibabacloud_opensearch.py +1 -1
  561. langchain/vectorstores/azure_cosmos_db.py +1 -1
  562. langchain/vectorstores/clickhouse.py +1 -1
  563. langchain/vectorstores/elastic_vector_search.py +1 -1
  564. langchain/vectorstores/elasticsearch.py +2 -2
  565. langchain/vectorstores/myscale.py +1 -1
  566. langchain/vectorstores/neo4j_vector.py +1 -1
  567. langchain/vectorstores/pgembedding.py +1 -1
  568. langchain/vectorstores/qdrant.py +1 -1
  569. langchain/vectorstores/redis/__init__.py +1 -1
  570. langchain/vectorstores/redis/base.py +1 -1
  571. langchain/vectorstores/redis/filters.py +4 -4
  572. langchain/vectorstores/redis/schema.py +6 -6
  573. langchain/vectorstores/sklearn.py +2 -2
  574. langchain/vectorstores/starrocks.py +1 -1
  575. langchain/vectorstores/utils.py +1 -1
  576. {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/METADATA +4 -4
  577. {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/RECORD +580 -580
  578. {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/WHEEL +1 -1
  579. {langchain-0.3.26.dist-info → langchain-0.3.27.dist-info}/entry_points.txt +0 -0
  580. {langchain-0.3.26.dist-info → langchain-0.3.27.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(
@@ -160,8 +162,10 @@ class AgentExecutorIterator:
160
162
 
161
163
  prepared_outputs = AddableDict(
162
164
  self.agent_executor.prep_outputs(
163
- self.inputs, outputs, return_only_outputs=True
164
- )
165
+ self.inputs,
166
+ outputs,
167
+ return_only_outputs=True,
168
+ ),
165
169
  )
166
170
  if self.include_run_info:
167
171
  prepared_outputs[RUN_KEY] = RunInfo(run_id=run_manager.run_id)
@@ -187,7 +191,8 @@ class AgentExecutorIterator:
187
191
  )
188
192
  try:
189
193
  while self.agent_executor._should_continue(
190
- self.iterations, self.time_elapsed
194
+ self.iterations,
195
+ self.time_elapsed,
191
196
  ):
192
197
  # take the next step: this plans next action, executes it,
193
198
  # yielding action and observation as they are generated
@@ -254,7 +259,8 @@ class AgentExecutorIterator:
254
259
  try:
255
260
  async with asyncio_timeout(self.agent_executor.max_execution_time):
256
261
  while self.agent_executor._should_continue(
257
- self.iterations, self.time_elapsed
262
+ self.iterations,
263
+ self.time_elapsed,
258
264
  ):
259
265
  # take the next step: this plans next action, executes it,
260
266
  # yielding action and observation as they are generated
@@ -272,11 +278,13 @@ class AgentExecutorIterator:
272
278
  if self.yield_actions:
273
279
  if isinstance(chunk, AgentAction):
274
280
  yield AddableDict(
275
- actions=[chunk], messages=chunk.messages
281
+ actions=[chunk],
282
+ messages=chunk.messages,
276
283
  )
277
284
  elif isinstance(chunk, AgentStep):
278
285
  yield AddableDict(
279
- steps=[chunk], messages=chunk.messages
286
+ steps=[chunk],
287
+ messages=chunk.messages,
280
288
  )
281
289
 
282
290
  # convert iterator output to format handled by _process_next_step
@@ -285,7 +293,8 @@ class AgentExecutorIterator:
285
293
  self.update_iterations()
286
294
  # decide if this is the final output
287
295
  output = await self._aprocess_next_step_output(
288
- next_step, run_manager
296
+ next_step,
297
+ run_manager,
289
298
  )
290
299
  is_final = "intermediate_step" not in output
291
300
  # yield the final output always
@@ -317,7 +326,7 @@ class AgentExecutorIterator:
317
326
  logger.debug("Processing output of Agent loop step")
318
327
  if isinstance(next_step_output, AgentFinish):
319
328
  logger.debug(
320
- "Hit AgentFinish: _return -> on_chain_end -> run final output logic"
329
+ "Hit AgentFinish: _return -> on_chain_end -> run final output logic",
321
330
  )
322
331
  return self._return(next_step_output, run_manager=run_manager)
323
332
 
@@ -345,7 +354,7 @@ class AgentExecutorIterator:
345
354
  logger.debug("Processing output of async Agent loop step")
346
355
  if isinstance(next_step_output, AgentFinish):
347
356
  logger.debug(
348
- "Hit AgentFinish: _areturn -> on_chain_end -> run final output logic"
357
+ "Hit AgentFinish: _areturn -> on_chain_end -> run final output logic",
349
358
  )
350
359
  return await self._areturn(next_step_output, run_manager=run_manager)
351
360
 
@@ -388,26 +397,34 @@ class AgentExecutorIterator:
388
397
  return await self._areturn(output, run_manager=run_manager)
389
398
 
390
399
  def _return(
391
- self, output: AgentFinish, run_manager: CallbackManagerForChainRun
400
+ self,
401
+ output: AgentFinish,
402
+ run_manager: CallbackManagerForChainRun,
392
403
  ) -> AddableDict:
393
404
  """
394
405
  Return the final output of the iterator.
395
406
  """
396
407
  returned_output = self.agent_executor._return(
397
- output, self.intermediate_steps, run_manager=run_manager
408
+ output,
409
+ self.intermediate_steps,
410
+ run_manager=run_manager,
398
411
  )
399
412
  returned_output["messages"] = output.messages
400
413
  run_manager.on_chain_end(returned_output)
401
414
  return self.make_final_outputs(returned_output, run_manager)
402
415
 
403
416
  async def _areturn(
404
- self, output: AgentFinish, run_manager: AsyncCallbackManagerForChainRun
417
+ self,
418
+ output: AgentFinish,
419
+ run_manager: AsyncCallbackManagerForChainRun,
405
420
  ) -> AddableDict:
406
421
  """
407
422
  Return the final output of the async iterator.
408
423
  """
409
424
  returned_output = await self.agent_executor._areturn(
410
- output, self.intermediate_steps, run_manager=run_manager
425
+ output,
426
+ self.intermediate_steps,
427
+ run_manager=run_manager,
411
428
  )
412
429
  returned_output["messages"] = output.messages
413
430
  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)
@@ -26,4 +26,4 @@ def __getattr__(name: str) -> Any:
26
26
  return _import_attribute(name)
27
27
 
28
28
 
29
- __all__ = ["SQL_PREFIX", "SQL_SUFFIX", "SQL_FUNCTIONS_SUFFIX"]
29
+ __all__ = ["SQL_FUNCTIONS_SUFFIX", "SQL_PREFIX", "SQL_SUFFIX"]
@@ -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
- "SQLDatabaseToolkit": "langchain_community.agent_toolkits.sql.toolkit"
12
+ "SQLDatabaseToolkit": "langchain_community.agent_toolkits.sql.toolkit",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__package__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -35,7 +35,7 @@ def create_vectorstore_agent(
35
35
  toolkit: VectorStoreToolkit,
36
36
  callback_manager: Optional[BaseCallbackManager] = None,
37
37
  prefix: str = PREFIX,
38
- verbose: bool = False,
38
+ verbose: bool = False, # noqa: FBT001,FBT002
39
39
  agent_executor_kwargs: Optional[dict[str, Any]] = None,
40
40
  **kwargs: Any,
41
41
  ) -> AgentExecutor:
@@ -128,7 +128,7 @@ def create_vectorstore_router_agent(
128
128
  toolkit: VectorStoreRouterToolkit,
129
129
  callback_manager: Optional[BaseCallbackManager] = None,
130
130
  prefix: str = ROUTER_PREFIX,
131
- verbose: bool = False,
131
+ verbose: bool = False, # noqa: FBT001,FBT002
132
132
  agent_executor_kwargs: Optional[dict[str, Any]] = None,
133
133
  **kwargs: Any,
134
134
  ) -> AgentExecutor:
@@ -1,13 +1,11 @@
1
- # flake8: noqa
2
-
3
1
  PREFIX = """You are an agent designed to answer questions about sets of documents.
4
2
  You have access to tools for interacting with the documents, and the inputs to the tools are questions.
5
3
  Sometimes, you will be asked to provide sources for your questions, in which case you should use the appropriate tool to do so.
6
4
  If the question does not seem relevant to any of the tools provided, just return "I don't know" as the answer.
7
- """
5
+ """ # noqa: E501
8
6
 
9
7
  ROUTER_PREFIX = """You are an agent designed to answer questions.
10
8
  You have access to tools for interacting with different sources, and the inputs to the tools are questions.
11
9
  Your main task is to decide which of the tools is relevant for answering question at hand.
12
10
  For complex questions, you can break the question down into sub questions and use tools to answers the sub questions.
13
- """
11
+ """ # noqa: E501