@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,169 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import { dataLoader } from "@effect/experimental/RequestResolver"
5
- import * as Context from "effect/Context"
6
- import type * as Duration from "effect/Duration"
7
- import * as Effect from "effect/Effect"
8
- import { identity } from "effect/Function"
9
- import * as Option from "effect/Option"
10
- import * as Request from "effect/Request"
11
- import * as RequestResolver from "effect/RequestResolver"
12
- import * as Schema from "effect/Schema"
13
- import type { Concurrency } from "effect/Types"
14
- import { AiError } from "./AiError.js"
15
-
16
- /**
17
- * @since 1.0.0
18
- * @category Context
19
- */
20
- export class AiEmbeddingModel extends Context.Tag("@effect/ai/AiEmbeddingModel")<
21
- AiEmbeddingModel,
22
- AiEmbeddingModel.Service
23
- >() {}
24
-
25
- /**
26
- * @since 1.0.0
27
- */
28
- export declare namespace AiEmbeddingModel {
29
- /**
30
- * @since 1.0.0
31
- * @category Models
32
- */
33
- export interface Service {
34
- readonly embed: (input: string) => Effect.Effect<Array<number>, AiError>
35
- readonly embedMany: (input: ReadonlyArray<string>, options?: {
36
- /**
37
- * The concurrency level to use while batching requests.
38
- */
39
- readonly concurrency?: Concurrency | undefined
40
- }) => Effect.Effect<Array<Array<number>>, AiError>
41
- }
42
-
43
- /**
44
- * @since 1.0.0
45
- * @category Models
46
- */
47
- export interface Result {
48
- readonly index: number
49
- readonly embeddings: Array<number>
50
- }
51
- }
52
-
53
- class EmbeddingRequest extends Schema.TaggedRequest<EmbeddingRequest>(
54
- "@effect/ai/AiEmbeddingModel/Request"
55
- )("EmbeddingRequest", {
56
- failure: AiError,
57
- success: Schema.mutable(Schema.Array(Schema.Number)),
58
- payload: { input: Schema.String }
59
- }) {}
60
-
61
- const makeBatchedResolver = (
62
- embedMany: (input: ReadonlyArray<string>) => Effect.Effect<Array<AiEmbeddingModel.Result>, AiError>
63
- ) =>
64
- RequestResolver.makeBatched(
65
- (requests: ReadonlyArray<EmbeddingRequest>) =>
66
- embedMany(requests.map((request) => request.input)).pipe(
67
- Effect.flatMap(
68
- Effect.forEach(
69
- ({ embeddings, index }) => Request.succeed(requests[index], embeddings),
70
- { discard: true }
71
- )
72
- ),
73
- Effect.catchAll((error) =>
74
- Effect.forEach(
75
- requests,
76
- (request) => Request.fail(request, error),
77
- { discard: true }
78
- )
79
- )
80
- )
81
- )
82
-
83
- /**
84
- * @since 1.0.0
85
- * @category Constructors
86
- */
87
- export const make = (options: {
88
- readonly embedMany: (input: ReadonlyArray<string>) => Effect.Effect<Array<AiEmbeddingModel.Result>, AiError>
89
- readonly maxBatchSize?: number
90
- readonly cache?: {
91
- readonly capacity: number
92
- readonly timeToLive: Duration.DurationInput
93
- }
94
- }) =>
95
- Effect.gen(function*() {
96
- const cache = yield* Option.fromNullable(options.cache).pipe(
97
- Effect.flatMap((config) => Request.makeCache(config)),
98
- Effect.optionFromOptional
99
- )
100
-
101
- const resolver = makeBatchedResolver(options.embedMany).pipe(
102
- options.maxBatchSize ? RequestResolver.batchN(options.maxBatchSize) : identity
103
- )
104
-
105
- function embed(input: string) {
106
- const request = Effect.request(new EmbeddingRequest({ input }), resolver)
107
- return Option.match(cache, {
108
- onNone: () => request,
109
- onSome: (cache) =>
110
- request.pipe(
111
- Effect.withRequestCaching(true),
112
- Effect.withRequestCache(cache)
113
- )
114
- }).pipe(Effect.withSpan("AiEmbeddingModel.embed", { captureStackTrace: false }))
115
- }
116
-
117
- function embedMany(inputs: ReadonlyArray<string>, options?: {
118
- readonly concurrency?: Concurrency | undefined
119
- }) {
120
- return Effect.forEach(inputs, embed, { batching: true, concurrency: options?.concurrency }).pipe(
121
- Effect.withSpan("AiEmbeddingModel.embedMany", { captureStackTrace: false })
122
- )
123
- }
124
-
125
- return AiEmbeddingModel.of({
126
- embed,
127
- embedMany
128
- })
129
- })
130
-
131
- /**
132
- * Creates an `Embeddings` service which will aggregate all `embed` requests
133
- * received during the specified `window` (up to a maximum of `maxBatchSize`
134
- * requests, if specified) and execute them as a single batch.
135
- *
136
- * @since 1.0.0
137
- * @category Constructors
138
- */
139
- export const makeDataLoader = (options: {
140
- readonly embedMany: (input: ReadonlyArray<string>) => Effect.Effect<Array<AiEmbeddingModel.Result>, AiError>
141
- readonly window: Duration.DurationInput
142
- readonly maxBatchSize?: number
143
- }) =>
144
- Effect.gen(function*() {
145
- const resolver = makeBatchedResolver(options.embedMany)
146
- const resolverDelayed = yield* dataLoader(resolver, {
147
- window: options.window,
148
- maxBatchSize: options.maxBatchSize
149
- })
150
-
151
- function embed(input: string) {
152
- return Effect.request(new EmbeddingRequest({ input }), resolverDelayed).pipe(
153
- Effect.withSpan("AiEmbeddingModel.embed", { captureStackTrace: false })
154
- )
155
- }
156
-
157
- function embedMany(inputs: ReadonlyArray<string>, options?: {
158
- readonly concurrency?: Concurrency | undefined
159
- }) {
160
- return Effect.forEach(inputs, embed, { batching: true, concurrency: options?.concurrency }).pipe(
161
- Effect.withSpan("AiEmbeddingModel.embedMany", { captureStackTrace: false })
162
- )
163
- }
164
-
165
- return AiEmbeddingModel.of({
166
- embed,
167
- embedMany
168
- })
169
- })