@effect/ai 0.26.0 → 0.27.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 (188) hide show
  1. package/Chat/package.json +6 -0
  2. package/EmbeddingModel/package.json +6 -0
  3. package/IdGenerator/package.json +6 -0
  4. package/LanguageModel/package.json +6 -0
  5. package/Model/package.json +6 -0
  6. package/Prompt/package.json +6 -0
  7. package/Response/package.json +6 -0
  8. package/Telemetry/package.json +6 -0
  9. package/Tool/package.json +6 -0
  10. package/Toolkit/package.json +6 -0
  11. package/dist/cjs/AiError.js +575 -11
  12. package/dist/cjs/AiError.js.map +1 -1
  13. package/dist/cjs/Chat.js +302 -0
  14. package/dist/cjs/Chat.js.map +1 -0
  15. package/dist/cjs/EmbeddingModel.js +184 -0
  16. package/dist/cjs/EmbeddingModel.js.map +1 -0
  17. package/dist/cjs/IdGenerator.js +255 -0
  18. package/dist/cjs/IdGenerator.js.map +1 -0
  19. package/dist/cjs/LanguageModel.js +584 -0
  20. package/dist/cjs/LanguageModel.js.map +1 -0
  21. package/dist/cjs/McpServer.js +12 -4
  22. package/dist/cjs/McpServer.js.map +1 -1
  23. package/dist/cjs/Model.js +118 -0
  24. package/dist/cjs/Model.js.map +1 -0
  25. package/dist/cjs/Prompt.js +649 -0
  26. package/dist/cjs/Prompt.js.map +1 -0
  27. package/dist/cjs/Response.js +635 -0
  28. package/dist/cjs/Response.js.map +1 -0
  29. package/dist/cjs/Telemetry.js +176 -0
  30. package/dist/cjs/Telemetry.js.map +1 -0
  31. package/dist/cjs/Tokenizer.js +87 -8
  32. package/dist/cjs/Tokenizer.js.map +1 -1
  33. package/dist/cjs/Tool.js +556 -0
  34. package/dist/cjs/Tool.js.map +1 -0
  35. package/dist/cjs/Toolkit.js +279 -0
  36. package/dist/cjs/Toolkit.js.map +1 -0
  37. package/dist/cjs/index.js +21 -19
  38. package/dist/dts/AiError.d.ts +577 -9
  39. package/dist/dts/AiError.d.ts.map +1 -1
  40. package/dist/dts/Chat.d.ts +356 -0
  41. package/dist/dts/Chat.d.ts.map +1 -0
  42. package/dist/dts/EmbeddingModel.d.ts +153 -0
  43. package/dist/dts/EmbeddingModel.d.ts.map +1 -0
  44. package/dist/dts/IdGenerator.d.ts +272 -0
  45. package/dist/dts/IdGenerator.d.ts.map +1 -0
  46. package/dist/dts/LanguageModel.d.ts +458 -0
  47. package/dist/dts/LanguageModel.d.ts.map +1 -0
  48. package/dist/dts/McpSchema.d.ts +25 -25
  49. package/dist/dts/McpServer.d.ts +6 -4
  50. package/dist/dts/McpServer.d.ts.map +1 -1
  51. package/dist/dts/Model.d.ts +124 -0
  52. package/dist/dts/Model.d.ts.map +1 -0
  53. package/dist/dts/Prompt.d.ts +1119 -0
  54. package/dist/dts/Prompt.d.ts.map +1 -0
  55. package/dist/dts/Response.d.ts +1519 -0
  56. package/dist/dts/Response.d.ts.map +1 -0
  57. package/dist/dts/Telemetry.d.ts +520 -0
  58. package/dist/dts/Telemetry.d.ts.map +1 -0
  59. package/dist/dts/Tokenizer.d.ts +131 -13
  60. package/dist/dts/Tokenizer.d.ts.map +1 -1
  61. package/dist/dts/Tool.d.ts +876 -0
  62. package/dist/dts/Tool.d.ts.map +1 -0
  63. package/dist/dts/Toolkit.d.ts +310 -0
  64. package/dist/dts/Toolkit.d.ts.map +1 -0
  65. package/dist/dts/index.d.ts +498 -13
  66. package/dist/dts/index.d.ts.map +1 -1
  67. package/dist/esm/AiError.js +570 -10
  68. package/dist/esm/AiError.js.map +1 -1
  69. package/dist/esm/Chat.js +291 -0
  70. package/dist/esm/Chat.js.map +1 -0
  71. package/dist/esm/EmbeddingModel.js +173 -0
  72. package/dist/esm/EmbeddingModel.js.map +1 -0
  73. package/dist/esm/IdGenerator.js +245 -0
  74. package/dist/esm/IdGenerator.js.map +1 -0
  75. package/dist/esm/LanguageModel.js +572 -0
  76. package/dist/esm/LanguageModel.js.map +1 -0
  77. package/dist/esm/McpServer.js +12 -4
  78. package/dist/esm/McpServer.js.map +1 -1
  79. package/dist/esm/Model.js +108 -0
  80. package/dist/esm/Model.js.map +1 -0
  81. package/dist/esm/Prompt.js +633 -0
  82. package/dist/esm/Prompt.js.map +1 -0
  83. package/dist/esm/Response.js +619 -0
  84. package/dist/esm/Response.js.map +1 -0
  85. package/dist/esm/Telemetry.js +166 -0
  86. package/dist/esm/Telemetry.js.map +1 -0
  87. package/dist/esm/Tokenizer.js +87 -8
  88. package/dist/esm/Tokenizer.js.map +1 -1
  89. package/dist/esm/Tool.js +534 -0
  90. package/dist/esm/Tool.js.map +1 -0
  91. package/dist/esm/Toolkit.js +269 -0
  92. package/dist/esm/Toolkit.js.map +1 -0
  93. package/dist/esm/index.js +498 -13
  94. package/dist/esm/index.js.map +1 -1
  95. package/package.json +76 -68
  96. package/src/AiError.ts +739 -9
  97. package/src/Chat.ts +546 -0
  98. package/src/EmbeddingModel.ts +311 -0
  99. package/src/IdGenerator.ts +320 -0
  100. package/src/LanguageModel.ts +1074 -0
  101. package/src/McpServer.ts +337 -194
  102. package/src/Model.ts +155 -0
  103. package/src/Prompt.ts +1616 -0
  104. package/src/Response.ts +2131 -0
  105. package/src/Telemetry.ts +655 -0
  106. package/src/Tokenizer.ts +145 -24
  107. package/src/Tool.ts +1267 -0
  108. package/src/Toolkit.ts +516 -0
  109. package/src/index.ts +499 -13
  110. package/AiChat/package.json +0 -6
  111. package/AiEmbeddingModel/package.json +0 -6
  112. package/AiInput/package.json +0 -6
  113. package/AiLanguageModel/package.json +0 -6
  114. package/AiModel/package.json +0 -6
  115. package/AiResponse/package.json +0 -6
  116. package/AiTelemetry/package.json +0 -6
  117. package/AiTool/package.json +0 -6
  118. package/AiToolkit/package.json +0 -6
  119. package/dist/cjs/AiChat.js +0 -122
  120. package/dist/cjs/AiChat.js.map +0 -1
  121. package/dist/cjs/AiEmbeddingModel.js +0 -109
  122. package/dist/cjs/AiEmbeddingModel.js.map +0 -1
  123. package/dist/cjs/AiInput.js +0 -458
  124. package/dist/cjs/AiInput.js.map +0 -1
  125. package/dist/cjs/AiLanguageModel.js +0 -351
  126. package/dist/cjs/AiLanguageModel.js.map +0 -1
  127. package/dist/cjs/AiModel.js +0 -37
  128. package/dist/cjs/AiModel.js.map +0 -1
  129. package/dist/cjs/AiResponse.js +0 -681
  130. package/dist/cjs/AiResponse.js.map +0 -1
  131. package/dist/cjs/AiTelemetry.js +0 -58
  132. package/dist/cjs/AiTelemetry.js.map +0 -1
  133. package/dist/cjs/AiTool.js +0 -150
  134. package/dist/cjs/AiTool.js.map +0 -1
  135. package/dist/cjs/AiToolkit.js +0 -157
  136. package/dist/cjs/AiToolkit.js.map +0 -1
  137. package/dist/cjs/internal/common.js +0 -21
  138. package/dist/cjs/internal/common.js.map +0 -1
  139. package/dist/dts/AiChat.d.ts +0 -101
  140. package/dist/dts/AiChat.d.ts.map +0 -1
  141. package/dist/dts/AiEmbeddingModel.d.ts +0 -65
  142. package/dist/dts/AiEmbeddingModel.d.ts.map +0 -1
  143. package/dist/dts/AiInput.d.ts +0 -590
  144. package/dist/dts/AiInput.d.ts.map +0 -1
  145. package/dist/dts/AiLanguageModel.d.ts +0 -302
  146. package/dist/dts/AiLanguageModel.d.ts.map +0 -1
  147. package/dist/dts/AiModel.d.ts +0 -25
  148. package/dist/dts/AiModel.d.ts.map +0 -1
  149. package/dist/dts/AiResponse.d.ts +0 -863
  150. package/dist/dts/AiResponse.d.ts.map +0 -1
  151. package/dist/dts/AiTelemetry.d.ts +0 -242
  152. package/dist/dts/AiTelemetry.d.ts.map +0 -1
  153. package/dist/dts/AiTool.d.ts +0 -334
  154. package/dist/dts/AiTool.d.ts.map +0 -1
  155. package/dist/dts/AiToolkit.d.ts +0 -96
  156. package/dist/dts/AiToolkit.d.ts.map +0 -1
  157. package/dist/dts/internal/common.d.ts +0 -2
  158. package/dist/dts/internal/common.d.ts.map +0 -1
  159. package/dist/esm/AiChat.js +0 -111
  160. package/dist/esm/AiChat.js.map +0 -1
  161. package/dist/esm/AiEmbeddingModel.js +0 -98
  162. package/dist/esm/AiEmbeddingModel.js.map +0 -1
  163. package/dist/esm/AiInput.js +0 -433
  164. package/dist/esm/AiInput.js.map +0 -1
  165. package/dist/esm/AiLanguageModel.js +0 -340
  166. package/dist/esm/AiLanguageModel.js.map +0 -1
  167. package/dist/esm/AiModel.js +0 -29
  168. package/dist/esm/AiModel.js.map +0 -1
  169. package/dist/esm/AiResponse.js +0 -657
  170. package/dist/esm/AiResponse.js.map +0 -1
  171. package/dist/esm/AiTelemetry.js +0 -48
  172. package/dist/esm/AiTelemetry.js.map +0 -1
  173. package/dist/esm/AiTool.js +0 -134
  174. package/dist/esm/AiTool.js.map +0 -1
  175. package/dist/esm/AiToolkit.js +0 -147
  176. package/dist/esm/AiToolkit.js.map +0 -1
  177. package/dist/esm/internal/common.js +0 -14
  178. package/dist/esm/internal/common.js.map +0 -1
  179. package/src/AiChat.ts +0 -251
  180. package/src/AiEmbeddingModel.ts +0 -169
  181. package/src/AiInput.ts +0 -602
  182. package/src/AiLanguageModel.ts +0 -685
  183. package/src/AiModel.ts +0 -53
  184. package/src/AiResponse.ts +0 -986
  185. package/src/AiTelemetry.ts +0 -333
  186. package/src/AiTool.ts +0 -579
  187. package/src/AiToolkit.ts +0 -265
  188. package/src/internal/common.ts +0 -12
