@effect/ai 0.26.0 → 0.27.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 (188) hide show
  1. package/Chat/package.json +6 -0
  2. package/EmbeddingModel/package.json +6 -0
  3. package/IdGenerator/package.json +6 -0
  4. package/LanguageModel/package.json +6 -0
  5. package/Model/package.json +6 -0
  6. package/Prompt/package.json +6 -0
  7. package/Response/package.json +6 -0
  8. package/Telemetry/package.json +6 -0
  9. package/Tool/package.json +6 -0
  10. package/Toolkit/package.json +6 -0
  11. package/dist/cjs/AiError.js +575 -11
  12. package/dist/cjs/AiError.js.map +1 -1
  13. package/dist/cjs/Chat.js +302 -0
  14. package/dist/cjs/Chat.js.map +1 -0
  15. package/dist/cjs/EmbeddingModel.js +184 -0
  16. package/dist/cjs/EmbeddingModel.js.map +1 -0
  17. package/dist/cjs/IdGenerator.js +255 -0
  18. package/dist/cjs/IdGenerator.js.map +1 -0
  19. package/dist/cjs/LanguageModel.js +584 -0
  20. package/dist/cjs/LanguageModel.js.map +1 -0
  21. package/dist/cjs/McpServer.js +12 -4
  22. package/dist/cjs/McpServer.js.map +1 -1
  23. package/dist/cjs/Model.js +118 -0
  24. package/dist/cjs/Model.js.map +1 -0
  25. package/dist/cjs/Prompt.js +649 -0
  26. package/dist/cjs/Prompt.js.map +1 -0
  27. package/dist/cjs/Response.js +635 -0
  28. package/dist/cjs/Response.js.map +1 -0
  29. package/dist/cjs/Telemetry.js +176 -0
  30. package/dist/cjs/Telemetry.js.map +1 -0
  31. package/dist/cjs/Tokenizer.js +87 -8
  32. package/dist/cjs/Tokenizer.js.map +1 -1
  33. package/dist/cjs/Tool.js +556 -0
  34. package/dist/cjs/Tool.js.map +1 -0
  35. package/dist/cjs/Toolkit.js +279 -0
  36. package/dist/cjs/Toolkit.js.map +1 -0
  37. package/dist/cjs/index.js +21 -19
  38. package/dist/dts/AiError.d.ts +577 -9
  39. package/dist/dts/AiError.d.ts.map +1 -1
  40. package/dist/dts/Chat.d.ts +356 -0
  41. package/dist/dts/Chat.d.ts.map +1 -0
  42. package/dist/dts/EmbeddingModel.d.ts +153 -0
  43. package/dist/dts/EmbeddingModel.d.ts.map +1 -0
  44. package/dist/dts/IdGenerator.d.ts +272 -0
  45. package/dist/dts/IdGenerator.d.ts.map +1 -0
  46. package/dist/dts/LanguageModel.d.ts +458 -0
  47. package/dist/dts/LanguageModel.d.ts.map +1 -0
  48. package/dist/dts/McpSchema.d.ts +25 -25
  49. package/dist/dts/McpServer.d.ts +6 -4
  50. package/dist/dts/McpServer.d.ts.map +1 -1
  51. package/dist/dts/Model.d.ts +124 -0
  52. package/dist/dts/Model.d.ts.map +1 -0
  53. package/dist/dts/Prompt.d.ts +1119 -0
  54. package/dist/dts/Prompt.d.ts.map +1 -0
  55. package/dist/dts/Response.d.ts +1519 -0
  56. package/dist/dts/Response.d.ts.map +1 -0
  57. package/dist/dts/Telemetry.d.ts +520 -0
  58. package/dist/dts/Telemetry.d.ts.map +1 -0
  59. package/dist/dts/Tokenizer.d.ts +131 -13
  60. package/dist/dts/Tokenizer.d.ts.map +1 -1
  61. package/dist/dts/Tool.d.ts +876 -0
  62. package/dist/dts/Tool.d.ts.map +1 -0
  63. package/dist/dts/Toolkit.d.ts +310 -0
  64. package/dist/dts/Toolkit.d.ts.map +1 -0
  65. package/dist/dts/index.d.ts +498 -13
  66. package/dist/dts/index.d.ts.map +1 -1
  67. package/dist/esm/AiError.js +570 -10
  68. package/dist/esm/AiError.js.map +1 -1
  69. package/dist/esm/Chat.js +291 -0
  70. package/dist/esm/Chat.js.map +1 -0
  71. package/dist/esm/EmbeddingModel.js +173 -0
  72. package/dist/esm/EmbeddingModel.js.map +1 -0
  73. package/dist/esm/IdGenerator.js +245 -0
  74. package/dist/esm/IdGenerator.js.map +1 -0
  75. package/dist/esm/LanguageModel.js +572 -0
  76. package/dist/esm/LanguageModel.js.map +1 -0
  77. package/dist/esm/McpServer.js +12 -4
  78. package/dist/esm/McpServer.js.map +1 -1
  79. package/dist/esm/Model.js +108 -0
  80. package/dist/esm/Model.js.map +1 -0
  81. package/dist/esm/Prompt.js +633 -0
  82. package/dist/esm/Prompt.js.map +1 -0
  83. package/dist/esm/Response.js +619 -0
  84. package/dist/esm/Response.js.map +1 -0
  85. package/dist/esm/Telemetry.js +166 -0
  86. package/dist/esm/Telemetry.js.map +1 -0
  87. package/dist/esm/Tokenizer.js +87 -8
  88. package/dist/esm/Tokenizer.js.map +1 -1
  89. package/dist/esm/Tool.js +534 -0
  90. package/dist/esm/Tool.js.map +1 -0
  91. package/dist/esm/Toolkit.js +269 -0
  92. package/dist/esm/Toolkit.js.map +1 -0
  93. package/dist/esm/index.js +498 -13
  94. package/dist/esm/index.js.map +1 -1
  95. package/package.json +76 -68
  96. package/src/AiError.ts +739 -9
  97. package/src/Chat.ts +546 -0
  98. package/src/EmbeddingModel.ts +311 -0
  99. package/src/IdGenerator.ts +320 -0
  100. package/src/LanguageModel.ts +1074 -0
  101. package/src/McpServer.ts +337 -194
  102. package/src/Model.ts +155 -0
  103. package/src/Prompt.ts +1616 -0
  104. package/src/Response.ts +2131 -0
  105. package/src/Telemetry.ts +655 -0
  106. package/src/Tokenizer.ts +145 -24
  107. package/src/Tool.ts +1267 -0
  108. package/src/Toolkit.ts +516 -0
  109. package/src/index.ts +499 -13
  110. package/AiChat/package.json +0 -6
  111. package/AiEmbeddingModel/package.json +0 -6
  112. package/AiInput/package.json +0 -6
  113. package/AiLanguageModel/package.json +0 -6
  114. package/AiModel/package.json +0 -6
  115. package/AiResponse/package.json +0 -6
  116. package/AiTelemetry/package.json +0 -6
  117. package/AiTool/package.json +0 -6
  118. package/AiToolkit/package.json +0 -6
  119. package/dist/cjs/AiChat.js +0 -122
  120. package/dist/cjs/AiChat.js.map +0 -1
  121. package/dist/cjs/AiEmbeddingModel.js +0 -109
  122. package/dist/cjs/AiEmbeddingModel.js.map +0 -1
  123. package/dist/cjs/AiInput.js +0 -458
  124. package/dist/cjs/AiInput.js.map +0 -1
  125. package/dist/cjs/AiLanguageModel.js +0 -351
  126. package/dist/cjs/AiLanguageModel.js.map +0 -1
  127. package/dist/cjs/AiModel.js +0 -37
  128. package/dist/cjs/AiModel.js.map +0 -1
  129. package/dist/cjs/AiResponse.js +0 -681
  130. package/dist/cjs/AiResponse.js.map +0 -1
  131. package/dist/cjs/AiTelemetry.js +0 -58
  132. package/dist/cjs/AiTelemetry.js.map +0 -1
  133. package/dist/cjs/AiTool.js +0 -150
  134. package/dist/cjs/AiTool.js.map +0 -1
  135. package/dist/cjs/AiToolkit.js +0 -157
  136. package/dist/cjs/AiToolkit.js.map +0 -1
  137. package/dist/cjs/internal/common.js +0 -21
  138. package/dist/cjs/internal/common.js.map +0 -1
  139. package/dist/dts/AiChat.d.ts +0 -101
  140. package/dist/dts/AiChat.d.ts.map +0 -1
  141. package/dist/dts/AiEmbeddingModel.d.ts +0 -65
  142. package/dist/dts/AiEmbeddingModel.d.ts.map +0 -1
  143. package/dist/dts/AiInput.d.ts +0 -590
  144. package/dist/dts/AiInput.d.ts.map +0 -1
  145. package/dist/dts/AiLanguageModel.d.ts +0 -302
  146. package/dist/dts/AiLanguageModel.d.ts.map +0 -1
  147. package/dist/dts/AiModel.d.ts +0 -25
  148. package/dist/dts/AiModel.d.ts.map +0 -1
  149. package/dist/dts/AiResponse.d.ts +0 -863
  150. package/dist/dts/AiResponse.d.ts.map +0 -1
  151. package/dist/dts/AiTelemetry.d.ts +0 -242
  152. package/dist/dts/AiTelemetry.d.ts.map +0 -1
  153. package/dist/dts/AiTool.d.ts +0 -334
  154. package/dist/dts/AiTool.d.ts.map +0 -1
  155. package/dist/dts/AiToolkit.d.ts +0 -96
  156. package/dist/dts/AiToolkit.d.ts.map +0 -1
  157. package/dist/dts/internal/common.d.ts +0 -2
  158. package/dist/dts/internal/common.d.ts.map +0 -1
  159. package/dist/esm/AiChat.js +0 -111
  160. package/dist/esm/AiChat.js.map +0 -1
  161. package/dist/esm/AiEmbeddingModel.js +0 -98
  162. package/dist/esm/AiEmbeddingModel.js.map +0 -1
  163. package/dist/esm/AiInput.js +0 -433
  164. package/dist/esm/AiInput.js.map +0 -1
  165. package/dist/esm/AiLanguageModel.js +0 -340
  166. package/dist/esm/AiLanguageModel.js.map +0 -1
  167. package/dist/esm/AiModel.js +0 -29
  168. package/dist/esm/AiModel.js.map +0 -1
  169. package/dist/esm/AiResponse.js +0 -657
  170. package/dist/esm/AiResponse.js.map +0 -1
  171. package/dist/esm/AiTelemetry.js +0 -48
  172. package/dist/esm/AiTelemetry.js.map +0 -1
  173. package/dist/esm/AiTool.js +0 -134
  174. package/dist/esm/AiTool.js.map +0 -1
  175. package/dist/esm/AiToolkit.js +0 -147
  176. package/dist/esm/AiToolkit.js.map +0 -1
  177. package/dist/esm/internal/common.js +0 -14
  178. package/dist/esm/internal/common.js.map +0 -1
  179. package/src/AiChat.ts +0 -251
  180. package/src/AiEmbeddingModel.ts +0 -169
  181. package/src/AiInput.ts +0 -602
  182. package/src/AiLanguageModel.ts +0 -685
  183. package/src/AiModel.ts +0 -53
  184. package/src/AiResponse.ts +0 -986
  185. package/src/AiTelemetry.ts +0 -333
  186. package/src/AiTool.ts +0 -579
  187. package/src/AiToolkit.ts +0 -265
  188. package/src/internal/common.ts +0 -12
