@effect/ai-openai-compat 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/OpenAiClient.d.ts +198 -50
- package/dist/OpenAiClient.d.ts.map +1 -1
- package/dist/OpenAiClient.js +57 -9
- package/dist/OpenAiClient.js.map +1 -1
- package/dist/OpenAiConfig.d.ts +76 -10
- package/dist/OpenAiConfig.d.ts.map +1 -1
- package/dist/OpenAiConfig.js +44 -7
- package/dist/OpenAiConfig.js.map +1 -1
- package/dist/OpenAiEmbeddingModel.d.ts +90 -0
- package/dist/OpenAiEmbeddingModel.d.ts.map +1 -0
- package/dist/OpenAiEmbeddingModel.js +122 -0
- package/dist/OpenAiEmbeddingModel.js.map +1 -0
- package/dist/OpenAiError.d.ts +109 -35
- package/dist/OpenAiError.d.ts.map +1 -1
- package/dist/OpenAiError.js +14 -1
- package/dist/OpenAiLanguageModel.d.ts +219 -13
- package/dist/OpenAiLanguageModel.d.ts.map +1 -1
- package/dist/OpenAiLanguageModel.js +42 -19
- package/dist/OpenAiLanguageModel.js.map +1 -1
- package/dist/OpenAiTelemetry.d.ts +35 -23
- package/dist/OpenAiTelemetry.d.ts.map +1 -1
- package/dist/OpenAiTelemetry.js +6 -4
- package/dist/OpenAiTelemetry.js.map +1 -1
- package/dist/index.d.ts +70 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70 -6
- 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/OpenAiClient.ts +232 -49
- package/src/OpenAiConfig.ts +77 -11
- package/src/OpenAiEmbeddingModel.ts +208 -0
- package/src/OpenAiError.ts +111 -35
- package/src/OpenAiLanguageModel.ts +273 -30
- package/src/OpenAiTelemetry.ts +36 -24
- package/src/index.ts +71 -6
- package/src/internal/errors.ts +4 -4
package/dist/OpenAiClient.js
CHANGED
|
@@ -1,13 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The `OpenAiClient` module provides an Effect service for calling
|
|
3
|
+
* OpenAI-compatible chat completions and embeddings APIs. It builds on the
|
|
4
|
+
* Effect HTTP client, adds authentication and OpenAI header handling, and
|
|
5
|
+
* exposes typed helpers for regular responses, server-sent event streaming, and
|
|
6
|
+
* embedding requests.
|
|
7
|
+
*
|
|
8
|
+
* **Common tasks**
|
|
9
|
+
*
|
|
10
|
+
* - Create a client service directly with {@link make}
|
|
11
|
+
* - Provide the service as a layer with {@link layer} or {@link layerConfig}
|
|
12
|
+
* - Send non-streaming chat completion requests with `createResponse`
|
|
13
|
+
* - Send streaming chat completion requests with `createResponseStream`
|
|
14
|
+
* - Generate embeddings with `createEmbedding`
|
|
15
|
+
* - Reuse the exported request and response types when integrating compatible providers
|
|
16
|
+
*
|
|
17
|
+
* **Gotchas**
|
|
18
|
+
*
|
|
19
|
+
* - The default base URL is `https://api.openai.com/v1`; set `apiUrl` for other
|
|
20
|
+
* OpenAI-compatible providers.
|
|
21
|
+
* - `createResponseStream` forces `stream: true` and requests usage events with
|
|
22
|
+
* `stream_options.include_usage`.
|
|
23
|
+
* - HTTP and schema decoding failures are mapped into `AiError`.
|
|
24
|
+
*
|
|
25
|
+
* @since 4.0.0
|
|
3
26
|
*/
|
|
4
27
|
import * as Array from "effect/Array";
|
|
28
|
+
import * as Context from "effect/Context";
|
|
5
29
|
import * as Effect from "effect/Effect";
|
|
6
30
|
import { identity, pipe } from "effect/Function";
|
|
7
31
|
import * as Layer from "effect/Layer";
|
|
8
32
|
import * as Redacted from "effect/Redacted";
|
|
9
33
|
import * as Schema from "effect/Schema";
|
|
10
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
11
34
|
import * as Stream from "effect/Stream";
|
|
12
35
|
import * as Sse from "effect/unstable/encoding/Sse";
|
|
13
36
|
import * as Headers from "effect/unstable/http/Headers";
|
|
@@ -17,17 +40,27 @@ import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
|
|
|
17
40
|
import * as Errors from "./internal/errors.js";
|
|
18
41
|
import { OpenAiConfig } from "./OpenAiConfig.js";
|
|
19
42
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
43
|
+
* Context service tag for accessing an OpenAI-compatible client from the
|
|
44
|
+
* Effect context.
|
|
45
|
+
*
|
|
46
|
+
* @category services
|
|
47
|
+
* @since 4.0.0
|
|
22
48
|
*/
|
|
23
|
-
export class OpenAiClient extends /*#__PURE__*/
|
|
49
|
+
export class OpenAiClient extends /*#__PURE__*/Context.Service()("@effect/ai-openai-compat/OpenAiClient") {}
|
|
24
50
|
const RedactedOpenAiHeaders = {
|
|
25
51
|
OpenAiOrganization: "OpenAI-Organization",
|
|
26
52
|
OpenAiProject: "OpenAI-Project"
|
|
27
53
|
};
|
|
28
54
|
/**
|
|
29
|
-
*
|
|
55
|
+
* Constructs an OpenAI-compatible client service from explicit options.
|
|
56
|
+
*
|
|
57
|
+
* **Details**
|
|
58
|
+
*
|
|
59
|
+
* The returned service applies the configured base URL, authentication, and
|
|
60
|
+
* OpenAI organization/project headers to the underlying HTTP client.
|
|
61
|
+
*
|
|
30
62
|
* @category constructors
|
|
63
|
+
* @since 4.0.0
|
|
31
64
|
*/
|
|
32
65
|
export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
33
66
|
const baseClient = yield* HttpClient.HttpClient;
|
|
@@ -68,13 +101,18 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
68
101
|
});
|
|
69
102
|
}, /*#__PURE__*/Effect.updateService(Headers.CurrentRedactedNames, /*#__PURE__*/Array.appendAll(/*#__PURE__*/Object.values(RedactedOpenAiHeaders))));
|
|
70
103
|
/**
|
|
71
|
-
*
|
|
104
|
+
* Creates a layer that provides an OpenAI-compatible client from explicit options.
|
|
105
|
+
*
|
|
72
106
|
* @category layers
|
|
107
|
+
* @since 4.0.0
|
|
73
108
|
*/
|
|
74
109
|
export const layer = options => Layer.effect(OpenAiClient, make(options));
|
|
75
110
|
/**
|
|
76
|
-
*
|
|
111
|
+
* Creates a layer that loads OpenAI-compatible client settings from `Config`
|
|
112
|
+
* values before constructing the service.
|
|
113
|
+
*
|
|
77
114
|
* @category layers
|
|
115
|
+
* @since 4.0.0
|
|
78
116
|
*/
|
|
79
117
|
export const layerConfig = options => Layer.effect(OpenAiClient, Effect.gen(function* () {
|
|
80
118
|
const apiKey = options?.apiKey !== undefined ? yield* options.apiKey : undefined;
|
|
@@ -107,12 +145,22 @@ const ChatCompletionToolFunction = /*#__PURE__*/Schema.Struct({
|
|
|
107
145
|
name: Schema.String,
|
|
108
146
|
arguments: /*#__PURE__*/Schema.optionalKey(Schema.String)
|
|
109
147
|
});
|
|
148
|
+
const ChatCompletionToolFunctionDelta = /*#__PURE__*/Schema.Struct({
|
|
149
|
+
name: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
150
|
+
arguments: /*#__PURE__*/Schema.optionalKey(Schema.String)
|
|
151
|
+
});
|
|
110
152
|
const ChatCompletionToolCall = /*#__PURE__*/Schema.Struct({
|
|
111
153
|
id: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
112
154
|
index: /*#__PURE__*/Schema.optionalKey(Schema.Number),
|
|
113
155
|
type: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
114
156
|
function: /*#__PURE__*/Schema.optionalKey(ChatCompletionToolFunction)
|
|
115
157
|
});
|
|
158
|
+
const ChatCompletionToolCallDelta = /*#__PURE__*/Schema.Struct({
|
|
159
|
+
id: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
160
|
+
index: /*#__PURE__*/Schema.optionalKey(Schema.Number),
|
|
161
|
+
type: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
162
|
+
function: /*#__PURE__*/Schema.optionalKey(ChatCompletionToolFunctionDelta)
|
|
163
|
+
});
|
|
116
164
|
const ChatCompletionMessage = /*#__PURE__*/Schema.Struct({
|
|
117
165
|
role: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
118
166
|
content: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.NullOr(Schema.String)),
|
|
@@ -121,7 +169,7 @@ const ChatCompletionMessage = /*#__PURE__*/Schema.Struct({
|
|
|
121
169
|
const ChatCompletionDelta = /*#__PURE__*/Schema.Struct({
|
|
122
170
|
role: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
123
171
|
content: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.NullOr(Schema.String)),
|
|
124
|
-
tool_calls: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.Array(
|
|
172
|
+
tool_calls: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.Array(ChatCompletionToolCallDelta))
|
|
125
173
|
});
|
|
126
174
|
const ChatCompletionChoice = /*#__PURE__*/Schema.Struct({
|
|
127
175
|
index: Schema.Number,
|
package/dist/OpenAiClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAiClient.js","names":["Array","Effect","identity","pipe","Layer","Redacted","Schema","ServiceMap","Stream","Sse","Headers","HttpClient","HttpClientRequest","HttpClientResponse","Errors","OpenAiConfig","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","httpClient","mapRequest","request","prependUrl","apiUrl","apiKey","undefined","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","resolveHttpClient","map","getOrUndefined","config","decodeResponse","schemaBodyJson","ChatCompletionResponse","createResponse","payload","flatMap","client","post","bodyJsonUnsafe","filterStatusOk","execute","response","body","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","stream","decodeText","pipeThroughChannel","decode","event","data","decodeChatCompletionSseData","fromIterable","takeUntil","Retry","die","fromEffect","createResponseStream","stream_options","include_usage","catchTag","decodeEmbedding","CreateEmbeddingResponseSchema","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","EmbeddingSchema","Struct","embedding","Union","Number","String","index","object","optionalKey","model","Literal","usage","prompt_tokens","total_tokens","ChatCompletionToolFunction","name","arguments","ChatCompletionToolCall","id","type","function","ChatCompletionMessage","role","content","NullOr","tool_calls","ChatCompletionDelta","ChatCompletionChoice","finish_reason","message","delta","ChatCompletionUsage","completion_tokens","prompt_tokens_details","Any","completion_tokens_details","created","choices","service_tier","ChatCompletionChunk","parseJson","JSON","parse","isChatCompletionChunk","is","parsed"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"OpenAiClient.js","names":["Array","Context","Effect","identity","pipe","Layer","Redacted","Schema","Stream","Sse","Headers","HttpClient","HttpClientRequest","HttpClientResponse","Errors","OpenAiConfig","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","httpClient","mapRequest","request","prependUrl","apiUrl","apiKey","undefined","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","resolveHttpClient","map","getOrUndefined","config","decodeResponse","schemaBodyJson","ChatCompletionResponse","createResponse","payload","flatMap","client","post","bodyJsonUnsafe","filterStatusOk","execute","response","body","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","stream","decodeText","pipeThroughChannel","decode","event","data","decodeChatCompletionSseData","fromIterable","takeUntil","Retry","die","fromEffect","createResponseStream","stream_options","include_usage","catchTag","decodeEmbedding","CreateEmbeddingResponseSchema","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","EmbeddingSchema","Struct","embedding","Union","Number","String","index","object","optionalKey","model","Literal","usage","prompt_tokens","total_tokens","ChatCompletionToolFunction","name","arguments","ChatCompletionToolFunctionDelta","ChatCompletionToolCall","id","type","function","ChatCompletionToolCallDelta","ChatCompletionMessage","role","content","NullOr","tool_calls","ChatCompletionDelta","ChatCompletionChoice","finish_reason","message","delta","ChatCompletionUsage","completion_tokens","prompt_tokens_details","Any","completion_tokens_details","created","choices","service_tier","ChatCompletionChunk","parseJson","JSON","parse","isChatCompletionChunk","is","parsed"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/OpenAiConfig.d.ts
CHANGED
|
@@ -1,45 +1,111 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The `OpenAiConfig` module provides shared configuration for clients that
|
|
3
|
+
* talk to OpenAI-compatible APIs. It is used to customize the HTTP client
|
|
4
|
+
* wiring around a provider without changing the higher-level model,
|
|
5
|
+
* embeddings, or tool-calling APIs that consume the client.
|
|
6
|
+
*
|
|
7
|
+
* **Common tasks**
|
|
8
|
+
*
|
|
9
|
+
* - Install a client transform with {@link withClientTransform}
|
|
10
|
+
* - Add provider-specific HTTP behavior, such as headers, retries, proxies, or
|
|
11
|
+
* instrumentation
|
|
12
|
+
* - Read the active configuration from the Effect context when implementing
|
|
13
|
+
* OpenAI-compatible integrations
|
|
14
|
+
*
|
|
15
|
+
* **Gotchas**
|
|
16
|
+
*
|
|
17
|
+
* - The transform receives and returns an `HttpClient`, so it should preserve
|
|
18
|
+
* the existing client behavior unless it intentionally replaces it
|
|
19
|
+
* - Configuration is provided through Effect context and is scoped to the
|
|
20
|
+
* effect that receives the service
|
|
21
|
+
*
|
|
22
|
+
* @since 4.0.0
|
|
3
23
|
*/
|
|
24
|
+
import * as Context from "effect/Context";
|
|
4
25
|
import * as Effect from "effect/Effect";
|
|
5
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
6
26
|
import type { HttpClient } from "effect/unstable/http/HttpClient";
|
|
7
|
-
declare const OpenAiConfig_base:
|
|
27
|
+
declare const OpenAiConfig_base: Context.ServiceClass<OpenAiConfig, "@effect/ai-openai-compat/OpenAiConfig", OpenAiConfig.Service>;
|
|
8
28
|
/**
|
|
9
|
-
*
|
|
29
|
+
* Context service used to carry OpenAI-compatible client configuration for the
|
|
30
|
+
* current Effect scope.
|
|
31
|
+
*
|
|
10
32
|
* @category services
|
|
33
|
+
* @since 4.0.0
|
|
11
34
|
*/
|
|
12
35
|
export declare class OpenAiConfig extends OpenAiConfig_base {
|
|
13
36
|
/**
|
|
14
|
-
*
|
|
37
|
+
* Gets the configured OpenAI-compatible service from the current context when present.
|
|
38
|
+
*
|
|
39
|
+
* @since 4.0.0
|
|
15
40
|
*/
|
|
16
41
|
static readonly getOrUndefined: Effect.Effect<typeof OpenAiConfig.Service | undefined>;
|
|
17
42
|
}
|
|
18
43
|
/**
|
|
19
|
-
*
|
|
44
|
+
* Types associated with the `OpenAiConfig` context service.
|
|
45
|
+
*
|
|
46
|
+
* @since 4.0.0
|
|
20
47
|
*/
|
|
21
48
|
export declare namespace OpenAiConfig {
|
|
22
49
|
/**
|
|
23
|
-
*
|
|
50
|
+
* Configuration consumed by OpenAI-compatible clients when they build or
|
|
51
|
+
* resolve the underlying HTTP client.
|
|
52
|
+
*
|
|
24
53
|
* @category models
|
|
54
|
+
* @since 4.0.0
|
|
25
55
|
*/
|
|
26
56
|
interface Service {
|
|
27
57
|
readonly transformClient?: ((client: HttpClient) => HttpClient) | undefined;
|
|
28
58
|
}
|
|
29
59
|
}
|
|
30
60
|
/**
|
|
31
|
-
*
|
|
61
|
+
* Provides an HTTP client transform for the supplied effect.
|
|
62
|
+
*
|
|
63
|
+
* **When to use**
|
|
64
|
+
*
|
|
65
|
+
* Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
|
|
66
|
+
* headers, retries, instrumentation, or proxy routing.
|
|
67
|
+
*
|
|
68
|
+
* **Details**
|
|
69
|
+
*
|
|
70
|
+
* OpenAI-compatible provider services read the transform from the
|
|
71
|
+
* `OpenAiConfig` context.
|
|
72
|
+
*
|
|
32
73
|
* @category configuration
|
|
74
|
+
* @since 4.0.0
|
|
33
75
|
*/
|
|
34
76
|
export declare const withClientTransform: {
|
|
35
77
|
/**
|
|
36
|
-
*
|
|
78
|
+
* Provides an HTTP client transform for the supplied effect.
|
|
79
|
+
*
|
|
80
|
+
* **When to use**
|
|
81
|
+
*
|
|
82
|
+
* Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
|
|
83
|
+
* headers, retries, instrumentation, or proxy routing.
|
|
84
|
+
*
|
|
85
|
+
* **Details**
|
|
86
|
+
*
|
|
87
|
+
* OpenAI-compatible provider services read the transform from the
|
|
88
|
+
* `OpenAiConfig` context.
|
|
89
|
+
*
|
|
37
90
|
* @category configuration
|
|
91
|
+
* @since 4.0.0
|
|
38
92
|
*/
|
|
39
93
|
(transform: (client: HttpClient) => HttpClient): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
|
|
40
94
|
/**
|
|
41
|
-
*
|
|
95
|
+
* Provides an HTTP client transform for the supplied effect.
|
|
96
|
+
*
|
|
97
|
+
* **When to use**
|
|
98
|
+
*
|
|
99
|
+
* Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
|
|
100
|
+
* headers, retries, instrumentation, or proxy routing.
|
|
101
|
+
*
|
|
102
|
+
* **Details**
|
|
103
|
+
*
|
|
104
|
+
* OpenAI-compatible provider services read the transform from the
|
|
105
|
+
* `OpenAiConfig` context.
|
|
106
|
+
*
|
|
42
107
|
* @category configuration
|
|
108
|
+
* @since 4.0.0
|
|
43
109
|
*/
|
|
44
110
|
<A, E, R>(self: Effect.Effect<A, E, R>, transform: (client: HttpClient) => HttpClient): Effect.Effect<A, E, R>;
|
|
45
111
|
};
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;GAsBG;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,iBAGU;IAC1C;;;;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;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAChC;;;;;;;;;;;;;;;OAeG;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;;;;;;;;;;;;;;;OAeG;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,59 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The `OpenAiConfig` module provides shared configuration for clients that
|
|
3
|
+
* talk to OpenAI-compatible APIs. It is used to customize the HTTP client
|
|
4
|
+
* wiring around a provider without changing the higher-level model,
|
|
5
|
+
* embeddings, or tool-calling APIs that consume the client.
|
|
6
|
+
*
|
|
7
|
+
* **Common tasks**
|
|
8
|
+
*
|
|
9
|
+
* - Install a client transform with {@link withClientTransform}
|
|
10
|
+
* - Add provider-specific HTTP behavior, such as headers, retries, proxies, or
|
|
11
|
+
* instrumentation
|
|
12
|
+
* - Read the active configuration from the Effect context when implementing
|
|
13
|
+
* OpenAI-compatible integrations
|
|
14
|
+
*
|
|
15
|
+
* **Gotchas**
|
|
16
|
+
*
|
|
17
|
+
* - The transform receives and returns an `HttpClient`, so it should preserve
|
|
18
|
+
* the existing client behavior unless it intentionally replaces it
|
|
19
|
+
* - Configuration is provided through Effect context and is scoped to the
|
|
20
|
+
* effect that receives the service
|
|
21
|
+
*
|
|
22
|
+
* @since 4.0.0
|
|
3
23
|
*/
|
|
24
|
+
import * as Context from "effect/Context";
|
|
4
25
|
import * as Effect from "effect/Effect";
|
|
5
26
|
import { dual } from "effect/Function";
|
|
6
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
7
27
|
/**
|
|
8
|
-
*
|
|
28
|
+
* Context service used to carry OpenAI-compatible client configuration for the
|
|
29
|
+
* current Effect scope.
|
|
30
|
+
*
|
|
9
31
|
* @category services
|
|
32
|
+
* @since 4.0.0
|
|
10
33
|
*/
|
|
11
|
-
export class OpenAiConfig extends /*#__PURE__*/
|
|
34
|
+
export class OpenAiConfig extends /*#__PURE__*/Context.Service()("@effect/ai-openai-compat/OpenAiConfig") {
|
|
12
35
|
/**
|
|
13
|
-
*
|
|
36
|
+
* Gets the configured OpenAI-compatible service from the current context when present.
|
|
37
|
+
*
|
|
38
|
+
* @since 4.0.0
|
|
14
39
|
*/
|
|
15
|
-
static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.
|
|
40
|
+
static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.context(), context => context.mapUnsafe.get(OpenAiConfig.key));
|
|
16
41
|
}
|
|
17
42
|
/**
|
|
18
|
-
*
|
|
43
|
+
* Provides an HTTP client transform for the supplied effect.
|
|
44
|
+
*
|
|
45
|
+
* **When to use**
|
|
46
|
+
*
|
|
47
|
+
* Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
|
|
48
|
+
* headers, retries, instrumentation, or proxy routing.
|
|
49
|
+
*
|
|
50
|
+
* **Details**
|
|
51
|
+
*
|
|
52
|
+
* OpenAI-compatible provider services read the transform from the
|
|
53
|
+
* `OpenAiConfig` context.
|
|
54
|
+
*
|
|
19
55
|
* @category configuration
|
|
56
|
+
* @since 4.0.0
|
|
20
57
|
*/
|
|
21
58
|
export const withClientTransform = /*#__PURE__*/dual(2, (self, transformClient) => Effect.flatMap(OpenAiConfig.getOrUndefined, config => Effect.provideService(self, OpenAiConfig, {
|
|
22
59
|
...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;;;;;;;;;;;;;;;;;;;;;;;AAuBA,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,uCAAuC,CAAC;EAC1C;;;;;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;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAMC,mBAAmB,gBAsC5BT,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,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Model implementation.
|
|
3
|
+
*
|
|
4
|
+
* Provides an EmbeddingModel implementation for OpenAI-compatible embeddings APIs.
|
|
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
|
+
* A model identifier accepted by an OpenAI-compatible embeddings endpoint.
|
|
16
|
+
*
|
|
17
|
+
* @category models
|
|
18
|
+
* @since 4.0.0
|
|
19
|
+
*/
|
|
20
|
+
export type Model = string;
|
|
21
|
+
declare const Config_base: Context.ServiceClass<Config, "@effect/ai-openai-compat/OpenAiEmbeddingModel/Config", {
|
|
22
|
+
readonly [x: string]: unknown;
|
|
23
|
+
readonly model?: string;
|
|
24
|
+
readonly user?: string | undefined | undefined;
|
|
25
|
+
readonly encoding_format?: "float" | "base64" | undefined | undefined;
|
|
26
|
+
readonly dimensions?: number | undefined | undefined;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Service definition for OpenAI embedding model configuration.
|
|
30
|
+
*
|
|
31
|
+
* @category context
|
|
32
|
+
* @since 4.0.0
|
|
33
|
+
*/
|
|
34
|
+
export declare class Config extends Config_base {
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates an OpenAI-compatible embedding model that can be used with
|
|
38
|
+
* `AiModel.provide`.
|
|
39
|
+
*
|
|
40
|
+
* @category constructors
|
|
41
|
+
* @since 4.0.0
|
|
42
|
+
*/
|
|
43
|
+
export declare const model: (model: string, options: {
|
|
44
|
+
readonly dimensions: number;
|
|
45
|
+
readonly config?: Omit<typeof Config.Service, "model" | "dimensions">;
|
|
46
|
+
}) => AiModel.Model<"openai", EmbeddingModel.EmbeddingModel | EmbeddingModel.Dimensions, OpenAiClient>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates an OpenAI embedding model service.
|
|
49
|
+
*
|
|
50
|
+
* @category constructors
|
|
51
|
+
* @since 4.0.0
|
|
52
|
+
*/
|
|
53
|
+
export declare const make: (args_0: {
|
|
54
|
+
readonly model: string;
|
|
55
|
+
readonly config?: Omit<typeof Config.Service, "model"> | undefined;
|
|
56
|
+
}) => Effect.Effect<EmbeddingModel.Service, never, OpenAiClient>;
|
|
57
|
+
/**
|
|
58
|
+
* Creates a layer for the OpenAI embedding model.
|
|
59
|
+
*
|
|
60
|
+
* @category layers
|
|
61
|
+
* @since 4.0.0
|
|
62
|
+
*/
|
|
63
|
+
export declare const layer: (options: {
|
|
64
|
+
readonly model: string;
|
|
65
|
+
readonly config?: Omit<typeof Config.Service, "model"> | undefined;
|
|
66
|
+
}) => Layer.Layer<EmbeddingModel.EmbeddingModel, never, OpenAiClient>;
|
|
67
|
+
/**
|
|
68
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
69
|
+
*
|
|
70
|
+
* @category configuration
|
|
71
|
+
* @since 4.0.0
|
|
72
|
+
*/
|
|
73
|
+
export declare const withConfigOverride: {
|
|
74
|
+
/**
|
|
75
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
76
|
+
*
|
|
77
|
+
* @category configuration
|
|
78
|
+
* @since 4.0.0
|
|
79
|
+
*/
|
|
80
|
+
(overrides: typeof Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>;
|
|
81
|
+
/**
|
|
82
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
83
|
+
*
|
|
84
|
+
* @category configuration
|
|
85
|
+
* @since 4.0.0
|
|
86
|
+
*/
|
|
87
|
+
<A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service): Effect.Effect<A, E, Exclude<R, Config>>;
|
|
88
|
+
};
|
|
89
|
+
export {};
|
|
90
|
+
//# 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;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;;;;;;;;AAE1B;;;;;GAKG;AACH,qBAAa,MAAO,SAAQ,WAa+B;CAAG;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,MAAM,EACb,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,MAAM;sBACJ,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,MAAM,CAAA;IACtB,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,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embedding Model implementation.
|
|
3
|
+
*
|
|
4
|
+
* Provides an EmbeddingModel implementation for OpenAI-compatible embeddings APIs.
|
|
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 context
|
|
20
|
+
* @since 4.0.0
|
|
21
|
+
*/
|
|
22
|
+
export class Config extends /*#__PURE__*/Context.Service()("@effect/ai-openai-compat/OpenAiEmbeddingModel/Config") {}
|
|
23
|
+
/**
|
|
24
|
+
* Creates an OpenAI-compatible embedding model that can be used with
|
|
25
|
+
* `AiModel.provide`.
|
|
26
|
+
*
|
|
27
|
+
* @category constructors
|
|
28
|
+
* @since 4.0.0
|
|
29
|
+
*/
|
|
30
|
+
export const model = (model, options) => AiModel.make("openai", model, Layer.merge(layer({
|
|
31
|
+
model,
|
|
32
|
+
config: {
|
|
33
|
+
...options.config,
|
|
34
|
+
dimensions: options.dimensions
|
|
35
|
+
}
|
|
36
|
+
}), Layer.succeed(EmbeddingModel.Dimensions, options.dimensions)));
|
|
37
|
+
/**
|
|
38
|
+
* Creates an OpenAI embedding model service.
|
|
39
|
+
*
|
|
40
|
+
* @category constructors
|
|
41
|
+
* @since 4.0.0
|
|
42
|
+
*/
|
|
43
|
+
export const make = /*#__PURE__*/Effect.fnUntraced(function* ({
|
|
44
|
+
model,
|
|
45
|
+
config: providerConfig
|
|
46
|
+
}) {
|
|
47
|
+
const client = yield* OpenAiClient;
|
|
48
|
+
const makeConfig = Effect.gen(function* () {
|
|
49
|
+
const services = yield* Effect.context();
|
|
50
|
+
return {
|
|
51
|
+
model,
|
|
52
|
+
...providerConfig,
|
|
53
|
+
...services.mapUnsafe.get(Config.key)
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
return yield* EmbeddingModel.make({
|
|
57
|
+
embedMany: Effect.fnUntraced(function* ({
|
|
58
|
+
inputs
|
|
59
|
+
}) {
|
|
60
|
+
const config = yield* makeConfig;
|
|
61
|
+
const response = yield* client.createEmbedding({
|
|
62
|
+
...config,
|
|
63
|
+
input: inputs
|
|
64
|
+
});
|
|
65
|
+
return yield* mapProviderResponse(inputs.length, response);
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Creates a layer for the OpenAI embedding model.
|
|
71
|
+
*
|
|
72
|
+
* @category layers
|
|
73
|
+
* @since 4.0.0
|
|
74
|
+
*/
|
|
75
|
+
export const layer = options => Layer.effect(EmbeddingModel.EmbeddingModel, make(options));
|
|
76
|
+
/**
|
|
77
|
+
* Provides config overrides for OpenAI embedding model operations.
|
|
78
|
+
*
|
|
79
|
+
* @category configuration
|
|
80
|
+
* @since 4.0.0
|
|
81
|
+
*/
|
|
82
|
+
export const withConfigOverride = /*#__PURE__*/dual(2, (self, overrides) => Effect.flatMap(Effect.serviceOption(Config), config => Effect.provideService(self, Config, {
|
|
83
|
+
...(config._tag === "Some" ? config.value : {}),
|
|
84
|
+
...overrides
|
|
85
|
+
})));
|
|
86
|
+
const mapProviderResponse = (inputLength, response) => {
|
|
87
|
+
if (response.data.length !== inputLength) {
|
|
88
|
+
return Effect.fail(invalidOutput(`Provider returned ${response.data.length} embeddings but expected ${inputLength}`));
|
|
89
|
+
}
|
|
90
|
+
const results = new Array(inputLength);
|
|
91
|
+
const seen = new Set();
|
|
92
|
+
for (const entry of response.data) {
|
|
93
|
+
if (!Number.isInteger(entry.index) || entry.index < 0 || entry.index >= inputLength) {
|
|
94
|
+
return Effect.fail(invalidOutput(`Provider returned invalid embedding index: ${entry.index}`));
|
|
95
|
+
}
|
|
96
|
+
if (seen.has(entry.index)) {
|
|
97
|
+
return Effect.fail(invalidOutput(`Provider returned duplicate embedding index: ${entry.index}`));
|
|
98
|
+
}
|
|
99
|
+
if (!Array.isArray(entry.embedding)) {
|
|
100
|
+
return Effect.fail(invalidOutput(`Provider returned non-vector embedding at index ${entry.index}`));
|
|
101
|
+
}
|
|
102
|
+
seen.add(entry.index);
|
|
103
|
+
results[entry.index] = [...entry.embedding];
|
|
104
|
+
}
|
|
105
|
+
if (seen.size !== inputLength) {
|
|
106
|
+
return Effect.fail(invalidOutput(`Provider returned embeddings for ${seen.size} inputs but expected ${inputLength}`));
|
|
107
|
+
}
|
|
108
|
+
return Effect.succeed({
|
|
109
|
+
results,
|
|
110
|
+
usage: {
|
|
111
|
+
inputTokens: response.usage?.prompt_tokens
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
const invalidOutput = description => AiError.make({
|
|
116
|
+
module: "OpenAiEmbeddingModel",
|
|
117
|
+
method: "embedMany",
|
|
118
|
+
reason: new AiError.InvalidOutputError({
|
|
119
|
+
description
|
|
120
|
+
})
|
|
121
|
+
});
|
|
122
|
+
//# 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":[]}
|