@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.
@@ -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, LanguageModel.LanguageModel>;
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
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/Chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../src/Chat.ts"],"names":[],"mappings":"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"}