@@ -1,36 +1,154 @@
1
1
  /**
2
+ * The `Tokenizer` module provides tokenization and text truncation capabilities
3
+ * for large language model text processing workflows.
4
+ *
5
+ * This module offers services for converting text into tokens and truncating
6
+ * prompts based on token limits, essential for managing context length
7
+ * constraints in large language models.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { Tokenizer, Prompt } from "@effect/ai"
12
+ * import { Effect } from "effect"
13
+ *
14
+ * const tokenizeText = Effect.gen(function* () {
15
+ * const tokenizer = yield* Tokenizer.Tokenizer
16
+ * const tokens = yield* tokenizer.tokenize("Hello, world!")
17
+ * console.log(`Token count: ${tokens.length}`)
18
+ * return tokens
19
+ * })
20
+ * ```
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { Tokenizer, Prompt } from "@effect/ai"
25
+ * import { Effect } from "effect"
26
+ *
27
+ * // Truncate a prompt to fit within token limits
28
+ * const truncatePrompt = Effect.gen(function* () {
29
+ * const tokenizer = yield* Tokenizer.Tokenizer
30
+ * const longPrompt = "This is a very long prompt..."
31
+ * const truncated = yield* tokenizer.truncate(longPrompt, 100)
32
+ * return truncated
33
+ * })
34
+ * ```
35
+ *
2
36
  * @since 1.0.0
3
37
  */
