| import { type Pipeable } from "../../Pipeable.ts"; | |
| import * as Schema from "../../Schema.ts"; | |
| import type * as Response from "./Response.ts"; | |
| /** | |
| * Schema for provider-specific options that can be attached to content parts | |
| * and messages. | |
| * | |
| * **Details** | |
| * | |
| * Provider-specific options are keyed by provider-specific names, and each | |
| * value is JSON or `null`. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export declare const ProviderOptions: Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>; | |
| /** | |
| * Type of provider-specific options that can be attached to prompt messages | |
| * and content parts. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export type ProviderOptions = typeof ProviderOptions.Type; | |
| declare const PartTypeId: "~effect/ai/Prompt/Part"; | |
| /** | |
| * Type guard to check if a value is a Part. | |
| * | |
| * @category guards | |
| * @since 4.0.0 | |
| */ | |
| export declare const isPart: (u: unknown) => u is Part; | |
| /** | |
| * Union type representing all possible content parts within messages. | |
| * | |
| * **Details** | |
| * | |
| * Parts are the building blocks of message content, supporting text, files, | |
| * reasoning, tool calls, tool results, tool approval responses, and tool | |
| * approval requests. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type Part = TextPart | ReasoningPart | FilePart | ToolCallPart | ToolResultPart | ToolApprovalResponsePart | ToolApprovalRequestPart; | |
| /** | |
| * Encoded representation of a Part. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type PartEncoded = TextPartEncoded | ReasoningPartEncoded | FilePartEncoded | ToolCallPartEncoded | ToolResultPartEncoded | ToolApprovalResponsePartEncoded | ToolApprovalRequestPartEncoded; | |
| /** | |
| * Base interface for all content parts. | |
| * | |
| * **Details** | |
| * | |
| * It provides the common structure shared by all content parts, including the | |
| * part type and provider options. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface BasePart<Type extends string, Options extends ProviderOptions> { | |
| readonly [PartTypeId]: typeof PartTypeId; | |
| /** | |
| * The type of this content part. | |
| */ | |
| readonly type: Type; | |
| /** | |
| * Provider-specific options for this part. | |
| */ | |
| readonly options: Options; | |
| } | |
| /** | |
| * Base interface for encoded content parts. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface BasePartEncoded<Type extends string, Options extends ProviderOptions> { | |
| /** | |
| * The type of this content part. | |
| */ | |
| readonly type: Type; | |
| /** | |
| * Provider-specific options for this part. | |
| */ | |
| readonly options?: Options | undefined; | |
| } | |
| /** | |
| * Creates a new content part of the specified type. | |
| * | |
| * **Example** (Creating content parts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const textPart = Prompt.makePart("text", { | |
| * text: "Hello, world!" | |
| * }) | |
| * | |
| * const filePart = Prompt.makePart("file", { | |
| * mediaType: "image/png", | |
| * fileName: "screenshot.png", | |
| * data: new Uint8Array([1, 2, 3]) | |
| * }) | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const makePart: <const Type extends Part["type"]>( | |
| /** | |
| * The type of part to create. | |
| */ | |
| type: Type, | |
| /** | |
| * Parameters specific to the part type being created. | |
| */ | |
| params: Omit<Extract<Part, { | |
| type: Type; | |
| }>, typeof PartTypeId | "type" | "options"> & { | |
| /** | |
| * Optional provider-specific options for this part. | |
| */ | |
| readonly options?: Extract<Part, { | |
| type: Type; | |
| }>["options"] | undefined; | |
| }) => Extract<Part, { | |
| type: Type; | |
| }>; | |
| /** | |
| * A utility type for specifying the parameters required to construct a | |
| * specific part of a prompt. | |
| * | |
| * @category utility types | |
| * @since 4.0.0 | |
| */ | |
| export type PartConstructorParams<P extends Part> = Omit<P, typeof PartTypeId | "type" | "options"> & { | |
| /** | |
| * Optional provider-specific options for this part. | |
| */ | |
| readonly options?: Part["options"] | undefined; | |
| }; | |
| /** | |
| * Content part representing plain text. | |
| * | |
| * **Details** | |
| * | |
| * Text parts are the basic content type used for textual information in | |
| * messages. | |
| * | |
| * **Example** (Creating text parts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const textPart: Prompt.TextPart = Prompt.makePart("text", { | |
| * text: "Hello, how can I help you today?" | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface TextPart extends BasePart<"text", TextPartOptions> { | |
| /** | |
| * The text content. | |
| */ | |
| readonly text: string; | |
| } | |
| /** | |
| * Encoded representation of text parts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface TextPartEncoded extends BasePartEncoded<"text", TextPartOptions> { | |
| /** | |
| * The text content. | |
| */ | |
| readonly text: string; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `TextPart` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface TextPartOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of text parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const TextPart: Schema.Struct<{ | |
| readonly type: Schema.Literal<"text">; | |
| readonly text: Schema.String; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new text part. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const textPart: (params: PartConstructorParams<TextPart>) => TextPart; | |
| /** | |
| * Content part carrying reasoning text in an assistant message, such as a | |
| * provider-supplied reasoning summary or explanation. | |
| * | |
| * **Example** (Creating reasoning parts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const reasoningPart: Prompt.ReasoningPart = Prompt.makePart("reasoning", { | |
| * text: | |
| * "Summary: the response compares the requested options by price and availability." | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ReasoningPart extends BasePart<"reasoning", ReasoningPartOptions> { | |
| /** | |
| * The reasoning or thought process text. | |
| */ | |
| readonly text: string; | |
| } | |
| /** | |
| * Encoded representation of reasoning parts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ReasoningPartEncoded extends BasePartEncoded<"reasoning", ReasoningPartOptions> { | |
| /** | |
| * The reasoning or thought process text. | |
| */ | |
| readonly text: string; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `ReasoningPart` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface ReasoningPartOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of reasoning parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const ReasoningPart: Schema.Struct<{ | |
| readonly type: Schema.Literal<"reasoning">; | |
| readonly text: Schema.String; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new reasoning part. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const reasoningPart: (params: PartConstructorParams<ReasoningPart>) => ReasoningPart; | |
| /** | |
| * Content part representing a file attachment. | |
| * | |
| * **Details** | |
| * | |
| * Files can be provided as base64 data strings, byte arrays, or URLs, and can | |
| * represent images, documents, or other binary data. | |
| * | |
| * **Example** (Creating file parts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const imagePart: Prompt.FilePart = Prompt.makePart("file", { | |
| * mediaType: "image/jpeg", | |
| * fileName: "photo.jpg", | |
| * data: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ..." | |
| * }) | |
| * | |
| * const documentPart: Prompt.FilePart = Prompt.makePart("file", { | |
| * mediaType: "application/pdf", | |
| * fileName: "report.pdf", | |
| * data: new Uint8Array([1, 2, 3]) | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface FilePart extends BasePart<"file", FilePartOptions> { | |
| /** | |
| * MIME type of the file (e.g., "image/jpeg", "application/pdf"). | |
| */ | |
| readonly mediaType: string; | |
| /** | |
| * Optional filename for the file. | |
| */ | |
| readonly fileName?: string | undefined; | |
| /** | |
| * File data as base64 string of data, a byte array, or a URL. | |
| */ | |
| readonly data: string | Uint8Array | URL; | |
| } | |
| /** | |
| * Encoded representation of file parts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface FilePartEncoded extends BasePartEncoded<"file", FilePartOptions> { | |
| /** | |
| * MIME type of the file (e.g., "image/jpeg", "application/pdf"). | |
| */ | |
| readonly mediaType: string; | |
| /** | |
| * Optional filename for the file. | |
| */ | |
| readonly fileName?: string | undefined; | |
| /** | |
| * File data as base64 string of data, a byte array, or a URL. | |
| */ | |
| readonly data: string | Uint8Array | URL; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `FilePart` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface FilePartOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of file parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const FilePart: Schema.Struct<{ | |
| readonly type: Schema.Literal<"file">; | |
| readonly mediaType: Schema.String; | |
| readonly fileName: Schema.optional<Schema.String>; | |
| readonly data: Schema.Union<readonly [Schema.String, Schema.Uint8Array, Schema.URL]>; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a `FilePart` for prompt file attachments. | |
| * | |
| * **When to use** | |
| * | |
| * Use to create the file-attachment part of a prompt from typed file part | |
| * parameters. | |
| * | |
| * @see {@link makePart} for the generic part constructor | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const filePart: (params: PartConstructorParams<FilePart>) => FilePart; | |
| /** | |
| * Content part representing a tool call request. | |
| * | |
| * **Example** (Creating tool call parts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const toolCallPart: Prompt.ToolCallPart = Prompt.makePart("tool-call", { | |
| * id: "call_123", | |
| * name: "get_weather", | |
| * params: { city: "San Francisco", units: "celsius" }, | |
| * providerExecuted: false | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolCallPart extends BasePart<"tool-call", ToolCallPartOptions> { | |
| /** | |
| * Unique identifier for this tool call. | |
| */ | |
| readonly id: string; | |
| /** | |
| * Name of the tool to invoke. | |
| */ | |
| readonly name: string; | |
| /** | |
| * Parameters to pass to the tool. | |
| */ | |
| readonly params: unknown; | |
| /** | |
| * Whether the tool was executed by the provider (true) or framework (false). | |
| */ | |
| readonly providerExecuted: boolean; | |
| } | |
| /** | |
| * Encoded representation of tool call parts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolCallPartEncoded extends BasePartEncoded<"tool-call", ToolCallPartOptions> { | |
| /** | |
| * Unique identifier for this tool call. | |
| */ | |
| readonly id: string; | |
| /** | |
| * Name of the tool to invoke. | |
| */ | |
| readonly name: string; | |
| /** | |
| * Parameters to pass to the tool. | |
| */ | |
| readonly params: unknown; | |
| /** | |
| * Whether the tool was executed by the provider (true) or framework (false). | |
| */ | |
| readonly providerExecuted?: boolean | undefined; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `ToolCallPart` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolCallPartOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of tool call parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const ToolCallPart: Schema.Struct<{ | |
| readonly type: Schema.Literal<"tool-call">; | |
| readonly id: Schema.String; | |
| readonly name: Schema.String; | |
| readonly params: Schema.Unknown; | |
| readonly providerExecuted: Schema.withDecodingDefault<Schema.Boolean>; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new tool call part. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const toolCallPart: (params: PartConstructorParams<ToolCallPart>) => ToolCallPart; | |
| /** | |
| * Content part representing the result of a tool call. | |
| * | |
| * **Example** (Creating tool result parts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const toolResultPart: Prompt.ToolResultPart = Prompt.makePart("tool-result", { | |
| * id: "call_123", | |
| * name: "get_weather", | |
| * isFailure: false, | |
| * result: { | |
| * temperature: 22, | |
| * condition: "sunny", | |
| * humidity: 65 | |
| * } | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolResultPart extends BasePart<"tool-result", ToolResultPartOptions> { | |
| /** | |
| * Unique identifier matching the original tool call. | |
| */ | |
| readonly id: string; | |
| /** | |
| * Name of the tool that was executed. | |
| */ | |
| readonly name: string; | |
| /** | |
| * Whether or not the result of executing the tool call handler was an error. | |
| */ | |
| readonly isFailure: boolean; | |
| /** | |
| * The result returned by the tool execution. | |
| */ | |
| readonly result: unknown; | |
| } | |
| /** | |
| * Encoded representation of tool result parts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolResultPartEncoded extends BasePartEncoded<"tool-result", ToolResultPartOptions> { | |
| /** | |
| * Unique identifier matching the original tool call. | |
| */ | |
| readonly id: string; | |
| /** | |
| * Name of the tool that was executed. | |
| */ | |
| readonly name: string; | |
| /** | |
| * Whether or not the result of executing the tool call handler was an error. | |
| */ | |
| readonly isFailure: boolean; | |
| /** | |
| * The result returned by the tool execution. | |
| */ | |
| readonly result: unknown; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `ToolResultPart` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolResultPartOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of tool result parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const ToolResultPart: Schema.Struct<{ | |
| readonly type: Schema.Literal<"tool-result">; | |
| readonly id: Schema.String; | |
| readonly name: Schema.String; | |
| readonly isFailure: Schema.Boolean; | |
| readonly result: Schema.Unknown; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new tool result part. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const toolResultPart: (params: PartConstructorParams<ToolResultPart>) => ToolResultPart; | |
| /** | |
| * Content part representing a user's response to a tool approval request. | |
| * | |
| * **When to use** | |
| * | |
| * Use when tool messages must approve or deny tool execution for tools with the | |
| * `needsApproval` property set. | |
| * | |
| * **Example** (Creating tool approval responses) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const approvalResponse: Prompt.ToolApprovalResponsePart = Prompt.makePart( | |
| * "tool-approval-response", | |
| * { | |
| * approvalId: "approval_123", | |
| * approved: true | |
| * } | |
| * ) | |
| * | |
| * const denialResponse: Prompt.ToolApprovalResponsePart = Prompt.makePart( | |
| * "tool-approval-response", | |
| * { | |
| * approvalId: "approval_456", | |
| * approved: false, | |
| * reason: "Operation not allowed" | |
| * } | |
| * ) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolApprovalResponsePart extends BasePart<"tool-approval-response", ToolApprovalResponsePartOptions> { | |
| /** | |
| * References the original approval request. | |
| */ | |
| readonly approvalId: string; | |
| /** | |
| * User's decision to approve or deny the tool execution. | |
| */ | |
| readonly approved: boolean; | |
| /** | |
| * Optional justification for the decision. | |
| */ | |
| readonly reason?: string | undefined; | |
| } | |
| /** | |
| * Encoded representation of tool approval response parts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolApprovalResponsePartEncoded extends BasePartEncoded<"tool-approval-response", ToolApprovalResponsePartOptions> { | |
| /** | |
| * References the original approval request. | |
| */ | |
| readonly approvalId: string; | |
| /** | |
| * User's decision to approve or deny the tool execution. | |
| */ | |
| readonly approved: boolean; | |
| /** | |
| * Optional justification for the decision. | |
| */ | |
| readonly reason?: string | undefined; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `ToolApprovalResponsePart` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolApprovalResponsePartOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of tool approval response parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const ToolApprovalResponsePart: Schema.Struct<{ | |
| readonly type: Schema.Literal<"tool-approval-response">; | |
| readonly approvalId: Schema.String; | |
| readonly approved: Schema.Boolean; | |
| readonly reason: Schema.optional<Schema.String>; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new tool approval response part. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const toolApprovalResponsePart: (params: PartConstructorParams<ToolApprovalResponsePart>) => ToolApprovalResponsePart; | |
| /** | |
| * Content part representing a tool approval request from the framework. | |
| * | |
| * **Details** | |
| * | |
| * Tool approval request parts are stored in assistant messages when a tool | |
| * requires user approval before execution. The user responds with a | |
| * `ToolApprovalResponsePart` in a tool message. | |
| * | |
| * **Example** (Creating tool approval requests) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const approvalRequest: Prompt.ToolApprovalRequestPart = Prompt.makePart( | |
| * "tool-approval-request", | |
| * { | |
| * approvalId: "approval_123", | |
| * toolCallId: "call_456" | |
| * } | |
| * ) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolApprovalRequestPart extends BasePart<"tool-approval-request", ToolApprovalRequestPartOptions> { | |
| /** | |
| * Unique identifier for this approval flow. | |
| */ | |
| readonly approvalId: string; | |
| /** | |
| * The tool call ID requiring approval. | |
| */ | |
| readonly toolCallId: string; | |
| } | |
| /** | |
| * Encoded representation of tool approval request parts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolApprovalRequestPartEncoded extends BasePartEncoded<"tool-approval-request", ToolApprovalRequestPartOptions> { | |
| /** | |
| * Unique identifier for this approval flow. | |
| */ | |
| readonly approvalId: string; | |
| /** | |
| * The tool call ID requiring approval. | |
| */ | |
| readonly toolCallId: string; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `ToolApprovalRequestPart` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolApprovalRequestPartOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of tool approval request parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const ToolApprovalRequestPart: Schema.Struct<{ | |
| readonly type: Schema.Literal<"tool-approval-request">; | |
| readonly approvalId: Schema.String; | |
| readonly toolCallId: Schema.String; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new tool approval request part. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const toolApprovalRequestPart: (params: PartConstructorParams<ToolApprovalRequestPart>) => ToolApprovalRequestPart; | |
| declare const MessageTypeId: "~effect/ai/Prompt/Message"; | |
| /** | |
| * Type guard to check if a value is a Message. | |
| * | |
| * @category guards | |
| * @since 4.0.0 | |
| */ | |
| export declare const isMessage: (u: unknown) => u is Message; | |
| /** | |
| * Base interface for all message types. | |
| * | |
| * **Details** | |
| * | |
| * It provides the common structure shared by all messages, including the role | |
| * and provider options. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface BaseMessage<Role extends string, Options extends ProviderOptions> { | |
| readonly [MessageTypeId]: typeof MessageTypeId; | |
| /** | |
| * The role of the message participant. | |
| */ | |
| readonly role: Role; | |
| /** | |
| * Provider-specific options for this message. | |
| */ | |
| readonly options: Options; | |
| } | |
| /** | |
| * Base interface for encoded message types. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface BaseMessageEncoded<Role extends string, Options extends ProviderOptions> { | |
| /** | |
| * The role of the message participant. | |
| */ | |
| readonly role: Role; | |
| /** | |
| * Provider-specific options for this message. | |
| */ | |
| readonly options?: Options | undefined; | |
| } | |
| /** | |
| * Creates a new message with the specified role. | |
| * | |
| * **Example** (Creating messages) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const textPart = Prompt.makePart("text", { | |
| * text: "Hello, world!" | |
| * }) | |
| * | |
| * const userMessage = Prompt.makeMessage("user", { | |
| * content: [textPart] | |
| * }) | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const makeMessage: <const Role extends Message["role"]>(role: Role, params: Omit<Extract<Message, { | |
| role: Role; | |
| }>, typeof MessageTypeId | "role" | "options"> & { | |
| readonly options?: Extract<Message, { | |
| role: Role; | |
| }>["options"] | undefined; | |
| }) => Extract<Message, { | |
| role: Role; | |
| }>; | |
| /** | |
| * A utility type for specifying the parameters required to construct a | |
| * specific message for a prompt. | |
| * | |
| * @category utility types | |
| * @since 4.0.0 | |
| */ | |
| export type MessageConstructorParams<M extends Message> = Omit<M, typeof MessageTypeId | "role" | "options"> & { | |
| /** | |
| * Optional provider-specific options for this message. | |
| */ | |
| readonly options?: Part["options"] | undefined; | |
| }; | |
| /** | |
| * Schema that decodes a string into content containing a single `TextPart` and, | |
| * when encoding, emits the `text` value of the first part. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const ContentFromString: Schema.decodeTo<Schema.NonEmptyArray<Schema.toType<Schema.Struct<{ | |
| readonly type: Schema.Literal<"text">; | |
| readonly text: Schema.String; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>>>, Schema.String>; | |
| /** | |
| * Message representing system instructions or context. | |
| * | |
| * **Example** (Creating system messages) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemMessage: Prompt.SystemMessage = Prompt.makeMessage("system", { | |
| * content: "You are a helpful assistant specialized in mathematics. " + | |
| * "Always show your work step by step." | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface SystemMessage extends BaseMessage<"system", SystemMessageOptions> { | |
| /** | |
| * The system instruction or context as plain text. | |
| */ | |
| readonly content: string; | |
| } | |
| /** | |
| * Encoded representation of system messages for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface SystemMessageEncoded extends BaseMessageEncoded<"system", SystemMessageOptions> { | |
| /** | |
| * The system instruction or context as plain text. | |
| */ | |
| readonly content: string; | |
| } | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `SystemMessage` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface SystemMessageOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of system messages. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const SystemMessage: Schema.Struct<{ | |
| readonly role: Schema.Literal<"system">; | |
| readonly content: Schema.String; | |
| readonly "~effect/ai/Prompt/Message": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Message">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new system message. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const systemMessage: (params: MessageConstructorParams<SystemMessage>) => SystemMessage; | |
| /** | |
| * Message representing user input or questions. | |
| * | |
| * **Example** (Creating user messages) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const textUserMessage: Prompt.UserMessage = Prompt.makeMessage("user", { | |
| * content: [ | |
| * Prompt.makePart("text", { | |
| * text: "Can you analyze this image for me?" | |
| * }) | |
| * ] | |
| * }) | |
| * | |
| * const multimodalUserMessage: Prompt.UserMessage = Prompt.makeMessage("user", { | |
| * content: [ | |
| * Prompt.makePart("text", { | |
| * text: "What do you see in this image?" | |
| * }), | |
| * Prompt.makePart("file", { | |
| * mediaType: "image/jpeg", | |
| * fileName: "vacation.jpg", | |
| * data: "data:image/jpeg;base64,..." | |
| * }) | |
| * ] | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface UserMessage extends BaseMessage<"user", UserMessageOptions> { | |
| /** | |
| * Array of content parts that make up the user's message. | |
| */ | |
| readonly content: ReadonlyArray<UserMessagePart>; | |
| } | |
| /** | |
| * Union type of content parts allowed in user messages. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type UserMessagePart = TextPart | FilePart; | |
| /** | |
| * Encoded representation of user messages for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface UserMessageEncoded extends BaseMessageEncoded<"user", UserMessageOptions> { | |
| /** | |
| * Array of content parts that make up the user's message. | |
| */ | |
| readonly content: string | ReadonlyArray<UserMessagePartEncoded>; | |
| } | |
| /** | |
| * Union type of encoded content parts for user messages. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type UserMessagePartEncoded = TextPartEncoded | FilePartEncoded; | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `UserMessage` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface UserMessageOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of user messages. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const UserMessage: Schema.Struct<{ | |
| readonly role: Schema.Literal<"user">; | |
| readonly content: Schema.Union<readonly [ | |
| Schema.decodeTo<Schema.NonEmptyArray<Schema.toType<Schema.Struct<{ | |
| readonly type: Schema.Literal<"text">; | |
| readonly text: Schema.String; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>>>, Schema.String, never, never>, | |
| Schema.$Array<Schema.Union<readonly [ | |
| Schema.Struct<{ | |
| readonly type: Schema.Literal<"text">; | |
| readonly text: Schema.String; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>, | |
| Schema.Struct<{ | |
| readonly type: Schema.Literal<"file">; | |
| readonly mediaType: Schema.String; | |
| readonly fileName: Schema.optional<Schema.String>; | |
| readonly data: Schema.Union<readonly [Schema.String, Schema.Uint8Array, Schema.URL]>; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }> | |
| ]>> | |
| ]>; | |
| readonly "~effect/ai/Prompt/Message": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Message">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new user message. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const userMessage: (params: MessageConstructorParams<UserMessage>) => UserMessage; | |
| /** | |
| * Message representing large language model assistant responses. | |
| * | |
| * **Example** (Creating assistant messages) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const assistantMessage: Prompt.AssistantMessage = Prompt.makeMessage( | |
| * "assistant", | |
| * { | |
| * content: [ | |
| * Prompt.makePart("text", { | |
| * text: | |
| * "I can check the current weather for San Francisco." | |
| * }), | |
| * Prompt.makePart("tool-call", { | |
| * id: "call_123", | |
| * name: "get_weather", | |
| * params: { city: "San Francisco" }, | |
| * providerExecuted: false | |
| * }), | |
| * Prompt.makePart("tool-result", { | |
| * id: "call_123", | |
| * name: "get_weather", | |
| * isFailure: false, | |
| * result: { | |
| * temperature: 72, | |
| * condition: "sunny" | |
| * } | |
| * }), | |
| * Prompt.makePart("text", { | |
| * text: "The weather in San Francisco is currently 72°F and sunny." | |
| * }) | |
| * ] | |
| * } | |
| * ) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface AssistantMessage extends BaseMessage<"assistant", AssistantMessageOptions> { | |
| /** | |
| * Array of content parts that make up the assistant's response. | |
| */ | |
| readonly content: ReadonlyArray<AssistantMessagePart>; | |
| } | |
| /** | |
| * Union type of content parts allowed in assistant messages. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type AssistantMessagePart = TextPart | FilePart | ReasoningPart | ToolCallPart | ToolResultPart | ToolApprovalRequestPart; | |
| /** | |
| * Encoded representation of assistant messages for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface AssistantMessageEncoded extends BaseMessageEncoded<"assistant", AssistantMessageOptions> { | |
| readonly content: string | ReadonlyArray<AssistantMessagePartEncoded>; | |
| } | |
| /** | |
| * Union type of encoded content parts for assistant messages. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type AssistantMessagePartEncoded = TextPartEncoded | FilePartEncoded | ReasoningPartEncoded | ToolCallPartEncoded | ToolResultPartEncoded | ToolApprovalRequestPartEncoded; | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `AssistantMessage` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface AssistantMessageOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of assistant messages. | |
| * | |
| * **Details** | |
| * | |
| * Assistant content can be a string decoded through `ContentFromString` or an | |
| * array of text, file, reasoning, tool-call, tool-result, and | |
| * tool-approval-request parts. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const AssistantMessage: Schema.Struct<{ | |
| readonly role: Schema.Literal<"assistant">; | |
| readonly content: Schema.Union<readonly [ | |
| Schema.decodeTo<Schema.NonEmptyArray<Schema.toType<Schema.Struct<{ | |
| readonly type: Schema.Literal<"text">; | |
| readonly text: Schema.String; | |
| readonly "~effect/ai/Prompt/Part": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Part">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>>>, Schema.String, never, never>, | |
| Schema.$Array<Schema.Union<readonly [ | |
| typeof TextPart, | |
| typeof FilePart, | |
| typeof ReasoningPart, | |
| typeof ToolCallPart, | |
| typeof ToolResultPart, | |
| typeof ToolApprovalRequestPart | |
| ]>> | |
| ]>; | |
| readonly "~effect/ai/Prompt/Message": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Message">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new assistant message. | |
| * | |
| * **When to use** | |
| * | |
| * Use to add assistant-role prompt history or model responses. | |
| * | |
| * **Details** | |
| * | |
| * This is the role-specific wrapper around `makeMessage("assistant", params)`. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const assistantMessage: (params: MessageConstructorParams<AssistantMessage>) => AssistantMessage; | |
| /** | |
| * Message carrying tool-side content, including tool execution results and | |
| * responses to tool approval requests. | |
| * | |
| * **Example** (Creating tool messages) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const toolMessage: Prompt.ToolMessage = Prompt.makeMessage("tool", { | |
| * content: [ | |
| * Prompt.makePart("tool-result", { | |
| * id: "call_123", | |
| * name: "search_web", | |
| * isFailure: false, | |
| * result: { | |
| * query: "TypeScript best practices", | |
| * results: [ | |
| * { title: "TypeScript Handbook", url: "https://..." }, | |
| * { title: "Effective TypeScript", url: "https://..." } | |
| * ] | |
| * } | |
| * }) | |
| * ] | |
| * }) | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolMessage extends BaseMessage<"tool", ToolMessageOptions> { | |
| /** | |
| * Array of tool result parts. | |
| */ | |
| readonly content: ReadonlyArray<ToolMessagePart>; | |
| } | |
| /** | |
| * Union type of content parts allowed in tool messages. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type ToolMessagePart = ToolResultPart | ToolApprovalResponsePart; | |
| /** | |
| * Encoded representation of tool messages for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolMessageEncoded extends BaseMessageEncoded<"tool", ToolMessageOptions> { | |
| /** | |
| * Array of tool result parts. | |
| */ | |
| readonly content: ReadonlyArray<ToolMessagePartEncoded>; | |
| } | |
| /** | |
| * Union type of encoded content parts for tool messages. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type ToolMessagePartEncoded = ToolResultPartEncoded | ToolApprovalResponsePartEncoded; | |
| /** | |
| * Represents provider-specific options that can be associated with a | |
| * `ToolMessage` through module augmentation. | |
| * | |
| * @category options | |
| * @since 4.0.0 | |
| */ | |
| export interface ToolMessageOptions extends ProviderOptions { | |
| } | |
| /** | |
| * Schema for validation and encoding of tool messages. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const ToolMessage: Schema.Struct<{ | |
| readonly role: Schema.Literal<"tool">; | |
| readonly content: Schema.$Array<Schema.Union<readonly [typeof ToolResultPart, typeof ToolApprovalResponsePart]>>; | |
| readonly "~effect/ai/Prompt/Message": Schema.withDecodingDefaultKey<Schema.Literal<"~effect/ai/Prompt/Message">>; | |
| readonly options: Schema.withDecodingDefault<Schema.$Record<Schema.String, Schema.NullOr<Schema.Codec<Schema.Json>>>>; | |
| }>; | |
| /** | |
| * Constructs a new tool message. | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const toolMessage: (params: MessageConstructorParams<ToolMessage>) => ToolMessage; | |
| /** | |
| * A type representing all possible message types in a conversation. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type Message = SystemMessage | UserMessage | AssistantMessage | ToolMessage; | |
| /** | |
| * A type representing all possible encoded message types for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type MessageEncoded = SystemMessageEncoded | UserMessageEncoded | AssistantMessageEncoded | ToolMessageEncoded; | |
| /** | |
| * Schema for validation and encoding of messages. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const Message: Schema.Codec<Message, MessageEncoded>; | |
| declare const TypeId: "~effect/unstable/ai/Prompt"; | |
| /** | |
| * Type guard to check if a value is a Prompt. | |
| * | |
| * @category guards | |
| * @since 4.0.0 | |
| */ | |
| export declare const isPrompt: (u: unknown) => u is Prompt; | |
| /** | |
| * A Prompt contains a sequence of messages that form the context of a | |
| * conversation with a large language model. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface Prompt extends Pipeable { | |
| readonly [TypeId]: typeof TypeId; | |
| /** | |
| * Array of messages that make up the conversation. | |
| */ | |
| readonly content: ReadonlyArray<Message>; | |
| } | |
| /** | |
| * Encoded representation of prompts for serialization. | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export interface PromptEncoded { | |
| /** | |
| * Array of messages that make up the conversation. | |
| */ | |
| readonly content: ReadonlyArray<MessageEncoded>; | |
| } | |
| /** | |
| * Schema for AI prompt instances. | |
| * | |
| * @category schemas | |
| * @since 4.0.0 | |
| */ | |
| export declare const Prompt: Schema.Codec<Prompt, PromptEncoded>; | |
| /** | |
| * Raw input accepted by `make`: a string, an iterable of encoded messages, or | |
| * an existing `Prompt`. | |
| * | |
| * **Example** (Accepting raw prompt input) | |
| * | |
| * ```ts | |
| * import type { Prompt } from "effect/unstable/ai" | |
| * | |
| * // String input - creates a user message | |
| * const stringInput: Prompt.RawInput = "Hello, world!" | |
| * | |
| * // Message array input | |
| * const messagesInput: Prompt.RawInput = [ | |
| * { role: "system", content: "You are helpful." }, | |
| * { role: "user", content: [{ type: "text", text: "Hi!" }] } | |
| * ] | |
| * | |
| * // Existing prompt | |
| * declare const existingPrompt: Prompt.Prompt | |
| * const promptInput: Prompt.RawInput = existingPrompt | |
| * ``` | |
| * | |
| * @category models | |
| * @since 4.0.0 | |
| */ | |
| export type RawInput = string | Iterable<MessageEncoded> | Prompt; | |
| /** | |
| * An empty prompt with no messages. | |
| * | |
| * **Example** (Creating an empty prompt) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const emptyPrompt = Prompt.empty | |
| * console.log(emptyPrompt.content) // [] | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const empty: Prompt; | |
| /** | |
| * Creates a `Prompt` from an input. | |
| * | |
| * **Details** | |
| * | |
| * This is the primary constructor for creating prompts, supporting multiple | |
| * input formats for convenience and flexibility. | |
| * | |
| * **Example** (Creating prompts from inputs) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * // From string - creates a user message | |
| * const textPrompt = Prompt.make("Hello, how are you?") | |
| * | |
| * // From messages array | |
| * const structuredPrompt = Prompt.make([ | |
| * { role: "system", content: "You are a helpful assistant." }, | |
| * { role: "user", content: [{ type: "text", text: "Hi!" }] } | |
| * ]) | |
| * | |
| * // From existing prompt | |
| * declare const existingPrompt: Prompt.Prompt | |
| * const copiedPrompt = Prompt.make(existingPrompt) | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const make: (input: RawInput) => Prompt; | |
| /** | |
| * Creates a Prompt from an array of messages. | |
| * | |
| * **Example** (Creating prompts from messages) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const messages: ReadonlyArray<Prompt.Message> = [ | |
| * Prompt.makeMessage("system", { | |
| * content: "You are a coding assistant." | |
| * }), | |
| * Prompt.makeMessage("user", { | |
| * content: [Prompt.makePart("text", { text: "Help me with TypeScript" })] | |
| * }) | |
| * ] | |
| * | |
| * const prompt = Prompt.fromMessages(messages) | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const fromMessages: (messages: ReadonlyArray<Message>) => Prompt; | |
| /** | |
| * Creates a `Prompt` from response parts by folding completed text and | |
| * reasoning streams into assistant parts, placing tool calls and approval | |
| * requests in an assistant message, and placing non-preliminary tool results | |
| * in a tool message using their encoded results. | |
| * | |
| * **Example** (Creating prompts from response parts) | |
| * | |
| * ```ts | |
| * import { Prompt, Response } from "effect/unstable/ai" | |
| * | |
| * const responseParts: ReadonlyArray<Response.AnyPart> = [ | |
| * Response.makePart("text", { | |
| * text: "Hello there!" | |
| * }), | |
| * Response.makePart("tool-call", { | |
| * id: "call_1", | |
| * name: "get_time", | |
| * params: {}, | |
| * providerExecuted: false | |
| * }), | |
| * Response.makePart("tool-result", { | |
| * id: "call_1", | |
| * name: "get_time", | |
| * isFailure: false, | |
| * result: "10:30 AM", | |
| * encodedResult: "10:30 AM", | |
| * providerExecuted: false, | |
| * preliminary: false | |
| * }) | |
| * ] | |
| * | |
| * const prompt = Prompt.fromResponseParts(responseParts) | |
| * // Creates an assistant message with the response content | |
| * ``` | |
| * | |
| * @category constructors | |
| * @since 4.0.0 | |
| */ | |
| export declare const fromResponseParts: (parts: ReadonlyArray<Response.AnyPart>) => Prompt; | |
| /** | |
| * Concatenates a prompt with additional raw input by concatenating messages. | |
| * | |
| * **Details** | |
| * | |
| * The returned prompt contains all messages from the original prompt followed | |
| * by the provided raw input, preserving message order. | |
| * | |
| * **Example** (Concatenating prompts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are a helpful assistant." | |
| * }]) | |
| * | |
| * const merged = Prompt.concat(systemPrompt, "Hello, world!") | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| export declare const concat: { | |
| /** | |
| * Concatenates a prompt with additional raw input by concatenating messages. | |
| * | |
| * **Details** | |
| * | |
| * The returned prompt contains all messages from the original prompt followed | |
| * by the provided raw input, preserving message order. | |
| * | |
| * **Example** (Concatenating prompts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are a helpful assistant." | |
| * }]) | |
| * | |
| * const merged = Prompt.concat(systemPrompt, "Hello, world!") | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (input: RawInput): (self: Prompt) => Prompt; | |
| /** | |
| * Concatenates a prompt with additional raw input by concatenating messages. | |
| * | |
| * **Details** | |
| * | |
| * The returned prompt contains all messages from the original prompt followed | |
| * by the provided raw input, preserving message order. | |
| * | |
| * **Example** (Concatenating prompts) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are a helpful assistant." | |
| * }]) | |
| * | |
| * const merged = Prompt.concat(systemPrompt, "Hello, world!") | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (self: Prompt, input: RawInput): Prompt; | |
| }; | |
| /** | |
| * Creates a new prompt from the specified prompt with the system message set | |
| * to the specified text content. | |
| * | |
| * **Gotchas** | |
| * | |
| * This method removes and replaces any previous system message from the | |
| * prompt. | |
| * | |
| * **Example** (Replacing system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are a helpful assistant." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.setSystem( | |
| * prompt, | |
| * "You are an expert in programming" | |
| * ) | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| export declare const setSystem: { | |
| /** | |
| * Creates a new prompt from the specified prompt with the system message set | |
| * to the specified text content. | |
| * | |
| * **Gotchas** | |
| * | |
| * This method removes and replaces any previous system message from the | |
| * prompt. | |
| * | |
| * **Example** (Replacing system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are a helpful assistant." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.setSystem( | |
| * prompt, | |
| * "You are an expert in programming" | |
| * ) | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (content: string): (self: Prompt) => Prompt; | |
| /** | |
| * Creates a new prompt from the specified prompt with the system message set | |
| * to the specified text content. | |
| * | |
| * **Gotchas** | |
| * | |
| * This method removes and replaces any previous system message from the | |
| * prompt. | |
| * | |
| * **Example** (Replacing system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are a helpful assistant." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.setSystem( | |
| * prompt, | |
| * "You are an expert in programming" | |
| * ) | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (self: Prompt, content: string): Prompt; | |
| }; | |
| /** | |
| * Creates a new prompt with a leading system message. If the prompt already has | |
| * a system message, the new message uses the provided content prepended to the | |
| * first existing system message's content; the original messages remain after | |
| * it. | |
| * | |
| * **Example** (Prepending system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are an expert in programming." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.prependSystem( | |
| * prompt, | |
| * "You are a helpful assistant. " | |
| * ) | |
| * // result content: "You are a helpful assistant. You are an expert in programming." | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| export declare const prependSystem: { | |
| /** | |
| * Creates a new prompt with a leading system message. If the prompt already has | |
| * a system message, the new message uses the provided content prepended to the | |
| * first existing system message's content; the original messages remain after | |
| * it. | |
| * | |
| * **Example** (Prepending system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are an expert in programming." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.prependSystem( | |
| * prompt, | |
| * "You are a helpful assistant. " | |
| * ) | |
| * // result content: "You are a helpful assistant. You are an expert in programming." | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (content: string): (self: Prompt) => Prompt; | |
| /** | |
| * Creates a new prompt with a leading system message. If the prompt already has | |
| * a system message, the new message uses the provided content prepended to the | |
| * first existing system message's content; the original messages remain after | |
| * it. | |
| * | |
| * **Example** (Prepending system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are an expert in programming." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.prependSystem( | |
| * prompt, | |
| * "You are a helpful assistant. " | |
| * ) | |
| * // result content: "You are a helpful assistant. You are an expert in programming." | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (self: Prompt, content: string): Prompt; | |
| }; | |
| /** | |
| * Creates a new prompt with a leading system message. If the prompt already has | |
| * a system message, the new message uses the provided content appended to the | |
| * first existing system message's content; the original messages remain after | |
| * it. | |
| * | |
| * **Example** (Appending system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are an expert in programming." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.appendSystem( | |
| * prompt, | |
| * " You are a helpful assistant." | |
| * ) | |
| * // result content: "You are an expert in programming. You are a helpful assistant." | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| export declare const appendSystem: { | |
| /** | |
| * Creates a new prompt with a leading system message. If the prompt already has | |
| * a system message, the new message uses the provided content appended to the | |
| * first existing system message's content; the original messages remain after | |
| * it. | |
| * | |
| * **Example** (Appending system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are an expert in programming." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.appendSystem( | |
| * prompt, | |
| * " You are a helpful assistant." | |
| * ) | |
| * // result content: "You are an expert in programming. You are a helpful assistant." | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (content: string): (self: Prompt) => Prompt; | |
| /** | |
| * Creates a new prompt with a leading system message. If the prompt already has | |
| * a system message, the new message uses the provided content appended to the | |
| * first existing system message's content; the original messages remain after | |
| * it. | |
| * | |
| * **Example** (Appending system instructions) | |
| * | |
| * ```ts | |
| * import { Prompt } from "effect/unstable/ai" | |
| * | |
| * const systemPrompt = Prompt.make([{ | |
| * role: "system", | |
| * content: "You are an expert in programming." | |
| * }]) | |
| * | |
| * const userPrompt = Prompt.make("Hello, world!") | |
| * | |
| * const prompt = Prompt.concat(systemPrompt, userPrompt) | |
| * | |
| * const replaced = Prompt.appendSystem( | |
| * prompt, | |
| * " You are a helpful assistant." | |
| * ) | |
| * // result content: "You are an expert in programming. You are a helpful assistant." | |
| * ``` | |
| * | |
| * @category combinators | |
| * @since 4.0.0 | |
| */ | |
| (self: Prompt, content: string): Prompt; | |
| }; | |
| export {}; | |
| //# sourceMappingURL=Prompt.d.ts.map |
Xet Storage Details
- Size:
- 52.1 kB
- Xet hash:
- d2f6d4a9b0f4f7cd1bbf746ff91e6cb577731fb0e2db38b8f28855dd56c3c780
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.