@effect/ai-openai-compat 4.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/OpenAiClient.d.ts +739 -0
- package/dist/OpenAiClient.d.ts.map +1 -0
- package/dist/OpenAiClient.js +170 -0
- package/dist/OpenAiClient.js.map +1 -0
- package/dist/OpenAiConfig.d.ts +47 -0
- package/dist/OpenAiConfig.d.ts.map +1 -0
- package/dist/OpenAiConfig.js +25 -0
- package/dist/OpenAiConfig.js.map +1 -0
- package/dist/OpenAiError.d.ts +93 -0
- package/dist/OpenAiError.d.ts.map +1 -0
- package/dist/OpenAiError.js +5 -0
- package/dist/OpenAiError.js.map +1 -0
- package/dist/OpenAiLanguageModel.d.ts +285 -0
- package/dist/OpenAiLanguageModel.d.ts.map +1 -0
- package/dist/OpenAiLanguageModel.js +1223 -0
- package/dist/OpenAiLanguageModel.js.map +1 -0
- package/dist/OpenAiTelemetry.d.ts +120 -0
- package/dist/OpenAiTelemetry.d.ts.map +1 -0
- package/dist/OpenAiTelemetry.js +35 -0
- package/dist/OpenAiTelemetry.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/errors.d.ts +2 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +286 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/utilities.d.ts +2 -0
- package/dist/internal/utilities.d.ts.map +1 -0
- package/dist/internal/utilities.js +25 -0
- package/dist/internal/utilities.js.map +1 -0
- package/package.json +62 -0
- package/src/OpenAiClient.ts +998 -0
- package/src/OpenAiConfig.ts +64 -0
- package/src/OpenAiError.ts +102 -0
- package/src/OpenAiLanguageModel.ts +1638 -0
- package/src/OpenAiTelemetry.ts +159 -0
- package/src/index.ts +41 -0
- package/src/internal/errors.ts +327 -0
- package/src/internal/utilities.ts +33 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Effect from "effect/Effect"
|
|
5
|
+
import { dual } from "effect/Function"
|
|
6
|
+
import * as ServiceMap from "effect/ServiceMap"
|
|
7
|
+
import type { HttpClient } from "effect/unstable/http/HttpClient"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category services
|
|
12
|
+
*/
|
|
13
|
+
export class OpenAiConfig extends ServiceMap.Service<
|
|
14
|
+
OpenAiConfig,
|
|
15
|
+
OpenAiConfig.Service
|
|
16
|
+
>()("@effect/ai-openai-compat/OpenAiConfig") {
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
static readonly getOrUndefined: Effect.Effect<typeof OpenAiConfig.Service | undefined> = Effect.map(
|
|
21
|
+
Effect.services<never>(),
|
|
22
|
+
(context) => context.mapUnsafe.get(OpenAiConfig.key)
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
export declare namespace OpenAiConfig {
|
|
30
|
+
/**
|
|
31
|
+
* @since 1.0.
|
|
32
|
+
* @category models
|
|
33
|
+
*/
|
|
34
|
+
export interface Service {
|
|
35
|
+
readonly transformClient?: ((client: HttpClient) => HttpClient) | undefined
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @since 1.0.0
|
|
41
|
+
* @category configuration
|
|
42
|
+
*/
|
|
43
|
+
export const withClientTransform: {
|
|
44
|
+
/**
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
* @category configuration
|
|
47
|
+
*/
|
|
48
|
+
(transform: (client: HttpClient) => HttpClient): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
|
|
49
|
+
/**
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
* @category configuration
|
|
52
|
+
*/
|
|
53
|
+
<A, E, R>(
|
|
54
|
+
self: Effect.Effect<A, E, R>,
|
|
55
|
+
transform: (client: HttpClient) => HttpClient
|
|
56
|
+
): Effect.Effect<A, E, R>
|
|
57
|
+
} = dual(2, <A, E, R>(
|
|
58
|
+
self: Effect.Effect<A, E, R>,
|
|
59
|
+
transformClient: (client: HttpClient) => HttpClient
|
|
60
|
+
) =>
|
|
61
|
+
Effect.flatMap(
|
|
62
|
+
OpenAiConfig.getOrUndefined,
|
|
63
|
+
(config) => Effect.provideService(self, OpenAiConfig, { ...config, transformClient })
|
|
64
|
+
))
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* OpenAI-specific error metadata fields.
|
|
7
|
+
*
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
* @category models
|
|
10
|
+
*/
|
|
11
|
+
export type OpenAiErrorMetadata = {
|
|
12
|
+
/**
|
|
13
|
+
* The OpenAI error code returned by the API.
|
|
14
|
+
*/
|
|
15
|
+
readonly errorCode: string | null
|
|
16
|
+
/**
|
|
17
|
+
* The OpenAI error type returned by the API.
|
|
18
|
+
*/
|
|
19
|
+
readonly errorType: string | null
|
|
20
|
+
/**
|
|
21
|
+
* The unique request ID for debugging with OpenAI support.
|
|
22
|
+
*/
|
|
23
|
+
readonly requestId: string | null
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* OpenAI-specific rate limit metadata fields.
|
|
28
|
+
*
|
|
29
|
+
* Extends base error metadata with rate limit specific information from
|
|
30
|
+
* OpenAI's rate limit headers.
|
|
31
|
+
*
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @category models
|
|
34
|
+
*/
|
|
35
|
+
export type OpenAiRateLimitMetadata = OpenAiErrorMetadata & {
|
|
36
|
+
/**
|
|
37
|
+
* The rate limit type (e.g. "requests", "tokens").
|
|
38
|
+
*/
|
|
39
|
+
readonly limit: string | null
|
|
40
|
+
/**
|
|
41
|
+
* Number of remaining requests in the current window.
|
|
42
|
+
*/
|
|
43
|
+
readonly remaining: number | null
|
|
44
|
+
/**
|
|
45
|
+
* Time until the request rate limit resets.
|
|
46
|
+
*/
|
|
47
|
+
readonly resetRequests: string | null
|
|
48
|
+
/**
|
|
49
|
+
* Time until the token rate limit resets.
|
|
50
|
+
*/
|
|
51
|
+
readonly resetTokens: string | null
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare module "effect/unstable/ai/AiError" {
|
|
55
|
+
export interface RateLimitError {
|
|
56
|
+
readonly metadata: {
|
|
57
|
+
readonly openai?: OpenAiRateLimitMetadata | null
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface QuotaExhaustedError {
|
|
62
|
+
readonly metadata: {
|
|
63
|
+
readonly openai?: OpenAiErrorMetadata | null
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface AuthenticationError {
|
|
68
|
+
readonly metadata: {
|
|
69
|
+
readonly openai?: OpenAiErrorMetadata | null
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface ContentPolicyError {
|
|
74
|
+
readonly metadata: {
|
|
75
|
+
readonly openai?: OpenAiErrorMetadata | null
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface InvalidRequestError {
|
|
80
|
+
readonly metadata: {
|
|
81
|
+
readonly openai?: OpenAiErrorMetadata | null
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface InternalProviderError {
|
|
86
|
+
readonly metadata: {
|
|
87
|
+
readonly openai?: OpenAiErrorMetadata | null
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface InvalidOutputError {
|
|
92
|
+
readonly metadata: {
|
|
93
|
+
readonly openai?: OpenAiErrorMetadata | null
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export interface UnknownError {
|
|
98
|
+
readonly metadata: {
|
|
99
|
+
readonly openai?: OpenAiErrorMetadata | null
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|