import type { BaseCallbackConfig } from "../callbacks/manager.js"; import { AIMessage, HumanMessage, SystemMessage, BaseMessage, ChatMessage, type BaseMessageLike, MessageContent } from "../messages/index.js"; import { type ChatPromptValueInterface } from "../prompt_values.js"; import type { InputValues, PartialValues } from "../utils/types/index.js"; import { Runnable } from "../runnables/base.js"; import { BaseStringPromptTemplate } from "./string.js"; import { BasePromptTemplate, type BasePromptTemplateInput, type TypedPromptInputValues } from "./base.js"; import { PromptTemplateInput, ExtractedFStringParams } from "./prompt.js"; import { ImagePromptTemplate } from "./image.js"; import { TemplateFormat } from "./template.js"; import { DictPromptTemplate } from "./dict.js"; /** * Abstract class that serves as a base for creating message prompt * templates. It defines how to format messages for different roles in a * conversation. */ export declare abstract class BaseMessagePromptTemplate extends Runnable { lc_namespace: string[]; lc_serializable: boolean; abstract inputVariables: Array>; /** * Method that takes an object of TypedPromptInputValues and returns a * promise that resolves to an array of BaseMessage instances. * @param values Object of TypedPromptInputValues * @returns Formatted array of BaseMessages */ abstract formatMessages(values: TypedPromptInputValues): Promise; /** * Calls the formatMessages method with the provided input and options. * @param input Input for the formatMessages method * @param options Optional BaseCallbackConfig * @returns Formatted output messages */ invoke(input: RunInput, options?: BaseCallbackConfig): Promise; } /** * Interface for the fields of a MessagePlaceholder. */ export interface MessagesPlaceholderFields { variableName: T; optional?: boolean; } /** * Class that represents a placeholder for messages in a chat prompt. It * extends the BaseMessagePromptTemplate. */ export declare class MessagesPlaceholder extends BaseMessagePromptTemplate implements MessagesPlaceholderFields> { static lc_name(): string; variableName: Extract; optional: boolean; constructor(variableName: Extract); constructor(fields: MessagesPlaceholderFields>); get inputVariables(): Extract[]; formatMessages(values: TypedPromptInputValues): Promise; } /** * Interface for the fields of a MessageStringPromptTemplate. */ export interface MessageStringPromptTemplateFields { prompt: BaseStringPromptTemplate; } /** * Abstract class that serves as a base for creating message string prompt * templates. It extends the BaseMessagePromptTemplate. */ export declare abstract class BaseMessageStringPromptTemplate extends BaseMessagePromptTemplate { prompt: BaseStringPromptTemplate>, string>; constructor(prompt: BaseStringPromptTemplate>>); constructor(fields: MessageStringPromptTemplateFields>>); get inputVariables(): Extract, string>[]; abstract format(values: TypedPromptInputValues): Promise; formatMessages(values: TypedPromptInputValues): Promise; } /** * Abstract class that serves as a base for creating chat prompt * templates. It extends the BasePromptTemplate. */ export declare abstract class BaseChatPromptTemplate extends BasePromptTemplate { constructor(input: BasePromptTemplateInput); abstract formatMessages(values: TypedPromptInputValues): Promise; format(values: TypedPromptInputValues): Promise; formatPromptValue(values: TypedPromptInputValues): Promise; } /** * Interface for the fields of a ChatMessagePromptTemplate. */ export interface ChatMessagePromptTemplateFields extends MessageStringPromptTemplateFields { role: string; } /** * Class that represents a chat message prompt template. It extends the * BaseMessageStringPromptTemplate. */ export declare class ChatMessagePromptTemplate extends BaseMessageStringPromptTemplate { static lc_name(): string; role: string; constructor(prompt: BaseStringPromptTemplate>>, role: string); constructor(fields: ChatMessagePromptTemplateFields>>); format(values: RunInput): Promise; static fromTemplate(template: T, role: string, options?: { templateFormat?: TemplateFormat; }): ChatMessagePromptTemplate>; } interface _TextTemplateParam { text?: string | Record; } interface _ImageTemplateParam { image_url?: string | Record; } type MessageClass = typeof HumanMessage | typeof AIMessage | typeof SystemMessage; type ChatMessageClass = typeof ChatMessage; interface _StringImageMessagePromptTemplateOptions extends Record { templateFormat?: Format; } declare class _StringImageMessagePromptTemplate extends BaseMessagePromptTemplate { lc_namespace: string[]; lc_serializable: boolean; inputVariables: Array>; additionalOptions: _StringImageMessagePromptTemplateOptions; prompt: BaseStringPromptTemplate>, string> | Array>, string> | ImagePromptTemplate>, string> | MessageStringPromptTemplateFields>> | DictPromptTemplate>>>; protected messageClass?: MessageClass; static _messageClass(): MessageClass; protected chatMessageClass?: ChatMessageClass; constructor( /** @TODO When we come up with a better way to type prompt templates, fix this */ fields: any, additionalOptions?: _StringImageMessagePromptTemplateOptions); createMessage(content: MessageContent): any; getRoleFromMessageClass(name: string): "human" | "ai" | "system" | "chat"; static fromTemplate(template: string | Array>, additionalOptions?: _StringImageMessagePromptTemplateOptions): _StringImageMessagePromptTemplate; format(input: TypedPromptInputValues): Promise; formatMessages(values: RunInput): Promise; } /** * Class that represents a human message prompt template. It extends the * BaseMessageStringPromptTemplate. * @example * ```typescript * const message = HumanMessagePromptTemplate.fromTemplate("{text}"); * const formatted = await message.format({ text: "Hello world!" }); * * const chatPrompt = ChatPromptTemplate.fromMessages([message]); * const formattedChatPrompt = await chatPrompt.invoke({ * text: "Hello world!", * }); * ``` */ export declare class HumanMessagePromptTemplate extends _StringImageMessagePromptTemplate { static _messageClass(): typeof HumanMessage; static lc_name(): string; } /** * Class that represents an AI message prompt template. It extends the * BaseMessageStringPromptTemplate. */ export declare class AIMessagePromptTemplate extends _StringImageMessagePromptTemplate { static _messageClass(): typeof AIMessage; static lc_name(): string; } /** * Class that represents a system message prompt template. It extends the * BaseMessageStringPromptTemplate. * @example * ```typescript * const message = SystemMessagePromptTemplate.fromTemplate("{text}"); * const formatted = await message.format({ text: "Hello world!" }); * * const chatPrompt = ChatPromptTemplate.fromMessages([message]); * const formattedChatPrompt = await chatPrompt.invoke({ * text: "Hello world!", * }); * ``` */ export declare class SystemMessagePromptTemplate extends _StringImageMessagePromptTemplate { static _messageClass(): typeof SystemMessage; static lc_name(): string; } /** * Interface for the input of a ChatPromptTemplate. */ export interface ChatPromptTemplateInput extends BasePromptTemplateInput { /** * The prompt messages */ promptMessages: Array; /** * Whether to try validating the template on initialization * * @defaultValue `true` */ validateTemplate?: boolean; /** * The formatting method to use on the prompt. * @default "f-string" */ templateFormat?: TemplateFormat; } export type BaseMessagePromptTemplateLike = BaseMessagePromptTemplate | BaseMessageLike; /** * Class that represents a chat prompt. It extends the * BaseChatPromptTemplate and uses an array of BaseMessagePromptTemplate * instances to format a series of messages for a conversation. * @example * ```typescript * const message = SystemMessagePromptTemplate.fromTemplate("{text}"); * const chatPrompt = ChatPromptTemplate.fromMessages([ * ["ai", "You are a helpful assistant."], * message, * ]); * const formattedChatPrompt = await chatPrompt.invoke({ * text: "Hello world!", * }); * ``` */ export declare class ChatPromptTemplate extends BaseChatPromptTemplate implements ChatPromptTemplateInput { static lc_name(): string; get lc_aliases(): Record; promptMessages: Array; validateTemplate: boolean; templateFormat: TemplateFormat; constructor(input: ChatPromptTemplateInput); _getPromptType(): "chat"; private _parseImagePrompts; formatMessages(values: TypedPromptInputValues): Promise; partial(values: PartialValues): Promise, NewPartialVariableName>>, any>>; /** * Load prompt template from a template f-string */ static fromTemplate(template: T, options?: Omit, "template" | "inputVariables">): ChatPromptTemplate>; static fromTemplate(template: T, options?: Omit, "template" | "inputVariables">): ChatPromptTemplate>; static fromTemplate(template: T, options?: Omit, "template" | "inputVariables">): ChatPromptTemplate; /** * Create a chat model-specific prompt from individual chat messages * or message-like tuples. * @param promptMessages Messages to be passed to the chat model * @returns A new ChatPromptTemplate */ static fromMessages = ChatPromptTemplateInput>(promptMessages: (ChatPromptTemplate | BaseMessagePromptTemplateLike)[], extra?: Omit): ChatPromptTemplate; /** @deprecated Renamed to .fromMessages */ static fromPromptMessages(promptMessages: (ChatPromptTemplate | BaseMessagePromptTemplateLike)[]): ChatPromptTemplate; } export {};