@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.
- package/Chat/package.json +6 -0
- package/EmbeddingModel/package.json +6 -0
- package/IdGenerator/package.json +6 -0
- package/LanguageModel/package.json +6 -0
- package/Model/package.json +6 -0
- package/Prompt/package.json +6 -0
- package/Response/package.json +6 -0
- package/Telemetry/package.json +6 -0
- package/Tool/package.json +6 -0
- package/Toolkit/package.json +6 -0
- package/dist/cjs/AiError.js +575 -11
- package/dist/cjs/AiError.js.map +1 -1
- package/dist/cjs/Chat.js +302 -0
- package/dist/cjs/Chat.js.map +1 -0
- package/dist/cjs/EmbeddingModel.js +184 -0
- package/dist/cjs/EmbeddingModel.js.map +1 -0
- package/dist/cjs/IdGenerator.js +255 -0
- package/dist/cjs/IdGenerator.js.map +1 -0
- package/dist/cjs/LanguageModel.js +584 -0
- package/dist/cjs/LanguageModel.js.map +1 -0
- package/dist/cjs/McpServer.js +12 -4
- package/dist/cjs/McpServer.js.map +1 -1
- package/dist/cjs/Model.js +118 -0
- package/dist/cjs/Model.js.map +1 -0
- package/dist/cjs/Prompt.js +649 -0
- package/dist/cjs/Prompt.js.map +1 -0
- package/dist/cjs/Response.js +635 -0
- package/dist/cjs/Response.js.map +1 -0
- package/dist/cjs/Telemetry.js +176 -0
- package/dist/cjs/Telemetry.js.map +1 -0
- package/dist/cjs/Tokenizer.js +87 -8
- package/dist/cjs/Tokenizer.js.map +1 -1
- package/dist/cjs/Tool.js +556 -0
- package/dist/cjs/Tool.js.map +1 -0
- package/dist/cjs/Toolkit.js +279 -0
- package/dist/cjs/Toolkit.js.map +1 -0
- package/dist/cjs/index.js +21 -19
- package/dist/dts/AiError.d.ts +577 -9
- package/dist/dts/AiError.d.ts.map +1 -1
- package/dist/dts/Chat.d.ts +356 -0
- package/dist/dts/Chat.d.ts.map +1 -0
- package/dist/dts/EmbeddingModel.d.ts +153 -0
- package/dist/dts/EmbeddingModel.d.ts.map +1 -0
- package/dist/dts/IdGenerator.d.ts +272 -0
- package/dist/dts/IdGenerator.d.ts.map +1 -0
- package/dist/dts/LanguageModel.d.ts +458 -0
- package/dist/dts/LanguageModel.d.ts.map +1 -0
- package/dist/dts/McpSchema.d.ts +25 -25
- package/dist/dts/McpServer.d.ts +6 -4
- package/dist/dts/McpServer.d.ts.map +1 -1
- package/dist/dts/Model.d.ts +124 -0
- package/dist/dts/Model.d.ts.map +1 -0
- package/dist/dts/Prompt.d.ts +1119 -0
- package/dist/dts/Prompt.d.ts.map +1 -0
- package/dist/dts/Response.d.ts +1519 -0
- package/dist/dts/Response.d.ts.map +1 -0
- package/dist/dts/Telemetry.d.ts +520 -0
- package/dist/dts/Telemetry.d.ts.map +1 -0
- package/dist/dts/Tokenizer.d.ts +131 -13
- package/dist/dts/Tokenizer.d.ts.map +1 -1
- package/dist/dts/Tool.d.ts +876 -0
- package/dist/dts/Tool.d.ts.map +1 -0
- package/dist/dts/Toolkit.d.ts +310 -0
- package/dist/dts/Toolkit.d.ts.map +1 -0
- package/dist/dts/index.d.ts +498 -13
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/esm/AiError.js +570 -10
- package/dist/esm/AiError.js.map +1 -1
- package/dist/esm/Chat.js +291 -0
- package/dist/esm/Chat.js.map +1 -0
- package/dist/esm/EmbeddingModel.js +173 -0
- package/dist/esm/EmbeddingModel.js.map +1 -0
- package/dist/esm/IdGenerator.js +245 -0
- package/dist/esm/IdGenerator.js.map +1 -0
- package/dist/esm/LanguageModel.js +572 -0
- package/dist/esm/LanguageModel.js.map +1 -0
- package/dist/esm/McpServer.js +12 -4
- package/dist/esm/McpServer.js.map +1 -1
- package/dist/esm/Model.js +108 -0
- package/dist/esm/Model.js.map +1 -0
- package/dist/esm/Prompt.js +633 -0
- package/dist/esm/Prompt.js.map +1 -0
- package/dist/esm/Response.js +619 -0
- package/dist/esm/Response.js.map +1 -0
- package/dist/esm/Telemetry.js +166 -0
- package/dist/esm/Telemetry.js.map +1 -0
- package/dist/esm/Tokenizer.js +87 -8
- package/dist/esm/Tokenizer.js.map +1 -1
- package/dist/esm/Tool.js +534 -0
- package/dist/esm/Tool.js.map +1 -0
- package/dist/esm/Toolkit.js +269 -0
- package/dist/esm/Toolkit.js.map +1 -0
- package/dist/esm/index.js +498 -13
- package/dist/esm/index.js.map +1 -1
- package/package.json +76 -68
- package/src/AiError.ts +739 -9
- package/src/Chat.ts +546 -0
- package/src/EmbeddingModel.ts +311 -0
- package/src/IdGenerator.ts +320 -0
- package/src/LanguageModel.ts +1074 -0
- package/src/McpServer.ts +337 -194
- package/src/Model.ts +155 -0
- package/src/Prompt.ts +1616 -0
- package/src/Response.ts +2131 -0
- package/src/Telemetry.ts +655 -0
- package/src/Tokenizer.ts +145 -24
- package/src/Tool.ts +1267 -0
- package/src/Toolkit.ts +516 -0
- package/src/index.ts +499 -13
- package/AiChat/package.json +0 -6
- package/AiEmbeddingModel/package.json +0 -6
- package/AiInput/package.json +0 -6
- package/AiLanguageModel/package.json +0 -6
- package/AiModel/package.json +0 -6
- package/AiResponse/package.json +0 -6
- package/AiTelemetry/package.json +0 -6
- package/AiTool/package.json +0 -6
- package/AiToolkit/package.json +0 -6
- package/dist/cjs/AiChat.js +0 -122
- package/dist/cjs/AiChat.js.map +0 -1
- package/dist/cjs/AiEmbeddingModel.js +0 -109
- package/dist/cjs/AiEmbeddingModel.js.map +0 -1
- package/dist/cjs/AiInput.js +0 -458
- package/dist/cjs/AiInput.js.map +0 -1
- package/dist/cjs/AiLanguageModel.js +0 -351
- package/dist/cjs/AiLanguageModel.js.map +0 -1
- package/dist/cjs/AiModel.js +0 -37
- package/dist/cjs/AiModel.js.map +0 -1
- package/dist/cjs/AiResponse.js +0 -681
- package/dist/cjs/AiResponse.js.map +0 -1
- package/dist/cjs/AiTelemetry.js +0 -58
- package/dist/cjs/AiTelemetry.js.map +0 -1
- package/dist/cjs/AiTool.js +0 -150
- package/dist/cjs/AiTool.js.map +0 -1
- package/dist/cjs/AiToolkit.js +0 -157
- package/dist/cjs/AiToolkit.js.map +0 -1
- package/dist/cjs/internal/common.js +0 -21
- package/dist/cjs/internal/common.js.map +0 -1
- package/dist/dts/AiChat.d.ts +0 -101
- package/dist/dts/AiChat.d.ts.map +0 -1
- package/dist/dts/AiEmbeddingModel.d.ts +0 -65
- package/dist/dts/AiEmbeddingModel.d.ts.map +0 -1
- package/dist/dts/AiInput.d.ts +0 -590
- package/dist/dts/AiInput.d.ts.map +0 -1
- package/dist/dts/AiLanguageModel.d.ts +0 -302
- package/dist/dts/AiLanguageModel.d.ts.map +0 -1
- package/dist/dts/AiModel.d.ts +0 -25
- package/dist/dts/AiModel.d.ts.map +0 -1
- package/dist/dts/AiResponse.d.ts +0 -863
- package/dist/dts/AiResponse.d.ts.map +0 -1
- package/dist/dts/AiTelemetry.d.ts +0 -242
- package/dist/dts/AiTelemetry.d.ts.map +0 -1
- package/dist/dts/AiTool.d.ts +0 -334
- package/dist/dts/AiTool.d.ts.map +0 -1
- package/dist/dts/AiToolkit.d.ts +0 -96
- package/dist/dts/AiToolkit.d.ts.map +0 -1
- package/dist/dts/internal/common.d.ts +0 -2
- package/dist/dts/internal/common.d.ts.map +0 -1
- package/dist/esm/AiChat.js +0 -111
- package/dist/esm/AiChat.js.map +0 -1
- package/dist/esm/AiEmbeddingModel.js +0 -98
- package/dist/esm/AiEmbeddingModel.js.map +0 -1
- package/dist/esm/AiInput.js +0 -433
- package/dist/esm/AiInput.js.map +0 -1
- package/dist/esm/AiLanguageModel.js +0 -340
- package/dist/esm/AiLanguageModel.js.map +0 -1
- package/dist/esm/AiModel.js +0 -29
- package/dist/esm/AiModel.js.map +0 -1
- package/dist/esm/AiResponse.js +0 -657
- package/dist/esm/AiResponse.js.map +0 -1
- package/dist/esm/AiTelemetry.js +0 -48
- package/dist/esm/AiTelemetry.js.map +0 -1
- package/dist/esm/AiTool.js +0 -134
- package/dist/esm/AiTool.js.map +0 -1
- package/dist/esm/AiToolkit.js +0 -147
- package/dist/esm/AiToolkit.js.map +0 -1
- package/dist/esm/internal/common.js +0 -14
- package/dist/esm/internal/common.js.map +0 -1
- package/src/AiChat.ts +0 -251
- package/src/AiEmbeddingModel.ts +0 -169
- package/src/AiInput.ts +0 -602
- package/src/AiLanguageModel.ts +0 -685
- package/src/AiModel.ts +0 -53
- package/src/AiResponse.ts +0 -986
- package/src/AiTelemetry.ts +0 -333
- package/src/AiTool.ts +0 -579
- package/src/AiToolkit.ts +0 -265
- package/src/internal/common.ts +0 -12
package/src/AiEmbeddingModel.ts
DELETED
|
@@ -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
|
-
})
|