@ax-llm/ax 9.0.0

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 (351) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +547 -0
  3. package/build/module/docs/assets/icons.d.ts +1 -0
  4. package/build/module/docs/assets/icons.js +19 -0
  5. package/build/module/docs/assets/icons.js.map +1 -0
  6. package/build/module/docs/assets/main.d.ts +1 -0
  7. package/build/module/docs/assets/main.js +629 -0
  8. package/build/module/docs/assets/main.js.map +1 -0
  9. package/build/module/docs/assets/navigation.d.ts +1 -0
  10. package/build/module/docs/assets/navigation.js +3 -0
  11. package/build/module/docs/assets/navigation.js.map +1 -0
  12. package/build/module/docs/assets/search.d.ts +1 -0
  13. package/build/module/docs/assets/search.js +3 -0
  14. package/build/module/docs/assets/search.js.map +1 -0
  15. package/build/module/src/ai/anthropic/api.d.ts +24 -0
  16. package/build/module/src/ai/anthropic/api.js +188 -0
  17. package/build/module/src/ai/anthropic/api.js.map +1 -0
  18. package/build/module/src/ai/anthropic/index.d.ts +2 -0
  19. package/build/module/src/ai/anthropic/index.js +3 -0
  20. package/build/module/src/ai/anthropic/index.js.map +1 -0
  21. package/build/module/src/ai/anthropic/info.d.ts +2 -0
  22. package/build/module/src/ai/anthropic/info.js +34 -0
  23. package/build/module/src/ai/anthropic/info.js.map +1 -0
  24. package/build/module/src/ai/anthropic/types.d.ts +140 -0
  25. package/build/module/src/ai/anthropic/types.js +13 -0
  26. package/build/module/src/ai/anthropic/types.js.map +1 -0
  27. package/build/module/src/ai/azure-openai/api.d.ts +34 -0
  28. package/build/module/src/ai/azure-openai/api.js +42 -0
  29. package/build/module/src/ai/azure-openai/api.js.map +1 -0
  30. package/build/module/src/ai/azure-openai/index.d.ts +1 -0
  31. package/build/module/src/ai/azure-openai/index.js +2 -0
  32. package/build/module/src/ai/azure-openai/index.js.map +1 -0
  33. package/build/module/src/ai/balance.d.ts +26 -0
  34. package/build/module/src/ai/balance.js +87 -0
  35. package/build/module/src/ai/balance.js.map +1 -0
  36. package/build/module/src/ai/base.d.ts +56 -0
  37. package/build/module/src/ai/base.js +328 -0
  38. package/build/module/src/ai/base.js.map +1 -0
  39. package/build/module/src/ai/cohere/api.d.ts +35 -0
  40. package/build/module/src/ai/cohere/api.js +214 -0
  41. package/build/module/src/ai/cohere/api.js.map +1 -0
  42. package/build/module/src/ai/cohere/index.d.ts +2 -0
  43. package/build/module/src/ai/cohere/index.js +3 -0
  44. package/build/module/src/ai/cohere/index.js.map +1 -0
  45. package/build/module/src/ai/cohere/info.d.ts +2 -0
  46. package/build/module/src/ai/cohere/info.js +52 -0
  47. package/build/module/src/ai/cohere/info.js.map +1 -0
  48. package/build/module/src/ai/cohere/types.d.ts +85 -0
  49. package/build/module/src/ai/cohere/types.js +23 -0
  50. package/build/module/src/ai/cohere/types.js.map +1 -0
  51. package/build/module/src/ai/deepseek/api.d.ts +27 -0
  52. package/build/module/src/ai/deepseek/api.js +38 -0
  53. package/build/module/src/ai/deepseek/api.js.map +1 -0
  54. package/build/module/src/ai/deepseek/index.d.ts +2 -0
  55. package/build/module/src/ai/deepseek/index.js +3 -0
  56. package/build/module/src/ai/deepseek/index.js.map +1 -0
  57. package/build/module/src/ai/deepseek/info.d.ts +2 -0
  58. package/build/module/src/ai/deepseek/info.js +16 -0
  59. package/build/module/src/ai/deepseek/info.js.map +1 -0
  60. package/build/module/src/ai/deepseek/types.d.ts +8 -0
  61. package/build/module/src/ai/deepseek/types.js +10 -0
  62. package/build/module/src/ai/deepseek/types.js.map +1 -0
  63. package/build/module/src/ai/google-gemini/api.d.ts +34 -0
  64. package/build/module/src/ai/google-gemini/api.js +268 -0
  65. package/build/module/src/ai/google-gemini/api.js.map +1 -0
  66. package/build/module/src/ai/google-gemini/index.d.ts +2 -0
  67. package/build/module/src/ai/google-gemini/index.js +3 -0
  68. package/build/module/src/ai/google-gemini/index.js.map +1 -0
  69. package/build/module/src/ai/google-gemini/info.d.ts +6 -0
  70. package/build/module/src/ai/google-gemini/info.js +29 -0
  71. package/build/module/src/ai/google-gemini/info.js.map +1 -0
  72. package/build/module/src/ai/google-gemini/types.d.ts +151 -0
  73. package/build/module/src/ai/google-gemini/types.js +38 -0
  74. package/build/module/src/ai/google-gemini/types.js.map +1 -0
  75. package/build/module/src/ai/groq/api.d.ts +22 -0
  76. package/build/module/src/ai/groq/api.js +29 -0
  77. package/build/module/src/ai/groq/api.js.map +1 -0
  78. package/build/module/src/ai/groq/index.d.ts +1 -0
  79. package/build/module/src/ai/groq/index.js +2 -0
  80. package/build/module/src/ai/groq/index.js.map +1 -0
  81. package/build/module/src/ai/huggingface/api.d.ts +32 -0
  82. package/build/module/src/ai/huggingface/api.js +99 -0
  83. package/build/module/src/ai/huggingface/api.js.map +1 -0
  84. package/build/module/src/ai/huggingface/index.d.ts +2 -0
  85. package/build/module/src/ai/huggingface/index.js +3 -0
  86. package/build/module/src/ai/huggingface/index.js.map +1 -0
  87. package/build/module/src/ai/huggingface/info.d.ts +6 -0
  88. package/build/module/src/ai/huggingface/info.js +6 -0
  89. package/build/module/src/ai/huggingface/info.js.map +1 -0
  90. package/build/module/src/ai/huggingface/types.d.ts +42 -0
  91. package/build/module/src/ai/huggingface/types.js +9 -0
  92. package/build/module/src/ai/huggingface/types.js.map +1 -0
  93. package/build/module/src/ai/index.d.ts +28 -0
  94. package/build/module/src/ai/index.js +54 -0
  95. package/build/module/src/ai/index.js.map +1 -0
  96. package/build/module/src/ai/mistral/api.d.ts +27 -0
  97. package/build/module/src/ai/mistral/api.js +38 -0
  98. package/build/module/src/ai/mistral/api.js.map +1 -0
  99. package/build/module/src/ai/mistral/index.d.ts +2 -0
  100. package/build/module/src/ai/mistral/index.js +3 -0
  101. package/build/module/src/ai/mistral/index.js.map +1 -0
  102. package/build/module/src/ai/mistral/info.d.ts +2 -0
  103. package/build/module/src/ai/mistral/info.js +34 -0
  104. package/build/module/src/ai/mistral/info.js.map +1 -0
  105. package/build/module/src/ai/mistral/types.d.ts +18 -0
  106. package/build/module/src/ai/mistral/types.js +21 -0
  107. package/build/module/src/ai/mistral/types.js.map +1 -0
  108. package/build/module/src/ai/ollama/api.d.ts +24 -0
  109. package/build/module/src/ai/ollama/api.js +28 -0
  110. package/build/module/src/ai/ollama/api.js.map +1 -0
  111. package/build/module/src/ai/ollama/index.d.ts +1 -0
  112. package/build/module/src/ai/ollama/index.js +2 -0
  113. package/build/module/src/ai/ollama/index.js.map +1 -0
  114. package/build/module/src/ai/openai/api.d.ts +49 -0
  115. package/build/module/src/ai/openai/api.js +333 -0
  116. package/build/module/src/ai/openai/api.js.map +1 -0
  117. package/build/module/src/ai/openai/index.d.ts +2 -0
  118. package/build/module/src/ai/openai/index.js +3 -0
  119. package/build/module/src/ai/openai/index.js.map +1 -0
  120. package/build/module/src/ai/openai/info.d.ts +6 -0
  121. package/build/module/src/ai/openai/info.js +50 -0
  122. package/build/module/src/ai/openai/info.js.map +1 -0
  123. package/build/module/src/ai/openai/types.d.ts +192 -0
  124. package/build/module/src/ai/openai/types.js +35 -0
  125. package/build/module/src/ai/openai/types.js.map +1 -0
  126. package/build/module/src/ai/together/api.d.ts +22 -0
  127. package/build/module/src/ai/together/api.js +29 -0
  128. package/build/module/src/ai/together/api.js.map +1 -0
  129. package/build/module/src/ai/together/index.d.ts +1 -0
  130. package/build/module/src/ai/together/index.js +2 -0
  131. package/build/module/src/ai/together/index.js.map +1 -0
  132. package/build/module/src/ai/together/info.d.ts +2 -0
  133. package/build/module/src/ai/together/info.js +2 -0
  134. package/build/module/src/ai/together/info.js.map +1 -0
  135. package/build/module/src/ai/types.d.ts +70 -0
  136. package/build/module/src/ai/types.js +2 -0
  137. package/build/module/src/ai/types.js.map +1 -0
  138. package/build/module/src/ai/util.d.ts +13 -0
  139. package/build/module/src/ai/util.js +112 -0
  140. package/build/module/src/ai/util.js.map +1 -0
  141. package/build/module/src/db/base.d.ts +24 -0
  142. package/build/module/src/db/base.js +90 -0
  143. package/build/module/src/db/base.js.map +1 -0
  144. package/build/module/src/db/cloudflare.d.ts +20 -0
  145. package/build/module/src/db/cloudflare.js +98 -0
  146. package/build/module/src/db/cloudflare.js.map +1 -0
  147. package/build/module/src/db/index.d.ts +12 -0
  148. package/build/module/src/db/index.js +23 -0
  149. package/build/module/src/db/index.js.map +1 -0
  150. package/build/module/src/db/memory.d.ts +23 -0
  151. package/build/module/src/db/memory.js +125 -0
  152. package/build/module/src/db/memory.js.map +1 -0
  153. package/build/module/src/db/pinecone.d.ts +20 -0
  154. package/build/module/src/db/pinecone.js +71 -0
  155. package/build/module/src/db/pinecone.js.map +1 -0
  156. package/build/module/src/db/types.d.ts +35 -0
  157. package/build/module/src/db/types.js +3 -0
  158. package/build/module/src/db/types.js.map +1 -0
  159. package/build/module/src/db/weaviate.d.ts +20 -0
  160. package/build/module/src/db/weaviate.js +127 -0
  161. package/build/module/src/db/weaviate.js.map +1 -0
  162. package/build/module/src/docs/index.d.ts +4 -0
  163. package/build/module/src/docs/index.js +5 -0
  164. package/build/module/src/docs/index.js.map +1 -0
  165. package/build/module/src/docs/manager.d.ts +45 -0
  166. package/build/module/src/docs/manager.js +159 -0
  167. package/build/module/src/docs/manager.js.map +1 -0
  168. package/build/module/src/docs/reranker.d.ts +7 -0
  169. package/build/module/src/docs/reranker.js +26 -0
  170. package/build/module/src/docs/reranker.js.map +1 -0
  171. package/build/module/src/docs/rewriter.d.ts +4 -0
  172. package/build/module/src/docs/rewriter.js +9 -0
  173. package/build/module/src/docs/rewriter.js.map +1 -0
  174. package/build/module/src/docs/tika.d.ts +21 -0
  175. package/build/module/src/docs/tika.js +46 -0
  176. package/build/module/src/docs/tika.js.map +1 -0
  177. package/build/module/src/dsp/asserts.d.ts +32 -0
  178. package/build/module/src/dsp/asserts.js +88 -0
  179. package/build/module/src/dsp/asserts.js.map +1 -0
  180. package/build/module/src/dsp/eval.d.ts +62 -0
  181. package/build/module/src/dsp/eval.js +120 -0
  182. package/build/module/src/dsp/eval.js.map +1 -0
  183. package/build/module/src/dsp/evaluate.d.ts +12 -0
  184. package/build/module/src/dsp/evaluate.js +32 -0
  185. package/build/module/src/dsp/evaluate.js.map +1 -0
  186. package/build/module/src/dsp/extract.d.ts +25 -0
  187. package/build/module/src/dsp/extract.js +152 -0
  188. package/build/module/src/dsp/extract.js.map +1 -0
  189. package/build/module/src/dsp/generate.d.ts +52 -0
  190. package/build/module/src/dsp/generate.js +335 -0
  191. package/build/module/src/dsp/generate.js.map +1 -0
  192. package/build/module/src/dsp/generate.test.d.ts +1 -0
  193. package/build/module/src/dsp/generate.test.js +41 -0
  194. package/build/module/src/dsp/generate.test.js.map +1 -0
  195. package/build/module/src/dsp/index.d.ts +14 -0
  196. package/build/module/src/dsp/index.js +10 -0
  197. package/build/module/src/dsp/index.js.map +1 -0
  198. package/build/module/src/dsp/loader.d.ts +25 -0
  199. package/build/module/src/dsp/loader.js +87 -0
  200. package/build/module/src/dsp/loader.js.map +1 -0
  201. package/build/module/src/dsp/optimize.d.ts +29 -0
  202. package/build/module/src/dsp/optimize.js +100 -0
  203. package/build/module/src/dsp/optimize.js.map +1 -0
  204. package/build/module/src/dsp/parser.d.ts +86 -0
  205. package/build/module/src/dsp/parser.js +1437 -0
  206. package/build/module/src/dsp/parser.js.map +1 -0
  207. package/build/module/src/dsp/program.d.ts +64 -0
  208. package/build/module/src/dsp/program.js +129 -0
  209. package/build/module/src/dsp/program.js.map +1 -0
  210. package/build/module/src/dsp/prompt.d.ts +25 -0
  211. package/build/module/src/dsp/prompt.js +178 -0
  212. package/build/module/src/dsp/prompt.js.map +1 -0
  213. package/build/module/src/dsp/registry.d.ts +6 -0
  214. package/build/module/src/dsp/registry.js +15 -0
  215. package/build/module/src/dsp/registry.js.map +1 -0
  216. package/build/module/src/dsp/router.d.ts +24 -0
  217. package/build/module/src/dsp/router.js +72 -0
  218. package/build/module/src/dsp/router.js.map +1 -0
  219. package/build/module/src/dsp/sig.d.ts +37 -0
  220. package/build/module/src/dsp/sig.js +160 -0
  221. package/build/module/src/dsp/sig.js.map +1 -0
  222. package/build/module/src/dsp/sig.test.d.ts +1 -0
  223. package/build/module/src/dsp/sig.test.js +25 -0
  224. package/build/module/src/dsp/sig.test.js.map +1 -0
  225. package/build/module/src/dsp/stopwords.d.ts +1 -0
  226. package/build/module/src/dsp/stopwords.js +1163 -0
  227. package/build/module/src/dsp/stopwords.js.map +1 -0
  228. package/build/module/src/dsp/strutil.d.ts +9 -0
  229. package/build/module/src/dsp/strutil.js +52 -0
  230. package/build/module/src/dsp/strutil.js.map +1 -0
  231. package/build/module/src/dsp/util.d.ts +1 -0
  232. package/build/module/src/dsp/util.js +14 -0
  233. package/build/module/src/dsp/util.js.map +1 -0
  234. package/build/module/src/examples/agent.d.ts +1 -0
  235. package/build/module/src/examples/agent.js +24 -0
  236. package/build/module/src/examples/agent.js.map +1 -0
  237. package/build/module/src/examples/chain-of-thought.d.ts +1 -0
  238. package/build/module/src/examples/chain-of-thought.js +18 -0
  239. package/build/module/src/examples/chain-of-thought.js.map +1 -0
  240. package/build/module/src/examples/customer-support.d.ts +1 -0
  241. package/build/module/src/examples/customer-support.js +22 -0
  242. package/build/module/src/examples/customer-support.js.map +1 -0
  243. package/build/module/src/examples/fibonacci.d.ts +1 -0
  244. package/build/module/src/examples/fibonacci.js +9 -0
  245. package/build/module/src/examples/fibonacci.js.map +1 -0
  246. package/build/module/src/examples/food-search.d.ts +1 -0
  247. package/build/module/src/examples/food-search.js +137 -0
  248. package/build/module/src/examples/food-search.js.map +1 -0
  249. package/build/module/src/examples/marketing.d.ts +1 -0
  250. package/build/module/src/examples/marketing.js +26 -0
  251. package/build/module/src/examples/marketing.js.map +1 -0
  252. package/build/module/src/examples/meetings.d.ts +1 -0
  253. package/build/module/src/examples/meetings.js +149 -0
  254. package/build/module/src/examples/meetings.js.map +1 -0
  255. package/build/module/src/examples/qna-tune.d.ts +1 -0
  256. package/build/module/src/examples/qna-tune.js +29 -0
  257. package/build/module/src/examples/qna-tune.js.map +1 -0
  258. package/build/module/src/examples/qna-use-tuned.d.ts +1 -0
  259. package/build/module/src/examples/qna-use-tuned.js +25 -0
  260. package/build/module/src/examples/qna-use-tuned.js.map +1 -0
  261. package/build/module/src/examples/rag-docs.d.ts +1 -0
  262. package/build/module/src/examples/rag-docs.js +14 -0
  263. package/build/module/src/examples/rag-docs.js.map +1 -0
  264. package/build/module/src/examples/rag.d.ts +1 -0
  265. package/build/module/src/examples/rag.js +14 -0
  266. package/build/module/src/examples/rag.js.map +1 -0
  267. package/build/module/src/examples/react.d.ts +1 -0
  268. package/build/module/src/examples/react.js +36 -0
  269. package/build/module/src/examples/react.js.map +1 -0
  270. package/build/module/src/examples/routing.d.ts +1 -0
  271. package/build/module/src/examples/routing.js +48 -0
  272. package/build/module/src/examples/routing.js.map +1 -0
  273. package/build/module/src/examples/streaming1.d.ts +1 -0
  274. package/build/module/src/examples/streaming1.js +15 -0
  275. package/build/module/src/examples/streaming1.js.map +1 -0
  276. package/build/module/src/examples/streaming2.d.ts +1 -0
  277. package/build/module/src/examples/streaming2.js +24 -0
  278. package/build/module/src/examples/streaming2.js.map +1 -0
  279. package/build/module/src/examples/summarize.d.ts +1 -0
  280. package/build/module/src/examples/summarize.js +27 -0
  281. package/build/module/src/examples/summarize.js.map +1 -0
  282. package/build/module/src/examples/vectordb.d.ts +1 -0
  283. package/build/module/src/examples/vectordb.js +14 -0
  284. package/build/module/src/examples/vectordb.js.map +1 -0
  285. package/build/module/src/funcs/code.d.ts +10 -0
  286. package/build/module/src/funcs/code.js +63 -0
  287. package/build/module/src/funcs/code.js.map +1 -0
  288. package/build/module/src/funcs/embed.d.ts +8 -0
  289. package/build/module/src/funcs/embed.js +29 -0
  290. package/build/module/src/funcs/embed.js.map +1 -0
  291. package/build/module/src/funcs/index.d.ts +2 -0
  292. package/build/module/src/funcs/index.js +3 -0
  293. package/build/module/src/funcs/index.js.map +1 -0
  294. package/build/module/src/index.d.ts +9 -0
  295. package/build/module/src/index.js +15 -0
  296. package/build/module/src/index.js.map +1 -0
  297. package/build/module/src/prompts/agent.d.ts +24 -0
  298. package/build/module/src/prompts/agent.js +65 -0
  299. package/build/module/src/prompts/agent.js.map +1 -0
  300. package/build/module/src/prompts/cot.d.ts +9 -0
  301. package/build/module/src/prompts/cot.js +17 -0
  302. package/build/module/src/prompts/cot.js.map +1 -0
  303. package/build/module/src/prompts/index.d.ts +4 -0
  304. package/build/module/src/prompts/index.js +5 -0
  305. package/build/module/src/prompts/index.js.map +1 -0
  306. package/build/module/src/prompts/prompts.test.d.ts +1 -0
  307. package/build/module/src/prompts/prompts.test.js +48 -0
  308. package/build/module/src/prompts/prompts.test.js.map +1 -0
  309. package/build/module/src/prompts/rag.d.ts +23 -0
  310. package/build/module/src/prompts/rag.js +30 -0
  311. package/build/module/src/prompts/rag.js.map +1 -0
  312. package/build/module/src/prompts/react.d.ts +8 -0
  313. package/build/module/src/prompts/react.js +22 -0
  314. package/build/module/src/prompts/react.js.map +1 -0
  315. package/build/module/src/text/functions.d.ts +25 -0
  316. package/build/module/src/text/functions.js +55 -0
  317. package/build/module/src/text/functions.js.map +1 -0
  318. package/build/module/src/text/index.d.ts +3 -0
  319. package/build/module/src/text/index.js +4 -0
  320. package/build/module/src/text/index.js.map +1 -0
  321. package/build/module/src/text/jsonschema.d.ts +2 -0
  322. package/build/module/src/text/jsonschema.js +96 -0
  323. package/build/module/src/text/jsonschema.js.map +1 -0
  324. package/build/module/src/text/memory.d.ts +21 -0
  325. package/build/module/src/text/memory.js +73 -0
  326. package/build/module/src/text/memory.js.map +1 -0
  327. package/build/module/src/text/types.d.ts +57 -0
  328. package/build/module/src/text/types.js +2 -0
  329. package/build/module/src/text/types.js.map +1 -0
  330. package/build/module/src/trace/index.d.ts +171 -0
  331. package/build/module/src/trace/index.js +67 -0
  332. package/build/module/src/trace/index.js.map +1 -0
  333. package/build/module/src/types/index.d.ts +81 -0
  334. package/build/module/src/types/index.js +2 -0
  335. package/build/module/src/types/index.js.map +1 -0
  336. package/build/module/src/util/apicall.d.ts +21 -0
  337. package/build/module/src/util/apicall.js +137 -0
  338. package/build/module/src/util/apicall.js.map +1 -0
  339. package/build/module/src/util/log.d.ts +14 -0
  340. package/build/module/src/util/log.js +30 -0
  341. package/build/module/src/util/log.js.map +1 -0
  342. package/build/module/src/util/other.d.ts +1 -0
  343. package/build/module/src/util/other.js +4 -0
  344. package/build/module/src/util/other.js.map +1 -0
  345. package/build/module/src/util/stream.d.ts +10 -0
  346. package/build/module/src/util/stream.js +28 -0
  347. package/build/module/src/util/stream.js.map +1 -0
  348. package/build/module/src/util/transform.d.ts +8 -0
  349. package/build/module/src/util/transform.js +57 -0
  350. package/build/module/src/util/transform.js.map +1 -0
  351. package/package.json +111 -0
