@effect/ai-openai 0.11.0 → 0.11.2

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.
Files changed (46) hide show
  1. package/OpenAiEmbeddings/package.json +6 -0
  2. package/OpenAiTelemetry/package.json +6 -0
  3. package/dist/cjs/Generated.js +1910 -316
  4. package/dist/cjs/Generated.js.map +1 -1
  5. package/dist/cjs/OpenAiClient.js +88 -60
  6. package/dist/cjs/OpenAiClient.js.map +1 -1
  7. package/dist/cjs/OpenAiCompletions.js +82 -6
  8. package/dist/cjs/OpenAiCompletions.js.map +1 -1
  9. package/dist/cjs/OpenAiEmbeddings.js +95 -0
  10. package/dist/cjs/OpenAiEmbeddings.js.map +1 -0
  11. package/dist/cjs/OpenAiTelemetry.js +39 -0
  12. package/dist/cjs/OpenAiTelemetry.js.map +1 -0
  13. package/dist/cjs/index.js +5 -1
  14. package/dist/dts/Generated.d.ts +2789 -517
  15. package/dist/dts/Generated.d.ts.map +1 -1
  16. package/dist/dts/OpenAiClient.d.ts +15 -1
  17. package/dist/dts/OpenAiClient.d.ts.map +1 -1
  18. package/dist/dts/OpenAiCompletions.d.ts +8 -2
  19. package/dist/dts/OpenAiCompletions.d.ts.map +1 -1
  20. package/dist/dts/OpenAiConfig.d.ts +12 -1
  21. package/dist/dts/OpenAiConfig.d.ts.map +1 -1
  22. package/dist/dts/OpenAiEmbeddings.d.ts +51 -0
  23. package/dist/dts/OpenAiEmbeddings.d.ts.map +1 -0
  24. package/dist/dts/OpenAiTelemetry.d.ts +107 -0
  25. package/dist/dts/OpenAiTelemetry.d.ts.map +1 -0
  26. package/dist/dts/index.d.ts +8 -0
  27. package/dist/dts/index.d.ts.map +1 -1
  28. package/dist/esm/Generated.js +1612 -311
  29. package/dist/esm/Generated.js.map +1 -1
  30. package/dist/esm/OpenAiClient.js +88 -60
  31. package/dist/esm/OpenAiClient.js.map +1 -1
  32. package/dist/esm/OpenAiCompletions.js +82 -6
  33. package/dist/esm/OpenAiCompletions.js.map +1 -1
  34. package/dist/esm/OpenAiEmbeddings.js +83 -0
  35. package/dist/esm/OpenAiEmbeddings.js.map +1 -0
  36. package/dist/esm/OpenAiTelemetry.js +30 -0
  37. package/dist/esm/OpenAiTelemetry.js.map +1 -0
  38. package/dist/esm/index.js +8 -0
  39. package/dist/esm/index.js.map +1 -1
  40. package/package.json +22 -6
  41. package/src/Generated.ts +1892 -398
  42. package/src/OpenAiClient.ts +118 -67
  43. package/src/OpenAiCompletions.ts +108 -14
  44. package/src/OpenAiEmbeddings.ts +149 -0
  45. package/src/OpenAiTelemetry.ts +159 -0
  46. package/src/index.ts +10 -0
