@effect/ai 0.28.0 → 0.28.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.
- package/dist/cjs/AiError.js +19 -7
- package/dist/cjs/AiError.js.map +1 -1
- package/dist/cjs/Chat.js +176 -102
- package/dist/cjs/Chat.js.map +1 -1
- package/dist/cjs/Prompt.js +199 -17
- package/dist/cjs/Prompt.js.map +1 -1
- package/dist/cjs/Tool.js.map +1 -1
- package/dist/dts/AiError.d.ts +4 -2
- package/dist/dts/AiError.d.ts.map +1 -1
- package/dist/dts/Chat.d.ts +177 -33
- package/dist/dts/Chat.d.ts.map +1 -1
- package/dist/dts/Prompt.d.ts +358 -18
- package/dist/dts/Prompt.d.ts.map +1 -1
- package/dist/dts/Tool.d.ts +1 -1
- package/dist/dts/Tool.d.ts.map +1 -1
- package/dist/esm/AiError.js +19 -7
- package/dist/esm/AiError.js.map +1 -1
- package/dist/esm/Chat.js +172 -100
- package/dist/esm/Chat.js.map +1 -1
- package/dist/esm/Prompt.js +194 -13
- package/dist/esm/Prompt.js.map +1 -1
- package/dist/esm/Tool.js.map +1 -1
- package/package.json +4 -4
- package/src/AiError.ts +36 -21
- package/src/Chat.ts +286 -62
- package/src/Prompt.ts +384 -49
- package/src/Tool.ts +2 -1
package/dist/dts/Chat.d.ts
CHANGED
|
@@ -1,9 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `Chat` module provides a stateful conversation interface for AI language
|
|
3
|
+
* models.
|
|
4
|
+
*
|
|
5
|
+
* This module enables persistent chat sessions that maintain conversation
|
|
6
|
+
* history, support tool calling, and offer both streaming and non-streaming
|
|
7
|
+
* text generation. It integrates seamlessly with the Effect AI ecosystem,
|
|
8
|
+
* providing type-safe conversational AI capabilities.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { Chat, LanguageModel } from "@effect/ai"
|
|
13
|
+
* import { Effect, Layer } from "effect"
|
|
14
|
+
*
|
|
15
|
+
* // Create a new chat session
|
|
16
|
+
* const program = Effect.gen(function* () {
|
|
17
|
+
* const chat = yield* Chat.empty
|
|
18
|
+
*
|
|
19
|
+
* // Send a message and get response
|
|
20
|
+
* const response = yield* chat.generateText({
|
|
21
|
+
* prompt: "Hello! What can you help me with?"
|
|
22
|
+
* })
|
|
23
|
+
*
|
|
24
|
+
* console.log(response.content)
|
|
25
|
+
*
|
|
26
|
+
* return response
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { Chat, LanguageModel } from "@effect/ai"
|
|
33
|
+
* import { Effect, Stream } from "effect"
|
|
34
|
+
*
|
|
35
|
+
* // Streaming chat with tool support
|
|
36
|
+
* const streamingChat = Effect.gen(function* () {
|
|
37
|
+
* const chat = yield* Chat.empty
|
|
38
|
+
*
|
|
39
|
+
* yield* chat.streamText({
|
|
40
|
+
* prompt: "Generate a creative story"
|
|
41
|
+
* }).pipe(Stream.runForEach((part) =>
|
|
42
|
+
* Effect.sync(() => console.log(part))
|
|
43
|
+
* ))
|
|
44
|
+
* })
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
*/
|
|
49
|
+
import type { PersistenceBackingError } from "@effect/experimental/Persistence";
|
|
50
|
+
import { BackingPersistence } from "@effect/experimental/Persistence";
|
|
1
51
|
import * as Context from "effect/Context";
|
|
2
52
|
import * as Effect from "effect/Effect";
|
|
53
|
+
import * as Layer from "effect/Layer";
|
|
3
54
|
import type { ParseError } from "effect/ParseResult";
|
|
4
55
|
import * as Ref from "effect/Ref";
|
|
56
|
+
import * as Schema from "effect/Schema";
|
|
5
57
|
import * as Stream from "effect/Stream";
|
|
6
58
|
import type { NoExcessProperties } from "effect/Types";
|
|
59
|
+
import * as AiError from "./AiError.js";
|
|
7
60
|
import * as LanguageModel from "./LanguageModel.js";
|
|
8
61
|
import * as Prompt from "./Prompt.js";
|
|
9
62
|
import type * as Response from "./Response.js";
|
|
@@ -84,7 +137,7 @@ export interface Service {
|
|
|
84
137
|
* })
|
|
85
138
|
* ```
|
|
86
139
|
*/
|
|
87
|
-
readonly export: Effect.Effect<unknown>;
|
|
140
|
+
readonly export: Effect.Effect<unknown, AiError.AiError>;
|
|
88
141
|
/**
|
|
89
142
|
* Exports the chat history as a JSON string.
|
|
90
143
|
*
|
|
@@ -110,7 +163,7 @@ export interface Service {
|
|
|
110
163
|
* })
|
|
111
164
|
* ```
|
|
112
165
|
*/
|
|
113
|
-
readonly exportJson: Effect.Effect<string>;
|
|
166
|
+
readonly exportJson: Effect.Effect<string, AiError.MalformedOutput>;
|
|
114
167
|
/**
|
|
115
168
|
* Generate text using a language model for the specified prompt.
|
|
116
169
|
*
|
|
@@ -138,7 +191,7 @@ export interface Service {
|
|
|
138
191
|
* })
|
|
139
192
|
* ```
|
|
140
193
|
*/
|
|
141
|
-
readonly generateText: <Options extends NoExcessProperties<LanguageModel.GenerateTextOptions<any>, Options>, Tools extends Record<string, Tool.Any> = {}>(options: Options & LanguageModel.GenerateTextOptions<Tools>) => Effect.Effect<LanguageModel.GenerateTextResponse<Tools>, LanguageModel.ExtractError<Options>, LanguageModel.ExtractContext<Options>>;
|
|
194
|
+
readonly generateText: <Options extends NoExcessProperties<LanguageModel.GenerateTextOptions<any>, Options>, Tools extends Record<string, Tool.Any> = {}>(options: Options & LanguageModel.GenerateTextOptions<Tools>) => Effect.Effect<LanguageModel.GenerateTextResponse<Tools>, LanguageModel.ExtractError<Options>, LanguageModel.LanguageModel | LanguageModel.ExtractContext<Options>>;
|
|
142
195
|
/**
|
|
143
196
|
* Generate text using a language model with streaming output.
|
|
144
197
|
*
|
|
@@ -165,7 +218,7 @@ export interface Service {
|
|
|
165
218
|
* })
|
|
166
219
|
* ```
|
|
167
220
|
*/
|
|
168
|
-
readonly streamText: <Options extends NoExcessProperties<LanguageModel.GenerateTextOptions<any>, Options>, Tools extends Record<string, Tool.Any> = {}>(options: Options & LanguageModel.GenerateTextOptions<Tools>) => Stream.Stream<Response.StreamPart<Tools>, LanguageModel.ExtractError<Options>, LanguageModel.ExtractContext<Options>>;
|
|
221
|
+
readonly streamText: <Options extends NoExcessProperties<LanguageModel.GenerateTextOptions<any>, Options>, Tools extends Record<string, Tool.Any> = {}>(options: Options & LanguageModel.GenerateTextOptions<Tools>) => Stream.Stream<Response.StreamPart<Tools>, LanguageModel.ExtractError<Options>, LanguageModel.LanguageModel | LanguageModel.ExtractContext<Options>>;
|
|
169
222
|
/**
|
|
170
223
|
* Generate a structured object using a language model and schema.
|
|
171
224
|
*
|
|
@@ -201,6 +254,34 @@ export interface Service {
|
|
|
201
254
|
*/
|
|
202
255
|
readonly generateObject: <A, I extends Record<string, unknown>, R, Options extends NoExcessProperties<LanguageModel.GenerateObjectOptions<any, A, I, R>, Options>, Tools extends Record<string, Tool.Any> = {}>(options: Options & LanguageModel.GenerateObjectOptions<Tools, A, I, R>) => Effect.Effect<LanguageModel.GenerateObjectResponse<Tools, A>, LanguageModel.ExtractError<Options>, LanguageModel.LanguageModel | R | LanguageModel.ExtractContext<Options>>;
|
|
203
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Creates a new Chat service with empty conversation history.
|
|
259
|
+
*
|
|
260
|
+
* This is the most common way to start a fresh chat session without
|
|
261
|
+
* any initial context or system prompts.
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```ts
|
|
265
|
+
* import { Chat } from "@effect/ai"
|
|
266
|
+
* import { Effect } from "effect"
|
|
267
|
+
*
|
|
268
|
+
* const freshChat = Effect.gen(function* () {
|
|
269
|
+
* const chat = yield* Chat.empty
|
|
270
|
+
*
|
|
271
|
+
* const response = yield* chat.generateText({
|
|
272
|
+
* prompt: "Hello! Can you introduce yourself?"
|
|
273
|
+
* })
|
|
274
|
+
*
|
|
275
|
+
* console.log(response.content)
|
|
276
|
+
*
|
|
277
|
+
* return chat
|
|
278
|
+
* })
|
|
279
|
+
* ```
|
|
280
|
+
*
|
|
281
|
+
* @since 1.0.0
|
|
282
|
+
* @category Constructors
|
|
283
|
+
*/
|
|
284
|
+
export declare const empty: Effect.Effect<Service>;
|
|
204
285
|
/**
|
|
205
286
|
* Creates a new Chat service from an initial prompt.
|
|
206
287
|
*
|
|
@@ -250,35 +331,7 @@ export interface Service {
|
|
|
250
331
|
* @since 1.0.0
|
|
251
332
|
* @category Constructors
|
|
252
333
|
*/
|
|
253
|
-
export declare const fromPrompt: (prompt: Prompt.RawInput) => Effect.Effect<Service, never,
|
|
254
|
-
/**
|
|
255
|
-
* Creates a new Chat service with empty conversation history.
|
|
256
|
-
*
|
|
257
|
-
* This is the most common way to start a fresh chat session without
|
|
258
|
-
* any initial context or system prompts.
|
|
259
|
-
*
|
|
260
|
-
* @example
|
|
261
|
-
* ```ts
|
|
262
|
-
* import { Chat } from "@effect/ai"
|
|
263
|
-
* import { Effect } from "effect"
|
|
264
|
-
*
|
|
265
|
-
* const freshChat = Effect.gen(function* () {
|
|
266
|
-
* const chat = yield* Chat.empty
|
|
267
|
-
*
|
|
268
|
-
* const response = yield* chat.generateText({
|
|
269
|
-
* prompt: "Hello! Can you introduce yourself?"
|
|
270
|
-
* })
|
|
271
|
-
*
|
|
272
|
-
* console.log(response.content)
|
|
273
|
-
*
|
|
274
|
-
* return chat
|
|
275
|
-
* })
|
|
276
|
-
* ```
|
|
277
|
-
*
|
|
278
|
-
* @since 1.0.0
|
|
279
|
-
* @category Constructors
|
|
280
|
-
*/
|
|
281
|
-
export declare const empty: Effect.Effect<Service, never, LanguageModel.LanguageModel>;
|
|
334
|
+
export declare const fromPrompt: (prompt: Prompt.RawInput) => Effect.Effect<Service, never, never>;
|
|
282
335
|
/**
|
|
283
336
|
* Creates a Chat service from previously exported chat data.
|
|
284
337
|
*
|
|
@@ -352,5 +405,96 @@ export declare const fromExport: (data: unknown) => Effect.Effect<Service, Parse
|
|
|
352
405
|
* @category Constructors
|
|
353
406
|
*/
|
|
354
407
|
export declare const fromJson: (data: string) => Effect.Effect<Service, ParseError, LanguageModel.LanguageModel>;
|
|
408
|
+
declare const ChatNotFoundError_base: Schema.TaggedErrorClass<ChatNotFoundError, "ChatNotFoundError", {
|
|
409
|
+
readonly _tag: Schema.tag<"ChatNotFoundError">;
|
|
410
|
+
} & {
|
|
411
|
+
chatId: typeof Schema.String;
|
|
412
|
+
}>;
|
|
413
|
+
/**
|
|
414
|
+
* An error that occurs when attempting to retrieve a persisted `Chat` that
|
|
415
|
+
* does not exist in the backing persistence store.
|
|
416
|
+
*
|
|
417
|
+
* @since 1.0.0
|
|
418
|
+
* @category Errors
|
|
419
|
+
*/
|
|
420
|
+
export declare class ChatNotFoundError extends ChatNotFoundError_base {
|
|
421
|
+
}
|
|
422
|
+
declare const Persistence_base: Context.TagClass<Persistence, "@effect/ai/Chat/Persisted", Persistence.Service>;
|
|
423
|
+
/**
|
|
424
|
+
* The context tag for chat persistence.
|
|
425
|
+
*
|
|
426
|
+
* @since 1.0.0
|
|
427
|
+
* @category Context
|
|
428
|
+
*/
|
|
429
|
+
export declare class Persistence extends Persistence_base {
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* @since 1.0.0
|
|
433
|
+
* @category Models
|
|
434
|
+
*/
|
|
435
|
+
export declare namespace Persistence {
|
|
436
|
+
/**
|
|
437
|
+
* Represents the backing persistence for a persisted `Chat`. Allows for
|
|
438
|
+
* creating and retrieving chats that have been saved to a persistence store.
|
|
439
|
+
*
|
|
440
|
+
* @since 1.0.0
|
|
441
|
+
* @category Models
|
|
442
|
+
*/
|
|
443
|
+
interface Service {
|
|
444
|
+
/**
|
|
445
|
+
* Attempts to retrieve the persisted chat from the backing persistence
|
|
446
|
+
* store with the specified chat identifer. If the chat does not exist in
|
|
447
|
+
* the persistence store, a `ChatNotFoundError` will be returned.
|
|
448
|
+
*/
|
|
449
|
+
readonly get: (chatId: string) => Effect.Effect<Persisted, ChatNotFoundError | PersistenceBackingError>;
|
|
450
|
+
/**
|
|
451
|
+
* Attempts to retrieve the persisted chat from the backing persistence
|
|
452
|
+
* store with the specified chat identifer. If the chat does not exist in
|
|
453
|
+
* the persistence store, an empty chat will be created, saved, and
|
|
454
|
+
* returned.
|
|
455
|
+
*/
|
|
456
|
+
readonly getOrCreate: (chatId: string) => Effect.Effect<Persisted, AiError.MalformedOutput | PersistenceBackingError>;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Represents a `Chat` that is backed by persistence.
|
|
461
|
+
*
|
|
462
|
+
* When calling a text generation method (e.g. `generateText`), the previous
|
|
463
|
+
* chat history as well as the relevent response parts will be saved to the
|
|
464
|
+
* backing persistence store.
|
|
465
|
+
*
|
|
466
|
+
* @since 1.0.0
|
|
467
|
+
* @category Models
|
|
468
|
+
*/
|
|
469
|
+
export interface Persisted extends Service {
|
|
470
|
+
/**
|
|
471
|
+
* The identifier for the chat in the backing persistence store.
|
|
472
|
+
*/
|
|
473
|
+
readonly id: string;
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Creates a new chat persistence service.
|
|
477
|
+
*
|
|
478
|
+
* The provided store identifier will be used to indicate which "store" the
|
|
479
|
+
* backing persistence should load chats from.
|
|
480
|
+
*
|
|
481
|
+
* @since 1.0.0
|
|
482
|
+
* @category Constructors
|
|
483
|
+
*/
|
|
484
|
+
export declare const makePersisted: (options: {
|
|
485
|
+
readonly storeId: string;
|
|
486
|
+
}) => Effect.Effect<Persistence.Service, never, import("effect/Scope").Scope | BackingPersistence>;
|
|
487
|
+
/**
|
|
488
|
+
* Creates a `Layer` new chat persistence service.
|
|
489
|
+
*
|
|
490
|
+
* The provided store identifier will be used to indicate which "store" the
|
|
491
|
+
* backing persistence should load chats from.
|
|
492
|
+
*
|
|
493
|
+
* @since 1.0.0
|
|
494
|
+
* @category Constructors
|
|
495
|
+
*/
|
|
496
|
+
export declare const layerPersisted: (options: {
|
|
497
|
+
readonly storeId: string;
|
|
498
|
+
}) => Layer.Layer<Persistence, never, BackingPersistence>;
|
|
355
499
|
export {};
|
|
356
500
|
//# sourceMappingURL=Chat.d.ts.map
|
package/dist/dts/Chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/Chat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/Chat.ts"],"names":[],"mappings":"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"}
|