@@ -1,96 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Context from "effect/Context";
5
- import * as Effect from "effect/Effect";
6
- import type { Inspectable } from "effect/Inspectable";
7
- import * as Layer from "effect/Layer";
8
- import type { Pipeable } from "effect/Pipeable";
9
- import type * as Scope from "effect/Scope";
10
- import * as AiTool from "./AiTool.js";
11
- /**
12
- * @since 1.0.0
13
- * @category Type Ids
14
- */
15
- export declare const TypeId: unique symbol;
16
- /**
17
- * @since 1.0.0
18
- * @category Type Ids
19
- */
20
- export type TypeId = typeof TypeId;
21
- /**
22
- * An `AiToolkit` represents a set of tools that a large language model can
23
- * use to augment its response.
24
- *
25
- * @since 1.0.0
26
- * @category Models
27
- */
28
- export interface AiToolkit<in out Tools extends AiTool.Any> extends Effect.Effect<ToHandler<Tools>, never, AiTool.ToHandler<Tools>>, Inspectable, Pipeable {
29
- new (_: never): {};
30
- readonly [TypeId]: TypeId;
31
- /**
32
- * A map containing the tools that are part of this toolkit.
33
- */
34
- readonly tools: AiTool.ByName<Tools>;
35
- /**
36
- * Converts this toolkit into a `Context` object containing the handlers for
37
- * all tools in the toolkit.
38
- */
39
- toContext<Handlers extends HandlersFrom<Tools>, EX = never, RX = never>(build: Handlers | Effect.Effect<Handlers, EX, RX>): Effect.Effect<Context.Context<AiTool.ToHandler<Tools>>, EX, RX>;
40
- /**
41
- * Converts this toolkit into a `Layer` containing the handlers for all tools
42
- * in the toolkit.
43
- */
44
- toLayer<Handlers extends HandlersFrom<Tools>, EX = never, RX = never>(build: Handlers | Effect.Effect<Handlers, EX, RX>): Layer.Layer<AiTool.ToHandler<Tools>, EX, Exclude<RX, Scope.Scope>>;
45
- of<Handlers extends HandlersFrom<Tools>>(handlers: Handlers): Handlers;
46
- }
47
- /**
48
- * @since 1.0.0
49
- * @category Models
50
- */
51
- export interface Any {
52
- readonly [TypeId]: TypeId;
53
- readonly tools: Record<string, AiTool.Any>;
54
- }
55
- /**
56
- * Represents an `AiToolkit` which has been augmented with a handler function
57
- * for resolving tool call requests.
58
- *
59
- * @since 1.0.0
60
- * @category Models
61
- */
62
- export interface ToHandler<in out Tool extends AiTool.Any> {
63
- readonly tools: ReadonlyArray<Tool>;
64
- readonly handle: (toolName: AiTool.Name<Tool>, toolParams: AiTool.Parameters<Tool>) => AiTool.HandlerEffect<Tool>;
65
- }
66
- /**
67
- * A utility mapped type which associates tool names with their handlers.
68
- *
69
- * @since 1.0.0
70
- * @category Utility Types
71
- */
72
- export type HandlersFrom<Tools extends AiTool.Any> = {
73
- [Tool in Tools as Tool["name"]]: (params: AiTool.Parameters<Tool>) => AiTool.HandlerEffect<Tool>;
74
- };
75
- /**
76
- * A utility type which returns the tools in an `AiToolkit`.
77
- *
78
- * @since 1.0.0
79
- * @category Utility Types
80
- */
81
- export type Tools<Toolkit> = Toolkit extends AiToolkit<infer Tool> ? string extends Tool["name"] ? never : Tool : never;
82
- /**
83
- * Constructs a new `AiToolkit` from the specified tools.
84
- *
85
- * @since 1.0.0
86
- * @category Constructors
87
- */
88
- export declare const make: <const Tools extends ReadonlyArray<AiTool.Any>>(...tools: Tools) => AiToolkit<Tools[number]>;
89
- /**
90
- * Merges this toolkit with one or more other toolkits.
91
- *
92
- * @since 1.0.0
93
- * @category Merging
94
- */
95
- export declare const merge: <const Toolkits extends ReadonlyArray<Any>>(...toolkits: Toolkits) => AiToolkit<Tools<Toolkits[number]>>;
96
- //# sourceMappingURL=AiToolkit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AiToolkit.d.ts","sourceRoot":"","sources":["../../src/AiToolkit.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=common.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/internal/common.ts"],"names":[],"mappings":""}
@@ -1,111 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import * as Channel from "effect/Channel";
5
- import * as Context from "effect/Context";
6
- import * as Effect from "effect/Effect";
7
- import * as Ref from "effect/Ref";
8
- import * as Schema from "effect/Schema";
9
- import * as Stream from "effect/Stream";
10
- import * as AiInput from "./AiInput.js";
11
- import * as AiLanguageModel from "./AiLanguageModel.js";
12
- import * as AiResponse from "./AiResponse.js";
13
- /**
14
- * @since 1.0.0
15
- * @category Context
16
- */
17
- export class AiChat extends /*#__PURE__*/Context.Tag("@effect/ai/AiChat")() {}
18
- /**
19
- * @since 1.0.0
20
- * @category Constructors
21
- */
22
- export const fromPrompt = /*#__PURE__*/Effect.fnUntraced(function* (options) {
23
- const languageModel = yield* AiLanguageModel.AiLanguageModel;
24
- const context = yield* Effect.context();
25
- const provideContext = effect => Effect.mapInputContext(effect, input => Context.merge(context, input));
26
- const provideContextStream = stream => Stream.mapInputContext(stream, input => Context.merge(context, input));
27
- const history = yield* Ref.make(AiInput.make(options.prompt));
28
- const semaphore = yield* Effect.makeSemaphore(1);
29
- const system = options.system;
30
- return AiChat.of({
31
- history,
32
- export: Ref.get(history).pipe(Effect.flatMap(Schema.encode(AiInput.AiInput)), Effect.orDie),
33
- exportJson: Ref.get(history).pipe(Effect.flatMap(Schema.encode(AiInput.FromJson)), Effect.orDie),
34
- generateText(options) {
35
- const newInput = AiInput.make(options.prompt);
36
- return Ref.get(history).pipe(Effect.flatMap(oldInput => {
37
- const input = AiInput.concat(oldInput, newInput);
38
- return languageModel.generateText({
39
- ...options,
40
- system,
41
- prompt: input
42
- }).pipe(Effect.tap(response => {
43
- const modelInput = AiInput.make(response);
44
- return Ref.set(history, AiInput.concat(input, modelInput));
45
- }), provideContext);
46
- }), semaphore.withPermits(1), Effect.withSpan("AiChat.generateText", {
47
- captureStackTrace: false
48
- }));
49
- },
50
- streamText(options) {
51
- return Stream.suspend(() => {
52
- let combined = AiResponse.empty;
53
- return Stream.fromChannel(Channel.acquireUseRelease(semaphore.take(1).pipe(Effect.zipRight(Ref.get(history)), Effect.map(history => AiInput.concat(history, AiInput.make(options.prompt)))), parts => languageModel.streamText({
54
- ...options,
55
- system,
56
- prompt: parts
57
- }).pipe(Stream.map(chunk => {
58
- combined = AiResponse.merge(combined, chunk);
59
- return chunk;
60
- }), Stream.toChannel), parts => Effect.zipRight(Ref.set(history, AiInput.concat(parts, AiInput.make(combined))), semaphore.release(1))));
61
- }).pipe(provideContextStream, Stream.withSpan("AiChat.streamText", {
62
- captureStackTrace: false
63
- }));
64
- },
65
- generateObject(options) {
66
- const newInput = AiInput.make(options.prompt);
67
- return Ref.get(history).pipe(Effect.flatMap(oldInput => {
68
- const input = AiInput.concat(oldInput, newInput);
69
- return languageModel.generateObject({
70
- ...options,
71
- system,
72
- prompt: input
73
- }).pipe(Effect.flatMap(response => {
74
- const modelInput = AiInput.make(response);
75
- return Effect.as(Ref.set(history, AiInput.concat(input, modelInput)), response);
76
- }));
77
- }), provideContext, semaphore.withPermits(1), Effect.withSpan("AiChat.generateObject", {
78
- attributes: {
79
- toolCallId: "toolCallId" in options ? options.toolCallId : "_tag" in options.schema ? options.schema._tag : options.schema.identifier ?? "generateObject"
80
- },
81
- captureStackTrace: false
82
- }));
83
- }
84
- });
85
- });
86
- /**
87
- * @since 1.0.0
88
- * @category Constructors
89
- */
90
- export const empty = /*#__PURE__*/fromPrompt({
91
- prompt: []
92
- });
93
- const decodeUnknown = /*#__PURE__*/Schema.decodeUnknown(AiInput.AiInput);
94
- /**
95
- * @since 1.0.0
96
- * @category Constructors
97
- */
98
- export const fromExport = (data, options) => Effect.flatMap(decodeUnknown(data), prompt => fromPrompt({
99
- ...options,
100
- prompt
101
- }));
102
- const decodeJson = /*#__PURE__*/Schema.decode(AiInput.FromJson);
103
- /**
104
- * @since 1.0.0
105
- * @category Constructors
106
- */
107
- export const fromJson = (data, options) => Effect.flatMap(decodeJson(data), prompt => fromPrompt({
108
- ...options,
109
- prompt
110
- }));
111
- //# sourceMappingURL=AiChat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AiChat.js","names":["Channel","Context","Effect","Ref","Schema","Stream","AiInput","AiLanguageModel","AiResponse","AiChat","Tag","fromPrompt","fnUntraced","options","languageModel","context","provideContext","effect","mapInputContext","input","merge","provideContextStream","stream","history","make","prompt","semaphore","makeSemaphore","system","of","export","get","pipe","flatMap","encode","orDie","exportJson","FromJson","generateText","newInput","oldInput","concat","tap","response","modelInput","set","withPermits","withSpan","captureStackTrace","streamText","suspend","combined","empty","fromChannel","acquireUseRelease","take","zipRight","map","parts","chunk","toChannel","release","generateObject","as","attributes","toolCallId","schema","_tag","identifier","decodeUnknown","fromExport","data","decodeJson","decode","fromJson"],"sources":["../../src/AiChat.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,98 +0,0 @@
1
- /**
2
- * @since 1.0.0
3
- */
4
- import { dataLoader } from "@effect/experimental/RequestResolver";
5
- import * as Context from "effect/Context";
6
- import * as Effect from "effect/Effect";
7
- import { identity } from "effect/Function";
8
- import * as Option from "effect/Option";
9
- import * as Request from "effect/Request";
10
- import * as RequestResolver from "effect/RequestResolver";
11
- import * as Schema from "effect/Schema";
12
- import { AiError } from "./AiError.js";
13
- /**
14
- * @since 1.0.0
15
- * @category Context
16
- */
17
- export class AiEmbeddingModel extends /*#__PURE__*/Context.Tag("@effect/ai/AiEmbeddingModel")() {}
18
- class EmbeddingRequest extends /*#__PURE__*/Schema.TaggedRequest("@effect/ai/AiEmbeddingModel/Request")("EmbeddingRequest", {
19
- failure: AiError,
20
- success: /*#__PURE__*/Schema.mutable(/*#__PURE__*/Schema.Array(Schema.Number)),
21
- payload: {
22
- input: Schema.String
23
- }
24
- }) {}
25
- const makeBatchedResolver = embedMany => RequestResolver.makeBatched(requests => embedMany(requests.map(request => request.input)).pipe(Effect.flatMap(Effect.forEach(({
26
- embeddings,
27
- index
28
- }) => Request.succeed(requests[index], embeddings), {
29
- discard: true
30
- })), Effect.catchAll(error => Effect.forEach(requests, request => Request.fail(request, error), {
31
- discard: true
32
- }))));
33
- /**
34
- * @since 1.0.0
35
- * @category Constructors
36
- */
37
- export const make = options => Effect.gen(function* () {
38
- const cache = yield* Option.fromNullable(options.cache).pipe(Effect.flatMap(config => Request.makeCache(config)), Effect.optionFromOptional);
39
- const resolver = makeBatchedResolver(options.embedMany).pipe(options.maxBatchSize ? RequestResolver.batchN(options.maxBatchSize) : identity);
40
- function embed(input) {
41
- const request = Effect.request(new EmbeddingRequest({
42
- input
43
- }), resolver);
44
- return Option.match(cache, {
45
- onNone: () => request,
46
- onSome: cache => request.pipe(Effect.withRequestCaching(true), Effect.withRequestCache(cache))
47
- }).pipe(Effect.withSpan("AiEmbeddingModel.embed", {
48
- captureStackTrace: false
49
- }));
50
- }
51
- function embedMany(inputs, options) {
52
- return Effect.forEach(inputs, embed, {
53
- batching: true,
54
- concurrency: options?.concurrency
55
- }).pipe(Effect.withSpan("AiEmbeddingModel.embedMany", {
56
- captureStackTrace: false
57
- }));
58
- }
59
- return AiEmbeddingModel.of({
60
- embed,
61
- embedMany
62
- });
63
- });
64
- /**
65
- * Creates an `Embeddings` service which will aggregate all `embed` requests
66
- * received during the specified `window` (up to a maximum of `maxBatchSize`
67
- * requests, if specified) and execute them as a single batch.
68
- *
69
- * @since 1.0.0
70
- * @category Constructors
71
- */
72
- export const makeDataLoader = options => Effect.gen(function* () {
73
- const resolver = makeBatchedResolver(options.embedMany);
74
- const resolverDelayed = yield* dataLoader(resolver, {
75
- window: options.window,
76
- maxBatchSize: options.maxBatchSize
77
- });
78
- function embed(input) {
79
- return Effect.request(new EmbeddingRequest({
80
- input
81
- }), resolverDelayed).pipe(Effect.withSpan("AiEmbeddingModel.embed", {
82
- captureStackTrace: false
83
- }));
84
- }
85
- function embedMany(inputs, options) {
86
- return Effect.forEach(inputs, embed, {
87
- batching: true,
88
- concurrency: options?.concurrency
89
- }).pipe(Effect.withSpan("AiEmbeddingModel.embedMany", {
90
- captureStackTrace: false
91
- }));
92
- }
93
- return AiEmbeddingModel.of({
94
- embed,
95
- embedMany
96
- });
97
- });
98
- //# sourceMappingURL=AiEmbeddingModel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AiEmbeddingModel.js","names":["dataLoader","Context","Effect","identity","Option","Request","RequestResolver","Schema","AiError","AiEmbeddingModel","Tag","EmbeddingRequest","TaggedRequest","failure","success","mutable","Array","Number","payload","input","String","makeBatchedResolver","embedMany","makeBatched","requests","map","request","pipe","flatMap","forEach","embeddings","index","succeed","discard","catchAll","error","fail","make","options","gen","cache","fromNullable","config","makeCache","optionFromOptional","resolver","maxBatchSize","batchN","embed","match","onNone","onSome","withRequestCaching","withRequestCache","withSpan","captureStackTrace","inputs","batching","concurrency","of","makeDataLoader","resolverDelayed","window"],"sources":["../../src/AiEmbeddingModel.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}