4
38
  import * as Context from "effect/Context";
5
39
  import * as Effect from "effect/Effect";
6
- import type { AiError } from "./AiError.js";
7
- import * as AiInput from "./AiInput.js";
8
- declare const Tokenizer_base: Context.TagClass<Tokenizer, "@effect/ai/Tokenizer", Tokenizer.Service>;
40
+ import type * as AiError from "./AiError.js";
41
+ import * as Prompt from "./Prompt.js";
42
+ declare const Tokenizer_base: Context.TagClass<Tokenizer, "@effect/ai/Tokenizer", Service>;
9
43
  /**
44
+ * The `Tokenizer` service tag for dependency injection.
45
+ *
46
+ * This tag provides access to tokenization functionality throughout your
47
+ * application, enabling token counting and prompt truncation capabilities.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * import { Tokenizer } from "@effect/ai"
52
+ * import { Effect } from "effect"
53
+ *
54
+ * const useTokenizer = Effect.gen(function* () {
55
+ * const tokenizer = yield* Tokenizer.Tokenizer
56
+ * const tokens = yield* tokenizer.tokenize("Hello, world!")
57
+ * return tokens.length
58
+ * })
59
+ * ```
60
+ *
10
61
  * @since 1.0.0
11
- * @category Tags
62
+ * @category Context
12
63
  */