@@ -0,0 +1,159 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as AiTelemetry from "@effect/ai/AiTelemetry"
5
+ import { dual } from "effect/Function"
6
+ import * as Predicate from "effect/Predicate"
7
+ import * as String from "effect/String"
8
+ import type { Span } from "effect/Tracer"
9
+ import type { Simplify } from "effect/Types"
10
+
11
+ /**
12
+ * The attributes used to describe telemetry in the context of Generative
13
+ * Artificial Intelligence (GenAI) Models requests and responses.
14
+ *
15
+ * {@see https://opentelemetry.io/docs/specs/semconv/attributes-registry/gen-ai/}
16
+ *
17
+ * @since 1.0.0
18
+ * @category models
19
+ */
20
+ export type OpenAiTelemetryAttributes = Simplify<
21
+ & AiTelemetry.GenAITelemetryAttributes
22
+ & AiTelemetry.GenAI.AttributesWithPrefix<OpenAiTelemetry.RequestAttributes, "gen_ai.openai.request">
23
+ & AiTelemetry.GenAI.AttributesWithPrefix<OpenAiTelemetry.ResponseAttributes, "gen_ai.openai.request">
24
+ >
25
+
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+ export declare namespace OpenAiTelemetry {
30
+ /**
31
+ * All telemetry attributes which are part of the GenAI specification,
32
+ * including the OpenAi-specific attributes.
33
+ *
34
+ * @since 1.0.0
35
+ * @category models
36
+ */
37
+ export type AllAttributes = AiTelemetry.GenAI.AllAttributes & RequestAttributes & ResponseAttributes
38
+
39
+ /**
40
+ * Telemetry attributes which are part of the GenAI specification and are
41
+ * namespaced by `gen_ai.openai.request`.
42
+ *
43
+ * @since 1.0.0
44
+ * @category models
45
+ */
46
+ export interface RequestAttributes {
47
+ /**
48
+ * The response format that is requested.
49
+ */
50
+ readonly responseFormat?: (string & {}) | WellKnownResponseFormat | null | undefined
51
+ /**
52
+ * The service tier requested. May be a specific tier, `default`, or `auto`.
53
+ */
54
+ readonly serviceTier?: (string & {}) | WellKnownServiceTier | null | undefined
55
+ }
56
+
57
+ /**
58
+ * Telemetry attributes which are part of the GenAI specification and are
59
+ * namespaced by `gen_ai.openai.response`.
60
+ *
61
+ * @since 1.0.0
62
+ * @category models
63
+ */
64
+ export interface ResponseAttributes {
65
+ /**
66
+ * The service tier used for the response.
67
+ */
68
+ readonly serviceTier?: string | null | undefined
69
+ /**
70
+ * A fingerprint to track any eventual change in the Generative AI
71
+ * environment.
72
+ */
73
+ readonly systemFingerprint?: string | null | undefined
74
+ }
75
+
76
+ /**
77
+ * The `gen_ai.openai.request.response_format` attribute has the following
78
+ * list of well-known values.
79
+ *
80
+ * If one of them applies, then the respective value **MUST** be used;
81
+ * otherwise, a custom value **MAY** be used.
82
+ *
83
+ * @since 1.0.0
84
+ * @category models
85
+ */
86
+ export type WellKnownResponseFormat = "json_object" | "json_schema" | "text"
87
+
88
+ /**
89
+ * The `gen_ai.openai.request.service_tier` attribute has the following
90
+ * list of well-known values.
91
+ *
92
+ * If one of them applies, then the respective value **MUST** be used;
93
+ * otherwise, a custom value **MAY** be used.
94
+ *
95
+ * @since 1.0.0
96
+ * @category models
97
+ */
98
+ export type WellKnownServiceTier = "auto" | "default"
99
+ }
100
+
101
+ /**
102
+ * @since 1.0.0
103
+ * @since models
104
+ */
105
+ export type OpenAiTelemetryAttributeOptions = AiTelemetry.GenAITelemetryAttributeOptions & {
106
+ openai?: {
107
+ request?: OpenAiTelemetry.RequestAttributes | undefined
108
+ response?: OpenAiTelemetry.ResponseAttributes | undefined
109
+ } | undefined
110
+ }
111
+
112
+ const addOpenAiRequestAttributes = AiTelemetry.addSpanAttributes("gen_ai.openai.request", String.camelToSnake)<
113
+ OpenAiTelemetry.RequestAttributes
114
+ >
115
+ const addOpenAiResponseAttributes = AiTelemetry.addSpanAttributes("gen_ai.openai.response", String.camelToSnake)<
116
+ OpenAiTelemetry.ResponseAttributes
117
+ >
118
+
119
+ /**
120
+ * Applies the specified OpenAi GenAI telemetry attributes to the provided
121
+ * `Span`.
122
+ *
123
+ * **NOTE**: This method will mutate the `Span` **in-place**.
124
+ *
125
+ * @since 1.0.0
126
+ * @since utilities
127
+ */
128
+ export const addGenAIAnnotations = dual<
129
+ /**
130
+ * Applies the specified OpenAi GenAI telemetry attributes to the provided
131
+ * `Span`.
132
+ *
133
+ * **NOTE**: This method will mutate the `Span` **in-place**.
134
+ *
135
+ * @since 1.0.0
136
+ * @since utilities
137
+ */
138
+ (options: OpenAiTelemetryAttributeOptions) => (span: Span) => void,
139
+ /**
140
+ * Applies the specified OpenAi GenAI telemetry attributes to the provided
141
+ * `Span`.
142
+ *
143
+ * **NOTE**: This method will mutate the `Span` **in-place**.
144
+ *
145
+ * @since 1.0.0
146
+ * @since utilities
147
+ */
148
+ (span: Span, options: OpenAiTelemetryAttributeOptions) => void
149
+ >(2, (span, options) => {
150
+ AiTelemetry.addGenAIAnnotations(span, options)
151
+ if (Predicate.isNotNullable(options.openai)) {
152
+ if (Predicate.isNotNullable(options.openai.request)) {
153
+ addOpenAiRequestAttributes(span, options.openai.request)
154
+ }
155
+ if (Predicate.isNotNullable(options.openai.response)) {
156
+ addOpenAiResponseAttributes(span, options.openai.response)
157
+ }
158
+ }
159
+ })
package/src/index.ts CHANGED
@@ -18,6 +18,16 @@ export * as OpenAiCompletions from "./OpenAiCompletions.js"
18
18
  */
19
19
  export * as OpenAiConfig from "./OpenAiConfig.js"
20
20
 
21
+ /**
22
+ * @since 1.0.0
23
+ */
24
+ export * as OpenAiEmbeddings from "./OpenAiEmbeddings.js"
25
+
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+ export * as OpenAiTelemetry from "./OpenAiTelemetry.js"
30
+
21
31
  /**
22
32
  * @since 1.0.0
23
33
  */