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
@@ -10,6 +10,7 @@ from langchain_core.agents import AgentAction, AgentFinish
10
10
  from langchain_core.exceptions import OutputParserException
11
11
  from langchain_core.language_models import BaseLanguageModel
12
12
  from pydantic import Field
13
+ from typing_extensions import override
13
14
 
14
15
  from langchain.agents.agent import AgentOutputParser
15
16
  from langchain.agents.structured_chat.prompt import FORMAT_INSTRUCTIONS
@@ -27,10 +28,12 @@ class StructuredChatOutputParser(AgentOutputParser):
27
28
  pattern: Pattern = re.compile(r"```(?:json\s+)?(\W.*?)```", re.DOTALL)
28
29
  """Regex pattern to parse the output."""
29
30
 
31
+ @override
30
32
  def get_format_instructions(self) -> str:
31
33
  """Returns formatting instructions for the given output parser."""
32
34
  return self.format_instructions
33
35
 
36
+ @override
34
37
  def parse(self, text: str) -> Union[AgentAction, AgentFinish]:
35
38
  try:
36
39
  action_match = self.pattern.search(text)
@@ -42,14 +45,15 @@ class StructuredChatOutputParser(AgentOutputParser):
42
45
  response = response[0]
43
46
  if response["action"] == "Final Answer":
44
47
  return AgentFinish({"output": response["action_input"]}, text)
45
- else:
46
- return AgentAction(
47
- response["action"], response.get("action_input", {}), text
48
- )
49
- else:
50
- return AgentFinish({"output": text}, text)
48
+ return AgentAction(
49
+ response["action"],
50
+ response.get("action_input", {}),
51
+ text,
52
+ )
53
+ return AgentFinish({"output": text}, text)
51
54
  except Exception as e:
52
- raise OutputParserException(f"Could not parse LLM output: {text}") from e
55
+ msg = f"Could not parse LLM output: {text}"
56
+ raise OutputParserException(msg) from e
53
57
 
54
58
  @property
55
59
  def _type(self) -> str:
@@ -64,20 +68,19 @@ class StructuredChatOutputParserWithRetries(AgentOutputParser):
64
68
  output_fixing_parser: Optional[OutputFixingParser] = None
65
69
  """The output fixing parser to use."""
66
70
 
71
+ @override
67
72
  def get_format_instructions(self) -> str:
68
73
  return FORMAT_INSTRUCTIONS
69
74
 
75
+ @override
70
76
  def parse(self, text: str) -> Union[AgentAction, AgentFinish]:
71
77
  try:
72
78
  if self.output_fixing_parser is not None:
73
- parsed_obj: Union[AgentAction, AgentFinish] = (
74
- self.output_fixing_parser.parse(text)
75
- )
76
- else:
77
- parsed_obj = self.base_parser.parse(text)
78
- return parsed_obj
79
+ return self.output_fixing_parser.parse(text)
80
+ return self.base_parser.parse(text)
79
81
  except Exception as e:
80
- raise OutputParserException(f"Could not parse LLM output: {text}") from e
82
+ msg = f"Could not parse LLM output: {text}"
83
+ raise OutputParserException(msg) from e
81
84
 
82
85
  @classmethod
83
86
  def from_llm(
@@ -85,16 +88,24 @@ class StructuredChatOutputParserWithRetries(AgentOutputParser):
85
88
  llm: Optional[BaseLanguageModel] = None,
86
89
  base_parser: Optional[StructuredChatOutputParser] = None,
87
90
  ) -> StructuredChatOutputParserWithRetries:
91
+ """Create a StructuredChatOutputParserWithRetries from a language model.
92
+
93
+ Args:
94
+ llm: The language model to use.
95
+ base_parser: An optional StructuredChatOutputParser to use.
96
+ Returns:
97
+ An instance of StructuredChatOutputParserWithRetries.
98
+ """
88
99
  if llm is not None:
89
100
  base_parser = base_parser or StructuredChatOutputParser()
90
101
  output_fixing_parser: OutputFixingParser = OutputFixingParser.from_llm(
91
- llm=llm, parser=base_parser
102
+ llm=llm,
103
+ parser=base_parser,
92
104
  )
93
105
  return cls(output_fixing_parser=output_fixing_parser)
94
- elif base_parser is not None:
106
+ if base_parser is not None:
95
107
  return cls(base_parser=base_parser)
96
- else:
97
- return cls()
108
+ return cls()
98
109
 
99
110
  @property
100
111
  def _type(self) -> str:
@@ -1,5 +1,4 @@
1
- # flake8: noqa
2
- PREFIX = """Respond to the human as helpfully and accurately as possible. You have access to the following tools:"""
1
+ PREFIX = """Respond to the human as helpfully and accurately as possible. You have access to the following tools:""" # noqa: E501
3
2
  FORMAT_INSTRUCTIONS = """Use a json blob to specify a tool by providing an action key (tool name) and an action_input key (tool input).
4
3
 
5
4
  Valid "action" values: "Final Answer" or {tool_names}
@@ -30,6 +29,6 @@ Action:
30
29
  "action": "Final Answer",
31
30
  "action_input": "Final response to human"
32
31
  }}}}
33
- ```"""
32
+ ```""" # noqa: E501
34
33
  SUFFIX = """Begin! Reminder to ALWAYS respond with a valid json blob of a single action. Use tools if necessary. Respond directly if appropriate. Format is Action:```$JSON_BLOB```then Observation:.
35
- Thought:"""
34
+ Thought:""" # noqa: E501
@@ -85,25 +85,27 @@ def create_tool_calling_agent(
85
85
  The agent prompt must have an `agent_scratchpad` key that is a
86
86
  ``MessagesPlaceholder``. Intermediate agent actions and tool output
87
87
  messages will be passed in here.
88
+
88
89
  """
89
90
  missing_vars = {"agent_scratchpad"}.difference(
90
- prompt.input_variables + list(prompt.partial_variables)
91
+ prompt.input_variables + list(prompt.partial_variables),
91
92
  )
92
93
  if missing_vars:
93
- raise ValueError(f"Prompt missing required variables: {missing_vars}")
94
+ msg = f"Prompt missing required variables: {missing_vars}"
95
+ raise ValueError(msg)
94
96
 
95
97
  if not hasattr(llm, "bind_tools"):
98
+ msg = "This function requires a bind_tools() method be implemented on the LLM."
96
99
  raise ValueError(
97
- "This function requires a .bind_tools method be implemented on the LLM.",
100
+ msg,
98
101
  )
99
102
  llm_with_tools = llm.bind_tools(tools)
100
103
 
101
- agent = (
104
+ return (
102
105
  RunnablePassthrough.assign(
103
- agent_scratchpad=lambda x: message_formatter(x["intermediate_steps"])
106
+ agent_scratchpad=lambda x: message_formatter(x["intermediate_steps"]),
104
107
  )
105
108
  | prompt
106
109
  | llm_with_tools
107
110
  | ToolsAgentOutputParser()
108
111
  )
109
- return agent
langchain/agents/tools.py CHANGED
@@ -7,6 +7,7 @@ from langchain_core.callbacks import (
7
7
  CallbackManagerForToolRun,
8
8
  )
9
9
  from langchain_core.tools import BaseTool, tool
10
+ from typing_extensions import override
10
11
 
11
12
 
12
13
  class InvalidTool(BaseTool):
@@ -17,6 +18,7 @@ class InvalidTool(BaseTool):
17
18
  description: str = "Called when tool name is invalid. Suggests valid tool names."
18
19
  """Description of the tool."""
19
20
 
21
+ @override
20
22
  def _run(
21
23
  self,
22
24
  requested_tool_name: str,
@@ -24,12 +26,13 @@ class InvalidTool(BaseTool):
24
26
  run_manager: Optional[CallbackManagerForToolRun] = None,
25
27
  ) -> str:
26
28
  """Use the tool."""
27
- available_tool_names_str = ", ".join([tool for tool in available_tool_names])
29
+ available_tool_names_str = ", ".join(list(available_tool_names))
28
30
  return (
29
31
  f"{requested_tool_name} is not a valid tool, "
30
32
  f"try one of [{available_tool_names_str}]."
31
33
  )
32
34
 
35
+ @override
33
36
  async def _arun(
34
37
  self,
35
38
  requested_tool_name: str,
@@ -37,7 +40,7 @@ class InvalidTool(BaseTool):
37
40
  run_manager: Optional[AsyncCallbackManagerForToolRun] = None,
38
41
  ) -> str:
39
42
  """Use the tool asynchronously."""
40
- available_tool_names_str = ", ".join([tool for tool in available_tool_names])
43
+ available_tool_names_str = ", ".join(list(available_tool_names))
41
44
  return (
42
45
  f"{requested_tool_name} is not a valid tool, "
43
46
  f"try one of [{available_tool_names_str}]."
langchain/agents/utils.py CHANGED
@@ -15,6 +15,5 @@ def validate_tools_single_input(class_name: str, tools: Sequence[BaseTool]) -> N
15
15
  """
16
16
  for tool in tools:
17
17
  if not tool.is_single_input:
18
- raise ValueError(
19
- f"{class_name} does not support multi-input tool {tool.name}."
20
- )
18
+ msg = f"{class_name} does not support multi-input tool {tool.name}."
19
+ raise ValueError(msg)
@@ -10,6 +10,7 @@ from langchain_core.prompts.chat import AIMessagePromptTemplate, ChatPromptTempl
10
10
  from langchain_core.runnables import Runnable, RunnablePassthrough
11
11
  from langchain_core.tools import BaseTool
12
12
  from langchain_core.tools.render import ToolsRenderer, render_text_description
13
+ from typing_extensions import override
13
14
 
14
15
  from langchain.agents.agent import BaseSingleActionAgent
15
16
  from langchain.agents.format_scratchpad import format_xml
@@ -36,7 +37,6 @@ class XMLAgent(BaseSingleActionAgent):
36
37
  tools = ...
37
38
  model =
38
39
 
39
-
40
40
  """
41
41
 
42
42
  tools: list[BaseTool]
@@ -45,20 +45,24 @@ class XMLAgent(BaseSingleActionAgent):
45
45
  """Chain to use to predict action."""
46
46
 
47
47
  @property
48
+ @override
48
49
  def input_keys(self) -> list[str]:
49
50
  return ["input"]
50
51
 
51
52
  @staticmethod
52
53
  def get_default_prompt() -> ChatPromptTemplate:
54
+ """Return the default prompt for the XML agent."""
53
55
  base_prompt = ChatPromptTemplate.from_template(agent_instructions)
54
56
  return base_prompt + AIMessagePromptTemplate.from_template(
55
- "{intermediate_steps}"
57
+ "{intermediate_steps}",
56
58
  )
57
59
 
58
60
  @staticmethod
59
61
  def get_default_output_parser() -> XMLAgentOutputParser:
62
+ """Return an XMLAgentOutputParser."""
60
63
  return XMLAgentOutputParser()
61
64
 
65
+ @override
62
66
  def plan(
63
67
  self,
64
68
  intermediate_steps: list[tuple[AgentAction, str]],
@@ -83,6 +87,7 @@ class XMLAgent(BaseSingleActionAgent):
83
87
  response = self.llm_chain(inputs, callbacks=callbacks)
84
88
  return response[self.llm_chain.output_key]
85
89
 
90
+ @override
86
91
  async def aplan(
87
92
  self,
88
93
  intermediate_steps: list[tuple[AgentAction, str]],
@@ -203,12 +208,14 @@ def create_xml_agent(
203
208
  Question: {input}
204
209
  {agent_scratchpad}'''
205
210
  prompt = PromptTemplate.from_template(template)
211
+
206
212
  """ # noqa: E501
207
213
  missing_vars = {"tools", "agent_scratchpad"}.difference(
208
- prompt.input_variables + list(prompt.partial_variables)
214
+ prompt.input_variables + list(prompt.partial_variables),
209
215
  )
210
216
  if missing_vars:
211
- raise ValueError(f"Prompt missing required variables: {missing_vars}")
217
+ msg = f"Prompt missing required variables: {missing_vars}"
218
+ raise ValueError(msg)
212
219
 
213
220
  prompt = prompt.partial(
214
221
  tools=tools_renderer(list(tools)),
@@ -220,7 +227,7 @@ def create_xml_agent(
220
227
  else:
221
228
  llm_with_stop = llm
222
229
 
223
- agent = (
230
+ return (
224
231
  RunnablePassthrough.assign(
225
232
  agent_scratchpad=lambda x: format_xml(x["intermediate_steps"]),
226
233
  )
@@ -228,4 +235,3 @@ def create_xml_agent(
228
235
  | llm_with_stop
229
236
  | XMLAgentOutputParser()
230
237
  )
231
- return agent
@@ -1,4 +1,3 @@
1
- # flake8: noqa
2
1
  # TODO: deprecate
3
2
  agent_instructions = """You are a helpful assistant. Help the user answer any questions.
4
3
 
@@ -19,4 +18,4 @@ When you are done, respond with a final answer between <final_answer></final_ans
19
18
 
20
19
  Begin!
21
20
 
22
- Question: {question}"""
21
+ Question: {question}""" # noqa: E501
langchain/cache.py CHANGED
@@ -53,20 +53,20 @@ def __getattr__(name: str) -> Any:
53
53
 
54
54
 
55
55
  __all__ = [
56
- "FullLLMCache",
57
- "SQLAlchemyCache",
58
- "SQLiteCache",
59
- "UpstashRedisCache",
60
- "RedisCache",
61
- "RedisSemanticCache",
62
- "GPTCache",
63
- "MomentoCache",
64
- "InMemoryCache",
56
+ "AstraDBCache",
57
+ "AstraDBSemanticCache",
58
+ "AzureCosmosDBSemanticCache",
65
59
  "CassandraCache",
66
60
  "CassandraSemanticCache",
61
+ "FullLLMCache",
67
62
  "FullMd5LLMCache",
63
+ "GPTCache",
64
+ "InMemoryCache",
65
+ "MomentoCache",
66
+ "RedisCache",
67
+ "RedisSemanticCache",
68
+ "SQLAlchemyCache",
68
69
  "SQLAlchemyMd5Cache",
69
- "AstraDBCache",
70
- "AstraDBSemanticCache",
71
- "AzureCosmosDBSemanticCache",
70
+ "SQLiteCache",
71
+ "UpstashRedisCache",
72
72
  ]
@@ -107,33 +107,33 @@ __all__ = [
107
107
  "AimCallbackHandler",
108
108
  "ArgillaCallbackHandler",
109
109
  "ArizeCallbackHandler",
110
- "PromptLayerCallbackHandler",
111
110
  "ArthurCallbackHandler",
111
+ "AsyncIteratorCallbackHandler",
112
112
  "ClearMLCallbackHandler",
113
113
  "CometCallbackHandler",
114
114
  "ContextCallbackHandler",
115
115
  "FileCallbackHandler",
116
+ "FinalStreamingStdOutCallbackHandler",
117
+ "FlyteCallbackHandler",
116
118
  "HumanApprovalCallbackHandler",
117
119
  "InfinoCallbackHandler",
118
- "MlflowCallbackHandler",
120
+ "LLMThoughtLabeler",
119
121
  "LLMonitorCallbackHandler",
122
+ "LabelStudioCallbackHandler",
123
+ "LangChainTracer",
124
+ "MlflowCallbackHandler",
120
125
  "OpenAICallbackHandler",
126
+ "PromptLayerCallbackHandler",
127
+ "SageMakerCallbackHandler",
121
128
  "StdOutCallbackHandler",
122
- "AsyncIteratorCallbackHandler",
123
129
  "StreamingStdOutCallbackHandler",
124
- "FinalStreamingStdOutCallbackHandler",
125
- "LLMThoughtLabeler",
126
- "LangChainTracer",
127
130
  "StreamlitCallbackHandler",
131
+ "TrubricsCallbackHandler",
128
132
  "WandbCallbackHandler",
129
133
  "WhyLabsCallbackHandler",
134
+ "collect_runs",
130
135
  "get_openai_callback",
131
136
  "tracing_enabled",
132
137
  "tracing_v2_enabled",
133
- "collect_runs",
134
138
  "wandb_tracing_enabled",
135
- "FlyteCallbackHandler",
136
- "SageMakerCallbackHandler",
137
- "LabelStudioCallbackHandler",
138
- "TrubricsCallbackHandler",
139
139
  ]
@@ -27,7 +27,7 @@ def __getattr__(name: str) -> Any:
27
27
 
28
28
 
29
29
  __all__ = [
30
- "import_aim",
31
- "BaseMetadataCallbackHandler",
32
30
  "AimCallbackHandler",
31
+ "BaseMetadataCallbackHandler",
32
+ "import_aim",
33
33
  ]
@@ -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
- "ArgillaCallbackHandler": "langchain_community.callbacks.argilla_callback"
12
+ "ArgillaCallbackHandler": "langchain_community.callbacks.argilla_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, 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
- "ArizeCallbackHandler": "langchain_community.callbacks.arize_callback"
12
+ "ArizeCallbackHandler": "langchain_community.callbacks.arize_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, 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
- "ArthurCallbackHandler": "langchain_community.callbacks.arthur_callback"
12
+ "ArthurCallbackHandler": "langchain_community.callbacks.arthur_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -16,14 +16,14 @@ from langchain_core.callbacks import (
16
16
  )
17
17
 
18
18
  __all__ = [
19
- "RetrieverManagerMixin",
20
- "LLMManagerMixin",
21
- "ChainManagerMixin",
22
- "ToolManagerMixin",
23
- "CallbackManagerMixin",
24
- "RunManagerMixin",
25
- "BaseCallbackHandler",
26
19
  "AsyncCallbackHandler",
20
+ "BaseCallbackHandler",
27
21
  "BaseCallbackManager",
22
+ "CallbackManagerMixin",
28
23
  "Callbacks",
24
+ "ChainManagerMixin",
25
+ "LLMManagerMixin",
26
+ "RetrieverManagerMixin",
27
+ "RunManagerMixin",
28
+ "ToolManagerMixin",
29
29
  ]
@@ -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
- "ClearMLCallbackHandler": "langchain_community.callbacks.clearml_callback"
12
+ "ClearMLCallbackHandler": "langchain_community.callbacks.clearml_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, 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
- "CometCallbackHandler": "langchain_community.callbacks.comet_ml_callback"
12
+ "CometCallbackHandler": "langchain_community.callbacks.comet_ml_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, 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
- "DeepEvalCallbackHandler": "langchain_community.callbacks.confident_callback"
12
+ "DeepEvalCallbackHandler": "langchain_community.callbacks.confident_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, 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
- "ContextCallbackHandler": "langchain_community.callbacks.context_callback"
12
+ "ContextCallbackHandler": "langchain_community.callbacks.context_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, 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
- "FlyteCallbackHandler": "langchain_community.callbacks.flyte_callback"
12
+ "FlyteCallbackHandler": "langchain_community.callbacks.flyte_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -27,7 +27,7 @@ def __getattr__(name: str) -> Any:
27
27
 
28
28
 
29
29
  __all__ = [
30
- "HumanRejectedException",
31
- "HumanApprovalCallbackHandler",
32
30
  "AsyncHumanApprovalCallbackHandler",
31
+ "HumanApprovalCallbackHandler",
32
+ "HumanRejectedException",
33
33
  ]
@@ -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
- "InfinoCallbackHandler": "langchain_community.callbacks.infino_callback"
12
+ "InfinoCallbackHandler": "langchain_community.callbacks.infino_callback",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -27,7 +27,7 @@ def __getattr__(name: str) -> Any:
27
27
 
28
28
 
29
29
  __all__ = [
30
+ "LabelStudioCallbackHandler",
30
31
  "LabelStudioMode",
31
32
  "get_default_label_configs",
32
- "LabelStudioCallbackHandler",
33
33
  ]
@@ -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
- "LLMonitorCallbackHandler": "langchain_community.callbacks.llmonitor_callback"
14
+ "LLMonitorCallbackHandler": "langchain_community.callbacks.llmonitor_callback",
15
15
  }
16
16
 
17
17
  _import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)
@@ -58,7 +58,7 @@ def __getattr__(name: str) -> Any:
58
58
 
59
59
 
60
60
  __all__ = [
61
- "ahandle_event",
61
+ "AsyncCallbackManager",
62
62
  "AsyncCallbackManagerForChainGroup",
63
63
  "AsyncCallbackManagerForChainRun",
64
64
  "AsyncCallbackManagerForLLMRun",
@@ -66,7 +66,6 @@ __all__ = [
66
66
  "AsyncCallbackManagerForToolRun",
67
67
  "AsyncParentRunManager",
68
68
  "AsyncRunManager",
69
- "atrace_as_chain_group",
70
69
  "BaseRunManager",
71
70
  "CallbackManager",
72
71
  "CallbackManagerForChainGroup",
@@ -75,13 +74,14 @@ __all__ = [
75
74
  "CallbackManagerForRetrieverRun",
76
75
  "CallbackManagerForToolRun",
77
76
  "Callbacks",
78
- "AsyncCallbackManager",
77
+ "ParentRunManager",
78
+ "RunManager",
79
+ "ahandle_event",
80
+ "atrace_as_chain_group",
79
81
  "collect_runs",
80
82
  "env_var_is_set",
81
83
  "get_openai_callback",
82
84
  "handle_event",
83
- "ParentRunManager",
84
- "RunManager",
85
85
  "trace_as_chain_group",
86
86
  "tracing_enabled",
87
87
  "tracing_v2_enabled",
@@ -31,8 +31,8 @@ def __getattr__(name: str) -> Any:
31
31
 
32
32
 
33
33
  __all__ = [
34
+ "MlflowCallbackHandler",
35
+ "MlflowLogger",
34
36
  "analyze_text",
35
37
  "construct_html_from_prompt_and_generation",
36
- "MlflowLogger",
37
- "MlflowCallbackHandler",
38
38
  ]
@@ -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
- "OpenAICallbackHandler": "langchain_community.callbacks.openai_info"
12
+ "OpenAICallbackHandler": "langchain_community.callbacks.openai_info",
13
13
  }
14
14
 
15
15
  _import_attribute = create_importer(__file__, 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
- "PromptLayerCallbackHandler": "langchain_community.callbacks.promptlayer_callback"
14
+ "PromptLayerCallbackHandler": "langchain_community.callbacks.promptlayer_callback",
15
15
  }
16
16
 
17
17
  _import_attribute = create_importer(__file__, 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
- "SageMakerCallbackHandler": "langchain_community.callbacks.sagemaker_callback"
14
+ "SageMakerCallbackHandler": "langchain_community.callbacks.sagemaker_callback",
15
15
  }
16
16
 
17
17
  _import_attribute = create_importer(__file__, deprecated_lookups=DEPRECATED_LOOKUP)