langchain 0.0.4 → 0.0.5

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 (333) hide show
  1. package/dist/cjs/agents/agent.d.ts +54 -0
  2. package/dist/cjs/agents/agent.js +81 -59
  3. package/dist/cjs/agents/agent.js.map +1 -1
  4. package/dist/cjs/agents/executor.d.ts +5 -0
  5. package/dist/cjs/agents/executor.js +36 -42
  6. package/dist/cjs/agents/executor.js.map +1 -1
  7. package/dist/cjs/agents/helpers.js +4 -13
  8. package/dist/cjs/agents/helpers.js.map +1 -1
  9. package/dist/cjs/agents/index.d.ts +1 -0
  10. package/dist/cjs/agents/index.js +5 -1
  11. package/dist/cjs/agents/index.js.map +1 -1
  12. package/dist/cjs/agents/initialize.d.ts +4 -0
  13. package/dist/cjs/agents/initialize.js +21 -0
  14. package/dist/cjs/agents/initialize.js.map +1 -0
  15. package/dist/cjs/agents/load.js +6 -15
  16. package/dist/cjs/agents/load.js.map +1 -1
  17. package/dist/cjs/agents/mrkl/index.d.ts +17 -0
  18. package/dist/cjs/agents/mrkl/index.js +21 -29
  19. package/dist/cjs/agents/mrkl/index.js.map +1 -1
  20. package/dist/cjs/agents/mrkl/prompt.js +0 -1
  21. package/dist/cjs/agents/mrkl/prompt.js.map +1 -1
  22. package/dist/cjs/agents/tests/agent.test.js +19 -15
  23. package/dist/cjs/agents/tests/agent.test.js.map +1 -1
  24. package/dist/cjs/agents/tests/calculator.test.d.ts +1 -0
  25. package/dist/cjs/agents/tests/calculator.test.js +30 -0
  26. package/dist/cjs/agents/tests/calculator.test.js.map +1 -0
  27. package/dist/cjs/agents/tools/base.d.ts +6 -0
  28. package/dist/cjs/agents/tools/base.js +15 -0
  29. package/dist/cjs/agents/tools/base.js.map +1 -0
  30. package/dist/cjs/agents/tools/calculator.d.ts +6 -0
  31. package/dist/cjs/agents/tools/calculator.js +33 -0
  32. package/dist/cjs/agents/tools/calculator.js.map +1 -0
  33. package/dist/cjs/agents/tools/index.d.ts +2 -6
  34. package/dist/cjs/agents/tools/index.js +5 -1
  35. package/dist/cjs/agents/tools/index.js.map +1 -1
  36. package/dist/cjs/agents/tools/serpapi.d.ts +18 -3
  37. package/dist/cjs/agents/tools/serpapi.js +88 -45
  38. package/dist/cjs/agents/tools/serpapi.js.map +1 -1
  39. package/dist/cjs/chains/base.d.ts +34 -4
  40. package/dist/cjs/chains/base.js +41 -3
  41. package/dist/cjs/chains/base.js.map +1 -1
  42. package/dist/cjs/chains/chat_vector_db_chain.d.ts +41 -0
  43. package/dist/cjs/chains/chat_vector_db_chain.js +132 -0
  44. package/dist/cjs/chains/chat_vector_db_chain.js.map +1 -0
  45. package/dist/cjs/chains/combine_docs_chain.d.ts +35 -0
  46. package/dist/cjs/chains/combine_docs_chain.js +75 -0
  47. package/dist/cjs/chains/combine_docs_chain.js.map +1 -0
  48. package/dist/cjs/chains/conversation.d.ts +12 -0
  49. package/dist/cjs/chains/conversation.js +29 -0
  50. package/dist/cjs/chains/conversation.js.map +1 -0
  51. package/dist/cjs/chains/index.d.ts +5 -1
  52. package/dist/cjs/chains/index.js +10 -1
  53. package/dist/cjs/chains/index.js.map +1 -1
  54. package/dist/cjs/chains/llm_chain.d.ts +35 -0
  55. package/dist/cjs/chains/llm_chain.js +66 -34
  56. package/dist/cjs/chains/llm_chain.js.map +1 -1
  57. package/dist/cjs/chains/load.d.ts +20 -1
  58. package/dist/cjs/chains/load.js +25 -17
  59. package/dist/cjs/chains/load.js.map +1 -1
  60. package/dist/cjs/chains/question_answering/load.d.ts +3 -0
  61. package/dist/cjs/chains/question_answering/load.js +13 -0
  62. package/dist/cjs/chains/question_answering/load.js.map +1 -0
  63. package/dist/cjs/chains/question_answering/stuff_prompts.d.ts +2 -0
  64. package/dist/cjs/chains/question_answering/stuff_prompts.js +10 -0
  65. package/dist/cjs/chains/question_answering/stuff_prompts.js.map +1 -0
  66. package/dist/cjs/chains/question_answering/tests/load.test.d.ts +1 -0
  67. package/dist/cjs/chains/question_answering/tests/load.test.js +14 -0
  68. package/dist/cjs/chains/question_answering/tests/load.test.js.map +1 -0
  69. package/dist/cjs/chains/tests/chat_vector_db_qa_chain.test.d.ts +1 -0
  70. package/dist/cjs/chains/tests/chat_vector_db_qa_chain.test.js +35 -0
  71. package/dist/cjs/chains/tests/chat_vector_db_qa_chain.test.js.map +1 -0
  72. package/dist/cjs/chains/tests/combine_docs_chain.test.d.ts +1 -0
  73. package/dist/cjs/chains/tests/combine_docs_chain.test.js +28 -0
  74. package/dist/cjs/chains/tests/combine_docs_chain.test.js.map +1 -0
  75. package/dist/cjs/chains/tests/llm_chain.test.js +13 -16
  76. package/dist/cjs/chains/tests/llm_chain.test.js.map +1 -1
  77. package/dist/cjs/chains/tests/vector_db_qa_chain.test.d.ts +1 -0
  78. package/dist/cjs/chains/tests/vector_db_qa_chain.test.js +46 -0
  79. package/dist/cjs/chains/tests/vector_db_qa_chain.test.js.map +1 -0
  80. package/dist/cjs/chains/vector_db_qa.d.ts +36 -0
  81. package/dist/cjs/chains/vector_db_qa.js +85 -0
  82. package/dist/cjs/chains/vector_db_qa.js.map +1 -0
  83. package/dist/cjs/document.d.ts +13 -0
  84. package/dist/cjs/document.js +28 -0
  85. package/dist/cjs/document.js.map +1 -0
  86. package/dist/cjs/embeddings/base.d.ts +4 -0
  87. package/dist/cjs/embeddings/base.js +7 -0
  88. package/dist/cjs/embeddings/base.js.map +1 -0
  89. package/dist/cjs/embeddings/index.d.ts +1 -0
  90. package/dist/cjs/embeddings/index.js +6 -0
  91. package/dist/cjs/embeddings/index.js.map +1 -0
  92. package/dist/cjs/embeddings/openai.d.ts +20 -0
  93. package/dist/cjs/embeddings/openai.js +86 -0
  94. package/dist/cjs/embeddings/openai.js.map +1 -0
  95. package/dist/cjs/embeddings/tests/openai.test.d.ts +1 -0
  96. package/dist/cjs/embeddings/tests/openai.test.js +17 -0
  97. package/dist/cjs/embeddings/tests/openai.test.js.map +1 -0
  98. package/dist/cjs/llms/base.d.ts +41 -0
  99. package/dist/cjs/llms/base.js +97 -92
  100. package/dist/cjs/llms/base.js.map +1 -1
  101. package/dist/cjs/llms/index.d.ts +19 -0
  102. package/dist/cjs/llms/load.d.ts +10 -2
  103. package/dist/cjs/llms/load.js +12 -4
  104. package/dist/cjs/llms/load.js.map +1 -1
  105. package/dist/cjs/llms/openai.d.ts +69 -7
  106. package/dist/cjs/llms/openai.js +96 -58
  107. package/dist/cjs/llms/openai.js.map +1 -1
  108. package/dist/cjs/llms/tests/openai.test.js +3 -12
  109. package/dist/cjs/llms/tests/openai.test.js.map +1 -1
  110. package/dist/cjs/memory/base.d.ts +7 -0
  111. package/dist/cjs/memory/base.js +7 -0
  112. package/dist/cjs/memory/base.js.map +1 -0
  113. package/dist/cjs/memory/buffer_memory.d.ts +15 -0
  114. package/dist/cjs/memory/buffer_memory.js +57 -0
  115. package/dist/cjs/memory/buffer_memory.js.map +1 -0
  116. package/dist/cjs/memory/index.d.ts +2 -0
  117. package/dist/cjs/memory/index.js +8 -0
  118. package/dist/cjs/memory/index.js.map +1 -0
  119. package/dist/cjs/memory/tests/buffer_memory.test.d.ts +1 -0
  120. package/dist/cjs/memory/tests/buffer_memory.test.js +17 -0
  121. package/dist/cjs/memory/tests/buffer_memory.test.js.map +1 -0
  122. package/dist/cjs/prompt/base.d.ts +39 -0
  123. package/dist/cjs/prompt/base.js +24 -25
  124. package/dist/cjs/prompt/base.js.map +1 -1
  125. package/dist/cjs/prompt/few_shot.d.ts +36 -1
  126. package/dist/cjs/prompt/few_shot.js +27 -33
  127. package/dist/cjs/prompt/few_shot.js.map +1 -1
  128. package/dist/cjs/prompt/index.d.ts +1 -0
  129. package/dist/cjs/prompt/index.js +3 -1
  130. package/dist/cjs/prompt/index.js.map +1 -1
  131. package/dist/cjs/prompt/load.d.ts +17 -0
  132. package/dist/cjs/prompt/load.js +21 -13
  133. package/dist/cjs/prompt/load.js.map +1 -1
  134. package/dist/cjs/prompt/parser.d.ts +30 -0
  135. package/dist/cjs/prompt/parser.js +21 -0
  136. package/dist/cjs/prompt/parser.js.map +1 -1
  137. package/dist/cjs/prompt/prompt.d.ts +48 -0
  138. package/dist/cjs/prompt/prompt.js +38 -18
  139. package/dist/cjs/prompt/prompt.js.map +1 -1
  140. package/dist/cjs/prompt/template.js.map +1 -1
  141. package/dist/cjs/prompt/tests/load.test.js +6 -15
  142. package/dist/cjs/prompt/tests/load.test.js.map +1 -1
  143. package/dist/cjs/text_splitter.d.ts +32 -0
  144. package/dist/cjs/text_splitter.js +165 -0
  145. package/dist/cjs/text_splitter.js.map +1 -0
  146. package/dist/cjs/text_splitter.test.d.ts +1 -0
  147. package/dist/cjs/text_splitter.test.js +87 -0
  148. package/dist/cjs/text_splitter.test.js.map +1 -0
  149. package/dist/cjs/util/hub.d.ts +2 -1
  150. package/dist/cjs/util/hub.js +5 -14
  151. package/dist/cjs/util/hub.js.map +1 -1
  152. package/dist/cjs/util/index.d.ts +1 -0
  153. package/dist/cjs/util/index.js +13 -25
  154. package/dist/cjs/util/index.js.map +1 -1
  155. package/dist/cjs/vectorstores/base.d.ts +18 -0
  156. package/dist/cjs/vectorstores/base.js +38 -0
  157. package/dist/cjs/vectorstores/base.js.map +1 -0
  158. package/dist/cjs/vectorstores/hnswlib.d.ts +19 -0
  159. package/dist/cjs/vectorstores/hnswlib.js +126 -0
  160. package/dist/cjs/vectorstores/hnswlib.js.map +1 -0
  161. package/dist/cjs/vectorstores/index.d.ts +1 -0
  162. package/dist/cjs/vectorstores/index.js +6 -0
  163. package/dist/cjs/vectorstores/index.js.map +1 -0
  164. package/dist/cjs/vectorstores/tests/hnswlib.test.d.ts +1 -0
  165. package/dist/cjs/vectorstores/tests/hnswlib.test.js +44 -0
  166. package/dist/cjs/vectorstores/tests/hnswlib.test.js.map +1 -0
  167. package/dist/esm/agents/agent.d.ts +54 -0
  168. package/dist/esm/agents/agent.js +81 -59
  169. package/dist/esm/agents/agent.js.map +1 -1
  170. package/dist/esm/agents/executor.d.ts +5 -0
  171. package/dist/esm/agents/executor.js +36 -42
  172. package/dist/esm/agents/executor.js.map +1 -1
  173. package/dist/esm/agents/helpers.js +4 -13
  174. package/dist/esm/agents/helpers.js.map +1 -1
  175. package/dist/esm/agents/index.d.ts +1 -0
  176. package/dist/esm/agents/index.js +2 -0
  177. package/dist/esm/agents/index.js.map +1 -1
  178. package/dist/esm/agents/initialize.d.ts +4 -0
  179. package/dist/esm/agents/initialize.js +17 -0
  180. package/dist/esm/agents/initialize.js.map +1 -0
  181. package/dist/esm/agents/load.js +6 -15
  182. package/dist/esm/agents/load.js.map +1 -1
  183. package/dist/esm/agents/mrkl/index.d.ts +17 -0
  184. package/dist/esm/agents/mrkl/index.js +21 -29
  185. package/dist/esm/agents/mrkl/index.js.map +1 -1
  186. package/dist/esm/agents/mrkl/prompt.js +0 -1
  187. package/dist/esm/agents/mrkl/prompt.js.map +1 -1
  188. package/dist/esm/agents/tests/agent.test.js +19 -15
  189. package/dist/esm/agents/tests/agent.test.js.map +1 -1
  190. package/dist/esm/agents/tests/calculator.test.d.ts +1 -0
  191. package/dist/esm/agents/tests/calculator.test.js +28 -0
  192. package/dist/esm/agents/tests/calculator.test.js.map +1 -0
  193. package/dist/esm/agents/tools/base.d.ts +6 -0
  194. package/dist/esm/agents/tools/base.js +11 -0
  195. package/dist/esm/agents/tools/base.js.map +1 -0
  196. package/dist/esm/agents/tools/calculator.d.ts +6 -0
  197. package/dist/esm/agents/tools/calculator.js +29 -0
  198. package/dist/esm/agents/tools/calculator.js.map +1 -0
  199. package/dist/esm/agents/tools/index.d.ts +2 -6
  200. package/dist/esm/agents/tools/index.js +2 -0
  201. package/dist/esm/agents/tools/index.js.map +1 -1
  202. package/dist/esm/agents/tools/serpapi.d.ts +18 -3
  203. package/dist/esm/agents/tools/serpapi.js +88 -45
  204. package/dist/esm/agents/tools/serpapi.js.map +1 -1
  205. package/dist/esm/chains/base.d.ts +34 -4
  206. package/dist/esm/chains/base.js +42 -4
  207. package/dist/esm/chains/base.js.map +1 -1
  208. package/dist/esm/chains/chat_vector_db_chain.d.ts +41 -0
  209. package/dist/esm/chains/chat_vector_db_chain.js +128 -0
  210. package/dist/esm/chains/chat_vector_db_chain.js.map +1 -0
  211. package/dist/esm/chains/combine_docs_chain.d.ts +35 -0
  212. package/dist/esm/chains/combine_docs_chain.js +71 -0
  213. package/dist/esm/chains/combine_docs_chain.js.map +1 -0
  214. package/dist/esm/chains/conversation.d.ts +12 -0
  215. package/dist/esm/chains/conversation.js +25 -0
  216. package/dist/esm/chains/conversation.js.map +1 -0
  217. package/dist/esm/chains/index.d.ts +5 -1
  218. package/dist/esm/chains/index.js +5 -1
  219. package/dist/esm/chains/index.js.map +1 -1
  220. package/dist/esm/chains/llm_chain.d.ts +35 -0
  221. package/dist/esm/chains/llm_chain.js +65 -34
  222. package/dist/esm/chains/llm_chain.js.map +1 -1
  223. package/dist/esm/chains/load.d.ts +20 -1
  224. package/dist/esm/chains/load.js +25 -17
  225. package/dist/esm/chains/load.js.map +1 -1
  226. package/dist/esm/chains/question_answering/load.d.ts +3 -0
  227. package/dist/esm/chains/question_answering/load.js +9 -0
  228. package/dist/esm/chains/question_answering/load.js.map +1 -0
  229. package/dist/esm/chains/question_answering/stuff_prompts.d.ts +2 -0
  230. package/dist/esm/chains/question_answering/stuff_prompts.js +7 -0
  231. package/dist/esm/chains/question_answering/stuff_prompts.js.map +1 -0
  232. package/dist/esm/chains/question_answering/tests/load.test.d.ts +1 -0
  233. package/dist/esm/chains/question_answering/tests/load.test.js +12 -0
  234. package/dist/esm/chains/question_answering/tests/load.test.js.map +1 -0
  235. package/dist/esm/chains/tests/chat_vector_db_qa_chain.test.d.ts +1 -0
  236. package/dist/esm/chains/tests/chat_vector_db_qa_chain.test.js +33 -0
  237. package/dist/esm/chains/tests/chat_vector_db_qa_chain.test.js.map +1 -0
  238. package/dist/esm/chains/tests/combine_docs_chain.test.d.ts +1 -0
  239. package/dist/esm/chains/tests/combine_docs_chain.test.js +26 -0
  240. package/dist/esm/chains/tests/combine_docs_chain.test.js.map +1 -0
  241. package/dist/esm/chains/tests/llm_chain.test.js +14 -17
  242. package/dist/esm/chains/tests/llm_chain.test.js.map +1 -1
  243. package/dist/esm/chains/tests/vector_db_qa_chain.test.d.ts +1 -0
  244. package/dist/esm/chains/tests/vector_db_qa_chain.test.js +44 -0
  245. package/dist/esm/chains/tests/vector_db_qa_chain.test.js.map +1 -0
  246. package/dist/esm/chains/vector_db_qa.d.ts +36 -0
  247. package/dist/esm/chains/vector_db_qa.js +81 -0
  248. package/dist/esm/chains/vector_db_qa.js.map +1 -0
  249. package/dist/esm/document.d.ts +13 -0
  250. package/dist/esm/document.js +24 -0
  251. package/dist/esm/document.js.map +1 -0
  252. package/dist/esm/embeddings/base.d.ts +4 -0
  253. package/dist/esm/embeddings/base.js +3 -0
  254. package/dist/esm/embeddings/base.js.map +1 -0
  255. package/dist/esm/embeddings/index.d.ts +1 -0
  256. package/dist/esm/embeddings/index.js +2 -0
  257. package/dist/esm/embeddings/index.js.map +1 -0
  258. package/dist/esm/embeddings/openai.d.ts +20 -0
  259. package/dist/esm/embeddings/openai.js +82 -0
  260. package/dist/esm/embeddings/openai.js.map +1 -0
  261. package/dist/esm/embeddings/tests/openai.test.d.ts +1 -0
  262. package/dist/esm/embeddings/tests/openai.test.js +15 -0
  263. package/dist/esm/embeddings/tests/openai.test.js.map +1 -0
  264. package/dist/esm/llms/base.d.ts +41 -0
  265. package/dist/esm/llms/base.js +97 -92
  266. package/dist/esm/llms/base.js.map +1 -1
  267. package/dist/esm/llms/index.d.ts +19 -0
  268. package/dist/esm/llms/load.d.ts +10 -2
  269. package/dist/esm/llms/load.js +10 -2
  270. package/dist/esm/llms/load.js.map +1 -1
  271. package/dist/esm/llms/openai.d.ts +69 -7
  272. package/dist/esm/llms/openai.js +96 -58
  273. package/dist/esm/llms/openai.js.map +1 -1
  274. package/dist/esm/llms/tests/openai.test.js +3 -12
  275. package/dist/esm/llms/tests/openai.test.js.map +1 -1
  276. package/dist/esm/memory/base.d.ts +7 -0
  277. package/dist/esm/memory/base.js +3 -0
  278. package/dist/esm/memory/base.js.map +1 -0
  279. package/dist/esm/memory/buffer_memory.d.ts +15 -0
  280. package/dist/esm/memory/buffer_memory.js +53 -0
  281. package/dist/esm/memory/buffer_memory.js.map +1 -0
  282. package/dist/esm/memory/index.d.ts +2 -0
  283. package/dist/esm/memory/index.js +3 -0
  284. package/dist/esm/memory/index.js.map +1 -0
  285. package/dist/esm/memory/tests/buffer_memory.test.d.ts +1 -0
  286. package/dist/esm/memory/tests/buffer_memory.test.js +15 -0
  287. package/dist/esm/memory/tests/buffer_memory.test.js.map +1 -0
  288. package/dist/esm/prompt/base.d.ts +39 -0
  289. package/dist/esm/prompt/base.js +24 -25
  290. package/dist/esm/prompt/base.js.map +1 -1
  291. package/dist/esm/prompt/few_shot.d.ts +36 -1
  292. package/dist/esm/prompt/few_shot.js +27 -33
  293. package/dist/esm/prompt/few_shot.js.map +1 -1
  294. package/dist/esm/prompt/index.d.ts +1 -0
  295. package/dist/esm/prompt/index.js +1 -0
  296. package/dist/esm/prompt/index.js.map +1 -1
  297. package/dist/esm/prompt/load.d.ts +17 -0
  298. package/dist/esm/prompt/load.js +21 -13
  299. package/dist/esm/prompt/load.js.map +1 -1
  300. package/dist/esm/prompt/parser.d.ts +30 -0
  301. package/dist/esm/prompt/parser.js +21 -0
  302. package/dist/esm/prompt/parser.js.map +1 -1
  303. package/dist/esm/prompt/prompt.d.ts +48 -0
  304. package/dist/esm/prompt/prompt.js +38 -18
  305. package/dist/esm/prompt/prompt.js.map +1 -1
  306. package/dist/esm/prompt/template.js.map +1 -1
  307. package/dist/esm/prompt/tests/load.test.js +6 -15
  308. package/dist/esm/prompt/tests/load.test.js.map +1 -1
  309. package/dist/esm/text_splitter.d.ts +32 -0
  310. package/dist/esm/text_splitter.js +160 -0
  311. package/dist/esm/text_splitter.js.map +1 -0
  312. package/dist/esm/text_splitter.test.d.ts +1 -0
  313. package/dist/esm/text_splitter.test.js +85 -0
  314. package/dist/esm/text_splitter.test.js.map +1 -0
  315. package/dist/esm/util/hub.d.ts +2 -1
  316. package/dist/esm/util/hub.js +5 -14
  317. package/dist/esm/util/hub.js.map +1 -1
  318. package/dist/esm/util/index.d.ts +1 -0
  319. package/dist/esm/util/index.js +11 -24
  320. package/dist/esm/util/index.js.map +1 -1
  321. package/dist/esm/vectorstores/base.d.ts +18 -0
  322. package/dist/esm/vectorstores/base.js +33 -0
  323. package/dist/esm/vectorstores/base.js.map +1 -0
  324. package/dist/esm/vectorstores/hnswlib.d.ts +19 -0
  325. package/dist/esm/vectorstores/hnswlib.js +119 -0
  326. package/dist/esm/vectorstores/hnswlib.js.map +1 -0
  327. package/dist/esm/vectorstores/index.d.ts +1 -0
  328. package/dist/esm/vectorstores/index.js +2 -0
  329. package/dist/esm/vectorstores/index.js.map +1 -0
  330. package/dist/esm/vectorstores/tests/hnswlib.test.d.ts +1 -0
  331. package/dist/esm/vectorstores/tests/hnswlib.test.js +39 -0
  332. package/dist/esm/vectorstores/tests/hnswlib.test.js.map +1 -0
  333. package/package.json +65 -38
