@effect/ai-openai 0.17.1 → 0.18.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.
Files changed (70) hide show
  1. package/OpenAiEmbeddingModel/package.json +6 -0
  2. package/OpenAiLanguageModel/package.json +6 -0
  3. package/dist/cjs/OpenAiClient.js +111 -109
  4. package/dist/cjs/OpenAiClient.js.map +1 -1
  5. package/dist/cjs/OpenAiConfig.js +2 -2
  6. package/dist/cjs/OpenAiConfig.js.map +1 -1
  7. package/dist/cjs/{OpenAiEmbeddings.js → OpenAiEmbeddingModel.js} +22 -51
  8. package/dist/cjs/OpenAiEmbeddingModel.js.map +1 -0
  9. package/dist/cjs/OpenAiLanguageModel.js +490 -0
  10. package/dist/cjs/OpenAiLanguageModel.js.map +1 -0
  11. package/dist/cjs/OpenAiTelemetry.js +1 -1
  12. package/dist/cjs/OpenAiTelemetry.js.map +1 -1
  13. package/dist/cjs/OpenAiTokenizer.js +11 -13
  14. package/dist/cjs/OpenAiTokenizer.js.map +1 -1
  15. package/dist/cjs/index.js +5 -5
  16. package/dist/cjs/internal/utilities.js +25 -0
  17. package/dist/cjs/internal/utilities.js.map +1 -0
  18. package/dist/dts/OpenAiClient.d.ts +32 -75
  19. package/dist/dts/OpenAiClient.d.ts.map +1 -1
  20. package/dist/dts/OpenAiConfig.d.ts +5 -6
  21. package/dist/dts/OpenAiConfig.d.ts.map +1 -1
  22. package/dist/dts/{OpenAiEmbeddings.d.ts → OpenAiEmbeddingModel.d.ts} +16 -37
  23. package/dist/dts/OpenAiEmbeddingModel.d.ts.map +1 -0
  24. package/dist/dts/OpenAiLanguageModel.d.ts +108 -0
  25. package/dist/dts/OpenAiLanguageModel.d.ts.map +1 -0
  26. package/dist/dts/OpenAiTelemetry.d.ts +59 -64
  27. package/dist/dts/OpenAiTelemetry.d.ts.map +1 -1
  28. package/dist/dts/OpenAiTokenizer.d.ts +2 -2
  29. package/dist/dts/OpenAiTokenizer.d.ts.map +1 -1
  30. package/dist/dts/index.d.ts +3 -3
  31. package/dist/dts/index.d.ts.map +1 -1
  32. package/dist/dts/internal/utilities.d.ts +2 -0
  33. package/dist/dts/internal/utilities.d.ts.map +1 -0
  34. package/dist/esm/OpenAiClient.js +110 -106
  35. package/dist/esm/OpenAiClient.js.map +1 -1
  36. package/dist/esm/OpenAiConfig.js +2 -2
  37. package/dist/esm/OpenAiConfig.js.map +1 -1
  38. package/dist/esm/{OpenAiEmbeddings.js → OpenAiEmbeddingModel.js} +21 -48
  39. package/dist/esm/OpenAiEmbeddingModel.js.map +1 -0
  40. package/dist/esm/OpenAiLanguageModel.js +478 -0
  41. package/dist/esm/OpenAiLanguageModel.js.map +1 -0
  42. package/dist/esm/OpenAiTelemetry.js +1 -1
  43. package/dist/esm/OpenAiTelemetry.js.map +1 -1
  44. package/dist/esm/OpenAiTokenizer.js +11 -13
  45. package/dist/esm/OpenAiTokenizer.js.map +1 -1
  46. package/dist/esm/index.js +3 -3
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/internal/utilities.js +16 -0
  49. package/dist/esm/internal/utilities.js.map +1 -0
  50. package/package.json +17 -17
  51. package/src/OpenAiClient.ts +184 -191
  52. package/src/OpenAiConfig.ts +7 -8
  53. package/src/{OpenAiEmbeddings.ts → OpenAiEmbeddingModel.ts} +39 -85
  54. package/src/OpenAiLanguageModel.ts +601 -0
  55. package/src/OpenAiTelemetry.ts +66 -71
  56. package/src/OpenAiTokenizer.ts +35 -26
  57. package/src/index.ts +3 -3
  58. package/src/internal/utilities.ts +19 -0
  59. package/OpenAiCompletions/package.json +0 -6
  60. package/OpenAiEmbeddings/package.json +0 -6
  61. package/dist/cjs/OpenAiCompletions.js +0 -358
  62. package/dist/cjs/OpenAiCompletions.js.map +0 -1
  63. package/dist/cjs/OpenAiEmbeddings.js.map +0 -1
  64. package/dist/dts/OpenAiCompletions.d.ts +0 -75
  65. package/dist/dts/OpenAiCompletions.d.ts.map +0 -1
  66. package/dist/dts/OpenAiEmbeddings.d.ts.map +0 -1
  67. package/dist/esm/OpenAiCompletions.js +0 -345
  68. package/dist/esm/OpenAiCompletions.js.map +0 -1
  69. package/dist/esm/OpenAiEmbeddings.js.map +0 -1
  70. package/src/OpenAiCompletions.ts +0 -500
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiTelemetry.d.ts","sourceRoot":"","sources":["../../src/OpenAiTelemetry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA;AAIrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAC5C,WAAW,CAAC,wBAAwB,GACpC,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,eAAe,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,GAClG,WAAW,CAAC,KAAK,CAAC,oBAAoB,CAAC,eAAe,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CACtG,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC;;;;;;OAMG;IACH,KAAY,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;IAEpG;;;;;;OAMG;IACH,UAAiB,iBAAiB;QAChC;;WAEG;QACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,uBAAuB,GAAG,IAAI,GAAG,SAAS,CAAA;QACpF;;WAEG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAA;KAC/E;IAED;;;;;;OAMG;IACH,UAAiB,kBAAkB;QACjC;;WAEG;QACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;QAChD;;;WAGG;QACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KACvD;IAED;;;;;;;;;OASG;IACH,KAAY,uBAAuB,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAAA;IAE5E;;;;;;;;;OASG;IACH,KAAY,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAA;CACtD;AAED;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,WAAW,CAAC,8BAA8B,GAAG;IACzF,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,eAAe,CAAC,iBAAiB,GAAG,SAAS,CAAA;QACvD,QAAQ,CAAC,EAAE,eAAe,CAAC,kBAAkB,GAAG,SAAS,CAAA;KAC1D,GAAG,SAAS,CAAA;CACd,CAAA;AASD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,aAUpB,+BAA+B,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,YAU3D,IAAI,WAAW,+BAA+B,KAAK,IAAI,CAW9D,CAAA"}
1
+ {"version":3,"file":"OpenAiTelemetry.d.ts","sourceRoot":"","sources":["../../src/OpenAiTelemetry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAA;AAIrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAC5C,WAAW,CAAC,wBAAwB,GACpC,WAAW,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,GAC5E,WAAW,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAChF,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;AAE9F;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,uBAAuB,GAAG,IAAI,GAAG,SAAS,CAAA;IACpF;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,oBAAoB,GAAG,IAAI,GAAG,SAAS,CAAA;CAC/E;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAChD;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CACvD;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,uBAAuB,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAAA;AAE5E;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAA;AAErD;;;GAGG;AACH,MAAM,MAAM,+BAA+B,GAAG,WAAW,CAAC,8BAA8B,GAAG;IACzF,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;QACvC,QAAQ,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;KAC1C,GAAG,SAAS,CAAA;CACd,CAAA;AASD;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,aAUpB,+BAA+B,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,YAU3D,IAAI,WAAW,+BAA+B,KAAK,IAAI,CAW9D,CAAA"}
@@ -2,14 +2,14 @@ import * as Tokenizer from "@effect/ai/Tokenizer";
2
2
  import * as Layer from "effect/Layer";
3
3
  /**
4
4
  * @since 1.0.0
5
- * @category constructors
5
+ * @category Constructors
6
6
  */
7
7
  export declare const make: (options: {
8
8
  readonly model: string;
9
9
  }) => Tokenizer.Tokenizer.Service;
10
10
  /**
11
11
  * @since 1.0.0
12
- * @category layers
12
+ * @category Layers
13
13
  */
14
14
  export declare const layer: (options: {
15
15
  readonly model: string;
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiTokenizer.d.ts","sourceRoot":"","sources":["../../src/OpenAiTokenizer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAIjD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAIrC;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAa;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,gCAsCpD,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAa;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CACxC,CAAA"}
1
+ {"version":3,"file":"OpenAiTokenizer.d.ts","sourceRoot":"","sources":["../../src/OpenAiTokenizer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAGjD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAKrC;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAa;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,gCA8CpD,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,YAAa;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CACxC,CAAA"}
@@ -9,15 +9,15 @@ export * as OpenAiClient from "./OpenAiClient.js";
9
9
  /**
10
10
  * @since 1.0.0
11
11
  */
12
- export * as OpenAiCompletions from "./OpenAiCompletions.js";
12
+ export * as OpenAiConfig from "./OpenAiConfig.js";
13
13
  /**
14
14
  * @since 1.0.0
15
15
  */
16
- export * as OpenAiConfig from "./OpenAiConfig.js";
16
+ export * as OpenAiEmbeddingModel from "./OpenAiEmbeddingModel.js";
17
17
  /**
18
18
  * @since 1.0.0
19
19
  */
20
- export * as OpenAiEmbeddings from "./OpenAiEmbeddings.js";
20
+ export * as OpenAiLanguageModel from "./OpenAiLanguageModel.js";
21
21
  /**
22
22
  * @since 1.0.0
23
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AAEjE;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../src/internal/utilities.ts"],"names":[],"mappings":""}
@@ -1,33 +1,31 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as AiModels from "@effect/ai/AiModels";
5
1
  import * as AiResponse from "@effect/ai/AiResponse";
6
- import * as AiRole from "@effect/ai/AiRole";
7
2
  import * as Sse from "@effect/experimental/Sse";
8
3
  import * as HttpBody from "@effect/platform/HttpBody";
9
4
  import * as HttpClient from "@effect/platform/HttpClient";
10
5
  import * as HttpClientRequest from "@effect/platform/HttpClientRequest";
11
- import * as Chunk from "effect/Chunk";
12
6
  import * as Config from "effect/Config";
13
7
  import * as Context from "effect/Context";
14
- import * as Data from "effect/Data";
15
8
  import * as Effect from "effect/Effect";
16
9
  import { identity } from "effect/Function";
17
10
  import * as Layer from "effect/Layer";
18
11
  import * as Option from "effect/Option";
12
+ import * as Predicate from "effect/Predicate";
19
13
  import * as Redacted from "effect/Redacted";
20
14
  import * as Stream from "effect/Stream";
21
15
  import * as Generated from "./Generated.js";
16
+ import * as InternalUtilities from "./internal/utilities.js";
22
17
  import { OpenAiConfig } from "./OpenAiConfig.js";
18
+ const constDisableValidation = {
19
+ disableValidation: true
20
+ };
23
21
  /**
24
22
  * @since 1.0.0
25
- * @category tags
23
+ * @category Context
26
24
  */
27
25
  export class OpenAiClient extends /*#__PURE__*/Context.Tag("@effect/ai-openai/OpenAiClient")() {}
28
26
  /**
29
27
  * @since 1.0.0
30
- * @category constructors
28
+ * @category Constructors
31
29
  */
32
30
  export const make = options => Effect.gen(function* () {
33
31
  const httpClient = (yield* HttpClient.HttpClient).pipe(HttpClient.mapRequest(request => request.pipe(HttpClientRequest.prependUrl(options.apiUrl ?? "https://api.openai.com/v1"), options.apiKey ? HttpClientRequest.bearerToken(options.apiKey) : identity, options.organizationId !== undefined ? HttpClientRequest.setHeader("OpenAI-Organization", Redacted.value(options.organizationId)) : identity, options.projectId !== undefined ? HttpClientRequest.setHeader("OpenAI-Project", Redacted.value(options.projectId)) : identity, HttpClientRequest.acceptJson)), options.transformClient ? options.transformClient : identity);
@@ -37,7 +35,19 @@ export const make = options => Effect.gen(function* () {
37
35
  });
38
36
  const streamRequest = request => httpClientOk.execute(request).pipe(Effect.map(r => r.stream), Stream.unwrapScoped, Stream.decodeText(), Stream.pipeThroughChannel(Sse.makeChannel()), Stream.takeWhile(event => event.data !== "[DONE]"), Stream.map(event => JSON.parse(event.data)));
39
37
  const stream = request => Stream.suspend(() => {
40
- const finishReasons = [];
38
+ const toolCalls = {};
39
+ let isFirstChunk = false;
40
+ let toolCallIndex = undefined;
41
+ let finishReason = "unknown";
42
+ let usage = {
43
+ inputTokens: 0,
44
+ outputTokens: 0,
45
+ totalTokens: 0,
46
+ reasoningTokens: 0,
47
+ cacheReadInputTokens: 0,
48
+ cacheWriteInputTokens: 0
49
+ };
50
+ let metadata = {};
41
51
  return streamRequest(HttpClientRequest.post("/chat/completions", {
42
52
  body: HttpBody.unsafeJson({
43
53
  ...request,
@@ -46,69 +56,87 @@ export const make = options => Effect.gen(function* () {
46
56
  include_usage: true
47
57
  }
48
58
  })
49
- })).pipe(Stream.mapAccum(new Map(), (acc, chunk) => {
59
+ })).pipe(Stream.filterMap(chunk => {
50
60
  const parts = [];
51
- if (chunk.usage !== null) {
52
- parts.push({
53
- _tag: "Usage",
61
+ // Add response metadata immediately once available
62
+ if (isFirstChunk) {
63
+ isFirstChunk = false;
64
+ parts.push(new AiResponse.MetadataPart({
54
65
  id: chunk.id,
55
66
  model: chunk.model,
67
+ timestamp: new Date(chunk.created * 1000)
68
+ }, constDisableValidation));
69
+ }
70
+ // Track usage information
71
+ if (Predicate.isNotNullable(chunk.usage)) {
72
+ usage = {
56
73
  inputTokens: chunk.usage.prompt_tokens,
57
74
  outputTokens: chunk.usage.completion_tokens,
58
- finishReasons,
75
+ totalTokens: chunk.usage.prompt_tokens + chunk.usage.completion_tokens,
76
+ reasoningTokens: chunk.usage.completion_tokens_details.reasoning_tokens,
77
+ cacheReadInputTokens: chunk.usage.prompt_tokens_details.cached_tokens,
78
+ cacheWriteInputTokens: usage.cacheWriteInputTokens
79
+ };
80
+ metadata = {
81
+ ...metadata,
82
+ serviceTier: chunk.service_tier,
59
83
  systemFingerprint: chunk.system_fingerprint,
60
- serviceTier: chunk.service_tier
61
- });
84
+ acceptedPredictionTokens: chunk.usage.completion_tokens_details.accepted_prediction_tokens,
85
+ rejectedPredictionTokens: chunk.usage.completion_tokens_details.rejected_prediction_tokens,
86
+ inputAudioTokens: chunk.usage.prompt_tokens_details.audio_tokens,
87
+ outputAudioTokens: chunk.usage.completion_tokens_details.audio_tokens
88
+ };
62
89
  }
63
90
  for (let i = 0; i < chunk.choices.length; i++) {
64
91
  const choice = chunk.choices[i];
65
- if (choice.finish_reason !== null) {
66
- finishReasons.push(choice.finish_reason);
67
- }
68
- if ("content" in choice.delta && typeof choice.delta.content === "string") {
69
- let part = acc.get(choice.index);
70
- part = {
71
- _tag: "Content",
72
- content: choice.delta.content
73
- };
74
- acc.set(choice.index, part);
75
- parts.push(part);
76
- } else if ("tool_calls" in choice.delta && Array.isArray(choice.delta.tool_calls)) {
77
- const parts = acc.get(choice.index) ?? [];
78
- for (const toolCall of choice.delta.tool_calls) {
79
- const part = parts[toolCall.index];
80
- const toolPart = part?._tag === "ToolCall" ? {
81
- ...part,
82
- arguments: part.arguments + toolCall.function.arguments
83
- } : {
84
- _tag: "ToolCall",
85
- ...toolCall,
86
- ...toolCall.function,
87
- role: choice.delta.role
88
- };
89
- parts[toolCall.index] = toolPart;
92
+ // Track the finish reason for the response
93
+ if (Predicate.isNotNullable(choice.finish_reason)) {
94
+ finishReason = InternalUtilities.resolveFinishReason(choice.finish_reason);
95
+ if (finishReason === "tool-calls" && Predicate.isNotUndefined(toolCallIndex)) {
96
+ finishToolCall(toolCalls[toolCallIndex], parts);
90
97
  }
91
- acc.set(choice.index, parts);
92
- } else if (choice.finish_reason === "tool_calls") {
93
- const toolParts = acc.get(choice.index);
94
- for (const part of toolParts) {
95
- try {
96
- const args = JSON.parse(part.arguments);
97
- parts.push({
98
- _tag: "ToolCall",
99
- id: part.id,
100
- name: part.name,
101
- arguments: args
102
- });
103
- // eslint-disable-next-line no-empty
104
- } catch {}
98
+ if (finishReason === "stop") {
99
+ parts.push(new AiResponse.FinishPart({
100
+ usage,
101
+ reason: finishReason,
102
+ providerMetadata: {
103
+ [InternalUtilities.ProviderMetadataKey]: metadata
104
+ }
105
+ }, constDisableValidation));
106
+ }
107
+ }
108
+ // Handle text deltas
109
+ if (Predicate.isNotNullable(choice.delta.content)) {
110
+ parts.push(new AiResponse.TextPart({
111
+ text: choice.delta.content
112
+ }, constDisableValidation));
113
+ }
114
+ // Handle tool call deltas
115
+ if (Predicate.hasProperty(choice.delta, "tool_calls") && Array.isArray(choice.delta.tool_calls)) {
116
+ for (const delta of choice.delta.tool_calls) {
117
+ // Make sure to emit any previous tool calls before starting a new one
118
+ if (Predicate.isNotUndefined(toolCallIndex) && toolCallIndex !== delta.index) {
119
+ finishToolCall(toolCalls[toolCallIndex], parts);
120
+ toolCallIndex = delta.index;
121
+ }
122
+ if (Predicate.isUndefined(toolCallIndex)) {
123
+ const toolCall = delta;
124
+ // All information except arguments are returned with the first tool call delta
125
+ toolCalls[delta.index] = {
126
+ ...toolCall,
127
+ isFinished: false
128
+ };
129
+ toolCallIndex = delta.index;
130
+ } else {
131
+ toolCalls[delta.index].function.arguments += delta.function.arguments;
132
+ }
105
133
  }
106
134
  }
107
135
  }
108
- return [acc, parts.length === 0 ? Option.none() : Option.some(new StreamChunk({
136
+ return parts.length === 0 ? Option.none() : Option.some(AiResponse.AiResponse.make({
109
137
  parts
110
- }))];
111
- }), Stream.filterMap(identity));
138
+ }, constDisableValidation));
139
+ }));
112
140
  });
113
141
  return OpenAiClient.of({
114
142
  client,
@@ -118,56 +146,32 @@ export const make = options => Effect.gen(function* () {
118
146
  });
119
147
  /**
120
148
  * @since 1.0.0
121
- * @category layers
122
- */
123
- export const layer = options => Layer.merge(AiModels.layer, Layer.effect(OpenAiClient, make(options)));
124
- /**
125
- * @since 1.0.0
126
- * @category layers
149
+ * @category Layers
127
150
  */
128
- export const layerConfig = options => Config.unwrap(options).pipe(Effect.flatMap(make), Layer.effect(OpenAiClient), Layer.merge(AiModels.layer));
151
+ export const layer = options => Layer.effect(OpenAiClient, make(options));
129
152
  /**
130
153
  * @since 1.0.0
131
- * @category models
154
+ * @category Layers
132
155
  */
133
- export class StreamChunk extends Data.Class {
134
- /**
135
- * @since 1.0.0
136
- */
137
- get text() {
138
- const firstContentPart = this.parts.find(part => part._tag === "Content");
139
- return firstContentPart ? Option.some(firstContentPart.content) : Option.none();
140
- }
141
- /**
142
- * @since 1.0.0
143
- */
144
- get asAiResponse() {
145
- const aiResponseParts = [];
146
- for (let i = 0; i < this.parts.length; i++) {
147
- const part = this.parts[i];
148
- switch (part._tag) {
149
- case "Content":
150
- aiResponseParts.push(AiResponse.TextPart.fromContent(part.content));
151
- break;
152
- case "ToolCall":
153
- aiResponseParts.push(AiResponse.ToolCallPart.fromUnknown({
154
- id: part.id,
155
- name: part.name,
156
- params: part.arguments
157
- }));
158
- break;
159
- }
160
- }
161
- if (aiResponseParts.length === 0) {
162
- return AiResponse.AiResponse.fromText({
163
- role: AiRole.model,
164
- content: ""
165
- });
166
- }
167
- return new AiResponse.AiResponse({
168
- role: AiRole.model,
169
- parts: Chunk.unsafeFromArray(aiResponseParts)
170
- });
156
+ export const layerConfig = options => Config.unwrap(options).pipe(Effect.flatMap(make), Layer.effect(OpenAiClient));
157
+ // =============================================================================
158
+ // Utilities
159
+ // =============================================================================
160
+ const finishToolCall = (toolCall, parts) => {
161
+ // Don't emit the tool call if it's already been emitted
162
+ if (toolCall.isFinished) {
163
+ return;
171
164
  }
172
- }
165
+ try {
166
+ const params = JSON.parse(toolCall.function.arguments);
167
+ parts.push(new AiResponse.ToolCallPart({
168
+ id: toolCall.id,
169
+ name: toolCall.function.name,
170
+ params
171
+ }));
172
+ toolCall.isFinished = true;
173
+ // TODO:
174
+ // eslint-disable-next-line no-empty
175
+ } catch (e) {}
176
+ };
173
177
  //# sourceMappingURL=OpenAiClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiClient.js","names":["AiModels","AiResponse","AiRole","Sse","HttpBody","HttpClient","HttpClientRequest","Chunk","Config","Context","Data","Effect","identity","Layer","Option","Redacted","Stream","Generated","OpenAiConfig","OpenAiClient","Tag","make","options","gen","httpClient","pipe","mapRequest","request","prependUrl","apiUrl","apiKey","bearerToken","organizationId","undefined","setHeader","value","projectId","acceptJson","transformClient","httpClientOk","filterStatusOk","client","getOrUndefined","map","config","streamRequest","execute","r","stream","unwrapScoped","decodeText","pipeThroughChannel","makeChannel","takeWhile","event","data","JSON","parse","suspend","finishReasons","post","body","unsafeJson","stream_options","include_usage","mapAccum","Map","acc","chunk","parts","usage","push","_tag","id","model","inputTokens","prompt_tokens","outputTokens","completion_tokens","systemFingerprint","system_fingerprint","serviceTier","service_tier","i","choices","length","choice","finish_reason","delta","content","part","get","index","set","Array","isArray","tool_calls","toolCall","toolPart","arguments","function","role","toolParts","args","name","none","some","StreamChunk","filterMap","of","layer","merge","effect","layerConfig","unwrap","flatMap","Class","text","firstContentPart","find","asAiResponse","aiResponseParts","TextPart","fromContent","ToolCallPart","fromUnknown","params","fromText","unsafeFromArray"],"sources":["../../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,QAAQ,MAAM,qBAAqB;AAC/C,OAAO,KAAKC,UAAU,MAAM,uBAAuB;AACnD,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,GAAG,MAAM,0BAA0B;AAC/C,OAAO,KAAKC,QAAQ,MAAM,2BAA2B;AACrD,OAAO,KAAKC,UAAU,MAAM,6BAA6B;AAEzD,OAAO,KAAKC,iBAAiB,MAAM,oCAAoC;AACvE,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAC3C,SAASC,YAAY,QAAQ,mBAAmB;AAEhD;;;;AAIA,OAAM,MAAOC,YAAa,sBAAQV,OAAO,CAACW,GAAG,CAAC,gCAAgC,CAAC,EAG5E;AAsBH;;;;AAIA,OAAO,MAAMC,IAAI,GAAIC,OAMpB,IACCX,MAAM,CAACY,GAAG,CAAC,aAAS;EAClB,MAAMC,UAAU,GAAG,CAAC,OAAOnB,UAAU,CAACA,UAAU,EAAEoB,IAAI,CACpDpB,UAAU,CAACqB,UAAU,CAAEC,OAAO,IAC5BA,OAAO,CAACF,IAAI,CACVnB,iBAAiB,CAACsB,UAAU,CAACN,OAAO,CAACO,MAAM,IAAI,2BAA2B,CAAC,EAC3EP,OAAO,CAACQ,MAAM,GAAGxB,iBAAiB,CAACyB,WAAW,CAACT,OAAO,CAACQ,MAAM,CAAC,GAAGlB,QAAQ,EACzEU,OAAO,CAACU,cAAc,KAAKC,SAAS,GAChC3B,iBAAiB,CAAC4B,SAAS,CAAC,qBAAqB,EAAEnB,QAAQ,CAACoB,KAAK,CAACb,OAAO,CAACU,cAAc,CAAC,CAAC,GAC1FpB,QAAQ,EACZU,OAAO,CAACc,SAAS,KAAKH,SAAS,GAC3B3B,iBAAiB,CAAC4B,SAAS,CAAC,gBAAgB,EAAEnB,QAAQ,CAACoB,KAAK,CAACb,OAAO,CAACc,SAAS,CAAC,CAAC,GAChFxB,QAAQ,EACZN,iBAAiB,CAAC+B,UAAU,CAC7B,CACF,EACDf,OAAO,CAACgB,eAAe,GAAGhB,OAAO,CAACgB,eAAe,GAAG1B,QAAQ,CAC7D;EACD,MAAM2B,YAAY,GAAGlC,UAAU,CAACmC,cAAc,CAAChB,UAAU,CAAC;EAC1D,MAAMiB,MAAM,GAAGxB,SAAS,CAACI,IAAI,CAACG,UAAU,EAAE;IACxCc,eAAe,EAAGG,MAAM,IACtBvB,YAAY,CAACwB,cAAc,CAACjB,IAAI,CAC9Bd,MAAM,CAACgC,GAAG,CAAEC,MAAM,IAAKA,MAAM,EAAEN,eAAe,GAAGM,MAAM,CAACN,eAAe,CAACG,MAAM,CAAC,GAAGA,MAAM,CAAC;GAE9F,CAAC;EACF,MAAMI,aAAa,GAAiBlB,OAA4C,IAC9EY,YAAY,CAACO,OAAO,CAACnB,OAAO,CAAC,CAACF,IAAI,CAChCd,MAAM,CAACgC,GAAG,CAAEI,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,EAC3BhC,MAAM,CAACiC,YAAY,EACnBjC,MAAM,CAACkC,UAAU,EAAE,EACnBlC,MAAM,CAACmC,kBAAkB,CAAChD,GAAG,CAACiD,WAAW,EAAE,CAAC,EAC5CpC,MAAM,CAACqC,SAAS,CAAEC,KAAK,IAAKA,KAAK,CAACC,IAAI,KAAK,QAAQ,CAAC,EACpDvC,MAAM,CAAC2B,GAAG,CAAEW,KAAK,IAAKE,IAAI,CAACC,KAAK,CAACH,KAAK,CAACC,IAAI,CAAM,CAAC,CACnD;EACH,MAAMP,MAAM,GAAIrB,OAAgC,IAC9CX,MAAM,CAAC0C,OAAO,CAAC,MAAK;IAClB,MAAMC,aAAa,GAAkB,EAAE;IACvC,OAAOd,aAAa,CAAqBvC,iBAAiB,CAACsD,IAAI,CAAC,mBAAmB,EAAE;MACnFC,IAAI,EAAEzD,QAAQ,CAAC0D,UAAU,CAAC;QACxB,GAAGnC,OAAO;QACVqB,MAAM,EAAE,IAAI;QACZe,cAAc,EAAE;UAAEC,aAAa,EAAE;QAAI;OACtC;KACF,CAAC,CAAC,CAACvC,IAAI,CACNT,MAAM,CAACiD,QAAQ,CAAC,IAAIC,GAAG,EAA6C,EAAE,CAACC,GAAG,EAAEC,KAAK,KAAI;MACnF,MAAMC,KAAK,GAA2B,EAAE;MACxC,IAAID,KAAK,CAACE,KAAK,KAAK,IAAI,EAAE;QACxBD,KAAK,CAACE,IAAI,CAAC;UACTC,IAAI,EAAE,OAAO;UACbC,EAAE,EAAEL,KAAK,CAACK,EAAE;UACZC,KAAK,EAAEN,KAAK,CAACM,KAAK;UAClBC,WAAW,EAAEP,KAAK,CAACE,KAAK,CAACM,aAAa;UACtCC,YAAY,EAAET,KAAK,CAACE,KAAK,CAACQ,iBAAiB;UAC3CnB,aAAa;UACboB,iBAAiB,EAAEX,KAAK,CAACY,kBAAkB;UAC3CC,WAAW,EAAEb,KAAK,CAACc;SACpB,CAAC;MACJ;MACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGf,KAAK,CAACgB,OAAO,CAACC,MAAM,EAAEF,CAAC,EAAE,EAAE;QAC7C,MAAMG,MAAM,GAAGlB,KAAK,CAACgB,OAAO,CAACD,CAAC,CAAC;QAC/B,IAAIG,MAAM,CAACC,aAAa,KAAK,IAAI,EAAE;UACjC5B,aAAa,CAACY,IAAI,CAACe,MAAM,CAACC,aAAa,CAAC;QAC1C;QACA,IAAI,SAAS,IAAID,MAAM,CAACE,KAAK,IAAI,OAAOF,MAAM,CAACE,KAAK,CAACC,OAAO,KAAK,QAAQ,EAAE;UACzE,IAAIC,IAAI,GAAGvB,GAAG,CAACwB,GAAG,CAACL,MAAM,CAACM,KAAK,CAA4B;UAC3DF,IAAI,GAAG;YACLlB,IAAI,EAAE,SAAS;YACfiB,OAAO,EAAEH,MAAM,CAACE,KAAK,CAACC;WACvB;UACDtB,GAAG,CAAC0B,GAAG,CAACP,MAAM,CAACM,KAAK,EAAEF,IAAI,CAAC;UAC3BrB,KAAK,CAACE,IAAI,CAACmB,IAAI,CAAC;QAClB,CAAC,MAAM,IAAI,YAAY,IAAIJ,MAAM,CAACE,KAAK,IAAIM,KAAK,CAACC,OAAO,CAACT,MAAM,CAACE,KAAK,CAACQ,UAAU,CAAC,EAAE;UACjF,MAAM3B,KAAK,GAAIF,GAAG,CAACwB,GAAG,CAACL,MAAM,CAACM,KAAK,CAAC,IAAI,EAA0B;UAClE,KAAK,MAAMK,QAAQ,IAAIX,MAAM,CAACE,KAAK,CAACQ,UAAU,EAAE;YAC9C,MAAMN,IAAI,GAAGrB,KAAK,CAAC4B,QAAQ,CAACL,KAAK,CAAC;YAClC,MAAMM,QAAQ,GAAGR,IAAI,EAAElB,IAAI,KAAK,UAAU,GACxC;cACE,GAAGkB,IAAI;cACPS,SAAS,EAAET,IAAI,CAACS,SAAS,GAAGF,QAAQ,CAACG,QAAQ,CAACD;aAC/C,GACD;cACE3B,IAAI,EAAE,UAAU;cAChB,GAAGyB,QAAQ;cACX,GAAGA,QAAQ,CAACG,QAAQ;cACpBC,IAAI,EAAEf,MAAM,CAACE,KAAK,CAACa;aACb;YACVhC,KAAK,CAAC4B,QAAQ,CAACL,KAAK,CAAC,GAAGM,QAAQ;UAClC;UACA/B,GAAG,CAAC0B,GAAG,CAACP,MAAM,CAACM,KAAK,EAAEvB,KAAK,CAAC;QAC9B,CAAC,MAAM,IAAIiB,MAAM,CAACC,aAAa,KAAK,YAAY,EAAE;UAChD,MAAMe,SAAS,GAAGnC,GAAG,CAACwB,GAAG,CAACL,MAAM,CAACM,KAAK,CAAwB;UAC9D,KAAK,MAAMF,IAAI,IAAIY,SAAS,EAAE;YAC5B,IAAI;cACF,MAAMC,IAAI,GAAG/C,IAAI,CAACC,KAAK,CAACiC,IAAI,CAACS,SAAmB,CAAC;cACjD9B,KAAK,CAACE,IAAI,CAAC;gBACTC,IAAI,EAAE,UAAU;gBAChBC,EAAE,EAAEiB,IAAI,CAACjB,EAAE;gBACX+B,IAAI,EAAEd,IAAI,CAACc,IAAI;gBACfL,SAAS,EAAEI;eACZ,CAAC;cACF;YACF,CAAC,CAAC,MAAM,CAAC;UACX;QACF;MACF;MACA,OAAO,CACLpC,GAAG,EACHE,KAAK,CAACgB,MAAM,KAAK,CAAC,GACdvE,MAAM,CAAC2F,IAAI,EAAE,GACb3F,MAAM,CAAC4F,IAAI,CAAC,IAAIC,WAAW,CAAC;QAAEtC;MAAK,CAAE,CAAC,CAAC,CAC5C;IACH,CAAC,CAAC,EACFrD,MAAM,CAAC4F,SAAS,CAAChG,QAAQ,CAAC,CAC3B;EACH,CAAC,CAAC;EACJ,OAAOO,YAAY,CAAC0F,EAAE,CAAC;IAAEpE,MAAM;IAAEI,aAAa;IAAEG;EAAM,CAAE,CAAC;AAC3D,CAAC,CAAC;AAEJ;;;;AAIA,OAAO,MAAM8D,KAAK,GAAIxF,OAMrB,IACCT,KAAK,CAACkG,KAAK,CACT/G,QAAQ,CAAC8G,KAAK,EACdjG,KAAK,CAACmG,MAAM,CAAC7F,YAAY,EAAEE,IAAI,CAACC,OAAO,CAAC,CAAC,CAC1C;AAEH;;;;AAIA,OAAO,MAAM2F,WAAW,GACtB3F,OAME,IAEFd,MAAM,CAAC0G,MAAM,CAAC5F,OAAO,CAAC,CAACG,IAAI,CACzBd,MAAM,CAACwG,OAAO,CAAC9F,IAAI,CAAC,EACpBR,KAAK,CAACmG,MAAM,CAAC7F,YAAY,CAAC,EAC1BN,KAAK,CAACkG,KAAK,CAAC/G,QAAQ,CAAC8G,KAAK,CAAC,CAC5B;AA4DH;;;;AAIA,OAAM,MAAOH,WAAY,SAAQjG,IAAI,CAAC0G,KAEpC;EACA;;;EAGA,IAAIC,IAAIA,CAAA;IACN,MAAMC,gBAAgB,GAAG,IAAI,CAACjD,KAAK,CAACkD,IAAI,CAAE7B,IAAI,IAAKA,IAAI,CAAClB,IAAI,KAAK,SAAS,CAAC;IAC3E,OAAO8C,gBAAgB,GAAGxG,MAAM,CAAC4F,IAAI,CAACY,gBAAgB,CAAC7B,OAAO,CAAC,GAAG3E,MAAM,CAAC2F,IAAI,EAAE;EACjF;EACA;;;EAGA,IAAIe,YAAYA,CAAA;IACd,MAAMC,eAAe,GAA2B,EAAE;IAElD,KAAK,IAAItC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACd,KAAK,CAACgB,MAAM,EAAEF,CAAC,EAAE,EAAE;MAC1C,MAAMO,IAAI,GAAG,IAAI,CAACrB,KAAK,CAACc,CAAC,CAAC;MAC1B,QAAQO,IAAI,CAAClB,IAAI;QACf,KAAK,SAAS;UACZiD,eAAe,CAAClD,IAAI,CAACtE,UAAU,CAACyH,QAAQ,CAACC,WAAW,CAACjC,IAAI,CAACD,OAAO,CAAC,CAAC;UACnE;QACF,KAAK,UAAU;UACbgC,eAAe,CAAClD,IAAI,CAACtE,UAAU,CAAC2H,YAAY,CAACC,WAAW,CAAC;YACvDpD,EAAE,EAAEiB,IAAI,CAACjB,EAAE;YACX+B,IAAI,EAAEd,IAAI,CAACc,IAAI;YACfsB,MAAM,EAAEpC,IAAI,CAACS;WACd,CAAC,CAAC;UACH;MACJ;IACF;IAEA,IAAIsB,eAAe,CAACpC,MAAM,KAAK,CAAC,EAAE;MAChC,OAAOpF,UAAU,CAACA,UAAU,CAAC8H,QAAQ,CAAC;QACpC1B,IAAI,EAAEnG,MAAM,CAACwE,KAAK;QAClBe,OAAO,EAAE;OACV,CAAC;IACJ;IAEA,OAAO,IAAIxF,UAAU,CAACA,UAAU,CAAC;MAC/BoG,IAAI,EAAEnG,MAAM,CAACwE,KAAK;MAClBL,KAAK,EAAE9D,KAAK,CAACyH,eAAe,CAACP,eAAe;KAC7C,CAAC;EACJ","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiClient.js","names":["AiResponse","Sse","HttpBody","HttpClient","HttpClientRequest","Config","Context","Effect","identity","Layer","Option","Predicate","Redacted","Stream","Generated","InternalUtilities","OpenAiConfig","constDisableValidation","disableValidation","OpenAiClient","Tag","make","options","gen","httpClient","pipe","mapRequest","request","prependUrl","apiUrl","apiKey","bearerToken","organizationId","undefined","setHeader","value","projectId","acceptJson","transformClient","httpClientOk","filterStatusOk","client","getOrUndefined","map","config","streamRequest","execute","r","stream","unwrapScoped","decodeText","pipeThroughChannel","makeChannel","takeWhile","event","data","JSON","parse","suspend","toolCalls","isFirstChunk","toolCallIndex","finishReason","usage","inputTokens","outputTokens","totalTokens","reasoningTokens","cacheReadInputTokens","cacheWriteInputTokens","metadata","post","body","unsafeJson","stream_options","include_usage","filterMap","chunk","parts","push","MetadataPart","id","model","timestamp","Date","created","isNotNullable","prompt_tokens","completion_tokens","completion_tokens_details","reasoning_tokens","prompt_tokens_details","cached_tokens","serviceTier","service_tier","systemFingerprint","system_fingerprint","acceptedPredictionTokens","accepted_prediction_tokens","rejectedPredictionTokens","rejected_prediction_tokens","inputAudioTokens","audio_tokens","outputAudioTokens","i","choices","length","choice","finish_reason","resolveFinishReason","isNotUndefined","finishToolCall","FinishPart","reason","providerMetadata","ProviderMetadataKey","delta","content","TextPart","text","hasProperty","Array","isArray","tool_calls","index","isUndefined","toolCall","isFinished","function","arguments","none","some","of","layer","effect","layerConfig","unwrap","flatMap","params","ToolCallPart","name","e"],"sources":["../../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3
3
  import { dual } from "effect/Function";
4
4
  /**
5
5
  * @since 1.0.0
6
- * @category tags
6
+ * @category Context
7
7
  */
8
8
  export class OpenAiConfig extends /*#__PURE__*/Context.Tag("@effect/ai-openai/OpenAiConfig")() {
9
9
  /**
@@ -13,7 +13,7 @@ export class OpenAiConfig extends /*#__PURE__*/Context.Tag("@effect/ai-openai/Op
13
13
  }
14
14
  /**
15
15
  * @since 1.0.0
16
- * @category configuration
16
+ * @category Configuration
17
17
  */
18
18
  export const withClientTransform = /*#__PURE__*/dual(2, (self, transformClient) => Effect.flatMap(OpenAiConfig.getOrUndefined, config => Effect.provideService(self, OpenAiConfig, {
19
19
  ...config,
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiConfig.js","names":["Context","Effect","dual","OpenAiConfig","Tag","getOrUndefined","map","context","unsafeMap","get","key","withClientTransform","self","transformClient","flatMap","config","provideService"],"sources":["../../src/OpenAiConfig.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AAEtC;;;;AAIA,OAAM,MAAOC,YAAa,sBAAQH,OAAO,CAACI,GAAG,CAAC,gCAAgC,CAAC,EAG5E;EACD;;;EAGA,OAAgBC,cAAc,gBAA2DJ,MAAM,CAACK,GAAG,eACjGL,MAAM,CAACM,OAAO,EAAS,EACtBA,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACC,GAAG,CAACN,YAAY,CAACO,GAAG,CAAC,CACrD;;AAiBH;;;;AAIA,OAAO,MAAMC,mBAAmB,gBAc5BT,IAAI,CAeN,CAAC,EACD,CAACU,IAAI,EAAEC,eAAe,KACpBZ,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,CACJ","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiConfig.js","names":["Context","Effect","dual","OpenAiConfig","Tag","getOrUndefined","map","context","unsafeMap","get","key","withClientTransform","self","transformClient","flatMap","config","provideService"],"sources":["../../src/OpenAiConfig.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AAEtC;;;;AAIA,OAAM,MAAOC,YAAa,sBAAQH,OAAO,CAACI,GAAG,CAAC,gCAAgC,CAAC,EAG5E;EACD;;;EAGA,OAAgBC,cAAc,gBAA2DJ,MAAM,CAACK,GAAG,eACjGL,MAAM,CAACM,OAAO,EAAS,EACtBA,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACC,GAAG,CAACN,YAAY,CAACO,GAAG,CAAC,CACrD;;AAgBH;;;;AAIA,OAAO,MAAMC,mBAAmB,gBAc5BT,IAAI,CAeN,CAAC,EACD,CAACU,IAAI,EAAEC,eAAe,KACpBZ,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,CACJ","ignoreList":[]}
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import * as AiEmbeddingModel from "@effect/ai/AiEmbeddingModel";
4
5
  import { AiError } from "@effect/ai/AiError";
5
6
  import * as AiModel from "@effect/ai/AiModel";
6
- import * as Embeddings from "@effect/ai/Embeddings";
7
7
  import * as Tokenizer from "@effect/ai/Tokenizer";
8
8
  import * as Context from "effect/Context";
9
9
  import * as Effect from "effect/Effect";
10
10
  import { dual } from "effect/Function";
11
- import * as Layer from "effect/Layer";
12
11
  import * as Struct from "effect/Struct";
13
12
  import { OpenAiClient } from "./OpenAiClient.js";
14
13
  import * as OpenAiTokenizer from "./OpenAiTokenizer.js";
@@ -17,45 +16,43 @@ import * as OpenAiTokenizer from "./OpenAiTokenizer.js";
17
16
  // =============================================================================
18
17
  /**
19
18
  * @since 1.0.0
20
- * @category tags
19
+ * @category Context
21
20
  */
22
- export class Config extends /*#__PURE__*/Context.Tag("@effect/ai-openai/OpenAiEmbeddings/Config")() {
21
+ export class Config extends /*#__PURE__*/Context.Tag("@effect/ai-openai/OpenAiEmbeddingModel/Config")() {
23
22
  /**
24
23
  * @since 1.0.0
25
24
  */
26
25
  static getOrUndefined = /*#__PURE__*/Effect.map( /*#__PURE__*/Effect.context(), context => context.unsafeMap.get(Config.key));
27
26
  }
28
27
  // =============================================================================
29
- // OpenAi Embeddings
28
+ // OpenAi Embedding Model
30
29
  // =============================================================================
31
- const batchedModelCacheKey = /*#__PURE__*/Symbol.for("@effect/ai-openai/OpenAiEmbeddings/Batched/AiModel");
32
- const dataLoaderModelCacheKey = /*#__PURE__*/Symbol.for("@effect/ai-openai/OpenAiEmbeddings/DataLoader/AiModel");
30
+ const batchedModelCacheKey = "@effect/ai-openai/OpenAiEmbeddingModel/Batched/AiModel";
31
+ const dataLoaderModelCacheKey = "@effect/ai-openai/OpenAiEmbeddingModel/DataLoader/AiModel";
33
32
  /**
34
33
  * @since 1.0.0
35
- * @category ai models
34
+ * @category Models
36
35
  */
37
36
  export const model = (model, config) => AiModel.make({
38
- model,
39
37
  cacheKey: config.mode === "batched" ? batchedModelCacheKey : dataLoaderModelCacheKey,
40
- requires: OpenAiClient,
41
- provides: Effect.map(config.mode === "batched" ? makeBatched({
38
+ cachedContext: Effect.map(config.mode === "batched" ? makeBatched({
42
39
  model,
43
40
  config
44
41
  }) : makeDataLoader({
45
42
  model,
46
43
  config
47
- }), embeddings => Context.make(Embeddings.Embeddings, embeddings)),
48
- updateContext: context => {
49
- const outerConfig = config.mode === "batched" ? Struct.omit("mode", "maxBatchSize", "cache")(config) : Struct.omit("mode", "maxBatchSize", "window")(config);
50
- const innerConfig = context.unsafeMap.get(Config.key);
44
+ }), model => Context.make(AiEmbeddingModel.AiEmbeddingModel, model)),
45
+ updateRequestContext: Effect.fnUntraced(function* (context) {
46
+ const parentConfig = config.mode === "batched" ? Struct.omit("mode", "maxBatchSize", "cache")(config) : Struct.omit("mode", "maxBatchSize", "window")(config);
47
+ const perRequestConfig = yield* Config.getOrUndefined;
51
48
  return Context.mergeAll(context, Context.make(Config, {
52
49
  model,
53
- ...outerConfig,
54
- ...innerConfig
50
+ ...parentConfig,
51
+ ...perRequestConfig
55
52
  }), Context.make(Tokenizer.Tokenizer, OpenAiTokenizer.make({
56
- model: innerConfig?.model ?? model
53
+ model: perRequestConfig?.model ?? model
57
54
  })));
58
- }
55
+ })
59
56
  });
60
57
  const makeRequest = (client, input, parentConfig) => Effect.context().pipe(Effect.flatMap(context => {
61
58
  const localConfig = context.unsafeMap.get(Config.key);
@@ -72,7 +69,7 @@ const makeRequest = (client, input, parentConfig) => Effect.context().pipe(Effec
72
69
  index
73
70
  }))), Effect.mapError(cause => {
74
71
  const common = {
75
- module: "OpenAiEmbeddings",
72
+ module: "OpenAiEmbeddingModel",
76
73
  method: "embed",
77
74
  cause
78
75
  };
@@ -94,7 +91,7 @@ const makeBatched = /*#__PURE__*/Effect.fnUntraced(function* (options) {
94
91
  maxBatchSize = 2048,
95
92
  ...parentConfig
96
93
  } = options.config;
97
- return yield* Embeddings.make({
94
+ return yield* AiEmbeddingModel.make({
98
95
  cache,
99
96
  maxBatchSize,
100
97
  embedMany(input) {
@@ -112,7 +109,7 @@ const makeDataLoader = /*#__PURE__*/Effect.fnUntraced(function* (options) {
112
109
  window,
113
110
  ...parentConfig
114
111
  } = options.config;
115
- return yield* Embeddings.makeDataLoader({
112
+ return yield* AiEmbeddingModel.makeDataLoader({
116
113
  window,
117
114
  maxBatchSize,
118
115
  embedMany(input) {
@@ -125,34 +122,10 @@ const makeDataLoader = /*#__PURE__*/Effect.fnUntraced(function* (options) {
125
122
  });
126
123
  /**
127
124
  * @since 1.0.0
128
- * @category layers
129
- */
130
- export const layer = options => Layer.effect(Embeddings.Embeddings, makeBatched({
131
- model: options.model,
132
- config: {
133
- cache: options.cache,
134
- maxBatchSize: options.maxBatchSize,
135
- ...options.config
136
- }
137
- }));
138
- /**
139
- * @since 1.0.0
140
- * @category layers
141
- */
142
- export const layerDataLoader = options => Layer.scoped(Embeddings.Embeddings, makeDataLoader({
143
- model: options.model,
144
- config: {
145
- window: options.window,
146
- maxBatchSize: options.maxBatchSize,
147
- ...options.config
148
- }
149
- }));
150
- /**
151
- * @since 1.0.0
152
- * @category configuration
125
+ * @category Configuration
153
126
  */
154
127
  export const withConfigOverride = /*#__PURE__*/dual(2, (self, overrides) => Effect.flatMap(Config.getOrUndefined, config => Effect.provideService(self, Config, {
155
128
  ...config,
156
129
  ...overrides
157
130
  })));
158
- //# sourceMappingURL=OpenAiEmbeddings.js.map
131
+ //# sourceMappingURL=OpenAiEmbeddingModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiEmbeddingModel.js","names":["AiEmbeddingModel","AiError","AiModel","Tokenizer","Context","Effect","dual","Struct","OpenAiClient","OpenAiTokenizer","Config","Tag","getOrUndefined","map","context","unsafeMap","get","key","batchedModelCacheKey","dataLoaderModelCacheKey","model","config","make","cacheKey","mode","cachedContext","makeBatched","makeDataLoader","updateRequestContext","fnUntraced","parentConfig","omit","perRequestConfig","mergeAll","makeRequest","client","input","pipe","flatMap","localConfig","createEmbedding","response","data","embedding","index","embeddings","mapError","cause","common","module","method","_tag","description","options","cache","maxBatchSize","embedMany","window","withConfigOverride","self","overrides","provideService"],"sources":["../../src/OpenAiEmbeddingModel.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}