@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,333 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Context from "effect/Context"
5
- import { dual } from "effect/Function"
6
- import * as Predicate from "effect/Predicate"
7
- import * as String from "effect/String"
8
- import type { Span } from "effect/Tracer"
9
- import type { Simplify } from "effect/Types"
10
- import type { AiLanguageModelOptions } from "./AiLanguageModel.js"
11
- import type { AiResponse } from "./AiResponse.js"
12
-
13
- /**
14
- * The attributes used to describe telemetry in the context of Generative
15
- * Artificial Intelligence (GenAI) Models requests and responses.
16
- *
17
- * {@see https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/}
18
- *
19
- * @since 1.0.0
20
- * @category Models
21
- */
22
- export type GenAITelemetryAttributes = Simplify<
23
- & AttributesWithPrefix<BaseAttributes, "gen_ai">
24
- & AttributesWithPrefix<OperationAttributes, "gen_ai.operation">
25
- & AttributesWithPrefix<TokenAttributes, "gen_ai.token">
26
- & AttributesWithPrefix<UsageAttributes, "gen_ai.usage">
27
- & AttributesWithPrefix<RequestAttributes, "gen_ai.request">
28
- & AttributesWithPrefix<ResponseAttributes, "gen_ai.response">
29
- >
30
-
31
- /**
32
- * All telemetry attributes which are part of the GenAI specification.
33
- *
34
- * @since 1.0.0
35
- * @category Models
36
- */
37
- export type AllAttributes =
38
- & BaseAttributes
39
- & OperationAttributes
40
- & TokenAttributes
41
- & UsageAttributes
42
- & RequestAttributes
43
- & ResponseAttributes
44
-
45
- /**
46
- * Telemetry attributes which are part of the GenAI specification and are
47
- * namespaced by `gen_ai`.
48
- *
49
- * @since 1.0.0
50
- * @category Models
51
- */
52
- export interface BaseAttributes {
53
- /**
54
- * The Generative AI product as identified by the client or server
55
- * instrumentation.
56
- */
57
- readonly system?: (string & {}) | WellKnownSystem | null | undefined
58
- }
59
-
60
- /**
61
- * Telemetry attributes which are part of the GenAI specification and are
62
- * namespaced by `gen_ai.operation`.
63
- *
64
- * @since 1.0.0
65
- * @category Models
66
- */
67
- export interface OperationAttributes {
68
- readonly name?: (string & {}) | WellKnownOperationName | null | undefined
69
- }
70
-
71
- /**
72
- * Telemetry attributes which are part of the GenAI specification and are
73
- * namespaced by `gen_ai.token`.
74
- *
75
- * @since 1.0.0
76
- * @category Models
77
- */
78
- export interface TokenAttributes {
79
- readonly type?: string | null | undefined
80
- }
81
-
82
- /**
83
- * Telemetry attributes which are part of the GenAI specification and are
84
- * namespaced by `gen_ai.usage`.
85
- *
86
- * @since 1.0.0
87
- * @category Models
88
- */
89
- export interface UsageAttributes {
90
- readonly inputTokens?: number | null | undefined
91
- readonly outputTokens?: number | null | undefined
92
- }
93
-
94
- /**
95
- * Telemetry attributes which are part of the GenAI specification and are
96
- * namespaced by `gen_ai.request`.
97
- *
98
- * @since 1.0.0
99
- * @category Models
100
- */
101
- export interface RequestAttributes {
102
- /**
103
- * The name of the GenAI model a request is being made to.
104
- */
105
- readonly model?: string | null | undefined
106
- /**
107
- * The temperature setting for the GenAI request.
108
- */
109
- readonly temperature?: number | null | undefined
110
- /**
111
- * The temperature setting for the GenAI request.
112
- */
113
- readonly topK?: number | null | undefined
114
- /**
115
- * The top_k sampling setting for the GenAI request.
116
- */
117
- readonly topP?: number | null | undefined
118
- /**
119
- * The top_p sampling setting for the GenAI request.
120
- */
121
- readonly maxTokens?: number | null | undefined
122
- /**
123
- * The encoding formats requested in an embeddings operation, if specified.
124
- */
125
- readonly encodingFormats?: ReadonlyArray<string> | null | undefined
126
- /**
127
- * List of sequences that the model will use to stop generating further
128
- * tokens.
129
- */
130
- readonly stopSequences?: ReadonlyArray<string> | null | undefined
131
- /**
132
- * The frequency penalty setting for the GenAI request.
133
- */
134
- readonly frequencyPenalty?: number | null | undefined
135
- /**
136
- * The presence penalty setting for the GenAI request.
137
- */
138
- readonly presencePenalty?: number | null | undefined
139
- /**
140
- * The seed setting for the GenAI request. Requests with same seed value
141
- * are more likely to return same result.
142
- */
143
- readonly seed?: number | null | undefined
144
- }
145
-
146
- /**
147
- * Telemetry attributes which are part of the GenAI specification and are
148
- * namespaced by `gen_ai.response`.
149
- *
150
- * @since 1.0.0
151
- * @category Models
152
- */
153
- export interface ResponseAttributes {
154
- /**
155
- * The unique identifier for the completion.
156
- */
157
- readonly id?: string | null | undefined
158
- /**
159
- * The name of the model that generated the response.
160
- */
161
- readonly model?: string | null | undefined
162
- /**
163
- * Array of reasons the model stopped generating tokens, corresponding to
164
- * each generation received.
165
- */
166
- readonly finishReasons?: ReadonlyArray<string> | null | undefined
167
- }
168
-
169
- /**
170
- * The `gen_ai.operation.name` attribute has the following list of well-known
171
- * values.
172
- *
173
- * If one of them applies, then the respective value **MUST** be used;
174
- * otherwise, a custom value **MAY** be used.
175
- *
176
- * @since 1.0.0
177
- * @category Models
178
- */
179
- export type WellKnownOperationName = "chat" | "embeddings" | "text_completion"
180
-
181
- /**
182
- * The `gen_ai.system` attribute has the following list of well-known values.
183
- *
184
- * If one of them applies, then the respective value **MUST** be used;
185
- * otherwise, a custom value **MAY** be used.
186
- *
187
- * @since 1.0.0
188
- * @category Models
189
- */
190
- export type WellKnownSystem =
191
- | "anthropic"
192
- | "aws.bedrock"
193
- | "az.ai.inference"
194
- | "az.ai.openai"
195
- | "cohere"
196
- | "deepseek"
197
- | "gemini"
198
- | "groq"
199
- | "ibm.watsonx.ai"
200
- | "mistral_ai"
201
- | "openai"
202
- | "perplexity"
203
- | "vertex_ai"
204
- | "xai"
205
-
206
- /**
207
- * @since 1.0.0
208
- * @category Models
209
- */
210
- export type AttributesWithPrefix<Attributes extends Record<string, any>, Prefix extends string> = {
211
- [Name in keyof Attributes as `${Prefix}.${FormatAttributeName<Name>}`]: Attributes[Name]
212
- }
213
-
214
- /**
215
- * @since 1.0.0
216
- * @category Utility Types
217
- */
218
- export type FormatAttributeName<T extends string | number | symbol> = T extends string ?
219
- T extends `${infer First}${infer Rest}`
220
- ? `${First extends Uppercase<First> ? "_" : ""}${Lowercase<First>}${FormatAttributeName<Rest>}`
221
- : T :
222
- never
223
-
224
- /**
225
- * @since 1.0.0
226
- * @category Utilities
227
- */
228
- export const addSpanAttributes = (
229
- keyPrefix: string,
230
- transformKey: (key: string) => string
231
- ) =>
232
- <Attributes extends Record<string, any>>(span: Span, attributes: Attributes): void => {
233
- for (const [key, value] of Object.entries(attributes)) {
234
- if (Predicate.isNotNullable(value)) {
235
- span.attribute(`${keyPrefix}.${transformKey(key)}`, value)
236
- }
237
- }
238
- }
239
-
240
- const addSpanBaseAttributes = addSpanAttributes("gen_ai", String.camelToSnake)<BaseAttributes>
241
- const addSpanOperationAttributes = addSpanAttributes("gen_ai.operation", String.camelToSnake)<OperationAttributes>
242
- const addSpanRequestAttributes = addSpanAttributes("gen_ai.request", String.camelToSnake)<RequestAttributes>
243
- const addSpanResponseAttributes = addSpanAttributes("gen_ai.response", String.camelToSnake)<ResponseAttributes>
244
- const addSpanTokenAttributes = addSpanAttributes("gen_ai.token", String.camelToSnake)<TokenAttributes>
245
- const addSpanUsageAttributes = addSpanAttributes("gen_ai.usage", String.camelToSnake)<UsageAttributes>
246
-
247
- /**
248
- * @since 1.0.0
249
- * @since Models
250
- */
251
- export type GenAITelemetryAttributeOptions = BaseAttributes & {
252
- readonly operation?: OperationAttributes | undefined
253
- readonly request?: RequestAttributes | undefined
254
- readonly response?: ResponseAttributes | undefined
255
- readonly token?: TokenAttributes | undefined
256
- readonly usage?: UsageAttributes | undefined
257
- }
258
-
259
- /**
260
- * Applies the specified GenAI telemetry attributes to the provided `Span`.
261
- *
262
- * **NOTE**: This method will mutate the `Span` **in-place**.
263
- *
264
- * @since 1.0.0
265
- * @since Utilities
266
- */
267
- export const addGenAIAnnotations: {
268
- /**
269
- * Applies the specified GenAI telemetry attributes to the provided `Span`.
270
- *
271
- * **NOTE**: This method will mutate the `Span` **in-place**.
272
- *
273
- * @since 1.0.0
274
- * @since Utilities
275
- */
276
- (options: GenAITelemetryAttributeOptions): (span: Span) => void
277
- /**
278
- * Applies the specified GenAI telemetry attributes to the provided `Span`.
279
- *
280
- * **NOTE**: This method will mutate the `Span` **in-place**.
281
- *
282
- * @since 1.0.0
283
- * @since Utilities
284
- */
285
- (span: Span, options: GenAITelemetryAttributeOptions): void
286
- } = dual<
287
- /**
288
- * Applies the specified GenAI telemetry attributes to the provided `Span`.
289
- *
290
- * **NOTE**: This method will mutate the `Span` **in-place**.
291
- *
292
- * @since 1.0.0
293
- * @since Utilities
294
- */
295
- (options: GenAITelemetryAttributeOptions) => (span: Span) => void,
296
- /**
297
- * Applies the specified GenAI telemetry attributes to the provided `Span`.
298
- *
299
- * **NOTE**: This method will mutate the `Span` **in-place**.
300
- *
301
- * @since 1.0.0
302
- * @since Utilities
303
- */
304
- (span: Span, options: GenAITelemetryAttributeOptions) => void
305
- >(2, (span, options) => {
306
- addSpanBaseAttributes(span, { system: options.system })
307
- if (Predicate.isNotNullable(options.operation)) addSpanOperationAttributes(span, options.operation)
308
- if (Predicate.isNotNullable(options.request)) addSpanRequestAttributes(span, options.request)
309
- if (Predicate.isNotNullable(options.response)) addSpanResponseAttributes(span, options.response)
310
- if (Predicate.isNotNullable(options.token)) addSpanTokenAttributes(span, options.token)
311
- if (Predicate.isNotNullable(options.usage)) addSpanUsageAttributes(span, options.usage)
312
- })
313
-
314
- /**
315
- * Represents a method which receives the elements of the request / response to
316
- * a large language model and can be used to modify the span used to trace the
317
- * API call.
318
- *
319
- * @since 1.0.0
320
- * @category Models
321
- */
322
- export interface SpanTransformer {
323
- (options: AiLanguageModelOptions & { readonly response: AiResponse }): void
324
- }
325
-
326
- /**
327
- * @since 1.0.0
328
- * @category Context
329
- */
330
- export class CurrentSpanTransformer extends Context.Tag("@effect/ai/AiTelemetry/CurrentSpanTransformer")<
331
- CurrentSpanTransformer,
332
- SpanTransformer
333
- >() {}