13
64
  export declare class Tokenizer extends Tokenizer_base {
14
65
  }
15
66
  /**
67
+ * Tokenizer service interface providing text tokenization and truncation
68
+ * operations.
69
+ *
70
+ * This interface defines the core operations for converting text to tokens and
71
+ * managing content length within token limits for AI model compatibility.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * import { Tokenizer, Prompt } from "@effect/ai"
76
+ * import { Effect } from "effect"
77
+ *
78
+ * const customTokenizer: Tokenizer.Service = {
79
+ * tokenize: (input) =>
80
+ * Effect.succeed(input.toString().split(' ').map((_, i) => i)),
81
+ * truncate: (input, maxTokens) =>
82
+ * Effect.succeed(Prompt.make(input.toString().slice(0, maxTokens * 5)))
83
+ * }
84
+ * ```
85
+ *
16
86
  * @since 1.0.0
87
+ * @category Models
17
88
  */
18
- export declare namespace Tokenizer {
89
+ export interface Service {
19
90
  /**
20
- * @since 1.0.0
21
- * @category Models
91
+ * Converts text input into an array of token numbers.
22
92
  */
23
- interface Service {
24
- readonly tokenize: (input: AiInput.Raw) => Effect.Effect<Array<number>, AiError>;
25
- readonly truncate: (input: AiInput.Raw, tokens: number) => Effect.Effect<AiInput.AiInput, AiError>;
26
- }
93
+ readonly tokenize: (
94
+ /**
95
+ * The text input to tokenize.
96
+ */
97
+ input: Prompt.RawInput) => Effect.Effect<Array<number>, AiError.AiError>;
98
+ /**
99
+ * Truncates text input to fit within the specified token limit.
100
+ */
101
+ readonly truncate: (
102
+ /**
103
+ * The text input to truncate.
104
+ */
105
+ input: Prompt.RawInput,
106
+ /**
107
+ * Maximum number of tokens to retain.
108
+ */
109
+ tokens: number) => Effect.Effect<Prompt.Prompt, AiError.AiError>;
27
110
  }
28
111
  /**
112
+ * Creates a Tokenizer service implementation from tokenization options.
113
+ *
114
+ * This function constructs a complete Tokenizer service by providing a
115
+ * tokenization function. The service handles both tokenization and
116
+ * truncation operations using the provided tokenizer.
117
+ *
118
+ * @example
119
+ * ```ts
120
+ * import { Tokenizer, Prompt } from "@effect/ai"
121
+ * import { Effect } from "effect"
122
+ *
123
+ * // Simple word-based tokenizer
124
+ * const wordTokenizer = Tokenizer.make({
125
+ * tokenize: (prompt) =>
126
+ * Effect.succeed(
127
+ * prompt.content
128
+ * .flatMap(msg =>
129
+ * typeof msg.content === "string"
130
+ * ? msg.content.split(' ')
131
+ * : msg.content.flatMap(part =>
132
+ * part.type === "text" ? part.text.split(' ') : []
133
+ * )
134
+ * )
135
+ * .map((_, index) => index)
136
+ * )
137
+ * })
138
+ * ```
139
+ *
29
140
  * @since 1.0.0
30
141
  * @category Constructors
31
142
  */
32
143
  export declare const make: (options: {
33
- readonly tokenize: (content: AiInput.AiInput) => Effect.Effect<Array<number>, AiError>;
34
- }) => Tokenizer.Service;
144
+ /**
145
+ * Function to tokenize a prompt into an array of token numbers.
146
+ */
147
+ readonly tokenize: (
148
+ /**
149
+ * The prompt to tokenize.
150
+ */
151
+ content: Prompt.Prompt) => Effect.Effect<Array<number>, AiError.AiError>;
152
+ }) => Service;
35
153
  export {};
36
154
  //# sourceMappingURL=Tokenizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;;AAEvC;;;GAGG;AACH,qBAAa,SAAU,SAAQ,cAG5B;CAAG;AAEN;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC;;;OAGG;IACH,UAAiB,OAAO;QACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;QAChF,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;KACnG;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS;IAC5B,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;CACvF,KAAG,SAAS,CAAC,OAQV,CAAA"}
1
+ {"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,OAAO,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;;AAErC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,SAAU,SAAQ,cAG5B;CAAG;AAEN;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE;IACjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,QAAQ,KACnB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAClD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE;IACjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,QAAQ;IACtB;;OAEG;IACH,MAAM,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,IAAI,GAAI,SAAS;IAC5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,KACnB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CACnD,KAAG,OAQA,CAAA"}