@effect/ai-openai 4.0.0-beta.7 → 4.0.0-beta.70
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/dist/Generated.d.ts +66734 -37723
- package/dist/Generated.d.ts.map +1 -1
- package/dist/Generated.js +1 -1
- package/dist/Generated.js.map +1 -1
- package/dist/OpenAiClient.d.ts +81 -25
- package/dist/OpenAiClient.d.ts.map +1 -1
- package/dist/OpenAiClient.js +220 -39
- package/dist/OpenAiClient.js.map +1 -1
- package/dist/OpenAiClientGenerated.d.ts +91 -0
- package/dist/OpenAiClientGenerated.d.ts.map +1 -0
- package/dist/OpenAiClientGenerated.js +84 -0
- package/dist/OpenAiClientGenerated.js.map +1 -0
- package/dist/OpenAiConfig.d.ts +45 -10
- package/dist/OpenAiConfig.d.ts.map +1 -1
- package/dist/OpenAiConfig.js +31 -7
- package/dist/OpenAiConfig.js.map +1 -1
- package/dist/OpenAiEmbeddingModel.d.ts +89 -0
- package/dist/OpenAiEmbeddingModel.d.ts.map +1 -0
- package/dist/OpenAiEmbeddingModel.js +121 -0
- package/dist/OpenAiEmbeddingModel.js.map +1 -0
- package/dist/OpenAiError.d.ts +168 -35
- package/dist/OpenAiError.d.ts.map +1 -1
- package/dist/OpenAiError.js +1 -1
- package/dist/OpenAiLanguageModel.d.ts +250 -57
- package/dist/OpenAiLanguageModel.d.ts.map +1 -1
- package/dist/OpenAiLanguageModel.js +311 -160
- package/dist/OpenAiLanguageModel.js.map +1 -1
- package/dist/OpenAiSchema.d.ts +2029 -0
- package/dist/OpenAiSchema.d.ts.map +1 -0
- package/dist/OpenAiSchema.js +591 -0
- package/dist/OpenAiSchema.js.map +1 -0
- package/dist/OpenAiTelemetry.d.ts +31 -18
- package/dist/OpenAiTelemetry.d.ts.map +1 -1
- package/dist/OpenAiTelemetry.js +6 -4
- package/dist/OpenAiTelemetry.js.map +1 -1
- package/dist/OpenAiTool.d.ts +56 -67
- package/dist/OpenAiTool.d.ts.map +1 -1
- package/dist/OpenAiTool.js +33 -44
- package/dist/OpenAiTool.js.map +1 -1
- package/dist/index.d.ts +42 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/errors.js +4 -4
- package/dist/internal/errors.js.map +1 -1
- package/package.json +3 -3
- package/src/Generated.ts +9858 -5044
- package/src/OpenAiClient.ts +396 -90
- package/src/OpenAiClientGenerated.ts +202 -0
- package/src/OpenAiConfig.ts +46 -11
- package/src/OpenAiEmbeddingModel.ts +207 -0
- package/src/OpenAiError.ts +170 -35
- package/src/OpenAiLanguageModel.ts +633 -157
- package/src/OpenAiSchema.ts +984 -0
- package/src/OpenAiTelemetry.ts +32 -19
- package/src/OpenAiTool.ts +34 -45
- package/src/index.ts +45 -8
- package/src/internal/errors.ts +6 -4
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type * as Config from "effect/Config";
|
|
2
|
+
import * as Context from "effect/Context";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Layer from "effect/Layer";
|
|
5
|
+
import * as Redacted from "effect/Redacted";
|
|
6
|
+
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
7
|
+
import * as Generated from "./Generated.ts";
|
|
8
|
+
declare const OpenAiClientGenerated_base: Context.ServiceClass<OpenAiClientGenerated, "@effect/ai-openai/OpenAiClientGenerated", Generated.OpenAiClient>;
|
|
9
|
+
/**
|
|
10
|
+
* Service identifier for the generated OpenAI client.
|
|
11
|
+
*
|
|
12
|
+
* @since 4.0.0
|
|
13
|
+
* @category service
|
|
14
|
+
*/
|
|
15
|
+
export declare class OpenAiClientGenerated extends OpenAiClientGenerated_base {
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Options for configuring the generated OpenAI client.
|
|
19
|
+
*
|
|
20
|
+
* @since 4.0.0
|
|
21
|
+
* @category models
|
|
22
|
+
*/
|
|
23
|
+
export type Options = {
|
|
24
|
+
/**
|
|
25
|
+
* The OpenAI API key.
|
|
26
|
+
*/
|
|
27
|
+
readonly apiKey?: Redacted.Redacted<string> | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* The base URL for the OpenAI API.
|
|
30
|
+
*
|
|
31
|
+
* @default "https://api.openai.com/v1"
|
|
32
|
+
*/
|
|
33
|
+
readonly apiUrl?: string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Optional organization ID for multi-org accounts.
|
|
36
|
+
*/
|
|
37
|
+
readonly organizationId?: Redacted.Redacted<string> | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Optional project ID for project-scoped requests.
|
|
40
|
+
*/
|
|
41
|
+
readonly projectId?: Redacted.Redacted<string> | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Optional transformer for the HTTP client.
|
|
44
|
+
*/
|
|
45
|
+
readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Creates a generated OpenAI client service with the given options.
|
|
49
|
+
*
|
|
50
|
+
* @since 4.0.0
|
|
51
|
+
* @category constructors
|
|
52
|
+
*/
|
|
53
|
+
export declare const make: (options: Options) => Effect.Effect<Generated.OpenAiClient, never, HttpClient.HttpClient>;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a layer for the generated OpenAI client with the given options.
|
|
56
|
+
*
|
|
57
|
+
* @since 4.0.0
|
|
58
|
+
* @category layers
|
|
59
|
+
*/
|
|
60
|
+
export declare const layer: (options: Options) => Layer.Layer<OpenAiClientGenerated, never, HttpClient.HttpClient>;
|
|
61
|
+
/**
|
|
62
|
+
* Creates a layer for the generated OpenAI client, loading the requisite
|
|
63
|
+
* configuration via Effect's `Config` module.
|
|
64
|
+
*
|
|
65
|
+
* @since 4.0.0
|
|
66
|
+
* @category layers
|
|
67
|
+
*/
|
|
68
|
+
export declare const layerConfig: (options?: {
|
|
69
|
+
/**
|
|
70
|
+
* The config value to load for the API key.
|
|
71
|
+
*/
|
|
72
|
+
readonly apiKey?: Config.Config<Redacted.Redacted<string> | undefined> | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* The config value to load for the API URL.
|
|
75
|
+
*/
|
|
76
|
+
readonly apiUrl?: Config.Config<string> | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* The config value to load for the organization ID.
|
|
79
|
+
*/
|
|
80
|
+
readonly organizationId?: Config.Config<Redacted.Redacted<string> | undefined> | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* The config value to load for the project ID.
|
|
83
|
+
*/
|
|
84
|
+
readonly projectId?: Config.Config<Redacted.Redacted<string> | undefined> | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Optional transformer for the HTTP client.
|
|
87
|
+
*/
|
|
88
|
+
readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined;
|
|
89
|
+
}) => Layer.Layer<OpenAiClientGenerated, Config.ConfigError, HttpClient.HttpClient>;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=OpenAiClientGenerated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAiClientGenerated.d.ts","sourceRoot":"","sources":["../src/OpenAiClientGenerated.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAE7D,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;;AAO3C;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,0BAE1C;CAAG;AAMJ;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAEvD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAEpC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAE/D;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAE1D;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;CAClG,CAAA;AAWD;;;;;GAKG;AACH,eAAO,MAAM,IAAI,2FA4ChB,CAAA;AAMD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CACpD,CAAA;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU;IACpC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAElF;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAEnD;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAE1F;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAErF;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;CAClG,KAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,CAwB7E,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 4.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Array from "effect/Array";
|
|
5
|
+
import * as Context from "effect/Context";
|
|
6
|
+
import * as Effect from "effect/Effect";
|
|
7
|
+
import { identity } from "effect/Function";
|
|
8
|
+
import * as Function from "effect/Function";
|
|
9
|
+
import * as Layer from "effect/Layer";
|
|
10
|
+
import * as Predicate from "effect/Predicate";
|
|
11
|
+
import * as Redacted from "effect/Redacted";
|
|
12
|
+
import * as Headers from "effect/unstable/http/Headers";
|
|
13
|
+
import * as HttpClient from "effect/unstable/http/HttpClient";
|
|
14
|
+
import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
|
|
15
|
+
import * as Generated from "./Generated.js";
|
|
16
|
+
import { OpenAiConfig } from "./OpenAiConfig.js";
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Service Identifier
|
|
19
|
+
// =============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Service identifier for the generated OpenAI client.
|
|
22
|
+
*
|
|
23
|
+
* @since 4.0.0
|
|
24
|
+
* @category service
|
|
25
|
+
*/
|
|
26
|
+
export class OpenAiClientGenerated extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiClientGenerated") {}
|
|
27
|
+
const RedactedOpenAiHeaders = {
|
|
28
|
+
OpenAiOrganization: "OpenAI-Organization",
|
|
29
|
+
OpenAiProject: "OpenAI-Project"
|
|
30
|
+
};
|
|
31
|
+
// =============================================================================
|
|
32
|
+
// Constructor
|
|
33
|
+
// =============================================================================
|
|
34
|
+
/**
|
|
35
|
+
* Creates a generated OpenAI client service with the given options.
|
|
36
|
+
*
|
|
37
|
+
* @since 4.0.0
|
|
38
|
+
* @category constructors
|
|
39
|
+
*/
|
|
40
|
+
export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
41
|
+
const baseClient = yield* HttpClient.HttpClient;
|
|
42
|
+
const apiUrl = options.apiUrl ?? "https://api.openai.com/v1";
|
|
43
|
+
const httpClient = baseClient.pipe(HttpClient.mapRequest(Function.flow(HttpClientRequest.prependUrl(apiUrl), options.apiKey ? HttpClientRequest.bearerToken(Redacted.value(options.apiKey)) : identity, options.organizationId ? HttpClientRequest.setHeader(RedactedOpenAiHeaders.OpenAiOrganization, Redacted.value(options.organizationId)) : identity, options.projectId ? HttpClientRequest.setHeader(RedactedOpenAiHeaders.OpenAiProject, Redacted.value(options.projectId)) : identity, HttpClientRequest.acceptJson)), options.transformClient ? options.transformClient : identity);
|
|
44
|
+
return Generated.make(httpClient, {
|
|
45
|
+
transformClient: Effect.fnUntraced(function* (client) {
|
|
46
|
+
const config = yield* OpenAiConfig.getOrUndefined;
|
|
47
|
+
if (Predicate.isNotUndefined(config?.transformClient)) {
|
|
48
|
+
return config.transformClient(client);
|
|
49
|
+
}
|
|
50
|
+
return client;
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
}, /*#__PURE__*/Effect.updateService(Headers.CurrentRedactedNames, /*#__PURE__*/Array.appendAll(/*#__PURE__*/Object.values(RedactedOpenAiHeaders))));
|
|
54
|
+
// =============================================================================
|
|
55
|
+
// Layers
|
|
56
|
+
// =============================================================================
|
|
57
|
+
/**
|
|
58
|
+
* Creates a layer for the generated OpenAI client with the given options.
|
|
59
|
+
*
|
|
60
|
+
* @since 4.0.0
|
|
61
|
+
* @category layers
|
|
62
|
+
*/
|
|
63
|
+
export const layer = options => Layer.effect(OpenAiClientGenerated, make(options));
|
|
64
|
+
/**
|
|
65
|
+
* Creates a layer for the generated OpenAI client, loading the requisite
|
|
66
|
+
* configuration via Effect's `Config` module.
|
|
67
|
+
*
|
|
68
|
+
* @since 4.0.0
|
|
69
|
+
* @category layers
|
|
70
|
+
*/
|
|
71
|
+
export const layerConfig = options => Layer.effect(OpenAiClientGenerated, Effect.gen(function* () {
|
|
72
|
+
const apiKey = Predicate.isNotUndefined(options?.apiKey) ? yield* options.apiKey : undefined;
|
|
73
|
+
const apiUrl = Predicate.isNotUndefined(options?.apiUrl) ? yield* options.apiUrl : undefined;
|
|
74
|
+
const organizationId = Predicate.isNotUndefined(options?.organizationId) ? yield* options.organizationId : undefined;
|
|
75
|
+
const projectId = Predicate.isNotUndefined(options?.projectId) ? yield* options.projectId : undefined;
|
|
76
|
+
return yield* make({
|
|
77
|
+
apiKey,
|
|
78
|
+
apiUrl,
|
|
79
|
+
organizationId,
|
|
80
|
+
projectId,
|
|
81
|
+
transformClient: options?.transformClient
|
|
82
|
+
});
|
|
83
|
+
}));
|
|
84
|
+
//# sourceMappingURL=OpenAiClientGenerated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAiClientGenerated.js","names":["Array","Context","Effect","identity","Function","Layer","Predicate","Redacted","Headers","HttpClient","HttpClientRequest","Generated","OpenAiConfig","OpenAiClientGenerated","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","apiUrl","httpClient","pipe","mapRequest","flow","prependUrl","apiKey","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","client","config","getOrUndefined","isNotUndefined","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","undefined"],"sources":["../src/OpenAiClientGenerated.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/OpenAiConfig.d.ts
CHANGED
|
@@ -1,45 +1,80 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The `OpenAiConfig` module provides contextual configuration for the
|
|
3
|
+
* `@effect/ai-openai` integration. It is used to customize how OpenAI clients
|
|
4
|
+
* are built and interpreted without threading configuration through every API
|
|
5
|
+
* call manually.
|
|
6
|
+
*
|
|
7
|
+
* The primary use case is installing an HTTP client transform with
|
|
8
|
+
* {@link withClientTransform}. This lets applications adapt the underlying
|
|
9
|
+
* OpenAI HTTP client for cross-cutting concerns such as custom middleware,
|
|
10
|
+
* instrumentation, proxying, or request policy changes while keeping the
|
|
11
|
+
* OpenAI service APIs unchanged.
|
|
12
|
+
*
|
|
13
|
+
* Configuration is scoped through Effect's context, so transforms only apply to
|
|
14
|
+
* the effect they are provided to and anything evaluated inside that scope.
|
|
15
|
+
* When multiple transforms are needed, compose them into a single
|
|
16
|
+
* `HttpClient => HttpClient` function before providing the configuration.
|
|
17
|
+
*
|
|
18
|
+
* @since 4.0.0
|
|
3
19
|
*/
|
|
20
|
+
import * as Context from "effect/Context";
|
|
4
21
|
import * as Effect from "effect/Effect";
|
|
5
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
6
22
|
import type { HttpClient } from "effect/unstable/http/HttpClient";
|
|
7
|
-
declare const OpenAiConfig_base:
|
|
23
|
+
declare const OpenAiConfig_base: Context.ServiceClass<OpenAiConfig, "@effect/ai-openai/OpenAiConfig", OpenAiConfig.Service>;
|
|
8
24
|
/**
|
|
9
|
-
*
|
|
25
|
+
* Context service carrying scoped OpenAI configuration for provider
|
|
26
|
+
* operations.
|
|
27
|
+
*
|
|
10
28
|
* @category services
|
|
29
|
+
* @since 4.0.0
|
|
11
30
|
*/
|
|
12
31
|
export declare class OpenAiConfig extends OpenAiConfig_base {
|
|
13
32
|
/**
|
|
14
|
-
*
|
|
33
|
+
* Gets the configured OpenAI service from the current context when present.
|
|
34
|
+
*
|
|
35
|
+
* @since 4.0.0
|
|
15
36
|
*/
|
|
16
37
|
static readonly getOrUndefined: Effect.Effect<typeof OpenAiConfig.Service | undefined>;
|
|
17
38
|
}
|
|
18
39
|
/**
|
|
19
|
-
*
|
|
40
|
+
* Types used by the `OpenAiConfig` context service.
|
|
41
|
+
*
|
|
42
|
+
* @since 4.0.0
|
|
20
43
|
*/
|
|
21
44
|
export declare namespace OpenAiConfig {
|
|
22
45
|
/**
|
|
23
|
-
*
|
|
46
|
+
* Configuration values read by OpenAI provider operations when executing
|
|
47
|
+
* requests.
|
|
48
|
+
*
|
|
24
49
|
* @category models
|
|
50
|
+
* @since 4.0.0
|
|
25
51
|
*/
|
|
26
52
|
interface Service {
|
|
27
53
|
readonly transformClient?: ((client: HttpClient) => HttpClient) | undefined;
|
|
28
54
|
}
|
|
29
55
|
}
|
|
30
56
|
/**
|
|
31
|
-
*
|
|
57
|
+
* Provides a scoped transform for the OpenAI HTTP client used by provider
|
|
58
|
+
* operations.
|
|
59
|
+
*
|
|
32
60
|
* @category configuration
|
|
61
|
+
* @since 4.0.0
|
|
33
62
|
*/
|
|
34
63
|
export declare const withClientTransform: {
|
|
35
64
|
/**
|
|
36
|
-
*
|
|
65
|
+
* Provides a scoped transform for the OpenAI HTTP client used by provider
|
|
66
|
+
* operations.
|
|
67
|
+
*
|
|
37
68
|
* @category configuration
|
|
69
|
+
* @since 4.0.0
|
|
38
70
|
*/
|
|
39
71
|
(transform: (client: HttpClient) => HttpClient): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
40
72
|
/**
|
|
41
|
-
*
|
|
73
|
+
* Provides a scoped transform for the OpenAI HTTP client used by provider
|
|
74
|
+
* operations.
|
|
75
|
+
*
|
|
42
76
|
* @category configuration
|
|
77
|
+
* @since 4.0.0
|
|
43
78
|
*/
|
|
44
79
|
<A, E, R>(self: Effect.Effect<A, E, R>, transform: (client: HttpClient) => HttpClient): Effect.Effect<A, E, R>;
|
|
45
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAiConfig.d.ts","sourceRoot":"","sources":["../src/OpenAiConfig.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"OpenAiConfig.d.ts","sourceRoot":"","sources":["../src/OpenAiConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;;AAEjE;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,iBAGG;IACnC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAGrF;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC;;;;;;OAMG;IACH,UAAiB,OAAO;QACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,GAAG,SAAS,CAAA;KAC5E;CACF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAChC;;;;;;OAMG;IACH,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,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,CAAC,CAAC,CAAA;IAClH;;;;;;OAMG;IACH,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACN,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,GAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAQvB,CAAA"}
|
package/dist/OpenAiConfig.js
CHANGED
|
@@ -1,22 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The `OpenAiConfig` module provides contextual configuration for the
|
|
3
|
+
* `@effect/ai-openai` integration. It is used to customize how OpenAI clients
|
|
4
|
+
* are built and interpreted without threading configuration through every API
|
|
5
|
+
* call manually.
|
|
6
|
+
*
|
|
7
|
+
* The primary use case is installing an HTTP client transform with
|
|
8
|
+
* {@link withClientTransform}. This lets applications adapt the underlying
|
|
9
|
+
* OpenAI HTTP client for cross-cutting concerns such as custom middleware,
|
|
10
|
+
* instrumentation, proxying, or request policy changes while keeping the
|
|
11
|
+
* OpenAI service APIs unchanged.
|
|
12
|
+
*
|
|
13
|
+
* Configuration is scoped through Effect's context, so transforms only apply to
|
|
14
|
+
* the effect they are provided to and anything evaluated inside that scope.
|
|
15
|
+
* When multiple transforms are needed, compose them into a single
|
|
16
|
+
* `HttpClient => HttpClient` function before providing the configuration.
|
|
17
|
+
*
|
|
18
|
+
* @since 4.0.0
|
|
3
19
|
*/
|
|
20
|
+
import * as Context from "effect/Context";
|
|
4
21
|
import * as Effect from "effect/Effect";
|
|
5
22
|
import { dual } from "effect/Function";
|
|
6
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
7
23
|
/**
|
|
8
|
-
*
|
|
24
|
+
* Context service carrying scoped OpenAI configuration for provider
|
|
25
|
+
* operations.
|
|
26
|
+
*
|
|
9
27
|
* @category services
|
|
28
|
+
* @since 4.0.0
|
|
10
29
|
*/
|
|
11
|
-
export class OpenAiConfig extends /*#__PURE__*/
|
|
30
|
+
export class OpenAiConfig extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiConfig") {
|
|
12
31
|
/**
|
|
13
|
-
*
|
|
32
|
+
* Gets the configured OpenAI service from the current context when present.
|
|
33
|
+
*
|
|
34
|
+
* @since 4.0.0
|
|
14
35
|
*/
|
|
15
|
-
static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.
|
|
36
|
+
static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.context(), context => context.mapUnsafe.get(OpenAiConfig.key));
|
|
16
37
|
}
|
|
17
38
|
/**
|
|
18
|
-
*
|
|
39
|
+
* Provides a scoped transform for the OpenAI HTTP client used by provider
|
|
40
|
+
* operations.
|
|
41
|
+
*
|
|
19
42
|
* @category configuration
|
|
43
|
+
* @since 4.0.0
|
|
20
44
|
*/
|
|
21
45
|
export const withClientTransform = /*#__PURE__*/dual(2, (self, transformClient) => Effect.flatMap(OpenAiConfig.getOrUndefined, config => Effect.provideService(self, OpenAiConfig, {
|
|
22
46
|
...config,
|
package/dist/OpenAiConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAiConfig.js","names":["
|
|
1
|
+
{"version":3,"file":"OpenAiConfig.js","names":["Context","Effect","dual","OpenAiConfig","Service","getOrUndefined","map","context","mapUnsafe","get","key","withClientTransform","self","transformClient","flatMap","config","provideService"],"sources":["../src/OpenAiConfig.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;AAmBA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AAGtC;;;;;;;AAOA,OAAM,MAAOC,YAAa,sBAAQH,OAAO,CAACI,OAAO,EAG9C,CAAC,gCAAgC,CAAC;EACnC;;;;;EAKA,OAAgBC,cAAc,gBAA2DJ,MAAM,CAACK,GAAG,cACjGL,MAAM,CAACM,OAAO,EAAS,EACtBA,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACC,GAAG,CAACN,YAAY,CAACO,GAAG,CAAC,CACrD;;AAqBH;;;;;;;AAOA,OAAO,MAAMC,mBAAmB,gBAoB5BT,IAAI,CAAC,CAAC,EAAE,CACVU,IAA4B,EAC5BC,eAAmD,KAEnDZ,MAAM,CAACa,OAAO,CACZX,YAAY,CAACE,cAAc,EAC1BU,MAAM,IAAKd,MAAM,CAACe,cAAc,CAACJ,IAAI,EAAET,YAAY,EAAE;EAAE,GAAGY,MAAM;EAAEF;AAAe,CAAE,CAAC,CACtF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Model implementation.
|
|
3
|
+
*
|
|
4
|
+
* Provides an EmbeddingModel implementation for OpenAI's embeddings API.
|
|
5
|
+
*
|
|
6
|
+
* @since 4.0.0
|
|
7
|
+
*/
|
|
8
|
+
import * as Context from "effect/Context";
|
|
9
|
+
import * as Effect from "effect/Effect";
|
|
10
|
+
import * as Layer from "effect/Layer";
|
|
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
|
+
* Model identifiers supported by OpenAI's embeddings API.
|
|
16
|
+
*
|
|
17
|
+
* @category models
|
|
18
|
+
* @since 4.0.0
|
|
19
|
+
*/
|
|
20
|
+
export type Model = "text-embedding-ada-002" | "text-embedding-3-small" | "text-embedding-3-large";
|
|
21
|
+
declare const Config_base: Context.ServiceClass<Config, "@effect/ai-openai/OpenAiEmbeddingModel/Config", {
|
|
22
|
+
readonly [x: string]: unknown;
|
|
23
|
+
readonly encoding_format?: "float" | "base64";
|
|
24
|
+
readonly dimensions?: number;
|
|
25
|
+
readonly user?: string;
|
|
26
|
+
readonly model?: string;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Service definition for OpenAI embedding model configuration.
|
|
30
|
+
*
|
|
31
|
+
* @category services
|
|
32
|
+
* @since 4.0.0
|
|
33
|
+
*/
|
|
34
|
+
export declare class Config extends Config_base {
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates an `AiModel` for an OpenAI embedding model with its configured vector dimensions.
|
|
38
|
+
*
|
|
39
|
+
* @category constructors
|
|
40
|
+
* @since 4.0.0
|
|
41
|
+
*/
|
|
42
|
+
export declare const model: (model: (string & {}) | Model, options: {
|
|
43
|
+
readonly dimensions: number;
|
|
44
|
+
readonly config?: Omit<typeof Config.Service, "model" | "dimensions">;
|
|
45
|
+
}) => AiModel.Model<"openai", EmbeddingModel.EmbeddingModel | EmbeddingModel.Dimensions, OpenAiClient>;
|
|
46
|
+
/**
|
|
47
|
+
* Creates an OpenAI embedding model service.
|
|
48
|
+
*
|
|
49
|
+
* @category constructors
|
|
50
|
+
* @since 4.0.0
|
|
51
|
+
*/
|
|
52
|
+
export declare const make: (args_0: {
|
|
53
|
+
readonly model: (string & {}) | Model;
|
|
54
|
+
readonly config?: Omit<typeof Config.Service, "model"> | undefined;
|
|
55
|
+
}) => Effect.Effect<EmbeddingModel.Service, never, OpenAiClient>;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a layer for the OpenAI embedding model.
|
|
58
|
+
*
|
|
59
|
+
* @category layers
|
|
60
|
+
* @since 4.0.0
|
|
61
|
+
*/
|
|
62
|
+
export declare const layer: (options: {
|
|
63
|
+
readonly model: (string & {}) | Model;
|
|
64
|
+
readonly config?: Omit<typeof Config.Service, "model"> | undefined;
|
|
65
|
+
}) => Layer.Layer<EmbeddingModel.EmbeddingModel, never, OpenAiClient>;
|
|
66
|
+
/**
|
|
67
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
68
|
+
*
|
|
69
|
+
* @category configuration
|
|
70
|
+
* @since 4.0.0
|
|
71
|
+
*/
|
|
72
|
+
export declare const withConfigOverride: {
|
|
73
|
+
/**
|
|
74
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
75
|
+
*
|
|
76
|
+
* @category configuration
|
|
77
|
+
* @since 4.0.0
|
|
78
|
+
*/
|
|
79
|
+
(overrides: typeof Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>;
|
|
80
|
+
/**
|
|
81
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
82
|
+
*
|
|
83
|
+
* @category configuration
|
|
84
|
+
* @since 4.0.0
|
|
85
|
+
*/
|
|
86
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service): Effect.Effect<A, E, Exclude<R, Config>>;
|
|
87
|
+
};
|
|
88
|
+
export {};
|
|
89
|
+
//# 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,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,cAAc,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,wBAAwB,GAAG,wBAAwB,GAAG,wBAAwB,CAAA;;;;;;;;AAElG;;;;;GAKG;AACH,qBAAa,MAAO,SAAQ,WAawB;CAAG;AAEvD;;;;;GAKG;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,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Model implementation.
|
|
3
|
+
*
|
|
4
|
+
* Provides an EmbeddingModel implementation for OpenAI's embeddings API.
|
|
5
|
+
*
|
|
6
|
+
* @since 4.0.0
|
|
7
|
+
*/
|
|
8
|
+
import * as Context from "effect/Context";
|
|
9
|
+
import * as Effect from "effect/Effect";
|
|
10
|
+
import { dual } from "effect/Function";
|
|
11
|
+
import * as Layer from "effect/Layer";
|
|
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
|
+
* @category services
|
|
20
|
+
* @since 4.0.0
|
|
21
|
+
*/
|
|
22
|
+
export class Config extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiEmbeddingModel/Config") {}
|
|
23
|
+
/**
|
|
24
|
+
* Creates an `AiModel` for an OpenAI embedding model with its configured vector dimensions.
|
|
25
|
+
*
|
|
26
|
+
* @category constructors
|
|
27
|
+
* @since 4.0.0
|
|
28
|
+
*/
|
|
29
|
+
export const model = (model, options) => AiModel.make("openai", model, Layer.merge(layer({
|
|
30
|
+
model,
|
|
31
|
+
config: {
|
|
32
|
+
...options.config,
|
|
33
|
+
dimensions: options.dimensions
|
|
34
|
+
}
|
|
35
|
+
}), Layer.succeed(EmbeddingModel.Dimensions, options.dimensions)));
|
|
36
|
+
/**
|
|
37
|
+
* Creates an OpenAI embedding model service.
|
|
38
|
+
*
|
|
39
|
+
* @category constructors
|
|
40
|
+
* @since 4.0.0
|
|
41
|
+
*/
|
|
42
|
+
export const make = /*#__PURE__*/Effect.fnUntraced(function* ({
|
|
43
|
+
model,
|
|
44
|
+
config: providerConfig
|
|
45
|
+
}) {
|
|
46
|
+
const client = yield* OpenAiClient;
|
|
47
|
+
const makeConfig = Effect.gen(function* () {
|
|
48
|
+
const services = yield* Effect.context();
|
|
49
|
+
return {
|
|
50
|
+
model,
|
|
51
|
+
...providerConfig,
|
|
52
|
+
...services.mapUnsafe.get(Config.key)
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
return yield* EmbeddingModel.make({
|
|
56
|
+
embedMany: Effect.fnUntraced(function* ({
|
|
57
|
+
inputs
|
|
58
|
+
}) {
|
|
59
|
+
const config = yield* makeConfig;
|
|
60
|
+
const response = yield* client.createEmbedding({
|
|
61
|
+
...config,
|
|
62
|
+
input: inputs
|
|
63
|
+
});
|
|
64
|
+
return yield* mapProviderResponse(inputs.length, response);
|
|
65
|
+
})
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Creates a layer for the OpenAI embedding model.
|
|
70
|
+
*
|
|
71
|
+
* @category layers
|
|
72
|
+
* @since 4.0.0
|
|
73
|
+
*/
|
|
74
|
+
export const layer = options => Layer.effect(EmbeddingModel.EmbeddingModel, make(options));
|
|
75
|
+
/**
|
|
76
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
77
|
+
*
|
|
78
|
+
* @category configuration
|
|
79
|
+
* @since 4.0.0
|
|
80
|
+
*/
|
|
81
|
+
export const withConfigOverride = /*#__PURE__*/dual(2, (self, overrides) => Effect.flatMap(Effect.serviceOption(Config), config => Effect.provideService(self, Config, {
|
|
82
|
+
...(config._tag === "Some" ? config.value : {}),
|
|
83
|
+
...overrides
|
|
84
|
+
})));
|
|
85
|
+
const mapProviderResponse = (inputLength, response) => {
|
|
86
|
+
if (response.data.length !== inputLength) {
|
|
87
|
+
return Effect.fail(invalidOutput("Provider returned " + response.data.length + " embeddings but expected " + inputLength));
|
|
88
|
+
}
|
|
89
|
+
const results = new Array(inputLength);
|
|
90
|
+
const seen = new Set();
|
|
91
|
+
for (const entry of response.data) {
|
|
92
|
+
if (!Number.isInteger(entry.index) || entry.index < 0 || entry.index >= inputLength) {
|
|
93
|
+
return Effect.fail(invalidOutput("Provider returned invalid embedding index: " + entry.index));
|
|
94
|
+
}
|
|
95
|
+
if (seen.has(entry.index)) {
|
|
96
|
+
return Effect.fail(invalidOutput("Provider returned duplicate embedding index: " + entry.index));
|
|
97
|
+
}
|
|
98
|
+
if (!Array.isArray(entry.embedding)) {
|
|
99
|
+
return Effect.fail(invalidOutput("Provider returned non-vector embedding at index " + entry.index));
|
|
100
|
+
}
|
|
101
|
+
seen.add(entry.index);
|
|
102
|
+
results[entry.index] = [...entry.embedding];
|
|
103
|
+
}
|
|
104
|
+
if (seen.size !== inputLength) {
|
|
105
|
+
return Effect.fail(invalidOutput("Provider returned embeddings for " + seen.size + " inputs but expected " + inputLength));
|
|
106
|
+
}
|
|
107
|
+
return Effect.succeed({
|
|
108
|
+
results,
|
|
109
|
+
usage: {
|
|
110
|
+
inputTokens: response.usage?.prompt_tokens
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
const invalidOutput = description => AiError.make({
|
|
115
|
+
module: "OpenAiEmbeddingModel",
|
|
116
|
+
method: "embedMany",
|
|
117
|
+
reason: new AiError.InvalidOutputError({
|
|
118
|
+
description
|
|
119
|
+
})
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=OpenAiEmbeddingModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAiEmbeddingModel.js","names":["Context","Effect","dual","Layer","AiError","EmbeddingModel","AiModel","OpenAiClient","Config","Service","model","options","make","merge","layer","config","dimensions","succeed","Dimensions","fnUntraced","providerConfig","client","makeConfig","gen","services","context","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","isArray","embedding","add","size","usage","inputTokens","prompt_tokens","description","module","method","reason","InvalidOutputError"],"sources":["../src/OpenAiEmbeddingModel.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|