@@ -0,0 +1,120 @@
1
+ import { stopwords } from './stopwords.js';
2
+ /**
3
+ * Filters out tokens based on a set of exclusion tokens.
4
+ *
5
+ * @param tokens The array of tokens to filter.
6
+ * @param exclusions A set containing tokens to exclude.
7
+ * @returns An array of filtered tokens.
8
+ */
9
+ function filterTokens(tokens, exclusions) {
10
+ return tokens.filter((token) => !exclusions.has(token));
11
+ }
12
+ /**
13
+ * Counts the occurrences of each token in an array of tokens.
14
+ *
15
+ * This function supports the preprocessing step for NLP tasks like text similarity
16
+ * and classification by transforming text into a bag-of-words model, facilitating
17
+ * the comparison of different texts based on their content.
18
+ *
19
+ * @param tokens An array of string tokens.
20
+ * @returns A Counter object mapping each token to its count.
21
+ */
22
+ export function countTokens(tokens) {
23
+ const counter = {};
24
+ for (const token of tokens) {
25
+ counter[token] = (counter[token] || 0) + 1;
26
+ }
27
+ return counter;
28
+ }
29
+ /**
30
+ * Normalizes text by lowercasing, removing punctuation, and squashing multiple spaces.
31
+ *
32
+ * This normalization is crucial in NLP for reducing the complexity of the text data,
33
+ * minimizing the variance between words that should be considered the same for analysis
34
+ * purposes (e.g., "Dog!" and "dog" are treated as the same word).
35
+ *
36
+ * @param s A string to be normalized.
37
+ * @returns A normalized string.
38
+ */
39
+ export function normalizeText(s) {
40
+ s = s.normalize('NFD');
41
+ s = s.replace(/\b(a|an|the)\b/g, ' ');
42
+ s = s.split(/\s+/).join(' ');
43
+ s = s.replace(/[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/g, '');
44
+ return s.toLowerCase();
45
+ }
46
+ /**
47
+ * Calculates the Exact Match (EM) score between a prediction and ground truth.
48
+ *
49
+ * The EM score is a strict metric used in machine learning to assess if the predicted
50
+ * answer matches the ground truth exactly, commonly used in tasks like question answering.
51
+ *
52
+ * @param prediction The predicted text.
53
+ * @param groundTruth The actual correct text.
54
+ * @returns A boolean indicating if the prediction exactly matches the ground truth.
55
+ */
56
+ export function emScore(prediction, groundTruth) {
57
+ return normalizeText(prediction) === normalizeText(groundTruth);
58
+ }
59
+ /**
60
+ * Calculates the F1 score between a prediction and ground truth.
61
+ *
62
+ * The F1 score is a harmonic mean of precision and recall, widely used in NLP to measure
63
+ * a model's accuracy in considering both false positives and false negatives, offering a
64
+ * balance for evaluating classification models.
65
+ *
66
+ * @param prediction The predicted text.
67
+ * @param groundTruth The actual correct text.
68
+ * @returns The F1 score as a number.
69
+ */
70
+ export function f1Score(prediction, groundTruth) {
71
+ const predictionTokens = normalizeText(prediction).split(' ');
72
+ const groundTruthTokens = normalizeText(groundTruth).split(' ');
73
+ // Calculate the intersection of common tokens between prediction and ground truth
74
+ const predictionCounts = countTokens(predictionTokens);
75
+ const groundTruthCounts = countTokens(groundTruthTokens);
76
+ let numSame = 0;
77
+ for (const token in predictionCounts) {
78
+ const v1 = predictionCounts[token] ?? 0;
79
+ const v2 = groundTruthCounts[token] ?? 0;
80
+ numSame += Math.min(v1, v2);
81
+ }
82
+ if (numSame === 0) {
83
+ return 0;
84
+ }
85
+ const precision = numSame / predictionTokens.length;
86
+ const recall = numSame / groundTruthTokens.length;
87
+ return (2 * precision * recall) / (precision + recall);
88
+ }
89
+ /**
90
+ * Calculates a novel F1 score, taking into account a history of interaction and excluding stopwords.
91
+ *
92
+ * This metric extends the F1 score by considering contextual relevance and filtering out common words
93
+ * that might skew the assessment of the prediction's quality, especially in conversational models or
94
+ * when historical context is relevant.
95
+ *
96
+ * @param history The historical context or preceding interactions.
97
+ * @param prediction The predicted text.
98
+ * @param groundTruth The actual correct text.
99
+ * @param returnRecall Optionally return the recall score instead of F1.
100
+ * @returns The novel F1 or recall score as a number.
101
+ */
102
+ export function novelF1ScoreOptimized(history, prediction, groundTruth, returnRecall = false) {
103
+ // Normalize and split the input texts into tokens
104
+ const historyTokens = normalizeText(history).split(' ');
105
+ let predictionTokens = normalizeText(prediction).split(' ');
106
+ let groundTruthTokens = normalizeText(groundTruth).split(' ');
107
+ // Combine stopwords and history tokens for exclusion
108
+ const exclusions = new Set([...stopwords, ...historyTokens]);
109
+ // Filter prediction and ground truth tokens against the exclusions
110
+ predictionTokens = filterTokens(predictionTokens, exclusions);
111
+ groundTruthTokens = filterTokens(groundTruthTokens, exclusions);
112
+ // Proceed with calculating common tokens, precision, recall, and F1 score as previously outlined
113
+ // Placeholder for the calculation logic
114
+ const numSame = 0; // This should be calculated as before
115
+ const precision = numSame / predictionTokens.length;
116
+ const recall = numSame / groundTruthTokens.length;
117
+ const f1 = (2 * precision * recall) / (precision + recall);
118
+ return returnRecall ? recall : f1;
119
+ }
120
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../../../src/dsp/eval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Example, MetricFn } from './optimize.js';
2
+ import type { GenIn, GenOut, Program } from './program.js';
3
+ export type EvaluateArgs<IN extends GenIn, OUT extends GenOut> = {
4
+ program: Readonly<Program<IN, OUT>>;
5
+ examples: Readonly<Example[]>;
6
+ };
7
+ export declare class TestPrompt<IN extends GenIn = GenIn, OUT extends GenOut = GenOut> {
8
+ private program;
9
+ private examples;
10
+ constructor({ program, examples }: Readonly<EvaluateArgs<IN, OUT>>);
11
+ run(metricFn: MetricFn): Promise<void>;
12
+ }
@@ -0,0 +1,32 @@
1
+ import { updateProgressBar } from './util.js';
2
+ export class TestPrompt {
3
+ program;
4
+ examples;
5
+ constructor({ program, examples = [] }) {
6
+ if (examples.length == 0) {
7
+ throw new Error('No examples found');
8
+ }
9
+ this.program = program;
10
+ this.examples = examples;
11
+ }
12
+ async run(metricFn) {
13
+ const st = new Date().getTime();
14
+ const total = this.examples.length;
15
+ let successCount = 0;
16
+ for (let i = 0; i < total; i++) {
17
+ const ex = this.examples[i];
18
+ if (!ex) {
19
+ throw new Error('Invalid example');
20
+ }
21
+ const res = await this.program.forward(ex);
22
+ const success = metricFn({ prediction: res, example: ex });
23
+ if (success) {
24
+ successCount++;
25
+ }
26
+ const et = new Date().getTime() - st;
27
+ updateProgressBar(i, total, successCount, et, 30, 'Testing Prompt');
28
+ }
29
+ console.log('\nPerformance: ', successCount, '/', total, 'Accuracy: ', successCount / total, '\n');
30
+ }
31
+ }
32
+ //# sourceMappingURL=evaluate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../../src/dsp/evaluate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAO9C,MAAM,OAAO,UAAU;IACb,OAAO,CAA6B;IACpC,QAAQ,CAAsB;IAEtC,YAAY,EAAE,OAAO,EAAE,QAAQ,GAAG,EAAE,EAAmC;QACrE,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,QAAkB;QACjC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnC,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACrC,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAQ,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3D,IAAI,OAAO,EAAE,CAAC;gBACZ,YAAY,EAAE,CAAC;YACjB,CAAC;YAED,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;YACrC,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,CAAC,GAAG,CACT,iBAAiB,EACjB,YAAY,EACZ,GAAG,EACH,KAAK,EACL,YAAY,EACZ,YAAY,GAAG,KAAK,EACpB,IAAI,CACL,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { Field, Signature } from './sig.js';
2
+ export declare const extractValues: (sig: Readonly<Signature>, values: Record<string, unknown>, content: string) => void;
3
+ export interface extractionState {
4
+ currField?: Field;
5
+ s: number;
6
+ }
7
+ export declare const streamingExtractValues: (sig: Readonly<Signature>, values: Record<string, unknown>, state: extractionState, content: string) => void;
8
+ export declare const streamingExtractFinalValue: (values: Record<string, unknown>, state: extractionState, content: string) => void;
9
+ export declare class ValidationError extends Error {
10
+ private field;
11
+ private value;
12
+ constructor({ message, field, value }: Readonly<{
13
+ message: string;
14
+ field: Field;
15
+ value: string;
16
+ }>);
17
+ getField: () => Field;
18
+ getValue: () => string;
19
+ getFixingInstructions: () => {
20
+ name: string;
21
+ title: string;
22
+ description: string;
23
+ }[];
24
+ }
25
+ export declare const extractBlock: (input: string) => string;
@@ -0,0 +1,152 @@
1
+ import JSON5 from 'json5';
2
+ export const extractValues = (sig, values, content) => {
3
+ const xstate = { s: -1 };
4
+ streamingExtractValues(sig, values, xstate, content);
5
+ streamingExtractFinalValue(values, xstate, content);
6
+ };
7
+ export const streamingExtractValues = (sig, values,
8
+ // eslint-disable-next-line functional/prefer-immutable-types
9
+ state, content) => {
10
+ const fields = sig.getOutputFields();
11
+ for (const field of fields) {
12
+ if (field.name in values) {
13
+ continue;
14
+ }
15
+ const prefix = field.title + ':';
16
+ const e = content.indexOf(prefix, state.s + 1);
17
+ if (e === -1) {
18
+ continue;
19
+ }
20
+ if (state.currField) {
21
+ const val = content
22
+ .substring(state.s, e)
23
+ .trim()
24
+ .replace(/---+$/, '')
25
+ .trim();
26
+ if (state.currField.type) {
27
+ values[state.currField.name] = validateAndParseJson(state.currField, val);
28
+ }
29
+ else {
30
+ values[state.currField.name] = val;
31
+ }
32
+ }
33
+ state.s = e + prefix.length + 1;
34
+ state.currField = field;
35
+ }
36
+ };
37
+ export const streamingExtractFinalValue = (values,
38
+ // eslint-disable-next-line functional/prefer-immutable-types
39
+ state, content) => {
40
+ if (!state.currField) {
41
+ return;
42
+ }
43
+ const val = content.substring(state.s).trim().replace(/---+$/, '').trim();
44
+ if (state.currField.type) {
45
+ values[state.currField.name] = validateAndParseJson(state.currField, val);
46
+ }
47
+ else {
48
+ values[state.currField.name] = val;
49
+ }
50
+ };
51
+ function validateAndParseJson(field, jsonString) {
52
+ const typeObj = field.type;
53
+ if (!typeObj) {
54
+ return jsonString;
55
+ }
56
+ const text = extractBlock(jsonString);
57
+ // Attempt to parse the JSON string based on the expected type, if not a string
58
+ let value;
59
+ if (typeObj.name !== 'string' || typeObj.isArray) {
60
+ try {
61
+ value = JSON5.parse(text);
62
+ }
63
+ catch (e) {
64
+ const exp = typeObj.isArray ? `array of ${typeObj.name}` : typeObj.name;
65
+ const message = `Error '${e.message}', expected '${exp}' got '${text}'`;
66
+ throw new ValidationError({ message, field, value: text });
67
+ }
68
+ }
69
+ else {
70
+ // If the expected type is a string and not an array, use the jsonString directly
71
+ value = text;
72
+ }
73
+ // Now, validate the parsed value or direct string
74
+ const validateSingleValue = (expectedType, val) => {
75
+ switch (expectedType) {
76
+ case 'string':
77
+ return typeof val === 'string';
78
+ case 'number':
79
+ return typeof val === 'number';
80
+ case 'boolean':
81
+ return typeof val === 'boolean';
82
+ case 'json':
83
+ return typeof val === 'object' || Array.isArray(val);
84
+ default:
85
+ return false; // Unknown type
86
+ }
87
+ };
88
+ if (typeObj.isArray) {
89
+ if (!Array.isArray(value)) {
90
+ const message = `Expected an array, but got '${typeof value}'.`;
91
+ throw new ValidationError({ message, field, value: jsonString });
92
+ }
93
+ for (const item of value) {
94
+ if (!validateSingleValue(typeObj.name, item)) {
95
+ const message = `Expected all items in array to be of type '${typeObj.name}', but found an item of type '${typeof item}'.`;
96
+ throw new ValidationError({ message, field, value: jsonString });
97
+ }
98
+ }
99
+ }
100
+ else {
101
+ if (!validateSingleValue(typeObj.name, value)) {
102
+ const message = `Expected value of type '${typeObj.name}', but got '${typeof value}'.`;
103
+ throw new ValidationError({ message, field, value: jsonString });
104
+ }
105
+ }
106
+ // If validation passes, return null to indicate no error
107
+ return value;
108
+ }
109
+ export class ValidationError extends Error {
110
+ field;
111
+ value;
112
+ constructor({ message, field, value }) {
113
+ super(message);
114
+ this.field = field;
115
+ this.value = value;
116
+ this.name = this.constructor.name;
117
+ Error.captureStackTrace(this, this.constructor);
118
+ }
119
+ getField = () => this.field;
120
+ getValue = () => this.value;
121
+ getFixingInstructions = () => {
122
+ const f = this.field;
123
+ const extraFields = [
124
+ {
125
+ name: `past_${f.name}`,
126
+ title: `Past ${f.title}`,
127
+ description: this.value
128
+ },
129
+ {
130
+ name: 'instructions',
131
+ title: 'Instructions',
132
+ description: this.message
133
+ }
134
+ ];
135
+ return extraFields;
136
+ };
137
+ }
138
+ export const extractBlock = (input) => {
139
+ const jsonBlockPattern = /```([A-Za-z]+)?\s*([\s\S]*?)\s*```/g;
140
+ const match = jsonBlockPattern.exec(input);
141
+ if (!match) {
142
+ return input;
143
+ }
144
+ if (match.length === 3) {
145
+ return match[2];
146
+ }
147
+ if (match.length === 2) {
148
+ return match[1];
149
+ }
150
+ return input;
151
+ };
152
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../src/dsp/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { TextResponseFunctionCall } from '../ai/index.js';
2
+ import { type AITextFunction, Memory } from '../text/index.js';
3
+ import type { AIMemory, AIService } from '../text/index.js';
4
+ import { type AITextChatRequest } from '../types/index.js';
5
+ import { type Assertion, type StreamingAssertion } from './asserts.js';
6
+ import { type GenIn, type GenOut, Program, type ProgramForwardOptions, type Value } from './program.js';
7
+ import { PromptTemplate } from './prompt.js';
8
+ import { Signature } from './sig.js';
9
+ export interface GenerateOptions {
10
+ functions?: AITextFunction[];
11
+ functionCall?: AITextChatRequest['functionCall'];
12
+ promptTemplate?: typeof PromptTemplate;
13
+ asserts?: Assertion[];
14
+ streamingAsserts?: StreamingAssertion[];
15
+ }
16
+ export type GenerateResult<OUT extends GenOut> = OUT & {
17
+ functions?: TextResponseFunctionCall[];
18
+ };
19
+ export interface ResponseHandlerArgs<T> {
20
+ res: T;
21
+ usageInfo: {
22
+ ai: string;
23
+ model: string;
24
+ };
25
+ mem: AIMemory;
26
+ sessionId?: string;
27
+ traceId?: string;
28
+ }
29
+ export declare class Generate<IN extends GenIn = GenIn, OUT extends GenerateResult<GenOut> = GenerateResult<GenOut>> extends Program<IN, OUT> {
30
+ private signature;
31
+ private sigHash;
32
+ private ai;
33
+ private pt;
34
+ private asserts;
35
+ private streamingAsserts;
36
+ private options?;
37
+ private funcProc?;
38
+ private functionList?;
39
+ constructor(ai: AIService, signature: Readonly<Signature | string>, options?: Readonly<GenerateOptions>);
40
+ private updateSigForFunctions;
41
+ private _setExamples;
42
+ setExamples(examples: Readonly<Record<string, Value>[]>): void;
43
+ addAssert: (fn: Assertion['fn'], message?: string, optional?: boolean) => void;
44
+ addStreamingAssert: (fieldName: string, fn: StreamingAssertion['fn'], message?: string, optional?: boolean) => void;
45
+ private forwardSendRequest;
46
+ private forwardCore;
47
+ private processSteamingResponse;
48
+ private processResponse;
49
+ private _forward;
50
+ forward(values: IN, options?: Readonly<ProgramForwardOptions>): Promise<OUT>;
51
+ processFunctions: (functionCalls: readonly TextResponseFunctionCall[], mem: Readonly<Memory>, sessionId?: string, traceId?: string) => Promise<void>;
52
+ }