@effect/ai-openai 4.0.0-beta.33 → 4.0.0-beta.34

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.
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiClient.d.ts","sourceRoot":"","sources":["../src/OpenAiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenAiClient.d.ts","sourceRoot":"","sources":["../src/OpenAiClient.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@
9
9
  import * as Array from "effect/Array";
10
10
  import * as Cause from "effect/Cause";
11
11
  import * as Effect from "effect/Effect";
12
+ import * as Exit from "effect/Exit";
12
13
  import { identity } from "effect/Function";
13
14
  import * as Function from "effect/Function";
14
15
  import * as Layer from "effect/Layer";
@@ -180,13 +181,35 @@ const makeSocket = /*#__PURE__*/Effect.gen(function* () {
180
181
  description: "Failed to send message over WebSocket"
181
182
  })
182
183
  })));
184
+ const cancel = Effect.suspend(() => write(JSON.stringify({
185
+ type: "response.cancel"
186
+ }))).pipe(Effect.ignore);
187
+ const reset = () => {
188
+ currentQueue = null;
189
+ };
183
190
  const decoder = new TextDecoder();
184
- const decode = Schema.decodeUnknownSync(Schema.fromJsonString(Generated.ResponseStreamEvent));
185
191
  yield* socket.runRaw(msg => {
186
192
  if (!currentQueue) return;
187
193
  const text = typeof msg === "string" ? msg : decoder.decode(msg);
188
194
  try {
189
- Queue.offerUnsafe(currentQueue, decode(text));
195
+ const event = decodeEvent(text);
196
+ if (event.type === "error") {
197
+ tracker.clearUnsafe();
198
+ }
199
+ if (event.type === "error" && "status" in event) {
200
+ return Queue.fail(currentQueue, AiError.make({
201
+ module: "OpenAiClient",
202
+ method: "createResponseStream",
203
+ reason: AiError.reasonFromHttpStatus({
204
+ status: event.status,
205
+ metadata: {
206
+ ...event.error,
207
+ description: event.error.message
208
+ }
209
+ })
210
+ }));
211
+ }
212
+ Queue.offerUnsafe(currentQueue, event);
190
213
  } catch {}
191
214
  }).pipe(Effect.catchCause(cause => {
192
215
  tracker.clearUnsafe();
@@ -205,11 +228,13 @@ const makeSocket = /*#__PURE__*/Effect.gen(function* () {
205
228
  description: Cause.pretty(cause)
206
229
  })
207
230
  })) : Effect.void;
208
- }), Effect.retry(Schedule.exponential(100, 1.5).pipe(Schedule.either(Schedule.spaced({
231
+ }), Effect.repeat(Schedule.exponential(100, 1.5).pipe(Schedule.either(Schedule.spaced({
209
232
  seconds: 5
210
- })), Schedule.jittered)), Effect.orDie, Effect.forkScoped);
233
+ })), Schedule.jittered)), Effect.forkScoped);
211
234
  return {
212
- send
235
+ send,
236
+ cancel,
237
+ reset
213
238
  };
214
239
  })
215
240
  });
@@ -218,20 +243,44 @@ const makeSocket = /*#__PURE__*/Effect.gen(function* () {
218
243
  return OpenAiSocket.serviceMap({
219
244
  createResponseStream(options) {
220
245
  const stream = Effect.gen(function* () {
221
- yield* Effect.acquireRelease(semaphore.take(1), () => semaphore.release(1));
246
+ yield* Effect.acquireRelease(semaphore.take(1), () => semaphore.release(1), {
247
+ interruptible: true
248
+ });
222
249
  const {
223
- send
250
+ send,
251
+ cancel,
252
+ reset
224
253
  } = yield* RcRef.get(queueRef);
225
254
  const incoming = yield* Queue.unbounded();
226
- yield* Effect.forkScoped(send(incoming, options), {
255
+ let done = false;
256
+ yield* Effect.acquireRelease(send(incoming, options), (_, exit) => {
257
+ reset();
258
+ if (Exit.isFailure(exit) && !Exit.hasInterrupts(exit)) return Effect.void;else if (done) return Effect.void;
259
+ return cancel;
260
+ }, {
261
+ interruptible: true
262
+ }).pipe(Effect.forkScoped({
227
263
  startImmediately: true
228
- });
229
- return Stream.fromQueue(incoming).pipe(Stream.takeUntil(e => e.type === "response.completed" || e.type === "response.incomplete"));
264
+ }));
265
+ return Stream.fromQueue(incoming).pipe(Stream.takeUntil(e => {
266
+ done = e.type === "response.completed" || e.type === "response.incomplete";
267
+ return done;
268
+ }));
230
269
  }).pipe(Stream.unwrap);
231
270
  return Effect.succeed([HttpClientResponse.fromWeb(request, new Response()), stream]);
232
271
  }
233
272
  }).pipe(ServiceMap.add(ResponseIdTracker.ResponseIdTracker, tracker));
234
273
  });