@@ -8,17 +8,34 @@ type SerializedFromLLMAndTools = {
8
8
  };
9
9
  export type SerializedZeroShotAgent = SerializedAgentT<"zero-shot-react-description", SerializedFromLLMAndTools, AgentInput>;
10
10
  type CreatePromptArgs = {
11
+ /** String to put after the list of tools. */
11
12
  suffix?: string;
13
+ /** String to put before the list of tools. */
12
14
  prefix?: string;
15
+ /** List of input variables the final prompt will expect. */
13
16
  inputVariables?: string[];
14
17
  };
15
18
  type ZeroShotAgentInput = AgentInput;
19
+ /**
20
+ * Agent for the MRKL chain.
21
+ * @augments Agent
22
+ * @augments StaticAgent
23
+ */
16
24
  export declare class ZeroShotAgent extends Agent {
17
25
  constructor(input: ZeroShotAgentInput);
18
26
  _agentType(): "zero-shot-react-description";
19
27
  observationPrefix(): string;
20
28
  llmPrefix(): string;
21
29
  static validateTools(tools: Tool[]): void;
30
+ /**
31
+ * Create prompt in the style of the zero shot agent.
32
+ *
33
+ * @param tools - List of tools the agent will have access to, used to format the prompt.
34
+ * @param args - Arguments to create the prompt with.
35
+ * @param args.suffix - String to put after the list of tools.
36
+ * @param args.prefix - String to put before the list of tools.
37
+ * @param args.inputVariables - List of input variables the final prompt will expect.
38
+ */
22
39
  static createPrompt(tools: Tool[], args?: CreatePromptArgs): PromptTemplate;
23
40
  static fromLLMAndTools(llm: BaseLLM, tools: Tool[], args?: CreatePromptArgs): ZeroShotAgent;
24
41
  extractToolAndInput(text: string): {
@@ -4,26 +4,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
- return new (P || (P = Promise))(function (resolve, reject) {
10
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
- step((generator = generator.apply(thisArg, _arguments || [])).next());
14
- });
15
- };
16
- var __rest = (this && this.__rest) || function (s, e) {
17
- var t = {};
18
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
- t[p] = s[p];
20
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
- t[p[i]] = s[p[i]];
24
- }
25
- return t;
26
- };
27
7
  var ZeroShotAgent_1;
