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
@@ -5,4 +5,4 @@ from langchain_core.tracers.langchain import (
5
5
  wait_for_all_tracers,
6
6
  )
7
7
 
8
- __all__ = ["log_error_once", "wait_for_all_tracers", "get_client", "LangChainTracer"]
8
+ __all__ = ["LangChainTracer", "get_client", "log_error_once", "wait_for_all_tracers"]
@@ -1,3 +1,3 @@
1
1
  from langchain_core.tracers.langchain_v1 import LangChainTracerV1, get_headers
2
2
 
3
- __all__ = ["get_headers", "LangChainTracerV1"]
3
+ __all__ = ["LangChainTracerV1", "get_headers"]
@@ -6,4 +6,4 @@ from langchain_core.tracers.log_stream import (
6
6
  RunState,
7
7
  )
8
8
 
9
- __all__ = ["LogEntry", "RunState", "RunLogPatch", "RunLog", "LogStreamCallbackHandler"]
9
+ __all__ = ["LogEntry", "LogStreamCallbackHandler", "RunLog", "RunLogPatch", "RunState"]
@@ -13,15 +13,15 @@ from langchain_core.tracers.schemas import (
13
13
  )
14
14
 
15
15
  __all__ = [
16
- "RunTypeEnum",
17
- "TracerSessionV1Base",
18
- "TracerSessionV1Create",
19
- "TracerSessionV1",
20
- "TracerSessionBase",
21
- "TracerSession",
22
16
  "BaseRun",
23
- "LLMRun",
24
17
  "ChainRun",
25
- "ToolRun",
18
+ "LLMRun",
26
19
  "Run",
20
+ "RunTypeEnum",
21
+ "ToolRun",
22
+ "TracerSession",
23
+ "TracerSessionBase",
24
+ "TracerSessionV1",
25
+ "TracerSessionV1Base",
26
+ "TracerSessionV1Create",
27
27
  ]
@@ -6,8 +6,8 @@ from langchain_core.tracers.stdout import (
6
6
  )
7
7
 
8
8
  __all__ = [
9
- "try_json_stringify",
10
- "elapsed",
11
- "FunctionCallbackHandler",
12
9
  "ConsoleCallbackHandler",
10
+ "FunctionCallbackHandler",
11
+ "elapsed",
12
+ "try_json_stringify",
13
13
  ]
@@ -1,3 +1,3 @@
1
1
  from langchain_core.documents import BaseDocumentTransformer, Document
2
2
 