274
+ const ErrorEvent = /*#__PURE__*/Schema.Struct({
275
+ type: /*#__PURE__*/Schema.Literal("error"),
276
+ status: Schema.Number,
277
+ error: /*#__PURE__*/Schema.Struct({
278
+ type: Schema.String,
279
+ message: Schema.String
280
+ })
281
+ });
282
+ const AllEvents = /*#__PURE__*/Schema.Union([Generated.ResponseStreamEvent, ErrorEvent]);
283
+ const decodeEvent = /*#__PURE__*/Schema.decodeUnknownSync(/*#__PURE__*/Schema.fromJsonString(AllEvents));
235
284
  /**
236
285
  * Uses OpenAI's websocket mode for all responses within the provided effect.
237
286
  *
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiClient.js","names":["Array","Cause","Effect","identity","Function","Layer","Predicate","Queue","RcRef","Redacted","Schedule","Schema","Scope","Semaphore","ServiceMap","Stream","AiError","ResponseIdTracker","Sse","Headers","HttpBody","HttpClient","HttpClientRequest","HttpClientResponse","Socket","Generated","Errors","OpenAiConfig","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","apiUrl","httpClient","pipe","mapRequest","flow","prependUrl","apiKey","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","httpClientOk","filterStatusOk","client","config","getOrUndefined","isNotUndefined","createResponse","payload","includeResponse","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","response","stream","decodeText","pipeThroughChannel","decodeDataSchema","ResponseStreamEvent","takeUntil","event","data","type","map","Retry","die","fromEffect","createResponseStream","servicesWith","services","socket","OpenAiSocket","execute","post","body","jsonUnsafe","catchTag","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","undefined","makeSocket","tracker","request","orDie","preprocess","makeWebSocket","url","replace","WebSocketConstructor","f","headers","queueRef","idleTimeToLive","acquire","write","writer","currentQueue","send","queue","message","suspend","JSON","stringify","mapError","_error","module","method","reason","NetworkError","urlParams","hash","description","decoder","TextDecoder","decode","decodeUnknownSync","fromJsonString","runRaw","msg","text","offerUnsafe","catchCause","cause","clearUnsafe","pretty","void","retry","exponential","either","spaced","seconds","jittered","forkScoped","semaphore","makeUnsafe","serviceMap","acquireRelease","take","release","get","incoming","unbounded","startImmediately","fromQueue","e","unwrap","succeed","fromWeb","Response","add","withWebSocketMode","scopedWith","scope","flatMap","provide","provideServices","layerWebSocketMode","effectServices"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiClient.js","names":["Array","Cause","Effect","Exit","identity","Function","Layer","Predicate","Queue","RcRef","Redacted","Schedule","Schema","Scope","Semaphore","ServiceMap","Stream","AiError","ResponseIdTracker","Sse","Headers","HttpBody","HttpClient","HttpClientRequest","HttpClientResponse","Socket","Generated","Errors","OpenAiConfig","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","apiUrl","httpClient","pipe","mapRequest","flow","prependUrl","apiKey","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","httpClientOk","filterStatusOk","client","config","getOrUndefined","isNotUndefined","createResponse","payload","includeResponse","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","response","stream","decodeText","pipeThroughChannel","decodeDataSchema","ResponseStreamEvent","takeUntil","event","data","type","map","Retry","die","fromEffect","createResponseStream","servicesWith","services","socket","OpenAiSocket","execute","post","body","jsonUnsafe","catchTag","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","undefined","makeSocket","tracker","request","orDie","preprocess","makeWebSocket","url","replace","WebSocketConstructor","f","headers","queueRef","idleTimeToLive","acquire","write","writer","currentQueue","send","queue","message","suspend","JSON","stringify","mapError","_error","module","method","reason","NetworkError","urlParams","hash","description","cancel","ignore","reset","decoder","TextDecoder","runRaw","msg","text","decode","decodeEvent","clearUnsafe","reasonFromHttpStatus","status","metadata","offerUnsafe","catchCause","cause","pretty","void","repeat","exponential","either","spaced","seconds","jittered","forkScoped","semaphore","makeUnsafe","serviceMap","acquireRelease","take","release","interruptible","get","incoming","unbounded","done","_","exit","isFailure","hasInterrupts","startImmediately","fromQueue","e","unwrap","succeed","fromWeb","Response","add","ErrorEvent","Struct","Literal","Number","String","AllEvents","Union","decodeUnknownSync","fromJsonString","withWebSocketMode","scopedWith","scope","flatMap","provide","provideServices","layerWebSocketMode","effectServices"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * OpenAI Embedding Model implementation.
3
+ *
4
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+ import * as Effect from "effect/Effect";
9
+ import * as Layer from "effect/Layer";
10
+ import * as ServiceMap from "effect/ServiceMap";
11
+ import * as EmbeddingModel from "effect/unstable/ai/EmbeddingModel";
12
+ import * as AiModel from "effect/unstable/ai/Model";
13
+ import { OpenAiClient } from "./OpenAiClient.ts";
14
+ /**
15
+ * @since 1.0.0
16
+ * @category models
17
+ */
18
+ export type Model = "text-embedding-ada-002" | "text-embedding-3-small" | "text-embedding-3-large";
19
+ declare const Config_base: ServiceMap.ServiceClass<Config, "@effect/ai-openai/OpenAiEmbeddingModel/Config", {
20
+ readonly [x: string]: unknown;
21
+ readonly encoding_format?: "float" | "base64";
22
+ readonly dimensions?: number;
23
+ readonly user?: string;
24
+ readonly model?: string;
25
+ }>;
26
+ /**
27
+ * Service definition for OpenAI embedding model configuration.
28
+ *
29
+ * @since 1.0.0
30
+ * @category services
31
+ */
32
+ export declare class Config extends Config_base {
33
+ }
34
+ /**
35
+ * @since 1.0.0
36
+ * @category constructors
37
+ */
38
+ export declare const model: (model: (string & {}) | Model, options: {
39
+ readonly dimensions: number;
40
+ readonly config?: Omit<typeof Config.Service, "model" | "dimensions">;
41
+ }) => AiModel.Model<"openai", EmbeddingModel.EmbeddingModel | EmbeddingModel.Dimensions, OpenAiClient>;
42
+ /**
43
+ * Creates an OpenAI embedding model service.
44
+ *
45
+ * @since 1.0.0
46
+ * @category constructors
47
+ */
48
+ export declare const make: (args_0: {
49
+ readonly model: (string & {}) | Model;
50
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined;
51
+ }) => Effect.Effect<EmbeddingModel.Service, never, OpenAiClient>;
52
+ /**
53
+ * Creates a layer for the OpenAI embedding model.
54
+ *
55
+ * @since 1.0.0
56
+ * @category layers
57
+ */
58
+ export declare const layer: (options: {
59
+ readonly model: (string & {}) | Model;
60
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined;
61
+ }) => Layer.Layer<EmbeddingModel.EmbeddingModel, never, OpenAiClient>;
62
+ /**
63
+ * Provides config overrides for OpenAI embedding model operations.
64
+ *
65
+ * @since 1.0.0
66
+ * @category configuration
67
+ */
68
+ export declare const withConfigOverride: {
69
+ /**
70
+ * Provides config overrides for OpenAI embedding model operations.
71
+ *
72
+ * @since 1.0.0
73
+ * @category configuration
74
+ */
75
+ (overrides: typeof Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>;
76
+ /**
77
+ * Provides config overrides for OpenAI embedding model operations.
78
+ *
79
+ * @since 1.0.0
80
+ * @category configuration
81
+ */
82
+ <A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service): Effect.Effect<A, E, Exclude<R, Config>>;
83
+ };
84
+ export {};
85
+ //# sourceMappingURL=OpenAiEmbeddingModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiEmbeddingModel.d.ts","sourceRoot":"","sources":["../src/OpenAiEmbeddingModel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAG/C,OAAO,KAAK,cAAc,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,wBAAwB,GAAG,wBAAwB,GAAG,wBAAwB,CAAA;;;;;;;;AAElG;;;;;GAKG;AACH,qBAAa,MAAO,SAAQ,WAawB;CAAG;AAEvD;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,EAC5B,SAAS;IACP,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,CAAA;CACtE,KACA,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,YAAY,CAc/F,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,IAAI;oBACC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK;sBACnB,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS;gEAgBlE,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS;IAC7B,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CACnE,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,YAAY,CACN,CAAA;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE;IAC/B;;;;;OAKG;IACH,CAAC,SAAS,EAAE,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IACtH;;;;;OAKG;IACH,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;CAwBhH,CAAA"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * OpenAI Embedding Model implementation.
3
+ *
4
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+ import * as Effect from "effect/Effect";
9
+ import { dual } from "effect/Function";
10
+ import * as Layer from "effect/Layer";
11
+ import * as ServiceMap from "effect/ServiceMap";
12
+ import * as AiError from "effect/unstable/ai/AiError";
13
+ import * as EmbeddingModel from "effect/unstable/ai/EmbeddingModel";
14
+ import * as AiModel from "effect/unstable/ai/Model";
15
+ import { OpenAiClient } from "./OpenAiClient.js";
16
+ /**
17
+ * Service definition for OpenAI embedding model configuration.
18
+ *
19
+ * @since 1.0.0
20
+ * @category services
21
+ */
22
+ export class Config extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openai/OpenAiEmbeddingModel/Config") {}
23
+ /**
24
+ * @since 1.0.0
25
+ * @category constructors
26
+ */
27
+ export const model = (model, options) => AiModel.make("openai", model, Layer.merge(layer({
28
+ model,
29
+ config: {
30
+ ...options.config,
31
+ dimensions: options.dimensions
32
+ }
33
+ }), Layer.succeed(EmbeddingModel.Dimensions, options.dimensions)));
34
+ /**
35
+ * Creates an OpenAI embedding model service.
36
+ *
37
+ * @since 1.0.0
38
+ * @category constructors
39
+ */
40
+ export const make = /*#__PURE__*/Effect.fnUntraced(function* ({
41
+ model,
42
+ config: providerConfig
43
+ }) {
44
+ const client = yield* OpenAiClient;
45
+ const makeConfig = Effect.gen(function* () {
46
+ const services = yield* Effect.services();
47
+ return {
48
+ model,
49
+ ...providerConfig,
50
+ ...services.mapUnsafe.get(Config.key)
51
+ };
52
+ });
53
+ return yield* EmbeddingModel.make({
54
+ embedMany: Effect.fnUntraced(function* ({
55
+ inputs
56
+ }) {
57
+ const config = yield* makeConfig;
58
+ const response = yield* client.createEmbedding({
59
+ ...config,
60
+ input: inputs
61
+ });
62
+ return yield* mapProviderResponse(inputs.length, response);
63
+ })
64
+ });
65
+ });
66
+ /**
67
+ * Creates a layer for the OpenAI embedding model.
68
+ *
69
+ * @since 1.0.0
70
+ * @category layers
71
+ */
72
+ export const layer = options => Layer.effect(EmbeddingModel.EmbeddingModel, make(options));
73
+ /**
74
+ * Provides config overrides for OpenAI embedding model operations.
75
+ *
76
+ * @since 1.0.0
77
+ * @category configuration
78
+ */
79
+ export const withConfigOverride = /*#__PURE__*/dual(2, (self, overrides) => Effect.flatMap(Effect.serviceOption(Config), config => Effect.provideService(self, Config, {
80
+ ...(config._tag === "Some" ? config.value : {}),
81
+ ...overrides
82
+ })));
83
+ const mapProviderResponse = (inputLength, response) => {
84
+ if (response.data.length !== inputLength) {
85
+ return Effect.fail(invalidOutput("Provider returned " + response.data.length + " embeddings but expected " + inputLength));
86
+ }
87
+ const results = new Array(inputLength);
88
+ const seen = new Set();
89
+ for (const entry of response.data) {
90
+ if (!Number.isInteger(entry.index) || entry.index < 0 || entry.index >= inputLength) {
91
+ return Effect.fail(invalidOutput("Provider returned invalid embedding index: " + entry.index));
92
+ }
93
+ if (seen.has(entry.index)) {
94
+ return Effect.fail(invalidOutput("Provider returned duplicate embedding index: " + entry.index));
95
+ }
96
+ seen.add(entry.index);
97
+ results[entry.index] = [...entry.embedding];
98
+ }
99
+ if (seen.size !== inputLength) {
100
+ return Effect.fail(invalidOutput("Provider returned embeddings for " + seen.size + " inputs but expected " + inputLength));
101
+ }
102
+ return Effect.succeed({
103
+ results,
104
+ usage: {
105
+ inputTokens: response.usage?.prompt_tokens
106
+ }
107
+ });
108
+ };
109
+ const invalidOutput = description => AiError.make({
110
+ module: "OpenAiEmbeddingModel",
111
+ method: "embedMany",
112
+ reason: new AiError.InvalidOutputError({
113
+ description
114
+ })
115
+ });
116
+ //# sourceMappingURL=OpenAiEmbeddingModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiEmbeddingModel.js","names":["Effect","dual","Layer","ServiceMap","AiError","EmbeddingModel","AiModel","OpenAiClient","Config","Service","model","options","make","merge","layer","config","dimensions","succeed","Dimensions","fnUntraced","providerConfig","client","makeConfig","gen","services","mapUnsafe","get","key","embedMany","inputs","response","createEmbedding","input","mapProviderResponse","length","effect","withConfigOverride","self","overrides","flatMap","serviceOption","provideService","_tag","value","inputLength","data","fail","invalidOutput","results","Array","seen","Set","entry","Number","isInteger","index","has","add","embedding","size","usage","inputTokens","prompt_tokens","description","module","method","reason","InvalidOutputError"],"sources":["../src/OpenAiEmbeddingModel.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -18,6 +18,14 @@ export * as OpenAiClient from "./OpenAiClient.ts";
18
18
  * @since 1.0.0
