langchain 0.2.10 → 0.2.11

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 (345) hide show
  1. package/chat_models/universal.cjs +1 -0
  2. package/chat_models/universal.d.cts +1 -0
  3. package/chat_models/universal.d.ts +1 -0
  4. package/chat_models/universal.js +1 -0
  5. package/dist/chat_models/universal.cjs +600 -0
  6. package/dist/chat_models/universal.d.ts +115 -0
  7. package/dist/chat_models/universal.js +595 -0
  8. package/dist/document_loaders/web/assemblyai.cjs +9 -1
  9. package/dist/document_loaders/web/assemblyai.js +9 -1
  10. package/dist/experimental/chrome_ai/app/dist/bundle.cjs +1250 -0
  11. package/dist/experimental/chrome_ai/app/dist/bundle.d.ts +1 -0
  12. package/dist/experimental/chrome_ai/app/dist/bundle.js +1249 -0
  13. package/dist/load/import_constants.cjs +1 -0
  14. package/dist/load/import_constants.js +1 -0
  15. package/package.json +65 -6
  16. package/dist/agents/tests/agent.int.test.d.ts +0 -1
  17. package/dist/agents/tests/agent.int.test.js +0 -309
  18. package/dist/agents/tests/chat_convo_output_parser.test.d.ts +0 -1
  19. package/dist/agents/tests/chat_convo_output_parser.test.js +0 -91
  20. package/dist/agents/tests/create_openai_functions_agent.int.test.d.ts +0 -2
  21. package/dist/agents/tests/create_openai_functions_agent.int.test.js +0 -71
  22. package/dist/agents/tests/create_openai_tools_agent.int.test.d.ts +0 -1
  23. package/dist/agents/tests/create_openai_tools_agent.int.test.js +0 -75
  24. package/dist/agents/tests/create_react_agent.int.test.d.ts +0 -1
  25. package/dist/agents/tests/create_react_agent.int.test.js +0 -32
  26. package/dist/agents/tests/create_structured_chat_agent.int.test.d.ts +0 -1
  27. package/dist/agents/tests/create_structured_chat_agent.int.test.js +0 -32
  28. package/dist/agents/tests/create_tool_calling_agent.int.test.d.ts +0 -1
  29. package/dist/agents/tests/create_tool_calling_agent.int.test.js +0 -122
  30. package/dist/agents/tests/create_xml_agent.int.test.d.ts +0 -1
  31. package/dist/agents/tests/create_xml_agent.int.test.js +0 -32
  32. package/dist/agents/tests/json.test.d.ts +0 -1
  33. package/dist/agents/tests/json.test.js +0 -74
  34. package/dist/agents/tests/react.test.d.ts +0 -1
  35. package/dist/agents/tests/react.test.js +0 -44
  36. package/dist/agents/tests/runnable.int.test.d.ts +0 -1
  37. package/dist/agents/tests/runnable.int.test.js +0 -104
  38. package/dist/agents/tests/sql.test.d.ts +0 -1
  39. package/dist/agents/tests/sql.test.js +0 -133
  40. package/dist/agents/tests/structured_chat_output_parser.test.d.ts +0 -1
  41. package/dist/agents/tests/structured_chat_output_parser.test.js +0 -35
  42. package/dist/agents/tests/structured_chat_output_parser_with_retries.int.test.d.ts +0 -1
  43. package/dist/agents/tests/structured_chat_output_parser_with_retries.int.test.js +0 -44
  44. package/dist/agents/tests/structured_output_runnables.int.test.d.ts +0 -1
  45. package/dist/agents/tests/structured_output_runnables.int.test.js +0 -112
  46. package/dist/agents/toolkits/tests/conversational_retrieval.int.test.d.ts +0 -1
  47. package/dist/agents/toolkits/tests/conversational_retrieval.int.test.js +0 -41
  48. package/dist/cache/tests/file_system.int.test.d.ts +0 -1
  49. package/dist/cache/tests/file_system.int.test.js +0 -32
  50. package/dist/chains/openai_functions/tests/create_runnable_chains.int.test.d.ts +0 -1
  51. package/dist/chains/openai_functions/tests/create_runnable_chains.int.test.js +0 -139
  52. package/dist/chains/openai_functions/tests/extraction.int.test.d.ts +0 -1
  53. package/dist/chains/openai_functions/tests/extraction.int.test.js +0 -33
  54. package/dist/chains/openai_functions/tests/openapi.int.test.d.ts +0 -1
  55. package/dist/chains/openai_functions/tests/openapi.int.test.js +0 -130
  56. package/dist/chains/openai_functions/tests/openapi.test.d.ts +0 -1
  57. package/dist/chains/openai_functions/tests/openapi.test.js +0 -172
  58. package/dist/chains/openai_functions/tests/structured_output.int.test.d.ts +0 -1
  59. package/dist/chains/openai_functions/tests/structured_output.int.test.js +0 -40
  60. package/dist/chains/openai_functions/tests/structured_output.test.d.ts +0 -1
  61. package/dist/chains/openai_functions/tests/structured_output.test.js +0 -102
  62. package/dist/chains/openai_functions/tests/tagging.int.test.d.ts +0 -1
  63. package/dist/chains/openai_functions/tests/tagging.int.test.js +0 -21
  64. package/dist/chains/query_constructor/tests/query_chain.int.test.d.ts +0 -1
  65. package/dist/chains/query_constructor/tests/query_chain.int.test.js +0 -93
  66. package/dist/chains/query_constructor/tests/query_parser.test.d.ts +0 -1
  67. package/dist/chains/query_constructor/tests/query_parser.test.js +0 -28
  68. package/dist/chains/question_answering/tests/load.int.test.d.ts +0 -1
  69. package/dist/chains/question_answering/tests/load.int.test.js +0 -39
  70. package/dist/chains/router/tests/multi_prompt.int.test.d.ts +0 -1
  71. package/dist/chains/router/tests/multi_prompt.int.test.js +0 -45
  72. package/dist/chains/router/tests/multi_prompt.test.d.ts +0 -1
  73. package/dist/chains/router/tests/multi_prompt.test.js +0 -62
  74. package/dist/chains/router/tests/multi_retrieval_qa.int.test.d.ts +0 -1
  75. package/dist/chains/router/tests/multi_retrieval_qa.int.test.js +0 -67
  76. package/dist/chains/router/tests/multi_retrieval_qa.test.d.ts +0 -1
  77. package/dist/chains/router/tests/multi_retrieval_qa.test.js +0 -125
  78. package/dist/chains/summarization/tests/load.int.test.d.ts +0 -1
  79. package/dist/chains/summarization/tests/load.int.test.js +0 -37
  80. package/dist/chains/tests/api_chain.int.test.d.ts +0 -1
  81. package/dist/chains/tests/api_chain.int.test.js +0 -55
  82. package/dist/chains/tests/combine_docs_chain.int.test.d.ts +0 -1
  83. package/dist/chains/tests/combine_docs_chain.int.test.js +0 -50
  84. package/dist/chains/tests/combine_docs_chain.test.d.ts +0 -1
  85. package/dist/chains/tests/combine_docs_chain.test.js +0 -98
  86. package/dist/chains/tests/constitutional_chain.int.test.d.ts +0 -1
  87. package/dist/chains/tests/constitutional_chain.int.test.js +0 -30
  88. package/dist/chains/tests/constitutional_chain.test.d.ts +0 -1
  89. package/dist/chains/tests/constitutional_chain.test.js +0 -63
  90. package/dist/chains/tests/conversation_chain.int.test.d.ts +0 -1
  91. package/dist/chains/tests/conversation_chain.int.test.js +0 -9
  92. package/dist/chains/tests/conversational_retrieval_chain.int.test.d.ts +0 -1
  93. package/dist/chains/tests/conversational_retrieval_chain.int.test.js +0 -243
  94. package/dist/chains/tests/example_data/open_meteo_docs.d.ts +0 -1
  95. package/dist/chains/tests/example_data/open_meteo_docs.js +0 -29
  96. package/dist/chains/tests/history_aware_retriever.int.test.d.ts +0 -1
  97. package/dist/chains/tests/history_aware_retriever.int.test.js +0 -41
  98. package/dist/chains/tests/history_aware_retriever.test.d.ts +0 -1
  99. package/dist/chains/tests/history_aware_retriever.test.js +0 -27
  100. package/dist/chains/tests/llm_chain.int.test.d.ts +0 -1
  101. package/dist/chains/tests/llm_chain.int.test.js +0 -119
  102. package/dist/chains/tests/openai_moderation.int.test.d.ts +0 -1
  103. package/dist/chains/tests/openai_moderation.int.test.js +0 -30
  104. package/dist/chains/tests/retrieval_chain.int.test.d.ts +0 -1
  105. package/dist/chains/tests/retrieval_chain.int.test.js +0 -69
  106. package/dist/chains/tests/retrieval_chain.test.d.ts +0 -1
  107. package/dist/chains/tests/retrieval_chain.test.js +0 -36
  108. package/dist/chains/tests/sequential_chain.int.test.d.ts +0 -1
  109. package/dist/chains/tests/sequential_chain.int.test.js +0 -88
  110. package/dist/chains/tests/sequential_chain.test.d.ts +0 -1
  111. package/dist/chains/tests/sequential_chain.test.js +0 -295
  112. package/dist/chains/tests/simple_sequential_chain.int.test.d.ts +0 -1
  113. package/dist/chains/tests/simple_sequential_chain.int.test.js +0 -81
  114. package/dist/chains/tests/simple_sequential_chain.test.d.ts +0 -1
  115. package/dist/chains/tests/simple_sequential_chain.test.js +0 -128
  116. package/dist/chains/tests/sql_db_chain.int.test.d.ts +0 -1
  117. package/dist/chains/tests/sql_db_chain.int.test.js +0 -125
  118. package/dist/chains/tests/transform.test.d.ts +0 -1
  119. package/dist/chains/tests/transform.test.js +0 -12
  120. package/dist/chains/tests/vector_db_qa_chain.int.test.d.ts +0 -1
  121. package/dist/chains/tests/vector_db_qa_chain.int.test.js +0 -45
  122. package/dist/document_loaders/tests/assemblyai.int.test.d.ts +0 -1
  123. package/dist/document_loaders/tests/assemblyai.int.test.js +0 -111
  124. package/dist/document_loaders/tests/chatgpt-blob.test.d.ts +0 -1
  125. package/dist/document_loaders/tests/chatgpt-blob.test.js +0 -30
  126. package/dist/document_loaders/tests/chatgpt.test.d.ts +0 -1
  127. package/dist/document_loaders/tests/chatgpt.test.js +0 -29
  128. package/dist/document_loaders/tests/cheerio.int.test.d.ts +0 -1
  129. package/dist/document_loaders/tests/cheerio.int.test.js +0 -21
  130. package/dist/document_loaders/tests/college_confidential.int.test.d.ts +0 -1
  131. package/dist/document_loaders/tests/college_confidential.int.test.js +0 -6
  132. package/dist/document_loaders/tests/confluence.test.d.ts +0 -1
  133. package/dist/document_loaders/tests/confluence.test.js +0 -52
  134. package/dist/document_loaders/tests/couchbase.int.test.d.ts +0 -1
  135. package/dist/document_loaders/tests/couchbase.int.test.js +0 -28
  136. package/dist/document_loaders/tests/csv-blob.test.d.ts +0 -1
  137. package/dist/document_loaders/tests/csv-blob.test.js +0 -53
  138. package/dist/document_loaders/tests/csv.test.d.ts +0 -1
  139. package/dist/document_loaders/tests/csv.test.js +0 -41
  140. package/dist/document_loaders/tests/directory.test.d.ts +0 -1
  141. package/dist/document_loaders/tests/directory.test.js +0 -38
  142. package/dist/document_loaders/tests/docx.test.d.ts +0 -1
  143. package/dist/document_loaders/tests/docx.test.js +0 -11
  144. package/dist/document_loaders/tests/epub.test.d.ts +0 -1
  145. package/dist/document_loaders/tests/epub.test.js +0 -18
  146. package/dist/document_loaders/tests/example_data/github_api_responses.d.ts +0 -5
  147. package/dist/document_loaders/tests/example_data/github_api_responses.js +0 -91
  148. package/dist/document_loaders/tests/figma.int.test.d.ts +0 -1
  149. package/dist/document_loaders/tests/figma.int.test.js +0 -13
  150. package/dist/document_loaders/tests/firecrawl.int.test.d.ts +0 -1
  151. package/dist/document_loaders/tests/firecrawl.int.test.js +0 -30
  152. package/dist/document_loaders/tests/gitbook.int.test.d.ts +0 -1
  153. package/dist/document_loaders/tests/gitbook.int.test.js +0 -14
  154. package/dist/document_loaders/tests/github.int.test.d.ts +0 -1
  155. package/dist/document_loaders/tests/github.int.test.js +0 -86
  156. package/dist/document_loaders/tests/github.test.d.ts +0 -1
  157. package/dist/document_loaders/tests/github.test.js +0 -51
  158. package/dist/document_loaders/tests/hn.int.test.d.ts +0 -1
  159. package/dist/document_loaders/tests/hn.int.test.js +0 -6
  160. package/dist/document_loaders/tests/imsdb.test.d.ts +0 -1
  161. package/dist/document_loaders/tests/imsdb.test.js +0 -6
  162. package/dist/document_loaders/tests/json-blob.test.d.ts +0 -1
  163. package/dist/document_loaders/tests/json-blob.test.js +0 -91
  164. package/dist/document_loaders/tests/json.test.d.ts +0 -1
  165. package/dist/document_loaders/tests/json.test.js +0 -69
  166. package/dist/document_loaders/tests/jsonl-blob.test.d.ts +0 -1
  167. package/dist/document_loaders/tests/jsonl-blob.test.js +0 -46
  168. package/dist/document_loaders/tests/jsonl.test.d.ts +0 -1
  169. package/dist/document_loaders/tests/jsonl.test.js +0 -15
  170. package/dist/document_loaders/tests/multi_file.test.d.ts +0 -1
  171. package/dist/document_loaders/tests/multi_file.test.js +0 -49
  172. package/dist/document_loaders/tests/notion.test.d.ts +0 -1
  173. package/dist/document_loaders/tests/notion.test.js +0 -11
  174. package/dist/document_loaders/tests/notionapi.int.test.d.ts +0 -1
  175. package/dist/document_loaders/tests/notionapi.int.test.js +0 -80
  176. package/dist/document_loaders/tests/notionapi.test.d.ts +0 -1
  177. package/dist/document_loaders/tests/notionapi.test.js +0 -84
  178. package/dist/document_loaders/tests/notiondb.int.test.d.ts +0 -1
  179. package/dist/document_loaders/tests/notiondb.int.test.js +0 -13
  180. package/dist/document_loaders/tests/obsidian.test.d.ts +0 -1
  181. package/dist/document_loaders/tests/obsidian.test.js +0 -119
  182. package/dist/document_loaders/tests/pdf-blob.test.d.ts +0 -1
  183. package/dist/document_loaders/tests/pdf-blob.test.js +0 -44
  184. package/dist/document_loaders/tests/pdf.test.d.ts +0 -1
  185. package/dist/document_loaders/tests/pdf.test.js +0 -25
  186. package/dist/document_loaders/tests/playwright_web.int.test.d.ts +0 -1
  187. package/dist/document_loaders/tests/playwright_web.int.test.js +0 -27
  188. package/dist/document_loaders/tests/pptx.test.d.ts +0 -1
  189. package/dist/document_loaders/tests/pptx.test.js +0 -17
  190. package/dist/document_loaders/tests/puppeteer.int.test.d.ts +0 -1
  191. package/dist/document_loaders/tests/puppeteer.int.test.js +0 -47
  192. package/dist/document_loaders/tests/recursive_url.int.test.d.ts +0 -1
  193. package/dist/document_loaders/tests/recursive_url.int.test.js +0 -64
  194. package/dist/document_loaders/tests/s3.int.test.d.ts +0 -1
  195. package/dist/document_loaders/tests/s3.int.test.js +0 -48
  196. package/dist/document_loaders/tests/searchapi.test.d.ts +0 -1
  197. package/dist/document_loaders/tests/searchapi.test.js +0 -29
  198. package/dist/document_loaders/tests/serpapi.test.d.ts +0 -1
  199. package/dist/document_loaders/tests/serpapi.test.js +0 -21
  200. package/dist/document_loaders/tests/sitemap.int.test.d.ts +0 -1
  201. package/dist/document_loaders/tests/sitemap.int.test.js +0 -28
  202. package/dist/document_loaders/tests/sonix_audio.int.test.d.ts +0 -1
  203. package/dist/document_loaders/tests/sonix_audio.int.test.js +0 -55
  204. package/dist/document_loaders/tests/sort_xyz_blockchain.int.test.d.ts +0 -1
  205. package/dist/document_loaders/tests/sort_xyz_blockchain.int.test.js +0 -38
  206. package/dist/document_loaders/tests/srt-blob.test.d.ts +0 -1
  207. package/dist/document_loaders/tests/srt-blob.test.js +0 -18
  208. package/dist/document_loaders/tests/srt.test.d.ts +0 -1
  209. package/dist/document_loaders/tests/srt.test.js +0 -16
  210. package/dist/document_loaders/tests/text-blob.test.d.ts +0 -1
  211. package/dist/document_loaders/tests/text-blob.test.js +0 -14
  212. package/dist/document_loaders/tests/text.test.d.ts +0 -1
  213. package/dist/document_loaders/tests/text.test.js +0 -22
  214. package/dist/document_loaders/tests/unstructured.int.test.d.ts +0 -1
  215. package/dist/document_loaders/tests/unstructured.int.test.js +0 -58
  216. package/dist/document_loaders/tests/webpdf.int.test.d.ts +0 -1
  217. package/dist/document_loaders/tests/webpdf.int.test.js +0 -90
  218. package/dist/document_transformers/tests/openai_functions.int.test.d.ts +0 -1
  219. package/dist/document_transformers/tests/openai_functions.int.test.js +0 -40
  220. package/dist/embeddings/tests/cache.test.d.ts +0 -1
  221. package/dist/embeddings/tests/cache.test.js +0 -24
  222. package/dist/embeddings/tests/fake.test.d.ts +0 -1
  223. package/dist/embeddings/tests/fake.test.js +0 -34
  224. package/dist/evaluation/agents/tests/trajectory_eval_chain.int.test.d.ts +0 -1
  225. package/dist/evaluation/agents/tests/trajectory_eval_chain.int.test.js +0 -33
  226. package/dist/evaluation/comparison/tests/pairwise_eval_chain.int.test.d.ts +0 -1
  227. package/dist/evaluation/comparison/tests/pairwise_eval_chain.int.test.js +0 -46
  228. package/dist/evaluation/criteria/tests/criteria_eval_chain.int.test.d.ts +0 -1
  229. package/dist/evaluation/criteria/tests/criteria_eval_chain.int.test.js +0 -108
  230. package/dist/evaluation/embedding_distance/tests/embedding_distance_eval_chain.int.test.d.ts +0 -1
  231. package/dist/evaluation/embedding_distance/tests/embedding_distance_eval_chain.int.test.js +0 -26
  232. package/dist/evaluation/qa/tests/eval_chain.int.test.d.ts +0 -1
  233. package/dist/evaluation/qa/tests/eval_chain.int.test.js +0 -27
  234. package/dist/experimental/autogpt/tests/output_parser.test.d.ts +0 -1
  235. package/dist/experimental/autogpt/tests/output_parser.test.js +0 -8
  236. package/dist/experimental/autogpt/tests/prompt.test.d.ts +0 -1
  237. package/dist/experimental/autogpt/tests/prompt.test.js +0 -69
  238. package/dist/experimental/autogpt/tests/prompt_generator.test.d.ts +0 -1
  239. package/dist/experimental/autogpt/tests/prompt_generator.test.js +0 -91
  240. package/dist/experimental/chains/tests/violation_of_expectations_chain.int.test.d.ts +0 -1
  241. package/dist/experimental/chains/tests/violation_of_expectations_chain.int.test.js +0 -26
  242. package/dist/experimental/generative_agents/tests/generative_agent.int.test.d.ts +0 -1
  243. package/dist/experimental/generative_agents/tests/generative_agent.int.test.js +0 -304
  244. package/dist/experimental/masking/tests/masking-extended.test.d.ts +0 -1
  245. package/dist/experimental/masking/tests/masking-extended.test.js +0 -58
  246. package/dist/experimental/masking/tests/masking.test.d.ts +0 -1
  247. package/dist/experimental/masking/tests/masking.test.js +0 -388
  248. package/dist/experimental/openai_assistant/tests/openai_assistant.int.test.d.ts +0 -1
  249. package/dist/experimental/openai_assistant/tests/openai_assistant.int.test.js +0 -203
  250. package/dist/experimental/openai_files/tests/openai_file.int.test.d.ts +0 -1
  251. package/dist/experimental/openai_files/tests/openai_file.int.test.js +0 -87
  252. package/dist/experimental/plan_and_execute/tests/plan_and_execute.int.test.d.ts +0 -1
  253. package/dist/experimental/plan_and_execute/tests/plan_and_execute.int.test.js +0 -54
  254. package/dist/experimental/prompts/tests/handlebars.test.d.ts +0 -1
  255. package/dist/experimental/prompts/tests/handlebars.test.js +0 -24
  256. package/dist/experimental/tools/tests/pyinterpreter.int.test.d.ts +0 -1
  257. package/dist/experimental/tools/tests/pyinterpreter.int.test.js +0 -22
  258. package/dist/load/tests/cross_language.test.d.ts +0 -1
  259. package/dist/load/tests/cross_language.test.js +0 -83
  260. package/dist/load/tests/load.int.test.d.ts +0 -1
  261. package/dist/load/tests/load.int.test.js +0 -9
  262. package/dist/load/tests/load.test.d.ts +0 -1
  263. package/dist/load/tests/load.test.js +0 -412
  264. package/dist/memory/tests/buffer_memory.test.d.ts +0 -1
  265. package/dist/memory/tests/buffer_memory.test.js +0 -34
  266. package/dist/memory/tests/buffer_token_memory.int.test.d.ts +0 -1
  267. package/dist/memory/tests/buffer_token_memory.int.test.js +0 -47
  268. package/dist/memory/tests/buffer_window_memory.test.d.ts +0 -1
  269. package/dist/memory/tests/buffer_window_memory.test.js +0 -42
  270. package/dist/memory/tests/combined_memory.int.test.d.ts +0 -1
  271. package/dist/memory/tests/combined_memory.int.test.js +0 -74
  272. package/dist/memory/tests/entity_memory.int.test.d.ts +0 -1
  273. package/dist/memory/tests/entity_memory.int.test.js +0 -79
  274. package/dist/memory/tests/entity_memory.test.d.ts +0 -1
  275. package/dist/memory/tests/entity_memory.test.js +0 -48
  276. package/dist/memory/tests/summary.int.test.d.ts +0 -1
  277. package/dist/memory/tests/summary.int.test.js +0 -50
  278. package/dist/memory/tests/summary_buffer.int.test.d.ts +0 -1
  279. package/dist/memory/tests/summary_buffer.int.test.js +0 -55
  280. package/dist/memory/tests/vector_store_memory.int.test.d.ts +0 -1
  281. package/dist/memory/tests/vector_store_memory.int.test.js +0 -55
  282. package/dist/output_parsers/tests/combining.int.test.d.ts +0 -1
  283. package/dist/output_parsers/tests/combining.int.test.js +0 -26
  284. package/dist/output_parsers/tests/combining.test.d.ts +0 -1
  285. package/dist/output_parsers/tests/combining.test.js +0 -54
  286. package/dist/output_parsers/tests/datetime.test.d.ts +0 -1
  287. package/dist/output_parsers/tests/datetime.test.js +0 -14
  288. package/dist/output_parsers/tests/expression.test.d.ts +0 -1
  289. package/dist/output_parsers/tests/expression.test.js +0 -339
  290. package/dist/output_parsers/tests/http_response.test.d.ts +0 -1
  291. package/dist/output_parsers/tests/http_response.test.js +0 -39
  292. package/dist/output_parsers/tests/list.test.d.ts +0 -1
  293. package/dist/output_parsers/tests/list.test.js +0 -27
  294. package/dist/output_parsers/tests/openai_functions.int.test.d.ts +0 -1
  295. package/dist/output_parsers/tests/openai_functions.int.test.js +0 -89
  296. package/dist/output_parsers/tests/openai_tools.int.test.d.ts +0 -1
  297. package/dist/output_parsers/tests/openai_tools.int.test.js +0 -36
  298. package/dist/output_parsers/tests/structured.int.test.d.ts +0 -1
  299. package/dist/output_parsers/tests/structured.int.test.js +0 -150
  300. package/dist/prompts/tests/selectors.test.d.ts +0 -1
  301. package/dist/prompts/tests/selectors.test.js +0 -59
  302. package/dist/retrievers/self_query/tests/memory_self_query.int.test.d.ts +0 -1
  303. package/dist/retrievers/self_query/tests/memory_self_query.int.test.js +0 -330
  304. package/dist/retrievers/tests/chain_extract.int.test.d.ts +0 -1
  305. package/dist/retrievers/tests/chain_extract.int.test.js +0 -32
  306. package/dist/retrievers/tests/ensemble_retriever.int.test.d.ts +0 -1
  307. package/dist/retrievers/tests/ensemble_retriever.int.test.js +0 -74
  308. package/dist/retrievers/tests/hyde.int.test.d.ts +0 -1
  309. package/dist/retrievers/tests/hyde.int.test.js +0 -44
  310. package/dist/retrievers/tests/matryoshka_retriever.int.test.d.ts +0 -1
  311. package/dist/retrievers/tests/matryoshka_retriever.int.test.js +0 -113
  312. package/dist/retrievers/tests/multi_query.int.test.d.ts +0 -1
  313. package/dist/retrievers/tests/multi_query.int.test.js +0 -45
  314. package/dist/retrievers/tests/parent_document.int.test.d.ts +0 -1
  315. package/dist/retrievers/tests/parent_document.int.test.js +0 -122
  316. package/dist/retrievers/tests/score_threshold.int.test.d.ts +0 -1
  317. package/dist/retrievers/tests/score_threshold.int.test.js +0 -83
  318. package/dist/retrievers/tests/time_weighted.test.d.ts +0 -1
  319. package/dist/retrievers/tests/time_weighted.test.js +0 -320
  320. package/dist/retrievers/tests/vectorstores.test.d.ts +0 -1
  321. package/dist/retrievers/tests/vectorstores.test.js +0 -50
  322. package/dist/smith/tests/run_on_dataset.int.test.d.ts +0 -1
  323. package/dist/smith/tests/run_on_dataset.int.test.js +0 -257
  324. package/dist/smith/tests/runner_utils.int.test.d.ts +0 -9
  325. package/dist/smith/tests/runner_utils.int.test.js +0 -234
  326. package/dist/storage/tests/file_system.test.d.ts +0 -1
  327. package/dist/storage/tests/file_system.test.js +0 -81
  328. package/dist/tools/tests/chain.test.d.ts +0 -1
  329. package/dist/tools/tests/chain.test.js +0 -136
  330. package/dist/tools/tests/webbrowser.int.test.d.ts +0 -1
  331. package/dist/tools/tests/webbrowser.int.test.js +0 -80
  332. package/dist/tools/tests/webbrowser.test.d.ts +0 -1
  333. package/dist/tools/tests/webbrowser.test.js +0 -21
  334. package/dist/util/tests/async_caller.int.test.d.ts +0 -1
  335. package/dist/util/tests/async_caller.int.test.js +0 -34
  336. package/dist/util/tests/azure.test.d.ts +0 -1
  337. package/dist/util/tests/azure.test.js +0 -42
  338. package/dist/util/tests/openai-stream.test.d.ts +0 -1
  339. package/dist/util/tests/openai-stream.test.js +0 -135
  340. package/dist/util/tests/set.test.d.ts +0 -1
  341. package/dist/util/tests/set.test.js +0 -36
  342. package/dist/util/tests/sql_utils.test.d.ts +0 -1
  343. package/dist/util/tests/sql_utils.test.js +0 -50
  344. package/dist/vectorstores/tests/memory.test.d.ts +0 -1
  345. package/dist/vectorstores/tests/memory.test.js +0 -78
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/chat_models/universal.cjs');
@@ -0,0 +1 @@
1
+ export * from '../dist/chat_models/universal.js'
@@ -0,0 +1 @@
1
+ export * from '../dist/chat_models/universal.js'
@@ -0,0 +1 @@
1
+ export * from '../dist/chat_models/universal.js'
@@ -0,0 +1,600 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initChatModel = exports._inferModelProvider = void 0;
4
+ const chat_models_1 = require("@langchain/core/language_models/chat_models");
5
+ const runnables_1 = require("@langchain/core/runnables");
6
+ const stream_1 = require("@langchain/core/utils/stream");
7
+ const _SUPPORTED_PROVIDERS = [
8
+ "openai",
9
+ "anthropic",
10
+ "azure_openai",
11
+ "cohere",
12
+ "google-vertexai",
13
+ "google-genai",
14
+ "ollama",
15
+ "together",
16
+ "fireworks",
17
+ "mistralai",
18
+ "groq",
19
+ "bedrock",
20
+ ];
21
+ async function _initChatModelHelper(model, modelProvider,
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
+ params = {}) {
24
+ const modelProviderCopy = modelProvider || _inferModelProvider(model);
25
+ if (!modelProviderCopy) {
26
+ throw new Error(`Unable to infer model provider for { model: ${model} }, please specify modelProvider directly.`);
27
+ }
28
+ try {
29
+ switch (modelProviderCopy) {
30
+ case "openai": {
31
+ const { ChatOpenAI } = await import("@langchain/openai");
32
+ return new ChatOpenAI({ model, ...params });
33
+ }
34
+ case "anthropic": {
35
+ const { ChatAnthropic } = await import("@langchain/anthropic");
36
+ return new ChatAnthropic({ model, ...params });
37
+ }
38
+ case "azure_openai": {
39
+ const { AzureChatOpenAI } = await import("@langchain/openai");
40
+ return new AzureChatOpenAI({ model, ...params });
41
+ }
42
+ case "cohere": {
43
+ const { ChatCohere } = await import("@langchain/cohere");
44
+ return new ChatCohere({ model, ...params });
45
+ }
46
+ case "google-vertexai": {
47
+ const { ChatVertexAI } = await import("@langchain/google-vertexai");
48
+ return new ChatVertexAI({ model, ...params });
49
+ }
50
+ case "google-genai": {
51
+ const { ChatGoogleGenerativeAI } = await import("@langchain/google-genai");
52
+ return new ChatGoogleGenerativeAI({ model, ...params });
53
+ }
54
+ case "ollama": {
55
+ const { ChatOllama } = await import("@langchain/ollama");
56
+ return new ChatOllama({ model, ...params });
57
+ }
58
+ case "mistralai": {
59
+ const { ChatMistralAI } = await import("@langchain/mistralai");
60
+ return new ChatMistralAI({ model, ...params });
61
+ }
62
+ case "groq": {
63
+ const { ChatGroq } = await import("@langchain/groq");
64
+ return new ChatGroq({ model, ...params });
65
+ }
66
+ case "bedrock": {
67
+ const { ChatBedrockConverse } = await import("@langchain/aws");
68
+ return new ChatBedrockConverse({ model, ...params });
69
+ }
70
+ case "fireworks": {
71
+ const { ChatFireworks } = await import(
72
+ // We can not 'expect-error' because if you explicitly build `@langchain/community`
73
+ // this import will be able to be resolved, thus there will be no error. However
74
+ // this will never be the case in CI.
75
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
76
+ // @ts-ignore - Can not install as a proper dependency due to circular dependency
77
+ "@langchain/community/chat_models/fireworks");
78
+ return new ChatFireworks({ model, ...params });
79
+ }
80
+ case "together": {
81
+ const { ChatTogetherAI } = await import(
82
+ // We can not 'expect-error' because if you explicitly build `@langchain/community`
83
+ // this import will be able to be resolved, thus there will be no error. However
84
+ // this will never be the case in CI.
85
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
86
+ // @ts-ignore - Can not install as a proper dependency due to circular dependency
87
+ "@langchain/community/chat_models/togetherai");
88
+ return new ChatTogetherAI({ model, ...params });
89
+ }
90
+ default: {
91
+ const supported = _SUPPORTED_PROVIDERS.join(", ");
92
+ throw new Error(`Unsupported { modelProvider: ${modelProviderCopy} }.\n\nSupported model providers are: ${supported}`);
93
+ }
94
+ }
95
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
96
+ }
97
+ catch (e) {
98
+ if ("code" in e && e.code.includes("ERR_MODULE_NOT_FOUND")) {
99
+ const attemptedPackage = new Error(e).message
100
+ .split("Error: Cannot find package '")[1]
101
+ .split("'")[0];
102
+ throw new Error(`Unable to import ${attemptedPackage}. Please install with ` +
103
+ `\`npm install ${attemptedPackage}\` or \`yarn add ${attemptedPackage}\``);
104
+ }
105
+ throw e;
106
+ }
107
+ }
108
+ /**
109
+ * Attempts to infer the model provider based on the given model name.
110
+ *
111
+ * @param {string} modelName - The name of the model to infer the provider for.
112
+ * @returns {string | undefined} The inferred model provider name, or undefined if unable to infer.
113
+ *
114
+ * @example
115
+ * _inferModelProvider("gpt-4"); // returns "openai"
116
+ * _inferModelProvider("claude-2"); // returns "anthropic"
117
+ * _inferModelProvider("unknown-model"); // returns undefined
118
+ */
119
+ function _inferModelProvider(modelName) {
120
+ if (modelName.startsWith("gpt-3") || modelName.startsWith("gpt-4")) {
121
+ return "openai";
122
+ }
123
+ else if (modelName.startsWith("claude")) {
124
+ return "anthropic";
125
+ }
126
+ else if (modelName.startsWith("command")) {
127
+ return "cohere";
128
+ }
129
+ else if (modelName.startsWith("accounts/fireworks")) {
130
+ return "fireworks";
131
+ }
132
+ else if (modelName.startsWith("gemini")) {
133
+ return "google-vertexai";
134
+ }
135
+ else if (modelName.startsWith("amazon.")) {
136
+ return "bedrock";
137
+ }
138
+ else {
139
+ return undefined;
140
+ }
141
+ }
142
+ exports._inferModelProvider = _inferModelProvider;
143
+ class _ConfigurableModel extends chat_models_1.BaseChatModel {
144
+ _llmType() {
145
+ return "chat_model";
146
+ }
147
+ constructor(fields) {
148
+ super(fields);
149
+ Object.defineProperty(this, "lc_namespace", {
150
+ enumerable: true,
151
+ configurable: true,
152
+ writable: true,
153
+ value: ["langchain", "chat_models"]
154
+ });
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
156
+ Object.defineProperty(this, "_defaultConfig", {
157
+ enumerable: true,
158
+ configurable: true,
159
+ writable: true,
160
+ value: {}
161
+ });
162
+ /**
163
+ * @default "any"
164
+ */
165
+ Object.defineProperty(this, "_configurableFields", {
166
+ enumerable: true,
167
+ configurable: true,
168
+ writable: true,
169
+ value: "any"
170
+ });
171
+ /**
172
+ * @default ""
173
+ */
174
+ Object.defineProperty(this, "_configPrefix", {
175
+ enumerable: true,
176
+ configurable: true,
177
+ writable: true,
178
+ value: void 0
179
+ });
180
+ /**
181
+ * Methods which should be called after the model is initialized.
182
+ * The key will be the method name, and the value will be the arguments.
183
+ */
184
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
+ Object.defineProperty(this, "_queuedMethodOperations", {
186
+ enumerable: true,
187
+ configurable: true,
188
+ writable: true,
189
+ value: {}
190
+ });
191
+ // Extract the input types from the `BaseModel` class.
192
+ Object.defineProperty(this, "withStructuredOutput", {
193
+ enumerable: true,
194
+ configurable: true,
195
+ writable: true,
196
+ value: (schema, ...args) => {
197
+ this._queuedMethodOperations.withStructuredOutput = [schema, ...args];
198
+ return new _ConfigurableModel({
199
+ defaultConfig: this._defaultConfig,
200
+ configurableFields: this._configurableFields,
201
+ configPrefix: this._configPrefix,
202
+ queuedMethodOperations: this._queuedMethodOperations,
203
+ });
204
+ }
205
+ });
206
+ this._defaultConfig = fields.defaultConfig ?? {};
207
+ if (fields.configurableFields === "any") {
208
+ this._configurableFields = "any";
209
+ }
210
+ else {
211
+ this._configurableFields = fields.configurableFields ?? "any";
212
+ }
213
+ if (fields.configPrefix) {
214
+ this._configPrefix = fields.configPrefix.endsWith("_")
215
+ ? fields.configPrefix
216
+ : `${fields.configPrefix}_`;
217
+ }
218
+ else {
219
+ this._configPrefix = "";
220
+ }
221
+ this._queuedMethodOperations =
222
+ fields.queuedMethodOperations ?? this._queuedMethodOperations;
223
+ }
224
+ async _model(config) {
225
+ const params = { ...this._defaultConfig, ...this._modelParams(config) };
226
+ let initializedModel = await _initChatModelHelper(params.model, params.modelProvider, params);
227
+ // Apply queued method operations
228
+ const queuedMethodOperationsEntries = Object.entries(this._queuedMethodOperations);
229
+ if (queuedMethodOperationsEntries.length > 0) {
230
+ for (const [method, args] of queuedMethodOperationsEntries) {
231
+ if (method in initializedModel &&
232
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
233
+ typeof initializedModel[method] === "function") {
234
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
235
+ initializedModel = await initializedModel[method](...args);
236
+ }
237
+ }
238
+ }
239
+ return initializedModel;
240
+ }
241
+ async _generate(messages, options, runManager) {
242
+ const model = await this._model(options);
243
+ return model._generate(messages, options ?? {}, runManager);
244
+ }
245
+ bindTools(tools,
246
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
247
+ params) {
248
+ this._queuedMethodOperations.bindTools = [tools, params];
249
+ return new _ConfigurableModel({
250
+ defaultConfig: this._defaultConfig,
251
+ configurableFields: this._configurableFields,
252
+ configPrefix: this._configPrefix,
253
+ queuedMethodOperations: this._queuedMethodOperations,
254
+ });
255
+ }
256
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
257
+ _modelParams(config) {
258
+ const configurable = config?.configurable ?? {};
259
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
260
+ let modelParams = {};
261
+ for (const [key, value] of Object.entries(configurable)) {
262
+ if (key.startsWith(this._configPrefix)) {
263
+ const strippedKey = this._removePrefix(key, this._configPrefix);
264
+ modelParams[strippedKey] = value;
265
+ }
266
+ }
267
+ if (this._configurableFields !== "any") {
268
+ modelParams = Object.fromEntries(Object.entries(modelParams).filter(([key]) => this._configurableFields.includes(key)));
269
+ }
270
+ return modelParams;
271
+ }
272
+ _removePrefix(str, prefix) {
273
+ return str.startsWith(prefix) ? str.slice(prefix.length) : str;
274
+ }
275
+ /**
276
+ * Bind config to a Runnable, returning a new Runnable.
277
+ * @param {RunnableConfig | undefined} [config] - The config to bind.
278
+ * @returns {RunnableBinding<RunInput, RunOutput, CallOptions>} A new RunnableBinding with the bound config.
279
+ */
280
+ withConfig(config) {
281
+ const mergedConfig = { ...(config || {}) };
282
+ const modelParams = this._modelParams(mergedConfig);
283
+ const remainingConfig = Object.fromEntries(Object.entries(mergedConfig).filter(([k]) => k !== "configurable"));
284
+ remainingConfig.configurable = Object.fromEntries(Object.entries(mergedConfig.configurable || {}).filter(([k]) => this._configPrefix &&
285
+ !Object.keys(modelParams).includes(this._removePrefix(k, this._configPrefix))));
286
+ const newConfigurableModel = new _ConfigurableModel({
287
+ defaultConfig: { ...this._defaultConfig, ...modelParams },
288
+ configurableFields: Array.isArray(this._configurableFields)
289
+ ? [...this._configurableFields]
290
+ : this._configurableFields,
291
+ configPrefix: this._configPrefix,
292
+ });
293
+ return new runnables_1.RunnableBinding({
294
+ config: mergedConfig,
295
+ bound: newConfigurableModel,
296
+ });
297
+ }
298
+ async invoke(input, options) {
299
+ const model = await this._model(options);
300
+ const config = (0, runnables_1.ensureConfig)(options);
301
+ return model.invoke(input, config);
302
+ }
303
+ async stream(input, options) {
304
+ const model = await this._model(options);
305
+ const wrappedGenerator = new stream_1.AsyncGeneratorWithSetup({
306
+ generator: await model.stream(input, options),
307
+ config: options,
308
+ });
309
+ await wrappedGenerator.setup;
310
+ return stream_1.IterableReadableStream.fromAsyncGenerator(wrappedGenerator);
311
+ }
312
+ async batch(inputs, options, batchOptions) {
313
+ // We can super this since the base runnable implementation of
314
+ // `.batch` will call `.invoke` on each input.
315
+ return super.batch(inputs, options, batchOptions);
316
+ }
317
+ async *transform(generator, options) {
318
+ const model = await this._model(options);
319
+ const config = (0, runnables_1.ensureConfig)(options);
320
+ yield* model.transform(generator, config);
321
+ }
322
+ async *streamLog(input, options, streamOptions) {
323
+ const model = await this._model(options);
324
+ const config = (0, runnables_1.ensureConfig)(options);
325
+ yield* model.streamLog(input, config, {
326
+ ...streamOptions,
327
+ _schemaFormat: "original",
328
+ includeNames: streamOptions?.includeNames,
329
+ includeTypes: streamOptions?.includeTypes,
330
+ includeTags: streamOptions?.includeTags,
331
+ excludeNames: streamOptions?.excludeNames,
332
+ excludeTypes: streamOptions?.excludeTypes,
333
+ excludeTags: streamOptions?.excludeTags,
334
+ });
335
+ }
336
+ streamEvents(input, options, streamOptions) {
337
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
338
+ const outerThis = this;
339
+ async function* wrappedGenerator() {
340
+ const model = await outerThis._model(options);
341
+ const config = (0, runnables_1.ensureConfig)(options);
342
+ const eventStream = model.streamEvents(input, config, streamOptions);
343
+ for await (const chunk of eventStream) {
344
+ yield chunk;
345
+ }
346
+ }
347
+ return stream_1.IterableReadableStream.fromAsyncGenerator(wrappedGenerator());
348
+ }
349
+ }
350
+ // ################################# FOR CONTRIBUTORS #################################
351
+ //
352
+ // If adding support for a new provider, please append the provider
353
+ // name to the supported list in the docstring below.
354
+ //
355
+ // ####################################################################################
356
+ /**
357
+ * Initialize a ChatModel from the model name and provider.
358
+ * Must have the integration package corresponding to the model provider installed.
359
+ *
360
+ * @template {extends BaseLanguageModelInput = BaseLanguageModelInput} RunInput - The input type for the model.
361
+ * @template {extends ConfigurableChatModelCallOptions = ConfigurableChatModelCallOptions} CallOptions - Call options for the model.
362
+ *
363
+ * @param {string | ChatModelProvider} [model] - The name of the model, e.g. "gpt-4", "claude-3-opus-20240229".
364
+ * @param {Object} [fields] - Additional configuration options.
365
+ * @param {string} [fields.modelProvider] - The model provider. Supported values include:
366
+ * - openai (@langchain/openai)
367
+ * - anthropic (@langchain/anthropic)
368
+ * - azure_openai (@langchain/openai)
369
+ * - google-vertexai (@langchain/google-vertexai)
370
+ * - google-genai (@langchain/google-genai)
371
+ * - bedrock (@langchain/aws)
372
+ * - cohere (@langchain/cohere)
373
+ * - fireworks (@langchain/community/chat_models/fireworks)
374
+ * - together (@langchain/community/chat_models/togetherai)
375
+ * - mistralai (@langchain/mistralai)
376
+ * - groq (@langchain/groq)
377
+ * - ollama (@langchain/ollama)
378
+ * @param {string[] | "any"} [fields.configurableFields] - Which model parameters are configurable:
379
+ * - undefined: No configurable fields.
380
+ * - "any": All fields are configurable. (See Security Note in description)
381
+ * - string[]: Specified fields are configurable.
382
+ * @param {string} [fields.configPrefix] - Prefix for configurable fields at runtime.
383
+ * @param {Record<string, any>} [fields.params] - Additional keyword args to pass to the ChatModel constructor.
384
+ * @returns {Promise<_ConfigurableModel<RunInput, CallOptions>>} A class which extends BaseChatModel.
385
+ * @throws {Error} If modelProvider cannot be inferred or isn't supported.
386
+ * @throws {Error} If the model provider integration package is not installed.
387
+ *
388
+ * @example Initialize non-configurable models
389
+ * ```typescript
390
+ * import { initChatModel } from "langchain/chat_models/universal";
391
+ *
392
+ * const gpt4 = await initChatModel("gpt-4", {
393
+ * modelProvider: "openai",
394
+ * temperature: 0.25,
395
+ * });
396
+ * const gpt4Result = await gpt4.invoke("what's your name");
397
+ *
398
+ * const claude = await initChatModel("claude-3-opus-20240229", {
399
+ * modelProvider: "anthropic",
400
+ * temperature: 0.25,
401
+ * });
402
+ * const claudeResult = await claude.invoke("what's your name");
403
+ *
404
+ * const gemini = await initChatModel("gemini-1.5-pro", {
405
+ * modelProvider: "google-vertexai",
406
+ * temperature: 0.25,
407
+ * });
408
+ * const geminiResult = await gemini.invoke("what's your name");
409
+ * ```
410
+ *
411
+ * @example Create a partially configurable model with no default model
412
+ * ```typescript
413
+ * import { initChatModel } from "langchain/chat_models/universal";
414
+ *
415
+ * const configurableModel = await initChatModel(undefined, {
416
+ * temperature: 0,
417
+ * configurableFields: ["model", "apiKey"],
418
+ * });
419
+ *
420
+ * const gpt4Result = await configurableModel.invoke("what's your name", {
421
+ * configurable: {
422
+ * model: "gpt-4",
423
+ * },
424
+ * });
425
+ *
426
+ * const claudeResult = await configurableModel.invoke("what's your name", {
427
+ * configurable: {
428
+ * model: "claude-3-5-sonnet-20240620",
429
+ * },
430
+ * });
431
+ * ```
432
+ *
433
+ * @example Create a fully configurable model with a default model and a config prefix
434
+ * ```typescript
435
+ * import { initChatModel } from "langchain/chat_models/universal";
436
+ *
437
+ * const configurableModelWithDefault = await initChatModel("gpt-4", {
438
+ * modelProvider: "openai",
439
+ * configurableFields: "any",
440
+ * configPrefix: "foo",
441
+ * temperature: 0,
442
+ * });
443
+ *
444
+ * const openaiResult = await configurableModelWithDefault.invoke(
445
+ * "what's your name",
446
+ * {
447
+ * configurable: {
448
+ * foo_apiKey: process.env.OPENAI_API_KEY,
449
+ * },
450
+ * }
451
+ * );
452
+ *
453
+ * const claudeResult = await configurableModelWithDefault.invoke(
454
+ * "what's your name",
455
+ * {
456
+ * configurable: {
457
+ * foo_model: "claude-3-5-sonnet-20240620",
458
+ * foo_modelProvider: "anthropic",
459
+ * foo_temperature: 0.6,
460
+ * foo_apiKey: process.env.ANTHROPIC_API_KEY,
461
+ * },
462
+ * }
463
+ * );
464
+ * ```
465
+ *
466
+ * @example Bind tools to a configurable model:
467
+ * ```typescript
468
+ * import { initChatModel } from "langchain/chat_models/universal";
469
+ * import { z } from "zod";
470
+ * import { tool } from "@langchain/core/tools";
471
+ *
472
+ * const getWeatherTool = tool(
473
+ * (input) => {
474
+ * // Do something with the input
475
+ * return JSON.stringify(input);
476
+ * },
477
+ * {
478
+ * schema: z
479
+ * .object({
480
+ * location: z
481
+ * .string()
482
+ * .describe("The city and state, e.g. San Francisco, CA"),
483
+ * })
484
+ * .describe("Get the current weather in a given location"),
485
+ * name: "GetWeather",
486
+ * description: "Get the current weather in a given location",
487
+ * }
488
+ * );
489
+ *
490
+ * const getPopulationTool = tool(
491
+ * (input) => {
492
+ * // Do something with the input
493
+ * return JSON.stringify(input);
494
+ * },
495
+ * {
496
+ * schema: z
497
+ * .object({
498
+ * location: z
499
+ * .string()
500
+ * .describe("The city and state, e.g. San Francisco, CA"),
501
+ * })
502
+ * .describe("Get the current population in a given location"),
503
+ * name: "GetPopulation",
504
+ * description: "Get the current population in a given location",
505
+ * }
506
+ * );
507
+ *
508
+ * const configurableModel = await initChatModel("gpt-4", {
509
+ * configurableFields: ["model", "modelProvider", "apiKey"],
510
+ * temperature: 0,
511
+ * });
512
+ *
513
+ * const configurableModelWithTools = configurableModel.bind({
514
+ * tools: [getWeatherTool, getPopulationTool],
515
+ * });
516
+ *
517
+ * const configurableToolResult = await configurableModelWithTools.invoke(
518
+ * "Which city is hotter today and which is bigger: LA or NY?",
519
+ * {
520
+ * configurable: {
521
+ * apiKey: process.env.OPENAI_API_KEY,
522
+ * },
523
+ * }
524
+ * );
525
+ *
526
+ * const configurableToolResult2 = await configurableModelWithTools.invoke(
527
+ * "Which city is hotter today and which is bigger: LA or NY?",
528
+ * {
529
+ * configurable: {
530
+ * model: "claude-3-5-sonnet-20240620",
531
+ * apiKey: process.env.ANTHROPIC_API_KEY,
532
+ * },
533
+ * }
534
+ * );
535
+ * ```
536
+ *
537
+ * @description
538
+ * This function initializes a ChatModel based on the provided model name and provider.
539
+ * It supports various model providers and allows for runtime configuration of model parameters.
540
+ *
541
+ * Security Note: Setting `configurableFields` to "any" means fields like api_key, base_url, etc.
542
+ * can be altered at runtime, potentially redirecting model requests to a different service/user.
543
+ * Make sure that if you're accepting untrusted configurations, you enumerate the
544
+ * `configurableFields` explicitly.
545
+ *
546
+ * The function will attempt to infer the model provider from the model name if not specified.
547
+ * Certain model name prefixes are associated with specific providers:
548
+ * - gpt-3... or gpt-4... -> openai
549
+ * - claude... -> anthropic
550
+ * - amazon.... -> bedrock
551
+ * - gemini... -> google-vertexai
552
+ * - command... -> cohere
553
+ * - accounts/fireworks... -> fireworks
554
+ *
555
+ * @since 0.2.11
556
+ * @version 0.2.11
557
+ */
558
+ async function initChatModel(model,
559
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
560
+ fields) {
561
+ const { configurableFields, configPrefix, modelProvider, ...params } = {
562
+ configPrefix: "",
563
+ ...(fields ?? {}),
564
+ };
565
+ let configurableFieldsCopy = configurableFields;
566
+ if (!model && !configurableFieldsCopy) {
567
+ configurableFieldsCopy = ["model", "modelProvider"];
568
+ }
569
+ if (configPrefix && !configurableFieldsCopy) {
570
+ console.warn(`{ configPrefix: ${configPrefix} } has been set but no fields are configurable. Set ` +
571
+ `{ configurableFields: [...] } to specify the model params that are ` +
572
+ `configurable.`);
573
+ }
574
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
575
+ const paramsCopy = { ...params };
576
+ if (!configurableFieldsCopy) {
577
+ return new _ConfigurableModel({
578
+ defaultConfig: {
579
+ ...paramsCopy,
580
+ model,
581
+ modelProvider,
582
+ },
583
+ configPrefix,
584
+ });
585
+ }
586
+ else {
587
+ if (model) {
588
+ paramsCopy.model = model;
589
+ }
590
+ if (modelProvider) {
591
+ paramsCopy.modelProvider = modelProvider;
592
+ }
593
+ return new _ConfigurableModel({
594
+ defaultConfig: paramsCopy,
595
+ configPrefix,
596
+ configurableFields: configurableFieldsCopy,
597
+ });
598
+ }
599
+ }
600
+ exports.initChatModel = initChatModel;