3
- __all__ = ["Document", "BaseDocumentTransformer"]
3
+ __all__ = ["BaseDocumentTransformer", "Document"]
@@ -7,9 +7,9 @@ from langchain_core.language_models import (
7
7
  from langchain_core.language_models.base import _get_token_ids_default_method
8
8
 
9
9
  __all__ = [
10
- "get_tokenizer",
11
10
  "BaseLanguageModel",
12
- "_get_token_ids_default_method",
13
11
  "LanguageModelInput",
14
12
  "LanguageModelOutput",
13
+ "_get_token_ids_default_method",
14
+ "get_tokenizer",
15
15
  ]
@@ -26,26 +26,26 @@ from langchain_core.messages import (
26
26
  _message_to_dict = message_to_dict
27
27
 
28
28
  __all__ = [
29
- "get_buffer_string",
29
+ "AIMessage",
30
+ "AIMessageChunk",
31
+ "AnyMessage",
30
32
  "BaseMessage",
31
- "merge_content",
32
33
  "BaseMessageChunk",
34
+ "ChatMessage",
35
+ "ChatMessageChunk",
36
+ "FunctionMessage",
37
+ "FunctionMessageChunk",
33
38
  "HumanMessage",
34
39
  "HumanMessageChunk",
35
- "AIMessage",
36
- "AIMessageChunk",
37
40
  "SystemMessage",
38
41
  "SystemMessageChunk",
39
- "FunctionMessage",
40
- "FunctionMessageChunk",
41
42
  "ToolMessage",
42
43
  "ToolMessageChunk",
43
- "ChatMessage",
44
- "ChatMessageChunk",
45
- "messages_to_dict",
46
- "messages_from_dict",
47
- "_message_to_dict",
48
44
  "_message_from_dict",
45
+ "_message_to_dict",
46
+ "get_buffer_string",
47
+ "merge_content",
49
48
  "message_to_dict",
50
- "AnyMessage",
49
+ "messages_from_dict",
50
+ "messages_to_dict",
51
51
  ]
@@ -9,11 +9,11 @@ from langchain_core.outputs import (
9
9
  )
10
10
 
11
11
  __all__ = [
12
- "Generation",
13
- "GenerationChunk",
14
12
  "ChatGeneration",
15
13
  "ChatGenerationChunk",
16
- "RunInfo",
17
14
  "ChatResult",
15
+ "Generation",
16
+ "GenerationChunk",
18
17
  "LLMResult",
18
+ "RunInfo",
19
19
  ]
@@ -13,13 +13,13 @@ from langchain_core.output_parsers.base import T
13
13
  NoOpOutputParser = StrOutputParser
14
14
 
15
15
  __all__ = [
16
- "BaseLLMOutputParser",
16
+ "BaseCumulativeTransformOutputParser",
17
17
  "BaseGenerationOutputParser",
18
+ "BaseLLMOutputParser",
18
19
  "BaseOutputParser",
19
20
  "BaseTransformOutputParser",
20
- "BaseCumulativeTransformOutputParser",
21
21
  "NoOpOutputParser",
22
- "StrOutputParser",
23
22
  "OutputParserException",
23
+ "StrOutputParser",
24
24
  "T",
25
25
  ]
@@ -38,13 +38,11 @@ from langchain_core.runnables.utils import (
38
38
 
39
39
  __all__ = [
40
40
  "ConfigurableField",
41
- "ConfigurableFieldSingleOption",
42
41
  "ConfigurableFieldMultiOption",
43
- "patch_config",
42
+ "ConfigurableFieldSingleOption",
44
43
  "RouterInput",
45
44
  "RouterRunnable",
46
45
  "Runnable",
47
- "RunnableSerializable",
48
46
  "RunnableBinding",
49
47
  "RunnableBranch",
50
48
  "RunnableConfig",
@@ -54,5 +52,7 @@ __all__ = [
54
52
  "RunnableParallel",
55
53
  "RunnablePassthrough",
56
54
  "RunnableSequence",
55
+ "RunnableSerializable",
57
56
  "RunnableWithFallbacks",
57
+ "patch_config",
58
58
  ]
@@ -20,19 +20,19 @@ RunnableMap = RunnableParallel
20
20
 
21
21
  __all__ = [
22
22
  "Input",
23
- "Output",
24
- "RunnableLike",
25
23
  "Other",
24
+ "Output",
26
25
  "Runnable",
27
- "RunnableSerializable",
28
- "RunnableSequence",
29
- "RunnableParallel",
26
+ "RunnableBinding",
27
+ "RunnableBindingBase",
28
+ "RunnableEach",
29
+ "RunnableEachBase",
30
30
  "RunnableGenerator",
31
31
  "RunnableLambda",
32
- "RunnableEachBase",
33
- "RunnableEach",
34
- "RunnableBindingBase",
35
- "RunnableBinding",
32
+ "RunnableLike",
36
33
  "RunnableMap",
34
+ "RunnableParallel",
35
+ "RunnableSequence",
36
+ "RunnableSerializable",
37
37
  "coerce_to_runnable",
38
38
  ]
@@ -15,13 +15,13 @@ from langchain_core.runnables.config import (
15
15
  __all__ = [
16
16
  "EmptyDict",
17
17
  "RunnableConfig",
18
- "ensure_config",
19
- "get_config_list",
20
- "patch_config",
21
- "merge_configs",
22
18
  "acall_func_with_variable_args",
23
19
  "call_func_with_variable_args",
24
- "get_callback_manager_for_config",
20
+ "ensure_config",
25
21
  "get_async_callback_manager_for_config",
22
+ "get_callback_manager_for_config",
23
+ "get_config_list",
26
24
  "get_executor_for_config",
25
+ "merge_configs",
26
+ "patch_config",
27
27
  ]
@@ -8,8 +8,8 @@ from langchain_core.runnables.configurable import (
8
8
 
9
9
  __all__ = [
10
10
  "DynamicRunnable",
11
+ "RunnableConfigurableAlternatives",
11
12
  "RunnableConfigurableFields",
12
13
  "StrEnum",
13
- "RunnableConfigurableAlternatives",
14
14
  "make_options_spec",
15
15
  ]
@@ -5,7 +5,7 @@ from langchain_core.runnables.history import (
5
5
  )
6
6
 
7
7
  __all__ = [
8
- "RunnableWithMessageHistory",
9
8
  "GetSessionHistoryCallable",
10
9
  "MessagesOrDictWithMessages",
10
+ "RunnableWithMessageHistory",
11
11
  ]
@@ -5,4 +5,4 @@ from langchain_core.runnables.passthrough import (
5
5
  identity,
6
6
  )
7
7
 
8
- __all__ = ["aidentity", "identity", "RunnablePassthrough", "RunnableAssign"]
8
+ __all__ = ["RunnableAssign", "RunnablePassthrough", "aidentity", "identity"]
@@ -25,27 +25,27 @@ from langchain_core.runnables.utils import (
25
25
  )
26
26
 
27
27
  __all__ = [
28
- "accepts_run_manager",
29
- "accepts_config",
30
- "IsLocalDict",
31
- "IsFunctionArgDict",
32
- "GetLambdaSource",
33
- "get_function_first_arg_dict_keys",
34
- "get_lambda_source",
35
- "indent_lines_after_first",
28
+ "Addable",
36
29
  "AddableDict",
37
- "SupportsAdd",
38
- "add",
30
+ "AnyConfigurableField",
39
31
  "ConfigurableField",
40
- "ConfigurableFieldSingleOption",
41
32
  "ConfigurableFieldMultiOption",
33
+ "ConfigurableFieldSingleOption",
42
34
  "ConfigurableFieldSpec",
43
- "get_unique_config_specs",
35
+ "GetLambdaSource",
36
+ "Input",
37
+ "IsFunctionArgDict",
38
+ "IsLocalDict",
39
+ "Output",
40
+ "SupportsAdd",
44
41
  "aadd",
42
+ "accepts_config",
43
+ "accepts_run_manager",
44
+ "add",
45
45
  "gated_coro",
46
46
  "gather_with_concurrency",
47
- "Input",
48
- "Output",
49
- "Addable",
50
- "AnyConfigurableField",
47
+ "get_function_first_arg_dict_keys",
48
+ "get_lambda_source",
49
+ "get_unique_config_specs",
50
+ "indent_lines_after_first",
51
51
  ]
@@ -1,3 +1,3 @@
1
1
  from langchain_core.vectorstores import VST, VectorStore, VectorStoreRetriever
2
2
 
3
- __all__ = ["VectorStore", "VectorStoreRetriever", "VST"]
3
+ __all__ = ["VST", "VectorStore", "VectorStoreRetriever"]
@@ -87,6 +87,7 @@ or LangSmith's `RunEvaluator` classes.
87
87
  - :func:`arun_on_dataset <langchain.smith.evaluation.runner_utils.arun_on_dataset>`: Asynchronous function to evaluate a chain, agent, or other LangChain component over a dataset.
88
88
  - :func:`run_on_dataset <langchain.smith.evaluation.runner_utils.run_on_dataset>`: Function to evaluate a chain, agent, or other LangChain component over a dataset.
89
89
  - :class:`RunEvalConfig <langchain.smith.evaluation.config.RunEvalConfig>`: Class representing the configuration for running evaluation. You can select evaluators by :class:`EvaluatorType <langchain.evaluation.schema.EvaluatorType>` or config, or you can pass in `custom_evaluators`
90
+
90
91
  """ # noqa: E501
91
92
 
92
93
  from langchain.smith.evaluation import (
@@ -96,7 +97,7 @@ from langchain.smith.evaluation import (
96
97
  )
97
98
 
98
99
  __all__ = [
100
+ "RunEvalConfig",
99
101
  "arun_on_dataset",
100
102
  "run_on_dataset",
101
- "RunEvalConfig",
102
103
  ]
@@ -61,8 +61,8 @@ from langchain.smith.evaluation.string_run_evaluator import StringRunEvaluatorCh
61
61
 
62
62
  __all__ = [
63
63
  "InputFormatError",
64
+ "RunEvalConfig",
65
+ "StringRunEvaluatorChain",
64
66
  "arun_on_dataset",
65
67
  "run_on_dataset",
66
- "StringRunEvaluatorChain",
67
- "RunEvalConfig",
68
68
  ]
@@ -10,6 +10,7 @@ from langsmith import RunEvaluator
10
10
  from langsmith.evaluation.evaluator import EvaluationResult, EvaluationResults
11
11
  from langsmith.schemas import Example, Run
12
12
  from pydantic import BaseModel, ConfigDict, Field
13
+ from typing_extensions import override
13
14
 
14
15
  from langchain.evaluation.criteria.eval_chain import CRITERIA_TYPE
15
16
  from langchain.evaluation.embedding_distance.base import (
@@ -21,7 +22,8 @@ from langchain.evaluation.string_distance.base import (
21
22
  )
22
23
 
23
24
  RUN_EVALUATOR_LIKE = Callable[
24
- [Run, Optional[Example]], Union[EvaluationResult, EvaluationResults, dict]
25
+ [Run, Optional[Example]],
26
+ Union[EvaluationResult, EvaluationResults, dict],
25
27
  ]
26
28
  BATCH_EVALUATOR_LIKE = Callable[
27
29
  [Sequence[Run], Optional[Sequence[Example]]],
@@ -57,9 +59,7 @@ class EvalConfig(BaseModel):
57
59
  """
58
60
  kwargs = {}
59
61
  for field, val in self:
60
- if field == "evaluator_type":
61
- continue
62
- elif val is None:
62
+ if field == "evaluator_type" or val is None:
63
63
  continue
64
64
  kwargs[field] = val
65
65
  return kwargs
@@ -79,6 +79,7 @@ class SingleKeyEvalConfig(EvalConfig):
79
79
  """The key from the traced run's inputs dictionary to use to represent the
80
80
  input. If not provided, it will be inferred automatically."""
81
81
 
82
+ @override
82
83
  def get_kwargs(self) -> dict[str, Any]:
83
84
  kwargs = super().get_kwargs()
84
85
  # Filer out the keys that are not needed for the evaluator.
@@ -133,7 +134,7 @@ class RunEvalConfig(BaseModel):
133
134
  :class:`EvaluatorType <langchain.evaluation.schema.EvaluatorType>`, such
134
135
  as `EvaluatorType.QA`, the evaluator type string ("qa"), or a configuration for a
135
136
  given evaluator
136
- (e.g.,
137
+ (e.g.,
137
138
  :class:`RunEvalConfig.QA <langchain.smith.evaluation.config.RunEvalConfig.QA>`)."""
138
139
  custom_evaluators: Optional[list[CUSTOM_EVALUATOR_TYPE]] = None
139
140
  """Custom evaluators to apply to the dataset run."""
@@ -177,11 +178,6 @@ class RunEvalConfig(BaseModel):
177
178
  llm: Optional[BaseLanguageModel] = None
178
179
  evaluator_type: EvaluatorType = EvaluatorType.CRITERIA
179
180
 
180
- def __init__(
181
- self, criteria: Optional[CRITERIA_TYPE] = None, **kwargs: Any
182
- ) -> None:
183
- super().__init__(criteria=criteria, **kwargs) # type: ignore[call-arg]
184
-
185
181
  class LabeledCriteria(SingleKeyEvalConfig):
186
182
  """Configuration for a labeled (with references) criteria evaluator.
187
183
 
@@ -197,11 +193,6 @@ class RunEvalConfig(BaseModel):
197
193
  llm: Optional[BaseLanguageModel] = None
198
194
  evaluator_type: EvaluatorType = EvaluatorType.LABELED_CRITERIA
199
195
 
200
- def __init__(
201
- self, criteria: Optional[CRITERIA_TYPE] = None, **kwargs: Any
202
- ) -> None:
203
- super().__init__(criteria=criteria, **kwargs) # type: ignore[call-arg]
204
-
205
196
  class EmbeddingDistance(SingleKeyEvalConfig):
206
197
  """Configuration for an embedding distance evaluator.
207
198
 
@@ -342,6 +333,7 @@ class RunEvalConfig(BaseModel):
342
333
 
343
334
  class ScoreString(SingleKeyEvalConfig):
344
335
  """Configuration for a score string evaluator.
336
+
345
337
  This is like the criteria evaluator but it is configured by
346
338
  default to return a score on the scale from 1-10.
347
339
 
@@ -367,13 +359,7 @@ class RunEvalConfig(BaseModel):
367
359
  normalize_by: Optional[float] = None
368
360
  prompt: Optional[BasePromptTemplate] = None
369
361
 
370
- def __init__(
371
- self,
372
- criteria: Optional[CRITERIA_TYPE] = None,
373
- normalize_by: Optional[float] = None,
374
- **kwargs: Any,
375
- ) -> None:
376
- super().__init__(criteria=criteria, normalize_by=normalize_by, **kwargs) # type: ignore[call-arg]
377
-
378
362
  class LabeledScoreString(ScoreString):
363
+ """ "Configuration for a labeled score string evaluator."""
364
+
379
365
  evaluator_type: EvaluatorType = EvaluatorType.LABELED_SCORE_STRING
@@ -721,7 +721,7 @@ nouns = [
721
721
 
722
722
  def random_name() -> str:
723
723
  """Generate a random name."""
724
- adjective = random.choice(adjectives)
725
- noun = random.choice(nouns)
726
- number = random.randint(1, 100)
724
+ adjective = random.choice(adjectives) # noqa: S311
725
+ noun = random.choice(nouns) # noqa: S311
726
+ number = random.randint(1, 100) # noqa: S311
727
727
  return f"{adjective}-{noun}-{number}"
@@ -2,26 +2,35 @@
2
2
 
3
3
  import threading
4
4
  from collections.abc import Sequence
5
- from typing import Any, Optional
5
+ from typing import Any, Optional, Union
6
6
  from uuid import UUID
7
7
 
8
8
  from langchain_core.callbacks import base as base_callbacks
9
9
  from langchain_core.documents import Document
10
10
  from langchain_core.outputs import LLMResult
11
+ from langchain_core.v1.messages import AIMessage
12
+ from typing_extensions import override
11
13
 
12
14
 
13
15
  class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
14
16
  """A simple progress bar for the console."""
15
17
 
16
- def __init__(self, total: int, ncols: int = 50, **kwargs: Any):
18
+ def __init__(
19
+ self,
20
+ total: int,
21
+ ncols: int = 50,
22
+ end_with: str = "\n",
23
+ ):
17
24
  """Initialize the progress bar.
18
25
 
19
26
  Args:
20
27
  total: int, the total number of items to be processed.
21
28
  ncols: int, the character width of the progress bar.
29
+ end_with: str, last string to print after progress bar reaches end.
22
30
  """
23
31
  self.total = total
24
32
  self.ncols = ncols
33
+ self.end_with = end_with
25
34
  self.counter = 0
26
35
  self.lock = threading.Lock()
27
36
  self._print_bar()
@@ -37,8 +46,10 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
37
46
  progress = self.counter / self.total
38
47
  arrow = "-" * int(round(progress * self.ncols) - 1) + ">"
39
48
  spaces = " " * (self.ncols - len(arrow))
40
- print(f"\r[{arrow + spaces}] {self.counter}/{self.total}", end="") # noqa: T201
49
+ end = "" if self.counter < self.total else self.end_with
50
+ print(f"\r[{arrow + spaces}] {self.counter}/{self.total}", end=end) # noqa: T201
41
51
 
52
+ @override
42
53
  def on_chain_error(
43
54
  self,
44
55
  error: BaseException,
@@ -50,6 +61,7 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
50
61
  if parent_run_id is None:
51
62
  self.increment()
52
63
 
64
+ @override
53
65
  def on_chain_end(
54
66
  self,
55
67
  outputs: dict[str, Any],
@@ -61,6 +73,7 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
61
73
  if parent_run_id is None:
62
74
  self.increment()
63
75
 
76
+ @override
64
77
  def on_retriever_error(
65
78
  self,
66
79
  error: BaseException,
@@ -72,6 +85,7 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
72
85
  if parent_run_id is None:
73
86
  self.increment()
74
87
 
88
+ @override
75
89
  def on_retriever_end(
76
90
  self,
77
91
  documents: Sequence[Document],
@@ -83,6 +97,7 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
83
97
  if parent_run_id is None:
84
98
  self.increment()
85
99
 
100
+ @override
86
101
  def on_llm_error(
87
102
  self,
88
103
  error: BaseException,
@@ -94,9 +109,10 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
94
109
  if parent_run_id is None:
95
110
  self.increment()
96
111
 
112
+ @override
97
113
  def on_llm_end(
98
114
  self,
99
- response: LLMResult,
115
+ response: Union[LLMResult, AIMessage],
100
116
  *,
101
117
  run_id: UUID,
102
118
  parent_run_id: Optional[UUID] = None,
@@ -105,6 +121,7 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
105
121
  if parent_run_id is None:
106
122
  self.increment()
107
123
 
124
+ @override
108
125
  def on_tool_error(
109
126
  self,
110
127
  error: BaseException,
@@ -116,6 +133,7 @@ class ProgressBarCallback(base_callbacks.BaseCallbackHandler):
116
133
  if parent_run_id is None:
117
134
  self.increment()
118
135
 
136
+ @override
119
137
  def on_tool_end(
120
138
  self,
121
139
  output: str,