@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,45 @@
1
+ import { type AIService, type DBService, type Program } from '../index.js';
2
+ export type RewriteIn = {
3
+ query: string;
4
+ };
5
+ export type RewriteOut = {
6
+ rewrittenQuery: string;
7
+ };
8
+ export type RerankerIn = {
9
+ query: string;
10
+ items: string[];
11
+ };
12
+ export type RerankerOut = {
13
+ rankedItems: string[];
14
+ };
15
+ export interface DBLoaderOptions {
16
+ chunker?: (text: string) => string[];
17
+ rewriter?: Program<RewriteIn, RewriteOut>;
18
+ reranker?: Program<RerankerIn, RerankerOut>;
19
+ }
20
+ export interface DBManagerArgs {
21
+ ai: AIService;
22
+ db: DBService;
23
+ config?: DBLoaderOptions;
24
+ }
25
+ export interface Match {
26
+ score: number;
27
+ text: string;
28
+ }
29
+ export declare class DBManager {
30
+ private ai;
31
+ private db;
32
+ private chunker;
33
+ private rewriter?;
34
+ private reranker?;
35
+ constructor({ ai, db, config }: Readonly<DBManagerArgs>);
36
+ private defaultChunker;
37
+ insert: (text: Readonly<string | string[]>, options?: Readonly<{
38
+ batchSize?: number;
39
+ maxWordsPerChunk?: number;
40
+ minWordsPerChunk?: number;
41
+ }>) => Promise<void>;
42
+ query: (query: Readonly<string | string[] | number | number[]>, { topPercent }?: Readonly<{
43
+ topPercent?: number;
44
+ }> | undefined) => Promise<Match[][]>;
45
+ }
@@ -0,0 +1,159 @@
1
+ import {} from '../index.js';
2
+ const table = '_internal';
3
+ export class DBManager {
4
+ ai;
5
+ db;
6
+ chunker;
7
+ rewriter;
8
+ reranker;
9
+ constructor({ ai, db, config }) {
10
+ this.ai = ai;
11
+ this.db = db;
12
+ this.chunker = config?.chunker ?? this.defaultChunker;
13
+ this.reranker = config?.reranker;
14
+ this.rewriter = config?.rewriter;
15
+ }
16
+ defaultChunker = (text) => {
17
+ // Default chunking by paragraphs
18
+ return text.split(/\n\n+/);
19
+ };
20
+ insert = async (text, options) => {
21
+ try {
22
+ const chunkerInput = Array.isArray(text)
23
+ ? text.join('\n\n')
24
+ : text;
25
+ // Chunk the text using the specified or default chunking function
26
+ const initialChunks = this.chunker(chunkerInput).filter((chunk) => chunk.length > 0);
27
+ const maxWordsPerChunk = options?.maxWordsPerChunk;
28
+ const minWordsPerChunk = options?.minWordsPerChunk;
29
+ const chunks = processChunks({
30
+ initialChunks,
31
+ minWordsPerChunk,
32
+ maxWordsPerChunk
33
+ });
34
+ const bs = options?.batchSize ?? 10;
35
+ // Process chunks in batches of 10
36
+ for (let i = 0; i < chunks.length; i += bs) {
37
+ const batch = chunks.slice(i, i + bs);
38
+ // Get embeddings for the whole batch from the AI service in one call
39
+ const ret = await this.ai.embed({ texts: batch });
40
+ // Prepare batch for bulk upsert
41
+ const embeddings = ret.embeddings
42
+ .map((embedding, index) => ({
43
+ id: `chunk_${Date.now() + index}`, // Unique ID for each chunk, adjusted by index
44
+ table,
45
+ values: embedding,
46
+ metadata: { text: batch[index] ?? '' }
47
+ }))
48
+ .filter((v) => v.metadata?.text && v.metadata?.text.length > 0);
49
+ // Batch upsert embeddings
50
+ await this.db.batchUpsert(embeddings);
51
+ }
52
+ }
53
+ catch (error) {
54
+ throw new Error(`Error processing text: ${error}`);
55
+ }
56
+ };
57
+ query = async (query, { topPercent } = {}) => {
58
+ const texts = Array.isArray(query) ? query : [query];
59
+ if (typeof texts[0] === 'string' && this.rewriter) {
60
+ for (const [i, text] of texts.entries()) {
61
+ const { rewrittenQuery } = await this.rewriter.forward({
62
+ query: text
63
+ });
64
+ texts[i] = rewrittenQuery;
65
+ }
66
+ }
67
+ let queries;
68
+ if (typeof texts[0] === 'string') {
69
+ const embedResults = await this.ai.embed({ texts });
70
+ queries = embedResults.embeddings.map((values) => this.db.query({ table, values }));
71
+ }
72
+ else {
73
+ queries = texts.map((values) => this.db.query({ table, values }));
74
+ }
75
+ const queryResults = await Promise.all(queries);
76
+ const res = [];
77
+ for (const { matches } of queryResults) {
78
+ const m = matches
79
+ .filter((v) => v.metadata?.text && v.metadata?.text.length > 0)
80
+ .map(({ score, metadata }) => ({ score, text: metadata?.text ?? '' }));
81
+ const tp = topPercent && topPercent > 1 ? topPercent / 100 : topPercent;
82
+ const resultItems = tp ? getTopInPercent(m, tp) : m;
83
+ if (this.reranker) {
84
+ const { rankedItems } = await this.reranker.forward({
85
+ query: texts[0],
86
+ items: resultItems.map((item) => item.text)
87
+ });
88
+ const items = rankedItems
89
+ .map((item) => resultItems.find((r) => r.text === item))
90
+ .filter((v) => v !== undefined);
91
+ res.push(items);
92
+ }
93
+ else {
94
+ res.push(resultItems);
95
+ }
96
+ }
97
+ return res;
98
+ };
99
+ }
100
+ const processChunks = ({ initialChunks, maxWordsPerChunk = 350, minWordsPerChunk = 250 }) => {
101
+ const chunks = [];
102
+ let currentChunk = '';
103
+ let currentWordCount = 0;
104
+ initialChunks.forEach((chunk) => {
105
+ const words = chunk.split(/\s+/); // Split the chunk into words
106
+ const wordCount = words.length; // Count words in the current chunk
107
+ if (currentWordCount + wordCount <= maxWordsPerChunk) {
108
+ // Add to the current chunk if within the max size limit
109
+ currentChunk += chunk + '\n\n';
110
+ currentWordCount += wordCount;
111
+ }
112
+ else if (currentWordCount > 0 &&
113
+ currentWordCount + wordCount <= maxWordsPerChunk * 1.5) {
114
+ // If the total word count exceeds the limit but is less than 150% of the maxWordsPerChunk
115
+ currentChunk += chunk + '\n\n';
116
+ currentWordCount += wordCount;
117
+ }
118
+ else {
119
+ // If the current chunk is not empty and adding the new chunk exceeds the adjusted limit
120
+ if (currentWordCount > minWordsPerChunk) {
121
+ chunks.push(currentChunk.trim());
122
+ currentChunk = '';
123
+ currentWordCount = 0;
124
+ }
125
+ // Handle the case where the chunk itself is larger than the limit
126
+ if (wordCount > maxWordsPerChunk) {
127
+ const remainingWords = words;
128
+ while (remainingWords.length > maxWordsPerChunk * 1.5) {
129
+ const slice = remainingWords.splice(0, maxWordsPerChunk);
130
+ chunks.push(slice.join(' '));
131
+ }
132
+ // Add the last portion if it fits the condition of being within 150% of maxWordsPerChunk
133
+ if (remainingWords.length > 0) {
134
+ currentChunk += remainingWords.join(' ') + '\n\n';
135
+ currentWordCount += remainingWords.length;
136
+ }
137
+ }
138
+ else {
139
+ // If the new chunk is smaller than the maximum words per chunk
140
+ currentChunk = chunk + '\n\n';
141
+ currentWordCount = wordCount;
142
+ }
143
+ }
144
+ });
145
+ // Push the last chunk if it exists and meets the minimum words condition
146
+ if (currentWordCount > minWordsPerChunk || chunks.length === 0) {
147
+ chunks.push(currentChunk.trim());
148
+ }
149
+ return chunks;
150
+ };
151
+ const getTopInPercent = (entries, percent = 0.1) => {
152
+ // Sort entries by score in ascending order
153
+ const sortedEntries = [...entries].sort((a, b) => a.score - b.score);
154
+ // Calculate the number of entries to take (top 10%)
155
+ const topTenPercentCount = Math.ceil(sortedEntries.length * percent);
156
+ // Return the top 10% of entries
157
+ return sortedEntries.slice(0, topTenPercentCount);
158
+ };
159
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../../src/docs/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Generate, type GenerateOptions, type ProgramForwardOptions } from '../dsp/index.js';
2
+ import type { AIService } from '../text/index.js';
3
+ import type { RerankerIn, RerankerOut } from './manager.js';
4
+ export declare class DefaultResultReranker extends Generate<RerankerIn, RerankerOut> {
5
+ constructor(ai: AIService, options?: Readonly<GenerateOptions>);
6
+ forward: (input: Readonly<RerankerIn>, options?: Readonly<ProgramForwardOptions>) => Promise<RerankerOut>;
7
+ }
@@ -0,0 +1,26 @@
1
+ import { extractIdAndText, Generate } from '../dsp/index.js';
2
+ export class DefaultResultReranker extends Generate {
3
+ constructor(ai, options) {
4
+ const signature = `"You are a re-ranker assistant tasked with evaluating a set of content items in relation to a specific question. Your role involves critically analyzing each content item to determine its relevance to the question and re-ranking them accordingly. This process includes assigning a relevance score from 0 to 10 to each content item based on how well it answers the question, its coverage of the topic, and the reliability of its information. This re-ranked list should start with the content item that is most relevant to the question and end with the least relevant. Output only the list."
5
+ query: string, items: string[] -> rankedItems: string[] "list of id, 5-words Rationale, relevance score"`;
6
+ super(ai, signature, options);
7
+ }
8
+ forward = async (input, options) => {
9
+ const { rankedItems } = await super.forward(input, options);
10
+ const sortedIndexes = rankedItems.map((item) => {
11
+ const { id: index } = extractIdAndText(item);
12
+ return index;
13
+ });
14
+ // Ensure all elements are strings and filter out null or undefined
15
+ const sortedItems = input.items
16
+ .map((_, index) => {
17
+ const originalIndex = sortedIndexes[index];
18
+ return originalIndex !== undefined
19
+ ? input.items[originalIndex]
20
+ : undefined;
21
+ })
22
+ .filter((item) => item !== undefined);
23
+ return { rankedItems: sortedItems };
24
+ };
25
+ }
26
+ //# sourceMappingURL=reranker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranker.js","sourceRoot":"","sources":["../../../../src/docs/reranker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,QAAQ,EAGT,MAAM,iBAAiB,CAAC;AAKzB,MAAM,OAAO,qBAAsB,SAAQ,QAAiC;IAC1E,YAAY,EAAa,EAAE,OAAmC;QAC5D,MAAM,SAAS,GAAG;6GACuF,CAAC;QAE1G,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAEe,OAAO,GAAG,KAAK,EAC7B,KAA2B,EAC3B,OAAyC,EACnB,EAAE;QACxB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE5D,MAAM,aAAa,GAAa,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,mEAAmE;QACnE,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAChB,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,aAAa,KAAK,SAAS;gBAChC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;gBAC5B,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAExD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACtC,CAAC,CAAC;CACH"}
@@ -0,0 +1,4 @@
1
+ import { type AIService, Generate, type GenerateOptions, type RewriteIn, type RewriteOut } from '../index.js';
2
+ export declare class DefaultQueryRewriter extends Generate<RewriteIn, RewriteOut> {
3
+ constructor(ai: AIService, options?: Readonly<GenerateOptions>);
4
+ }
@@ -0,0 +1,9 @@
1
+ import { Generate } from '../index.js';
2
+ export class DefaultQueryRewriter extends Generate {
3
+ constructor(ai, options) {
4
+ const signature = `"You are a query rewriter assistant tasked with rewriting a given query to improve its clarity, specificity, and relevance. Your role involves analyzing the query to identify any ambiguities, generalizations, or irrelevant information and then rephrasing it to make it more focused and precise. The rewritten query should be concise, easy to understand, and directly related to the original query. Output only the rewritten query."
5
+ query: string -> rewrittenQuery: string`;
6
+ super(ai, signature, options);
7
+ }
8
+ }
9
+ //# sourceMappingURL=rewriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewriter.js","sourceRoot":"","sources":["../../../../src/docs/rewriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAIT,MAAM,aAAa,CAAC;AAErB,MAAM,OAAO,oBAAqB,SAAQ,QAA+B;IACvE,YAAY,EAAa,EAAE,OAAmC;QAC5D,MAAM,SAAS,GAAG;4CACsB,CAAC;QAEzC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /// <reference types="node" />
4
+ export interface ApacheTikaArgs {
5
+ url?: string | URL;
6
+ fetch?: typeof fetch;
7
+ }
8
+ export interface ApacheTikaConvertOptions {
9
+ format?: 'text' | 'html';
10
+ }
11
+ export declare class ApacheTika {
12
+ private tikaUrl;
13
+ private fetch?;
14
+ constructor(args?: Readonly<ApacheTikaArgs>);
15
+ private _convert;
16
+ convert(files: Readonly<string[] | Blob[]>, options?: Readonly<{
17
+ batchSize?: number;
18
+ format?: 'html' | 'text';
19
+ }>): Promise<string[]>;
20
+ }
21
+ export default ApacheTika;
@@ -0,0 +1,46 @@
1
+ import { createReadStream } from 'fs';
2
+ export class ApacheTika {
3
+ tikaUrl;
4
+ fetch;
5
+ constructor(args) {
6
+ const _args = args ?? { url: 'http://localhost:9998/' };
7
+ this.tikaUrl = new URL('/tika', _args.url);
8
+ this.fetch = _args.fetch;
9
+ }
10
+ async _convert(file, options) {
11
+ const fileData = typeof file === 'string' ? createReadStream(file) : file.stream();
12
+ if (!fileData) {
13
+ throw new Error('Failed to read file data');
14
+ }
15
+ const acceptValue = options?.format === 'html' ? 'text/html' : 'text/plain';
16
+ try {
17
+ const res = await (this.fetch ?? fetch)(this.tikaUrl, {
18
+ body: fileData,
19
+ headers: { Accept: acceptValue },
20
+ duplex: 'half',
21
+ method: 'PUT'
22
+ });
23
+ if (!res.ok) {
24
+ throw new Error(`Failed to upload file: ${res.statusText}`);
25
+ }
26
+ const text = await res.text();
27
+ return text;
28
+ }
29
+ catch (error) {
30
+ throw new Error(`Error converting file: ${error}`);
31
+ }
32
+ }
33
+ async convert(files, options) {
34
+ const results = [];
35
+ const bs = options?.batchSize ?? 10;
36
+ for (let i = 0; i < files.length; i += bs) {
37
+ const batch = files.slice(i, i + bs);
38
+ const uploadPromises = batch.map((files) => this._convert(files, { format: options?.format }));
39
+ const batchResults = await Promise.all(uploadPromises);
40
+ results.push(...batchResults);
41
+ }
42
+ return results;
43
+ }
44
+ }
45
+ export default ApacheTika;
46
+ //# sourceMappingURL=tika.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tika.js","sourceRoot":"","sources":["../../../../src/docs/tika.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAWtC,MAAM,OAAO,UAAU;IACb,OAAO,CAAM;IACb,KAAK,CAAgB;IAE7B,YAAY,IAA+B;QACzC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,IAAmB,EACnB,OAA4C;QAE5C,MAAM,QAAQ,GACZ,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEpE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;gBACpD,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAkC,EAClC,OAAoE;QAEpE,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC;QAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAClD,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { extractionState } from './extract.js';
2
+ import type { Signature } from './sig.js';
3
+ export interface Assertion {
4
+ fn(values: Record<string, unknown>): boolean | undefined;
5
+ message?: string;
6
+ optional?: boolean;
7
+ }
8
+ export interface StreamingAssertion {
9
+ fieldName: string;
10
+ fn(content: string): boolean | undefined;
11
+ message?: string;
12
+ optional?: boolean;
13
+ }
14
+ export declare class AssertionError extends Error {
15
+ private values;
16
+ private optional?;
17
+ constructor({ message, values, optional }: Readonly<{
18
+ message: string;
19
+ values: Record<string, unknown>;
20
+ optional?: boolean;
21
+ }>);
22
+ getValue: () => Record<string, unknown>;
23
+ getOptional: () => boolean | undefined;
24
+ getFixingInstructions: (_sig: Readonly<Signature>) => {
25
+ name: string;
26
+ title: string;
27
+ description: string;
28
+ }[];
29
+ }
30
+ export declare const assertAssertions: (asserts: readonly Assertion[], values: Record<string, unknown>) => void;
31
+ export declare const assertStreamingAssertions: (asserts: readonly StreamingAssertion[], values: Record<string, unknown>, xstate: Readonly<extractionState>, content: string) => void;
32
+ export declare const assertRequiredFields: (sig: Readonly<Signature>, values: Record<string, unknown>) => void;
@@ -0,0 +1,88 @@
1
+ export class AssertionError extends Error {
2
+ values;
3
+ optional;
4
+ constructor({ message, values, optional }) {
5
+ super(message);
6
+ this.values = values;
7
+ this.optional = optional;
8
+ this.name = this.constructor.name;
9
+ this.stack = new Error().stack;
10
+ }
11
+ getValue = () => this.values;
12
+ getOptional = () => this.optional;
13
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
14
+ getFixingInstructions = (_sig) => {
15
+ const extraFields = [];
16
+ // for (const f of sig.getOutputFields()) {
17
+ // extraFields.push({
18
+ // name: `past_${f.name}`,
19
+ // title: `Past ${f.title}`,
20
+ // description: JSON.stringify(this.values[f.name])
21
+ // });
22
+ // }
23
+ extraFields.push({
24
+ name: 'instructions',
25
+ title: 'Instructions',
26
+ description: this.message
27
+ });
28
+ return extraFields;
29
+ };
30
+ }
31
+ export const assertAssertions = (asserts, values) => {
32
+ for (const assert of asserts) {
33
+ const { fn, message, optional } = assert;
34
+ try {
35
+ const res = fn(values);
36
+ if (res === undefined) {
37
+ continue;
38
+ }
39
+ if (!res && message) {
40
+ throw new AssertionError({ message, values, optional });
41
+ }
42
+ }
43
+ catch (e) {
44
+ const message = e.message;
45
+ throw new AssertionError({ message, values, optional });
46
+ }
47
+ }
48
+ };
49
+ export const assertStreamingAssertions = (asserts, values, xstate, content) => {
50
+ if (!xstate.currField ||
51
+ xstate.s === -1 ||
52
+ !asserts ||
53
+ asserts.length === 0) {
54
+ return;
55
+ }
56
+ const fieldAsserts = asserts.filter((a) => a.fieldName === xstate.currField?.name);
57
+ if (fieldAsserts.length === 0) {
58
+ return;
59
+ }
60
+ const currValue = content.substring(xstate.s);
61
+ for (const assert of fieldAsserts) {
62
+ const { message, optional, fn } = assert;
63
+ try {
64
+ const res = fn(currValue);
65
+ if (res === undefined) {
66
+ continue;
67
+ }
68
+ if (!res && message) {
69
+ throw new AssertionError({ message, values, optional });
70
+ }
71
+ }
72
+ catch (e) {
73
+ const message = e.message;
74
+ throw new AssertionError({ message, values, optional });
75
+ }
76
+ }
77
+ };
78
+ export const assertRequiredFields = (sig, values) => {
79
+ const fields = sig.getOutputFields();
80
+ const missingFields = fields.filter((f) => !(f.name in values));
81
+ if (missingFields.length > 0) {
82
+ throw new AssertionError({
83
+ message: `Missing required fields: ${missingFields.map((f) => f.name).join(', ')}`,
84
+ values
85
+ });
86
+ }
87
+ };
88
+ //# sourceMappingURL=asserts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asserts.js","sourceRoot":"","sources":["../../../../src/dsp/asserts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export type Counter = {
2
+ [key: string]: number;
3
+ };
4
+ /**
5
+ * Counts the occurrences of each token in an array of tokens.
6
+ *
7
+ * This function supports the preprocessing step for NLP tasks like text similarity
8
+ * and classification by transforming text into a bag-of-words model, facilitating
9
+ * the comparison of different texts based on their content.
10
+ *
11
+ * @param tokens An array of string tokens.
12
+ * @returns A Counter object mapping each token to its count.
13
+ */
14
+ export declare function countTokens(tokens: readonly string[]): Counter;
15
+ /**
16
+ * Normalizes text by lowercasing, removing punctuation, and squashing multiple spaces.
17
+ *
18
+ * This normalization is crucial in NLP for reducing the complexity of the text data,
19
+ * minimizing the variance between words that should be considered the same for analysis
20
+ * purposes (e.g., "Dog!" and "dog" are treated as the same word).
21
+ *
22
+ * @param s A string to be normalized.
23
+ * @returns A normalized string.
24
+ */
25
+ export declare function normalizeText(s: string): string;
26
+ /**
27
+ * Calculates the Exact Match (EM) score between a prediction and ground truth.
28
+ *
29
+ * The EM score is a strict metric used in machine learning to assess if the predicted
30
+ * answer matches the ground truth exactly, commonly used in tasks like question answering.
31
+ *
32
+ * @param prediction The predicted text.
33
+ * @param groundTruth The actual correct text.
34
+ * @returns A boolean indicating if the prediction exactly matches the ground truth.
35
+ */
36
+ export declare function emScore(prediction: string, groundTruth: string): boolean;
37
+ /**
38
+ * Calculates the F1 score between a prediction and ground truth.
39
+ *
40
+ * The F1 score is a harmonic mean of precision and recall, widely used in NLP to measure
41
+ * a model's accuracy in considering both false positives and false negatives, offering a
42
+ * balance for evaluating classification models.
43
+ *
44
+ * @param prediction The predicted text.
45
+ * @param groundTruth The actual correct text.
46
+ * @returns The F1 score as a number.
47
+ */
48
+ export declare function f1Score(prediction: string, groundTruth: string): number;
49
+ /**
50
+ * Calculates a novel F1 score, taking into account a history of interaction and excluding stopwords.
51
+ *
52
+ * This metric extends the F1 score by considering contextual relevance and filtering out common words
53
+ * that might skew the assessment of the prediction's quality, especially in conversational models or
54
+ * when historical context is relevant.
55
+ *
56
+ * @param history The historical context or preceding interactions.
57
+ * @param prediction The predicted text.
58
+ * @param groundTruth The actual correct text.
59
+ * @param returnRecall Optionally return the recall score instead of F1.
60
+ * @returns The novel F1 or recall score as a number.
61
+ */
62
+ export declare function novelF1ScoreOptimized(history: string, prediction: string, groundTruth: string, returnRecall?: boolean): number;