28
8
  import { LLMChain } from "../../chains";
29
9
  import { Agent, staticImplements, } from "../index";
@@ -31,6 +11,11 @@ import { PromptTemplate } from "../../prompt";
31
11
  import { PREFIX, SUFFIX, formatInstructions } from "./prompt";
32
12
  import { deserializeHelper } from "../helpers";
33
13
  const FINAL_ANSWER_ACTION = "Final Answer:";
14
+ /**
15
+ * Agent for the MRKL chain.
16
+ * @augments Agent
17
+ * @augments StaticAgent
18
+ */
34
19
  let ZeroShotAgent = ZeroShotAgent_1 = class ZeroShotAgent extends Agent {
35
20
  constructor(input) {
36
21
  super(input);
@@ -52,6 +37,15 @@ let ZeroShotAgent = ZeroShotAgent_1 = class ZeroShotAgent extends Agent {
52
37
  throw new Error(msg);
53
38
  }
54
39
  }
40
+ /**
41
+ * Create prompt in the style of the zero shot agent.
42
+ *
43
+ * @param tools - List of tools the agent will have access to, used to format the prompt.
44
+ * @param args - Arguments to create the prompt with.
45
+ * @param args.suffix - String to put after the list of tools.
46
+ * @param args.prefix - String to put before the list of tools.
47
+ * @param args.inputVariables - List of input variables the final prompt will expect.
48
+ */
55
49
  static createPrompt(tools, args) {
56
50
  const { prefix = PREFIX, suffix = SUFFIX, inputVariables = ["input", "agent_scratchpad"], } = args !== null && args !== void 0 ? args : {};
57
51
  const toolStrings = tools
@@ -88,15 +82,13 @@ let ZeroShotAgent = ZeroShotAgent_1 = class ZeroShotAgent extends Agent {
88
82
  input: match[2].trim().replace(/^"+|"+$/g, ""),
89
83
  };
90
84
  }
91
- static deserialize(data) {
92
- return __awaiter(this, void 0, void 0, function* () {
93
- const { llm, tools } = data, rest = __rest(data, ["llm", "tools"]);
94
- return deserializeHelper(llm, tools, rest, (llm, tools, args) => ZeroShotAgent_1.fromLLMAndTools(llm, tools, {
95
- prefix: args.prefix,
96
- suffix: args.suffix,
97
- inputVariables: args.input_variables,
98
- }), (args) => new ZeroShotAgent_1(args));
99
- });
85
+ static async deserialize(data) {
86
+ const { llm, tools, ...rest } = data;
87
+ return deserializeHelper(llm, tools, rest, (llm, tools, args) => ZeroShotAgent_1.fromLLMAndTools(llm, tools, {
88
+ prefix: args.prefix,
89
+ suffix: args.suffix,
90
+ inputVariables: args.input_variables,
91
+ }), (args) => new ZeroShotAgent_1(args));
100
92
  }
101
93
  };
102
94
  ZeroShotAgent = ZeroShotAgent_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../agents/mrkl/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../agents/mrkl/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- /* eslint-disable max-len */
2
1
  export const PREFIX = `Answer the following questions as best you can. You have access to the following tools:`;
3
2
  export const formatInstructions = (toolNames) => `Use the following format:
4
3
 
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../agents/mrkl/prompt.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,MAAM,CAAC,MAAM,MAAM,GAAG,yFAAyF,CAAC;AAChH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAAiB,EACjB,EAAE,CAAC;;;;gDAI2C,SAAS;;;;;8DAKK,CAAC;AAC/D,MAAM,CAAC,MAAM,MAAM,GAAG;;;2BAGK,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../../agents/mrkl/prompt.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG,yFAAyF,CAAC;AAChH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAAiB,EACjB,EAAE,CAAC;;;;gDAI2C,SAAS;;;;;8DAKK,CAAC;AAC/D,MAAM,CAAC,MAAM,MAAM,GAAG;;;2BAGK,CAAC"}
@@ -1,29 +1,33 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { test } from "@jest/globals";
11
2
  import { OpenAI } from "../../llms/openai";
12
3
  import { loadAgent } from "../load";
13
4
  import { AgentExecutor } from "../index";
14
5
  import { SerpAPI } from "../tools/serpapi";
15
- test("Run agent from hub", () => __awaiter(void 0, void 0, void 0, function* () {
16
- const model = new OpenAI({});
17
- const tools = [SerpAPI()];
18
- const agent = yield loadAgent("lc://agents/zero-shot-react-description/agent.json", { llm: model, tools });
6
+ import { Calculator } from "../tools/calculator";
7
+ import { initializeAgentExecutor } from "../initialize";
8
+ test("Run agent from hub", async () => {
9
+ const model = new OpenAI({ temperature: 0 });
10
+ const tools = [new SerpAPI(), new Calculator()];
11
+ const agent = await loadAgent("lc://agents/zero-shot-react-description/agent.json", { llm: model, tools });
19
12
  const executor = AgentExecutor.fromAgentAndTools({
20
13
  agent,
21
14
  tools,
22
15
  returnIntermediateSteps: true,
23
16
  });
24
- const res = yield executor.call({
17
+ const res = await executor.call({
25
18
  input: "Who is Olivia Wilde's boyfriend? What is his current age raised to the 0.23 power?",
26
19
  });
27
20
  console.log(res);
28
- }), 30000);
21
+ }, 30000);
22
+ test("Run agent locally", async () => {
23
+ const model = new OpenAI({ temperature: 0 });
24
+ const tools = [new SerpAPI(), new Calculator()];
25
+ const executor = await initializeAgentExecutor(tools, model, "zero-shot-react-description");
26
+ console.log("Loaded agent.");
27
+ const input = "Who is Olivia Wilde's boyfriend?" +
28
+ " What is his current age raised to the 0.23 power?";
29
+ console.log(`Executing with input "${input}"...`);
30
+ const result = await executor.call({ input });
31
+ console.log(`Got output ${result.output}`);
32
+ }, 30000);
29
33
  //# sourceMappingURL=agent.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.test.js","sourceRoot":"","sources":["../../../../agents/tests/agent.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAQ,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,IAAI,CAAC,oBAAoB,EAAE,GAAS,EAAE;IACpC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,SAAS,CAC3B,oDAAoD,EACpD,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CACtB,CAAC;IACF,MAAM,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC;QAC/C,KAAK;QACL,KAAK;QACL,uBAAuB,EAAE,IAAI;KAC9B,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;QAC9B,KAAK,EACH,oFAAoF;KACvF,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAA,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"agent.test.js","sourceRoot":"","sources":["../../../../agents/tests/agent.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAQ,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAC,WAAW,EAAE,CAAC,EAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAW,CAAC,IAAI,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,SAAS,CAC3B,oDAAoD,EACpD,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CACtB,CAAC;IACF,MAAM,QAAQ,GAAG,aAAa,CAAC,iBAAiB,CAAC;QAC/C,KAAK;QACL,KAAK;QACL,uBAAuB,EAAE,IAAI;KAC9B,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;QAC9B,KAAK,EACH,oFAAoF;KACvF,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,EAAE,KAAK,CAAC,CAAC;AAGV,IAAI,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;IACnC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,EAAC,WAAW,EAAE,CAAC,EAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,CAAC,IAAI,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAC5C,KAAK,EAAE,KAAK,EAAE,6BAA6B,CAC5C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE7B,MAAM,KAAK,GAAG,kCAAkC;QAC9C,oDAAoD,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,MAAM,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAE9C,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7C,CAAC,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ import { test, expect } from "@jest/globals";
2
+ import { Calculator } from "../tools/calculator";
3
+ test("Calculator tool, sum", async () => {
4
+ const calculator = new Calculator();
5
+ const result = await calculator.call("1 + 1");
6
+ expect(result).toBe("2");
7
+ });
8
+ test("Calculator tool, product", async () => {
9
+ const calculator = new Calculator();
10
+ const result = await calculator.call("2 * 3");
11
+ expect(result).toBe("6");
12
+ });
13
+ test("Calculator tool, division", async () => {
14
+ const calculator = new Calculator();
15
+ const result = await calculator.call("7 /2");
16
+ expect(result).toBe("3.5");
17
+ });
18
+ test("Calculator tool, exponentiation", async () => {
19
+ const calculator = new Calculator();
20
+ const result = await calculator.call("2 ^ 8");
21
+ expect(result).toBe("256");
22
+ });
23
+ test("Calculator tool, complicated expression", async () => {
24
+ const calculator = new Calculator();
25
+ const result = await calculator.call("((2 + 3) * 4) / 2");
26
+ expect(result).toBe("10");
27
+ });
28
+ //# sourceMappingURL=calculator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculator.test.js","sourceRoot":"","sources":["../../../../agents/tests/calculator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IACtC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;IAC1C,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;IAC3C,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;IACjD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;IACzD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare abstract class Tool {
2
+ abstract call(arg: string): Promise<string>;
3
+ abstract name: string;
4
+ abstract description: string;
5
+ returnDirect: boolean;
6
+ }
@@ -0,0 +1,11 @@
1
+ export class Tool {
2
+ constructor() {
3
+ Object.defineProperty(this, "returnDirect", {
4
+ enumerable: true,
5
+ configurable: true,
6
+ writable: true,
7
+ value: false
8
+ });
9
+ }
10
+ }
11
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../agents/tools/base.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,IAAI;IAA1B;QAOE;;;;mBAAe,KAAK;WAAC;IACvB,CAAC;CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Tool } from "./base";
2
+ export declare class Calculator extends Tool {
3
+ name: string;
4
+ call(input: string): Promise<string>;
5
+ description: string;
6
+ }
@@ -0,0 +1,29 @@
1
+ import { Parser } from "expr-eval";
2
+ import { Tool } from "./base";
3
+ export class Calculator extends Tool {
4
+ constructor() {
5
+ super(...arguments);
6
+ Object.defineProperty(this, "name", {
7
+ enumerable: true,
8
+ configurable: true,
9
+ writable: true,
10
+ value: "calculator"
11
+ });
12
+ Object.defineProperty(this, "description", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: `Useful for getting the result of a math expression.
17
+ The input to this tool should be a valid mathmatical expression that can be parsed and evaluated by javascript's expr-eval`
18
+ });
19
+ }
20
+ async call(input) {
21
+ try {
22
+ return Parser.evaluate(input).toString();
23
+ }
24
+ catch (error) {
25
+ return "I don't know how to do that.";
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../../../agents/tools/calculator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,OAAO,UAAW,SAAQ,IAAI;IAApC;;QACE;;;;mBAAO,YAAY;WAAC;QAUpB;;;;mBAAc;6HAC6G;WAAC;IAC9H,CAAC;IAVC,KAAK,CAAC,IAAI,CAAC,KAAa;QACtB,IAAI;YACF,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;SAC1C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,8BAA8B,CAAC;SACvC;IACH,CAAC;CAIF"}
@@ -1,7 +1,3 @@
1
1
  export { SerpAPI } from "./serpapi";
2
- export interface Tool {
3
- call: (arg: string) => Promise<string>;
4
- name: string;
5
- description: string;
6
- returnDirect?: boolean;
7
- }
2
+ export { Calculator } from "./calculator";
3
+ export { Tool } from "./base";
@@ -1,2 +1,4 @@
1
1
  export { SerpAPI } from "./serpapi";
2
+ export { Calculator } from "./calculator";
3
+ export { Tool } from "./base";
2
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../agents/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../agents/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,3 +1,18 @@
1
- import { GoogleParameters } from "serpapi";
2
- import { Tool } from "./index";
3
- export declare const SerpAPI: (params?: Partial<GoogleParameters>, apiKey?: string) => Tool;
1
+ import type { GoogleParameters } from "serpapi";
2
+ import { Tool } from "./base";
3
+ /**
4
+ * Wrapper around SerpAPI.
5
+ *
6
+ * To use, you should have the `serpapi` package installed and the SERPAPI_API_KEY environment variable set.
7
+ */
8
+ export declare class SerpAPI extends Tool {
9
+ protected key: string;
10
+ protected params: Partial<GoogleParameters>;
11
+ constructor(apiKey?: string | undefined, params?: Partial<GoogleParameters>);
12
+ name: string;
13
+ /**
14
+ * Run query through SerpAPI and parse result
15
+ */
16
+ call(input: string): Promise<any>;
17
+ description: string;
18
+ }
@@ -1,46 +1,89 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { getJson } from "serpapi";
11
- export const SerpAPI = (params, apiKey) => {
12
- const key = apiKey !== null && apiKey !== void 0 ? apiKey : process.env.SERPAPI_API_KEY;
13
- return {
14
- name: "search",
15
- call: (input) => __awaiter(void 0, void 0, void 0, function* () {
16
- var _a, _b, _c, _d, _e, _f, _g;
17
- const res = yield getJson("google", Object.assign(Object.assign({}, params), { api_key: key, q: input }));
18
- if (res.error) {
19
- throw new Error(`Got error from serpAPI: ${res.error}`);
20
- }
21
- if ((_a = res.answer_box) === null || _a === void 0 ? void 0 : _a.answer) {
22
- return res.answer_box.answer;
23
- }
24
- if ((_b = res.answer_box) === null || _b === void 0 ? void 0 : _b.snippet) {
25
- return res.answer_box.snippet;
26
- }
27
- if ((_c = res.answer_box) === null || _c === void 0 ? void 0 : _c.snippet_highlighted_words) {
28
- return res.answer_box.snippet_highlighted_words[0];
29
- }
30
- if ((_d = res.sports_results) === null || _d === void 0 ? void 0 : _d.game_spotlight) {
31
- return res.sports_results.game_spotlight;
32
- }
33
- if ((_e = res.knowledge_graph) === null || _e === void 0 ? void 0 : _e.description) {
34
- return res.knowledge_graph.description;
35
- }
36
- if ((_g = (_f = res.organic_results) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.snippet) {
37
- return res.organic_results[0].snippet;
38
- }
39
- return "No good search result found";
40
- }),
41
- description:
42
- // eslint-disable-next-line max-len
43
- "a search engine. useful for when you need to answer questions about current events. input should be a search query.",
44
- };
45
- };
1
+ import { Tool } from "./base";
2
+ let getJson = null;
3
+ try {
4
+ // eslint-disable-next-line global-require,import/no-extraneous-dependencies
5
+ ({ getJson } = require("serpapi"));
6
+ }
7
+ catch (_a) {
8
+ // ignore error
9
+ }
10
+ /**
11
+ * Wrapper around SerpAPI.
12
+ *
13
+ * To use, you should have the `serpapi` package installed and the SERPAPI_API_KEY environment variable set.
14
+ */
15
+ export class SerpAPI extends Tool {
16
+ constructor(apiKey = process.env.SERPAPI_API_KEY, params = {}) {
17
+ super();
18
+ Object.defineProperty(this, "key", {
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true,
22
+ value: void 0
23
+ });
24
+ Object.defineProperty(this, "params", {
25
+ enumerable: true,
26
+ configurable: true,
27
+ writable: true,
28
+ value: void 0
29
+ });
30
+ Object.defineProperty(this, "name", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: "search"
35
+ });
36
+ Object.defineProperty(this, "description", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: "a search engine. useful for when you need to answer questions about current events. input should be a search query."
41
+ });
42
+ // Throw error at construction time.
43
+ if (getJson === null) {
44
+ throw new Error("Please install serpapi as a dependency with, e.g. `npm i serpapi`");
45
+ }
46
+ if (!apiKey) {
47
+ throw new Error("SerpAPI API key not set. You can set it as SERPAPI_API_KEY in your .env file, or pass it to SerpAPI.");
48
+ }
49
+ this.key = apiKey;
50
+ this.params = params;
51
+ }
52
+ /**
53
+ * Run query through SerpAPI and parse result
54
+ */
55
+ async call(input) {
56
+ var _a, _b, _c, _d, _e, _f, _g;
57
+ if (getJson === null) {
58
+ throw new Error("Please install serpapi as a dependency with, e.g. `npm i serpapi`");
59
+ }
60
+ const res = await getJson("google", {
61
+ ...this.params,
62
+ api_key: this.key,
63
+ q: input,
64
+ });
65
+ if (res.error) {
66
+ throw new Error(`Got error from serpAPI: ${res.error}`);
67
+ }
68
+ if ((_a = res.answer_box) === null || _a === void 0 ? void 0 : _a.answer) {
69
+ return res.answer_box.answer;
70
+ }
71
+ if ((_b = res.answer_box) === null || _b === void 0 ? void 0 : _b.snippet) {
72
+ return res.answer_box.snippet;
73
+ }
74
+ if ((_c = res.answer_box) === null || _c === void 0 ? void 0 : _c.snippet_highlighted_words) {
75
+ return res.answer_box.snippet_highlighted_words[0];
76
+ }
77
+ if ((_d = res.sports_results) === null || _d === void 0 ? void 0 : _d.game_spotlight) {
78
+ return res.sports_results.game_spotlight;
79
+ }
80
+ if ((_e = res.knowledge_graph) === null || _e === void 0 ? void 0 : _e.description) {
81
+ return res.knowledge_graph.description;
82
+ }
83
+ if ((_g = (_f = res.organic_results) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.snippet) {
84
+ return res.organic_results[0].snippet;
85
+ }
86
+ return "No good search result found";
87
+ }
88
+ }
46
89
  //# sourceMappingURL=serpapi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serpapi.js","sourceRoot":"","sources":["../../../../agents/tools/serpapi.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,SAAS,CAAC;AAGpD,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAkC,EAClC,MAAe,EACT,EAAE;IACR,MAAM,GAAG,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAClD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,CAAO,KAAa,EAAE,EAAE;;YAC5B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,kCAC7B,MAAM,KACT,OAAO,EAAE,GAAG,EACZ,CAAC,EAAE,KAAK,IACR,CAAC;YAEH,IAAI,GAAG,CAAC,KAAK,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;aACzD;YAED,IAAI,MAAA,GAAG,CAAC,UAAU,0CAAE,MAAM,EAAE;gBAC1B,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;aAC9B;YAED,IAAI,MAAA,GAAG,CAAC,UAAU,0CAAE,OAAO,EAAE;gBAC3B,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;aAC/B;YAED,IAAI,MAAA,GAAG,CAAC,UAAU,0CAAE,yBAAyB,EAAE;gBAC7C,OAAO,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;aACpD;YAED,IAAI,MAAA,GAAG,CAAC,cAAc,0CAAE,cAAc,EAAE;gBACtC,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;aAC1C;YAED,IAAI,MAAA,GAAG,CAAC,eAAe,0CAAE,WAAW,EAAE;gBACpC,OAAO,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC;aACxC;YAED,IAAI,MAAA,MAAA,GAAG,CAAC,eAAe,0CAAG,CAAC,CAAC,0CAAE,OAAO,EAAE;gBACrC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACvC;YAED,OAAO,6BAA6B,CAAC;QACvC,CAAC,CAAA;QAED,WAAW;QACT,mCAAmC;QACnC,qHAAqH;KACxH,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"serpapi.js","sourceRoot":"","sources":["../../../../agents/tools/serpapi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,IAAI,OAAO,GAA2B,IAAI,CAAC;AAE3C,IAAI;IACF,4EAA4E;IAC5E,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;CACpC;AAAC,WAAM;IACN,eAAe;CAChB;AAED;;;;GAIG;AACH,MAAM,OAAO,OAAQ,SAAQ,IAAI;IAK/B,YACE,SAA6B,OAAO,CAAC,GAAG,CAAC,eAAe,EACxD,SAAoC,EAAE;QAEtC,KAAK,EAAE,CAAC;QARV;;;;;WAAsB;QAEtB;;;;;WAA4C;QAyB5C;;;;mBAAO,QAAQ;WAAC;QAgDhB;;;;mBACE,qHAAqH;WAAC;QAlEtH,oCAAoC;QACpC,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QAED,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;SACH;QAED,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAID;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,KAAa;;QACtB,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QACD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;YAClC,GAAG,IAAI,CAAC,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,GAAG;YACjB,CAAC,EAAE,KAAK;SACT,CAAC,CAAC;QAEH,IAAI,GAAG,CAAC,KAAK,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;SACzD;QAED,IAAI,MAAA,GAAG,CAAC,UAAU,0CAAE,MAAM,EAAE;YAC1B,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;SAC9B;QAED,IAAI,MAAA,GAAG,CAAC,UAAU,0CAAE,OAAO,EAAE;YAC3B,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;SAC/B;QAED,IAAI,MAAA,GAAG,CAAC,UAAU,0CAAE,yBAAyB,EAAE;YAC7C,OAAO,GAAG,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;SACpD;QAED,IAAI,MAAA,GAAG,CAAC,cAAc,0CAAE,cAAc,EAAE;YACtC,OAAO,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;SAC1C;QAED,IAAI,MAAA,GAAG,CAAC,eAAe,0CAAE,WAAW,EAAE;YACpC,OAAO,GAAG,CAAC,eAAe,CAAC,WAAW,CAAC;SACxC;QAED,IAAI,MAAA,MAAA,GAAG,CAAC,eAAe,0CAAG,CAAC,CAAC,0CAAE,OAAO,EAAE;YACrC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;SACvC;QAED,OAAO,6BAA6B,CAAC;IACvC,CAAC;CAIF"}
@@ -1,12 +1,42 @@
1
- import { SerializedLLMChain } from "./index";
1
+ import { LLMChain, StuffDocumentsChain, VectorDBQAChain, ChatVectorDBQAChain } from "./index";
2
+ import { BaseMemory } from "../memory";
2
3
  export type ChainValues = Record<string, any>;
3
- type SerializedBaseChain = SerializedLLMChain;
4
- export declare abstract class BaseChain {
4
+ export type LoadValues = Record<string, any>;
5
+ declare const chainClasses: (typeof LLMChain | typeof StuffDocumentsChain | typeof VectorDBQAChain | typeof ChatVectorDBQAChain)[];
6
+ export type SerializedBaseChain = ReturnType<InstanceType<(typeof chainClasses)[number]>["serialize"]>;
7
+ export interface ChainInputs {
8
+ memory?: BaseMemory;
9
+ }
10
+ /**
11
+ * Base interface that all chains must implement.
12
+ */
13
+ export declare abstract class BaseChain implements ChainInputs {
14
+ memory?: BaseMemory;
15
+ /**
16
+ * Run the core logic of this chain and return the output
17
+ */
5
18
  abstract _call(values: ChainValues): Promise<ChainValues>;
19
+ /**
20
+ * Return the string type key uniquely identifying this class of chain.
21
+ */
6
22
  abstract _chainType(): string;
23
+ /**
24
+ * Return a json-like object representing this chain.
25
+ */
7
26
  abstract serialize(): SerializedBaseChain;
27
+ /**
28
+ * Run the core logic of this chain and add to output if desired.
29
+ *
30
+ * Wraps {@link _call} and handles memory.
31
+ */
8
32
  call(values: ChainValues): Promise<ChainValues>;
33
+ /**
34
+ * Call the chain on all inputs in the list
35
+ */
9
36
  apply(inputs: ChainValues[]): ChainValues[];
10
- static deserialize(data: SerializedBaseChain): Promise<BaseChain>;
37
+ /**
38
+ * Load a chain from a json-like object describing it.
39
+ */
40
+ static deserialize(data: SerializedBaseChain, values?: LoadValues): Promise<BaseChain>;
11
41
  }
12
42
  export {};
@@ -1,16 +1,54 @@
1
- import { LLMChain } from "./index";
1
+ import { LLMChain, StuffDocumentsChain, VectorDBQAChain, ChatVectorDBQAChain } from "./index";
2
+ const chainClasses = [LLMChain, StuffDocumentsChain, VectorDBQAChain, ChatVectorDBQAChain];
3
+ /**
4
+ * Base interface that all chains must implement.
5
+ */
2
6
  export class BaseChain {
3
- call(values) {
7
+ constructor() {
8
+ Object.defineProperty(this, "memory", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: void 0
13
+ });
14
+ }
15
+ /**
16
+ * Run the core logic of this chain and add to output if desired.
17
+ *
18
+ * Wraps {@link _call} and handles memory.
19
+ */
20
+ async call(values) {
21
+ const fullValues = structuredClone(values);
22
+ if (!(this.memory == null)) {
23
+ const newValues = await this.memory.loadMemoryVariables(values);
24
+ for (const [key, value] of Object.entries(newValues)) {
25
+ fullValues[key] = value;
26
+ }
27
+ }
4
28
  // TODO(sean) add callback support
5
- return this._call(values);
29
+ const outputValues = this._call(fullValues);
30
+ if (!(this.memory == null)) {
31
+ this.memory.saveContext(values, outputValues);
32
+ }
33
+ return outputValues;
6
34
  }
35
+ /**
36
+ * Call the chain on all inputs in the list
37
+ */
7
38
  apply(inputs) {
8
39
  return inputs.map(this.call);
9
40
  }
10
- static deserialize(data) {
41
+ /**
42
+ * Load a chain from a json-like object describing it.
43
+ */
44
+ static deserialize(data, values = {}) {
11
45
  switch (data._type) {
12
46
  case "llm_chain":
13
47
  return LLMChain.deserialize(data);
48
+ case "stuff_documents_chain":
49
+ return StuffDocumentsChain.deserialize(data);
50
+ case "vector_db_qa":
51
+ return VectorDBQAChain.deserialize(data, values);
14
52
  default:
15
53
  throw new Error(`Invalid prompt type in config: ${data._type}`);
16
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../chains/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,SAAS,CAAC;AAMvD,MAAM,OAAgB,SAAS;IAO7B,IAAI,CAAC,MAAmB;QACtB,kCAAkC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAqB;QACzB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,IAAyB;QAC1C,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,WAAW;gBACd,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpC;gBACE,MAAM,IAAI,KAAK,CACb,kCACG,IAA4B,CAAC,KAChC,EAAE,CACH,CAAC;SACL;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../chains/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAQ9F,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;AAU3F;;GAEG;AACH,MAAM,OAAgB,SAAS;IAA/B;QACE;;;;;WAAoB;IAmEtB,CAAC;IAlDC;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,MAAmB;QAC5B,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;YAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAChE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACpD,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACzB;SACF;QACD,kCAAkC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;SAC/C;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAqB;QACzB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,IAAyB,EACzB,SAAqB,EAAE;QAEvB,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,WAAW;gBACd,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpC,KAAK,uBAAuB;gBAC1B,OAAO,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,cAAc;gBACjB,OAAO,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnD;gBACE,MAAM,IAAI,KAAK,CACb,kCACG,IAA4B,CAAC,KAChC,EAAE,CACH,CAAC;SACL;IACH,CAAC;CACF"}