19
19
  */
20
20
  export * as OpenAiConfig from "./OpenAiConfig.ts";
21
+ /**
22
+ * OpenAI Embedding Model implementation.
23
+ *
24
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
25
+ *
26
+ * @since 1.0.0
27
+ */
28
+ export * as OpenAiEmbeddingModel from "./OpenAiEmbeddingModel.ts";
21
29
  /**
22
30
  * OpenAI error metadata augmentation.
23
31
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;GAOG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;;;;;GAOG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;;;;;;GAOG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;;;;;;;GAQG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;;;;;;GAOG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;;;;;;GAOG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;;;;;GAMG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AAEjE;;;;;;;GAOG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;;;;;;GAOG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;;;;;;;GAQG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;;;;;;GAOG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -19,6 +19,14 @@ export * as OpenAiClient from "./OpenAiClient.js";
19
19
  * @since 1.0.0
20
20
  */
21
21
  export * as OpenAiConfig from "./OpenAiConfig.js";
22
+ /**
23
+ * OpenAI Embedding Model implementation.
24
+ *
25
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
26
+ *
27
+ * @since 1.0.0
28
+ */
29
+ export * as OpenAiEmbeddingModel from "./OpenAiEmbeddingModel.js";
22
30
  /**
23
31
  * OpenAI error metadata augmentation.
24
32
  *
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Generated","OpenAiClient","OpenAiConfig","OpenAiError","OpenAiLanguageModel","OpenAiTelemetry","OpenAiTool"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,SAAS,MAAM,gBAAgB;AAE3C;;;;;;;;AAQA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;;;;;;AAQA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;;;;;;AAQA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;;;;;;;AASA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;;;;;;AAQA,OAAO,KAAKC,UAAU,MAAM,iBAAiB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Generated","OpenAiClient","OpenAiConfig","OpenAiEmbeddingModel","OpenAiError","OpenAiLanguageModel","OpenAiTelemetry","OpenAiTool"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,SAAS,MAAM,gBAAgB;AAE3C;;;;;;;;AAQA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;AAGA,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAEjD;;;;;;;AAOA,OAAO,KAAKC,oBAAoB,MAAM,2BAA2B;AAEjE;;;;;;;;AAQA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;;;;;;AAQA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;;;;;;;AASA,OAAO,KAAKC,eAAe,MAAM,sBAAsB;AAEvD;;;;;;;;AAQA,OAAO,KAAKC,UAAU,MAAM,iBAAiB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/ai-openai",
3
- "version": "4.0.0-beta.33",
3
+ "version": "4.0.0-beta.34",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "An OpenAI provider integration for Effect AI SDK",
@@ -43,10 +43,10 @@
43
43
  "provenance": true
44
44
  },
45
45
  "devDependencies": {
46
- "effect": "^4.0.0-beta.33"
46
+ "effect": "^4.0.0-beta.34"
47
47
  },
48
48
  "peerDependencies": {
49
- "effect": "^4.0.0-beta.33"
49
+ "effect": "^4.0.0-beta.34"
50
50
  },
51
51
  "scripts": {
52
52
  "codegen": "effect-utils codegen",
@@ -10,6 +10,7 @@ import * as Array from "effect/Array"
10
10
  import * as Cause from "effect/Cause"
11
11
  import type * as Config from "effect/Config"
12
12
  import * as Effect from "effect/Effect"
13
+ import * as Exit from "effect/Exit"
13
14
  import { identity } from "effect/Function"
14
15
  import * as Function from "effect/Function"
15
16
  import * as Layer from "effect/Layer"
@@ -420,13 +421,39 @@ const makeSocket = Effect.gen(function*() {
420
421
  )
421
422
  )
422
423
 
424
+ const cancel = Effect.suspend(() => write(JSON.stringify({ type: "response.cancel" }))).pipe(
425
+ Effect.ignore
426
+ )
427
+ const reset = () => {
428
+ currentQueue = null
429
+ }
430
+
423
431
  const decoder = new TextDecoder()
424
- const decode = Schema.decodeUnknownSync(Schema.fromJsonString(Generated.ResponseStreamEvent))
425
432
  yield* socket.runRaw((msg) => {
426
433
  if (!currentQueue) return
427
434
  const text = typeof msg === "string" ? msg : decoder.decode(msg)
428
435
  try {
429
- Queue.offerUnsafe(currentQueue, decode(text))
436
+ const event = decodeEvent(text)
437
+ if (event.type === "error") {
438
+ tracker.clearUnsafe()
439
+ }
440
+ if (event.type === "error" && "status" in event) {
441
+ return Queue.fail(
442
+ currentQueue,
443
+ AiError.make({
444
+ module: "OpenAiClient",
445
+ method: "createResponseStream",
446
+ reason: AiError.reasonFromHttpStatus({
447
+ status: event.status,
448
+ metadata: {
449
+ ...event.error,
450
+ description: event.error.message
451
+ }
452
+ })
453
+ })
454
+ )
455
+ }
456
+ Queue.offerUnsafe(currentQueue, event)
430
457
  } catch {}
431
458
  }).pipe(
432
459
  Effect.catchCause((cause) => {
@@ -452,17 +479,16 @@ const makeSocket = Effect.gen(function*() {
452
479
  ) :
453
480
  Effect.void
454
481
  }),
455
- Effect.retry(
482
+ Effect.repeat(
456
483
  Schedule.exponential(100, 1.5).pipe(
457
484
  Schedule.either(Schedule.spaced({ seconds: 5 })),
458
485
  Schedule.jittered
459
486
  )
460
487
  ),
461
- Effect.orDie,
462
488
  Effect.forkScoped
463
489
  )
464
490
 
465
- return { send } as const
491
+ return { send, cancel, reset } as const
466
492
  })
467
493
  })
468
494
 
@@ -474,13 +500,30 @@ const makeSocket = Effect.gen(function*() {
474
500
  const stream = Effect.gen(function*() {
475
501
  yield* Effect.acquireRelease(
476
502
  semaphore.take(1),
477
- () => semaphore.release(1)
503
+ () => semaphore.release(1),
504
+ { interruptible: true }
478
505
  )
479
- const { send } = yield* RcRef.get(queueRef)
506
+ const { send, cancel, reset } = yield* RcRef.get(queueRef)
480
507
  const incoming = yield* Queue.unbounded<ResponseStreamEvent, AiError.AiError | Cause.Done>()
481
- yield* Effect.forkScoped(send(incoming, options), { startImmediately: true })
508
+ let done = false
509
+
510
+ yield* Effect.acquireRelease(
511
+ send(incoming, options),
512
+ (_, exit) => {
513
+ reset()
514
+ if (Exit.isFailure(exit) && !Exit.hasInterrupts(exit)) return Effect.void
515
+ else if (done) return Effect.void
516
+ return cancel
517
+ },
518
+ { interruptible: true }
519
+ ).pipe(
520
+ Effect.forkScoped({ startImmediately: true })
521
+ )
482
522
  return Stream.fromQueue(incoming).pipe(
483
- Stream.takeUntil((e) => e.type === "response.completed" || e.type === "response.incomplete")
523
+ Stream.takeUntil((e) => {
524
+ done = e.type === "response.completed" || e.type === "response.incomplete"
525
+ return done
526
+ })
484
527
  )
485
528
  }).pipe(Stream.unwrap)
486
529
 
@@ -494,6 +537,18 @@ const makeSocket = Effect.gen(function*() {
494
537
  )
495
538
  })
496
539
 
540
+ const ErrorEvent = Schema.Struct({
541
+ type: Schema.Literal("error"),
542
+ status: Schema.Number,
543
+ error: Schema.Struct({
544
+ type: Schema.String,
545
+ message: Schema.String
546
+ })
547
+ })
548
+
549
+ const AllEvents = Schema.Union([Generated.ResponseStreamEvent, ErrorEvent])
550
+ const decodeEvent = Schema.decodeUnknownSync(Schema.fromJsonString(AllEvents))
551
+
497
552
  /**
498
553
  * Uses OpenAI's websocket mode for all responses within the provided effect.
499
554
  *
@@ -0,0 +1,200 @@
1
+ /**
2
+ * OpenAI Embedding Model implementation.
3
+ *
4
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+ import * as Effect from "effect/Effect"
9
+ import { dual } from "effect/Function"
10
+ import * as Layer from "effect/Layer"
11
+ import * as ServiceMap from "effect/ServiceMap"
12
+ import type { Simplify } from "effect/Types"
13
+ import * as AiError from "effect/unstable/ai/AiError"
14
+ import * as EmbeddingModel from "effect/unstable/ai/EmbeddingModel"
15
+ import * as AiModel from "effect/unstable/ai/Model"
16
+ import type * as Generated from "./Generated.ts"
17
+ import { OpenAiClient } from "./OpenAiClient.ts"
18
+
19
+ /**
20
+ * @since 1.0.0
21
+ * @category models
22
+ */
23
+ export type Model = "text-embedding-ada-002" | "text-embedding-3-small" | "text-embedding-3-large"
24
+
25
+ /**
26
+ * Service definition for OpenAI embedding model configuration.
27
+ *
28
+ * @since 1.0.0
29
+ * @category services
30
+ */
31
+ export class Config extends ServiceMap.Service<
32
+ Config,
33
+ Simplify<
34
+ & Partial<
35
+ Omit<
36
+ typeof Generated.CreateEmbeddingRequest.Encoded,
37
+ "input"
38
+ >
39
+ >
40
+ & {
41
+ readonly [x: string]: unknown
42
+ }
43
+ >
44
+ >()("@effect/ai-openai/OpenAiEmbeddingModel/Config") {}
45
+
46
+ /**
47
+ * @since 1.0.0
48
+ * @category constructors
49
+ */
50
+ export const model = (
51
+ model: (string & {}) | Model,
52
+ options: {
53
+ readonly dimensions: number
54
+ readonly config?: Omit<typeof Config.Service, "model" | "dimensions">
55
+ }
56
+ ): AiModel.Model<"openai", EmbeddingModel.EmbeddingModel | EmbeddingModel.Dimensions, OpenAiClient> =>
57
+ AiModel.make(
58
+ "openai",
59
+ model,
60
+ Layer.merge(
61
+ layer({
62
+ model,
63
+ config: {
64
+ ...options.config,
65
+ dimensions: options.dimensions
66
+ }
67
+ }),
68
+ Layer.succeed(EmbeddingModel.Dimensions, options.dimensions)
69
+ )
70
+ )
71
+
72
+ /**
73
+ * Creates an OpenAI embedding model service.
74
+ *
75
+ * @since 1.0.0
76
+ * @category constructors
77
+ */
78
+ export const make = Effect.fnUntraced(function*({ model, config: providerConfig }: {
79
+ readonly model: (string & {}) | Model
80
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined
81
+ }): Effect.fn.Return<EmbeddingModel.Service, never, OpenAiClient> {
82
+ const client = yield* OpenAiClient
83
+
84
+ const makeConfig = Effect.gen(function*() {
85
+ const services = yield* Effect.services<never>()
86
+ return { model, ...providerConfig, ...services.mapUnsafe.get(Config.key) }
87
+ })
88
+
89
+ return yield* EmbeddingModel.make({
90
+ embedMany: Effect.fnUntraced(function*({ inputs }) {
91
+ const config = yield* makeConfig
92
+ const response = yield* client.createEmbedding({ ...config, input: inputs })
93
+ return yield* mapProviderResponse(inputs.length, response)
94
+ })
95
+ })
96
+ })
97
+
98
+ /**
99
+ * Creates a layer for the OpenAI embedding model.
100
+ *
101
+ * @since 1.0.0
102
+ * @category layers
103
+ */
104
+ export const layer = (options: {
105
+ readonly model: (string & {}) | Model
106
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined
107
+ }): Layer.Layer<EmbeddingModel.EmbeddingModel, never, OpenAiClient> =>
108
+ Layer.effect(EmbeddingModel.EmbeddingModel, make(options))
109
+
110
+ /**
111
+ * Provides config overrides for OpenAI embedding model operations.
112
+ *
113
+ * @since 1.0.0
114
+ * @category configuration
115
+ */
116
+ export const withConfigOverride: {
117
+ /**
118
+ * Provides config overrides for OpenAI embedding model operations.
119
+ *
120
+ * @since 1.0.0
121
+ * @category configuration
122
+ */
123
+ (overrides: typeof Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>
124
+ /**
125
+ * Provides config overrides for OpenAI embedding model operations.
126
+ *
127
+ * @since 1.0.0
128
+ * @category configuration
129
+ */
130
+ <A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service): Effect.Effect<A, E, Exclude<R, Config>>
131
+ } = dual<
132
+ /**
133
+ * Provides config overrides for OpenAI embedding model operations.
134
+ *
135
+ * @since 1.0.0
136
+ * @category configuration
137
+ */
138
+ (overrides: typeof Config.Service) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>,
139
+ /**
140
+ * Provides config overrides for OpenAI embedding model operations.
141
+ *
142
+ * @since 1.0.0
143
+ * @category configuration
144
+ */
145
+ <A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service) => Effect.Effect<A, E, Exclude<R, Config>>
146
+ >(2, (self, overrides) =>
147
+ Effect.flatMap(
148
+ Effect.serviceOption(Config),
149
+ (config) =>
150
+ Effect.provideService(self, Config, {
151
+ ...(config._tag === "Some" ? config.value : {}),
152
+ ...overrides
153
+ })
154
+ ))
155
+
156
+ const mapProviderResponse = (
157
+ inputLength: number,
158
+ response: typeof Generated.CreateEmbeddingResponse.Type
159
+ ): Effect.Effect<EmbeddingModel.ProviderResponse, AiError.AiError> => {
160
+ if (response.data.length !== inputLength) {
161
+ return Effect.fail(
162
+ invalidOutput("Provider returned " + response.data.length + " embeddings but expected " + inputLength)
163
+ )
164
+ }
165
+
166
+ const results = new Array<Array<number>>(inputLength)
167
+ const seen = new Set<number>()
168
+
169
+ for (const entry of response.data) {
170
+ if (!Number.isInteger(entry.index) || entry.index < 0 || entry.index >= inputLength) {
171
+ return Effect.fail(invalidOutput("Provider returned invalid embedding index: " + entry.index))
172
+ }
173
+ if (seen.has(entry.index)) {
174
+ return Effect.fail(invalidOutput("Provider returned duplicate embedding index: " + entry.index))
175
+ }
176
+
177
+ seen.add(entry.index)
178
+ results[entry.index] = [...entry.embedding]
179
+ }
180
+
181
+ if (seen.size !== inputLength) {
182
+ return Effect.fail(
183
+ invalidOutput("Provider returned embeddings for " + seen.size + " inputs but expected " + inputLength)
184
+ )
185
+ }
186
+
187
+ return Effect.succeed({
188
+ results,
189
+ usage: {
190
+ inputTokens: response.usage?.prompt_tokens
191
+ }
192
+ })
193
+ }
194
+
195
+ const invalidOutput = (description: string): AiError.AiError =>
196
+ AiError.make({
197
+ module: "OpenAiEmbeddingModel",
198
+ method: "embedMany",
199
+ reason: new AiError.InvalidOutputError({ description })
200
+ })
package/src/index.ts CHANGED
@@ -24,6 +24,15 @@ export * as OpenAiClient from "./OpenAiClient.ts"
24
24
  */
25
25
  export * as OpenAiConfig from "./OpenAiConfig.ts"
26
26
 
27
+ /**
28
+ * OpenAI Embedding Model implementation.
29
+ *
30
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
31
+ *
32
+ * @since 1.0.0
33
+ */
34
+ export * as OpenAiEmbeddingModel from "./OpenAiEmbeddingModel.ts"
35
+
27
36
  /**
28
37
  * OpenAI error metadata augmentation.
29
38
  *