@effect/ai-openai 0.17.1 → 0.19.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/OpenAiEmbeddingModel/package.json +6 -0
- package/OpenAiLanguageModel/package.json +6 -0
- package/dist/cjs/OpenAiClient.js +111 -109
- package/dist/cjs/OpenAiClient.js.map +1 -1
- package/dist/cjs/OpenAiConfig.js +2 -2
- package/dist/cjs/OpenAiConfig.js.map +1 -1
- package/dist/cjs/{OpenAiEmbeddings.js → OpenAiEmbeddingModel.js} +22 -51
- package/dist/cjs/OpenAiEmbeddingModel.js.map +1 -0
- package/dist/cjs/OpenAiLanguageModel.js +490 -0
- package/dist/cjs/OpenAiLanguageModel.js.map +1 -0
- package/dist/cjs/OpenAiTelemetry.js +1 -1
- package/dist/cjs/OpenAiTelemetry.js.map +1 -1
- package/dist/cjs/OpenAiTokenizer.js +11 -13
- package/dist/cjs/OpenAiTokenizer.js.map +1 -1
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/internal/utilities.js +25 -0
- package/dist/cjs/internal/utilities.js.map +1 -0
- package/dist/dts/OpenAiClient.d.ts +32 -75
- package/dist/dts/OpenAiClient.d.ts.map +1 -1
- package/dist/dts/OpenAiConfig.d.ts +5 -6
- package/dist/dts/OpenAiConfig.d.ts.map +1 -1
- package/dist/dts/{OpenAiEmbeddings.d.ts → OpenAiEmbeddingModel.d.ts} +16 -37
- package/dist/dts/OpenAiEmbeddingModel.d.ts.map +1 -0
- package/dist/dts/OpenAiLanguageModel.d.ts +108 -0
- package/dist/dts/OpenAiLanguageModel.d.ts.map +1 -0
- package/dist/dts/OpenAiTelemetry.d.ts +59 -64
- package/dist/dts/OpenAiTelemetry.d.ts.map +1 -1
- package/dist/dts/OpenAiTokenizer.d.ts +2 -2
- package/dist/dts/OpenAiTokenizer.d.ts.map +1 -1
- package/dist/dts/index.d.ts +3 -3
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/utilities.d.ts +2 -0
- package/dist/dts/internal/utilities.d.ts.map +1 -0
- package/dist/esm/OpenAiClient.js +110 -106
- package/dist/esm/OpenAiClient.js.map +1 -1
- package/dist/esm/OpenAiConfig.js +2 -2
- package/dist/esm/OpenAiConfig.js.map +1 -1
- package/dist/esm/{OpenAiEmbeddings.js → OpenAiEmbeddingModel.js} +21 -48
- package/dist/esm/OpenAiEmbeddingModel.js.map +1 -0
- package/dist/esm/OpenAiLanguageModel.js +478 -0
- package/dist/esm/OpenAiLanguageModel.js.map +1 -0
- package/dist/esm/OpenAiTelemetry.js +1 -1
- package/dist/esm/OpenAiTelemetry.js.map +1 -1
- package/dist/esm/OpenAiTokenizer.js +11 -13
- package/dist/esm/OpenAiTokenizer.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/utilities.js +16 -0
- package/dist/esm/internal/utilities.js.map +1 -0
- package/package.json +19 -19
- package/src/OpenAiClient.ts +184 -191
- package/src/OpenAiConfig.ts +7 -8
- package/src/{OpenAiEmbeddings.ts → OpenAiEmbeddingModel.ts} +39 -85
- package/src/OpenAiLanguageModel.ts +601 -0
- package/src/OpenAiTelemetry.ts +66 -71
- package/src/OpenAiTokenizer.ts +35 -26
- package/src/index.ts +3 -3
- package/src/internal/utilities.ts +19 -0
- package/OpenAiCompletions/package.json +0 -6
- package/OpenAiEmbeddings/package.json +0 -6
- package/dist/cjs/OpenAiCompletions.js +0 -358
- package/dist/cjs/OpenAiCompletions.js.map +0 -1
- package/dist/cjs/OpenAiEmbeddings.js.map +0 -1
- package/dist/dts/OpenAiCompletions.d.ts +0 -75
- package/dist/dts/OpenAiCompletions.d.ts.map +0 -1
- package/dist/dts/OpenAiEmbeddings.d.ts.map +0 -1
- package/dist/esm/OpenAiCompletions.js +0 -345
- package/dist/esm/OpenAiCompletions.js.map +0 -1
- package/dist/esm/OpenAiEmbeddings.js.map +0 -1
- package/src/OpenAiCompletions.ts +0 -500
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
+
import * as AiEmbeddingModel from "@effect/ai/AiEmbeddingModel"
|
|
4
5
|
import { AiError } from "@effect/ai/AiError"
|
|
5
6
|
import * as AiModel from "@effect/ai/AiModel"
|
|
6
|
-
import * as Embeddings from "@effect/ai/Embeddings"
|
|
7
7
|
import * as Tokenizer from "@effect/ai/Tokenizer"
|
|
8
8
|
import * as Context from "effect/Context"
|
|
9
9
|
import type * as Duration from "effect/Duration"
|
|
10
10
|
import * as Effect from "effect/Effect"
|
|
11
11
|
import { dual } from "effect/Function"
|
|
12
|
-
import * as Layer from "effect/Layer"
|
|
13
12
|
import * as Struct from "effect/Struct"
|
|
14
13
|
import type { Simplify } from "effect/Types"
|
|
15
14
|
import type * as Generated from "./Generated.js"
|
|
@@ -18,7 +17,7 @@ import * as OpenAiTokenizer from "./OpenAiTokenizer.js"
|
|
|
18
17
|
|
|
19
18
|
/**
|
|
20
19
|
* @since 1.0.0
|
|
21
|
-
* @category
|
|
20
|
+
* @category Models
|
|
22
21
|
*/
|
|
23
22
|
export type Model = typeof Generated.CreateEmbeddingRequestModelEnum.Encoded
|
|
24
23
|
|
|
@@ -28,9 +27,9 @@ export type Model = typeof Generated.CreateEmbeddingRequestModelEnum.Encoded
|
|
|
28
27
|
|
|
29
28
|
/**
|
|
30
29
|
* @since 1.0.0
|
|
31
|
-
* @category
|
|
30
|
+
* @category Context
|
|
32
31
|
*/
|
|
33
|
-
export class Config extends Context.Tag("@effect/ai-openai/
|
|
32
|
+
export class Config extends Context.Tag("@effect/ai-openai/OpenAiEmbeddingModel/Config")<
|
|
34
33
|
Config,
|
|
35
34
|
Config.Service
|
|
36
35
|
>() {
|
|
@@ -49,7 +48,7 @@ export class Config extends Context.Tag("@effect/ai-openai/OpenAiEmbeddings/Conf
|
|
|
49
48
|
export declare namespace Config {
|
|
50
49
|
/**
|
|
51
50
|
* @since 1.0.
|
|
52
|
-
* @category
|
|
51
|
+
* @category Configuration
|
|
53
52
|
*/
|
|
54
53
|
export interface Service extends
|
|
55
54
|
Simplify<
|
|
@@ -64,7 +63,7 @@ export declare namespace Config {
|
|
|
64
63
|
|
|
65
64
|
/**
|
|
66
65
|
* @since 1.0.
|
|
67
|
-
* @category
|
|
66
|
+
* @category Configuration
|
|
68
67
|
*/
|
|
69
68
|
export interface Batched extends Omit<Config.Service, "model"> {
|
|
70
69
|
readonly maxBatchSize?: number
|
|
@@ -76,7 +75,7 @@ export declare namespace Config {
|
|
|
76
75
|
|
|
77
76
|
/**
|
|
78
77
|
* @since 1.0.
|
|
79
|
-
* @category
|
|
78
|
+
* @category Configuration
|
|
80
79
|
*/
|
|
81
80
|
export interface DataLoader extends Omit<Config.Service, "model"> {
|
|
82
81
|
readonly window: Duration.DurationInput
|
|
@@ -85,15 +84,15 @@ export declare namespace Config {
|
|
|
85
84
|
}
|
|
86
85
|
|
|
87
86
|
// =============================================================================
|
|
88
|
-
// OpenAi
|
|
87
|
+
// OpenAi Embedding Model
|
|
89
88
|
// =============================================================================
|
|
90
89
|
|
|
91
|
-
const batchedModelCacheKey =
|
|
92
|
-
const dataLoaderModelCacheKey =
|
|
90
|
+
const batchedModelCacheKey = "@effect/ai-openai/OpenAiEmbeddingModel/Batched/AiModel"
|
|
91
|
+
const dataLoaderModelCacheKey = "@effect/ai-openai/OpenAiEmbeddingModel/DataLoader/AiModel"
|
|
93
92
|
|
|
94
93
|
/**
|
|
95
94
|
* @since 1.0.0
|
|
96
|
-
* @category
|
|
95
|
+
* @category Models
|
|
97
96
|
*/
|
|
98
97
|
export const model = (
|
|
99
98
|
model: (string & {}) | Model,
|
|
@@ -103,28 +102,30 @@ export const model = (
|
|
|
103
102
|
| ({ readonly mode: "data-loader" } & Config.DataLoader)
|
|
104
103
|
)
|
|
105
104
|
>
|
|
106
|
-
): AiModel.AiModel<
|
|
105
|
+
): AiModel.AiModel<AiEmbeddingModel.AiEmbeddingModel | Tokenizer.Tokenizer, OpenAiClient> =>
|
|
107
106
|
AiModel.make({
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
107
|
+
cacheKey: config.mode === "batched"
|
|
108
|
+
? batchedModelCacheKey
|
|
109
|
+
: dataLoaderModelCacheKey,
|
|
110
|
+
cachedContext: Effect.map(
|
|
112
111
|
config.mode === "batched"
|
|
113
112
|
? makeBatched({ model, config })
|
|
114
113
|
: makeDataLoader({ model, config }),
|
|
115
|
-
(
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
114
|
+
(model) => Context.make(AiEmbeddingModel.AiEmbeddingModel, model)
|
|
115
|
+
),
|
|
116
|
+
updateRequestContext: Effect.fnUntraced(
|
|
117
|
+
function*(context: Context.Context<AiEmbeddingModel.AiEmbeddingModel>) {
|
|
118
|
+
const parentConfig = config.mode === "batched"
|
|
119
|
+
? Struct.omit("mode", "maxBatchSize", "cache")(config)
|
|
120
|
+
: Struct.omit("mode", "maxBatchSize", "window")(config)
|
|
121
|
+
const perRequestConfig = yield* Config.getOrUndefined
|
|
122
|
+
return Context.mergeAll(
|
|
123
|
+
context,
|
|
124
|
+
Context.make(Config, { model, ...parentConfig, ...perRequestConfig }),
|
|
125
|
+
Context.make(Tokenizer.Tokenizer, OpenAiTokenizer.make({ model: perRequestConfig?.model ?? model }))
|
|
126
|
+
)
|
|
127
|
+
}
|
|
128
|
+
)
|
|
128
129
|
})
|
|
129
130
|
|
|
130
131
|
const makeRequest = (
|
|
@@ -149,7 +150,7 @@ const makeRequest = (
|
|
|
149
150
|
),
|
|
150
151
|
Effect.mapError((cause) => {
|
|
151
152
|
const common = {
|
|
152
|
-
module: "
|
|
153
|
+
module: "OpenAiEmbeddingModel",
|
|
153
154
|
method: "embed",
|
|
154
155
|
cause
|
|
155
156
|
}
|
|
@@ -172,7 +173,7 @@ const makeBatched = Effect.fnUntraced(function*(options: {
|
|
|
172
173
|
}) {
|
|
173
174
|
const client = yield* OpenAiClient
|
|
174
175
|
const { cache, maxBatchSize = 2048, ...parentConfig } = options.config
|
|
175
|
-
return yield*
|
|
176
|
+
return yield* AiEmbeddingModel.make({
|
|
176
177
|
cache,
|
|
177
178
|
maxBatchSize,
|
|
178
179
|
embedMany(input) {
|
|
@@ -187,7 +188,7 @@ const makeDataLoader = Effect.fnUntraced(function*(options: {
|
|
|
187
188
|
}) {
|
|
188
189
|
const client = yield* OpenAiClient
|
|
189
190
|
const { maxBatchSize = 2048, window, ...parentConfig } = options.config
|
|
190
|
-
return yield*
|
|
191
|
+
return yield* AiEmbeddingModel.makeDataLoader({
|
|
191
192
|
window,
|
|
192
193
|
maxBatchSize,
|
|
193
194
|
embedMany(input) {
|
|
@@ -198,75 +199,28 @@ const makeDataLoader = Effect.fnUntraced(function*(options: {
|
|
|
198
199
|
|
|
199
200
|
/**
|
|
200
201
|
* @since 1.0.0
|
|
201
|
-
* @category
|
|
202
|
-
*/
|
|
203
|
-
export const layer = (options: {
|
|
204
|
-
readonly model: (string & {}) | Model
|
|
205
|
-
readonly maxBatchSize?: number
|
|
206
|
-
readonly cache?: {
|
|
207
|
-
readonly capacity: number
|
|
208
|
-
readonly timeToLive: Duration.DurationInput
|
|
209
|
-
}
|
|
210
|
-
readonly config?: Config.Service
|
|
211
|
-
}): Layer.Layer<Embeddings.Embeddings, never, OpenAiClient> =>
|
|
212
|
-
Layer.effect(
|
|
213
|
-
Embeddings.Embeddings,
|
|
214
|
-
makeBatched({
|
|
215
|
-
model: options.model,
|
|
216
|
-
config: {
|
|
217
|
-
cache: options.cache,
|
|
218
|
-
maxBatchSize: options.maxBatchSize,
|
|
219
|
-
...options.config
|
|
220
|
-
}
|
|
221
|
-
})
|
|
222
|
-
)
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* @since 1.0.0
|
|
226
|
-
* @category layers
|
|
227
|
-
*/
|
|
228
|
-
export const layerDataLoader = (options: {
|
|
229
|
-
readonly model: (string & {}) | Model
|
|
230
|
-
readonly window: Duration.DurationInput
|
|
231
|
-
readonly maxBatchSize?: number
|
|
232
|
-
readonly config?: Config.Service
|
|
233
|
-
}): Layer.Layer<Embeddings.Embeddings, never, OpenAiClient> =>
|
|
234
|
-
Layer.scoped(
|
|
235
|
-
Embeddings.Embeddings,
|
|
236
|
-
makeDataLoader({
|
|
237
|
-
model: options.model,
|
|
238
|
-
config: {
|
|
239
|
-
window: options.window,
|
|
240
|
-
maxBatchSize: options.maxBatchSize,
|
|
241
|
-
...options.config
|
|
242
|
-
}
|
|
243
|
-
})
|
|
244
|
-
)
|
|
245
|
-
|
|
246
|
-
/**
|
|
247
|
-
* @since 1.0.0
|
|
248
|
-
* @category configuration
|
|
202
|
+
* @category Configuration
|
|
249
203
|
*/
|
|
250
204
|
export const withConfigOverride: {
|
|
251
205
|
/**
|
|
252
206
|
* @since 1.0.0
|
|
253
|
-
* @category
|
|
207
|
+
* @category Configuration
|
|
254
208
|
*/
|
|
255
209
|
(config: Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
256
210
|
/**
|
|
257
211
|
* @since 1.0.0
|
|
258
|
-
* @category
|
|
212
|
+
* @category Configuration
|
|
259
213
|
*/
|
|
260
214
|
<A, E, R>(self: Effect.Effect<A, E, R>, config: Config.Service): Effect.Effect<A, E, R>
|
|
261
215
|
} = dual<
|
|
262
216
|
/**
|
|
263
217
|
* @since 1.0.0
|
|
264
|
-
* @category
|
|
218
|
+
* @category Configuration
|
|
265
219
|
*/
|
|
266
220
|
(config: Config.Service) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>,
|
|
267
221
|
/**
|
|
268
222
|
* @since 1.0.0
|
|
269
|
-
* @category
|
|
223
|
+
* @category Configuration
|
|
270
224
|
*/
|
|
271
225
|
<A, E, R>(self: Effect.Effect<A, E, R>, config: Config.Service) => Effect.Effect<A, E, R>
|
|
272
226
|
>(2, (self, overrides) =>
|