chat.d.ts 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. import type { BaseCallbackConfig } from "../callbacks/manager.js";
  2. import { AIMessage, HumanMessage, SystemMessage, BaseMessage, ChatMessage, type BaseMessageLike, MessageContent } from "../messages/index.js";
  3. import { type ChatPromptValueInterface } from "../prompt_values.js";
  4. import type { InputValues, PartialValues } from "../utils/types/index.js";
  5. import { Runnable } from "../runnables/base.js";
  6. import { BaseStringPromptTemplate } from "./string.js";
  7. import { BasePromptTemplate, type BasePromptTemplateInput, type TypedPromptInputValues } from "./base.js";
  8. import { PromptTemplateInput, ExtractedFStringParams } from "./prompt.js";
  9. import { ImagePromptTemplate } from "./image.js";
  10. import { TemplateFormat } from "./template.js";
  11. import { DictPromptTemplate } from "./dict.js";
  12. /**
  13. * Abstract class that serves as a base for creating message prompt
  14. * templates. It defines how to format messages for different roles in a
  15. * conversation.
  16. */
  17. export declare abstract class BaseMessagePromptTemplate<RunInput extends InputValues = any, RunOutput extends BaseMessage[] = BaseMessage[]> extends Runnable<RunInput, RunOutput> {
  18. lc_namespace: string[];
  19. lc_serializable: boolean;
  20. abstract inputVariables: Array<Extract<keyof RunInput, string>>;
  21. /**
  22. * Method that takes an object of TypedPromptInputValues and returns a
  23. * promise that resolves to an array of BaseMessage instances.
  24. * @param values Object of TypedPromptInputValues
  25. * @returns Formatted array of BaseMessages
  26. */
  27. abstract formatMessages(values: TypedPromptInputValues<RunInput>): Promise<RunOutput>;
  28. /**
  29. * Calls the formatMessages method with the provided input and options.
  30. * @param input Input for the formatMessages method
  31. * @param options Optional BaseCallbackConfig
  32. * @returns Formatted output messages
  33. */
  34. invoke(input: RunInput, options?: BaseCallbackConfig): Promise<RunOutput>;
  35. }
  36. /**
  37. * Interface for the fields of a MessagePlaceholder.
  38. */
  39. export interface MessagesPlaceholderFields<T extends string> {
  40. variableName: T;
  41. optional?: boolean;
  42. }
  43. /**
  44. * Class that represents a placeholder for messages in a chat prompt. It
  45. * extends the BaseMessagePromptTemplate.
  46. */
  47. export declare class MessagesPlaceholder<RunInput extends InputValues = any> extends BaseMessagePromptTemplate<RunInput> implements MessagesPlaceholderFields<Extract<keyof RunInput, string>> {
  48. static lc_name(): string;
  49. variableName: Extract<keyof RunInput, string>;
  50. optional: boolean;
  51. constructor(variableName: Extract<keyof RunInput, string>);
  52. constructor(fields: MessagesPlaceholderFields<Extract<keyof RunInput, string>>);
  53. get inputVariables(): Extract<keyof RunInput, string>[];
  54. formatMessages(values: TypedPromptInputValues<RunInput>): Promise<BaseMessage[]>;
  55. }
  56. /**
  57. * Interface for the fields of a MessageStringPromptTemplate.
  58. */
  59. export interface MessageStringPromptTemplateFields<T extends InputValues = any> {
  60. prompt: BaseStringPromptTemplate<T, string>;
  61. }
  62. /**
  63. * Abstract class that serves as a base for creating message string prompt
  64. * templates. It extends the BaseMessagePromptTemplate.
  65. */
  66. export declare abstract class BaseMessageStringPromptTemplate<RunInput extends InputValues = any> extends BaseMessagePromptTemplate<RunInput> {
  67. prompt: BaseStringPromptTemplate<InputValues<Extract<keyof RunInput, string>>, string>;
  68. constructor(prompt: BaseStringPromptTemplate<InputValues<Extract<keyof RunInput, string>>>);
  69. constructor(fields: MessageStringPromptTemplateFields<InputValues<Extract<keyof RunInput, string>>>);
  70. get inputVariables(): Extract<Extract<keyof RunInput, string>, string>[];
  71. abstract format(values: TypedPromptInputValues<RunInput>): Promise<BaseMessage>;
  72. formatMessages(values: TypedPromptInputValues<RunInput>): Promise<BaseMessage[]>;
  73. }
  74. /**
  75. * Abstract class that serves as a base for creating chat prompt
  76. * templates. It extends the BasePromptTemplate.
  77. */
  78. export declare abstract class BaseChatPromptTemplate<RunInput extends InputValues = any, PartialVariableName extends string = any> extends BasePromptTemplate<RunInput, ChatPromptValueInterface, PartialVariableName> {
  79. constructor(input: BasePromptTemplateInput<RunInput, PartialVariableName>);
  80. abstract formatMessages(values: TypedPromptInputValues<RunInput>): Promise<BaseMessage[]>;
  81. format(values: TypedPromptInputValues<RunInput>): Promise<string>;
  82. formatPromptValue(values: TypedPromptInputValues<RunInput>): Promise<ChatPromptValueInterface>;
  83. }
  84. /**
  85. * Interface for the fields of a ChatMessagePromptTemplate.
  86. */
  87. export interface ChatMessagePromptTemplateFields<T extends InputValues = any> extends MessageStringPromptTemplateFields<T> {
  88. role: string;
  89. }
  90. /**
  91. * Class that represents a chat message prompt template. It extends the
  92. * BaseMessageStringPromptTemplate.
  93. */
  94. export declare class ChatMessagePromptTemplate<RunInput extends InputValues = any> extends BaseMessageStringPromptTemplate<RunInput> {
  95. static lc_name(): string;
  96. role: string;
  97. constructor(prompt: BaseStringPromptTemplate<InputValues<Extract<keyof RunInput, string>>>, role: string);
  98. constructor(fields: ChatMessagePromptTemplateFields<InputValues<Extract<keyof RunInput, string>>>);
  99. format(values: RunInput): Promise<BaseMessage>;
  100. static fromTemplate<RunInput extends InputValues = Symbol, T extends string = string>(template: T, role: string, options?: {
  101. templateFormat?: TemplateFormat;
  102. }): ChatMessagePromptTemplate<ExtractedFStringParams<T, RunInput>>;
  103. }
  104. interface _TextTemplateParam {
  105. text?: string | Record<string, any>;
  106. }
  107. interface _ImageTemplateParam {
  108. image_url?: string | Record<string, any>;
  109. }
  110. type MessageClass = typeof HumanMessage | typeof AIMessage | typeof SystemMessage;
  111. type ChatMessageClass = typeof ChatMessage;
  112. interface _StringImageMessagePromptTemplateOptions<Format extends TemplateFormat = TemplateFormat> extends Record<string, unknown> {
  113. templateFormat?: Format;
  114. }
  115. declare class _StringImageMessagePromptTemplate<RunInput extends InputValues = any, RunOutput extends BaseMessage[] = BaseMessage[]> extends BaseMessagePromptTemplate<RunInput, RunOutput> {
  116. lc_namespace: string[];
  117. lc_serializable: boolean;
  118. inputVariables: Array<Extract<keyof RunInput, string>>;
  119. additionalOptions: _StringImageMessagePromptTemplateOptions;
  120. prompt: BaseStringPromptTemplate<InputValues<Extract<keyof RunInput, string>>, string> | Array<BaseStringPromptTemplate<InputValues<Extract<keyof RunInput, string>>, string> | ImagePromptTemplate<InputValues<Extract<keyof RunInput, string>>, string> | MessageStringPromptTemplateFields<InputValues<Extract<keyof RunInput, string>>> | DictPromptTemplate<InputValues<Extract<keyof RunInput, string>>>>;
  121. protected messageClass?: MessageClass;
  122. static _messageClass(): MessageClass;
  123. protected chatMessageClass?: ChatMessageClass;
  124. constructor(
  125. /** @TODO When we come up with a better way to type prompt templates, fix this */
  126. fields: any, additionalOptions?: _StringImageMessagePromptTemplateOptions);
  127. createMessage(content: MessageContent): any;
  128. getRoleFromMessageClass(name: string): "human" | "ai" | "system" | "chat";
  129. static fromTemplate(template: string | Array<string | _TextTemplateParam | _ImageTemplateParam | Record<string, unknown>>, additionalOptions?: _StringImageMessagePromptTemplateOptions): _StringImageMessagePromptTemplate<any, BaseMessage[]>;
  130. format(input: TypedPromptInputValues<RunInput>): Promise<BaseMessage>;
  131. formatMessages(values: RunInput): Promise<RunOutput>;
  132. }
  133. /**
  134. * Class that represents a human message prompt template. It extends the
  135. * BaseMessageStringPromptTemplate.
  136. * @example
  137. * ```typescript
  138. * const message = HumanMessagePromptTemplate.fromTemplate("{text}");
  139. * const formatted = await message.format({ text: "Hello world!" });
  140. *
  141. * const chatPrompt = ChatPromptTemplate.fromMessages([message]);
  142. * const formattedChatPrompt = await chatPrompt.invoke({
  143. * text: "Hello world!",
  144. * });
  145. * ```
  146. */
  147. export declare class HumanMessagePromptTemplate<RunInput extends InputValues = any> extends _StringImageMessagePromptTemplate<RunInput> {
  148. static _messageClass(): typeof HumanMessage;
  149. static lc_name(): string;
  150. }
  151. /**
  152. * Class that represents an AI message prompt template. It extends the
  153. * BaseMessageStringPromptTemplate.
  154. */
  155. export declare class AIMessagePromptTemplate<RunInput extends InputValues = any> extends _StringImageMessagePromptTemplate<RunInput> {
  156. static _messageClass(): typeof AIMessage;
  157. static lc_name(): string;
  158. }
  159. /**
  160. * Class that represents a system message prompt template. It extends the
  161. * BaseMessageStringPromptTemplate.
  162. * @example
  163. * ```typescript
  164. * const message = SystemMessagePromptTemplate.fromTemplate("{text}");
  165. * const formatted = await message.format({ text: "Hello world!" });
  166. *
  167. * const chatPrompt = ChatPromptTemplate.fromMessages([message]);
  168. * const formattedChatPrompt = await chatPrompt.invoke({
  169. * text: "Hello world!",
  170. * });
  171. * ```
  172. */
  173. export declare class SystemMessagePromptTemplate<RunInput extends InputValues = any> extends _StringImageMessagePromptTemplate<RunInput> {
  174. static _messageClass(): typeof SystemMessage;
  175. static lc_name(): string;
  176. }
  177. /**
  178. * Interface for the input of a ChatPromptTemplate.
  179. */
  180. export interface ChatPromptTemplateInput<RunInput extends InputValues = any, PartialVariableName extends string = any> extends BasePromptTemplateInput<RunInput, PartialVariableName> {
  181. /**
  182. * The prompt messages
  183. */
  184. promptMessages: Array<BaseMessagePromptTemplate | BaseMessage>;
  185. /**
  186. * Whether to try validating the template on initialization
  187. *
  188. * @defaultValue `true`
  189. */
  190. validateTemplate?: boolean;
  191. /**
  192. * The formatting method to use on the prompt.
  193. * @default "f-string"
  194. */
  195. templateFormat?: TemplateFormat;
  196. }
  197. export type BaseMessagePromptTemplateLike = BaseMessagePromptTemplate | BaseMessageLike;
  198. /**
  199. * Class that represents a chat prompt. It extends the
  200. * BaseChatPromptTemplate and uses an array of BaseMessagePromptTemplate
  201. * instances to format a series of messages for a conversation.
  202. * @example
  203. * ```typescript
  204. * const message = SystemMessagePromptTemplate.fromTemplate("{text}");
  205. * const chatPrompt = ChatPromptTemplate.fromMessages([
  206. * ["ai", "You are a helpful assistant."],
  207. * message,
  208. * ]);
  209. * const formattedChatPrompt = await chatPrompt.invoke({
  210. * text: "Hello world!",
  211. * });
  212. * ```
  213. */
  214. export declare class ChatPromptTemplate<RunInput extends InputValues = any, PartialVariableName extends string = any> extends BaseChatPromptTemplate<RunInput, PartialVariableName> implements ChatPromptTemplateInput<RunInput, PartialVariableName> {
  215. static lc_name(): string;
  216. get lc_aliases(): Record<string, string>;
  217. promptMessages: Array<BaseMessagePromptTemplate | BaseMessage>;
  218. validateTemplate: boolean;
  219. templateFormat: TemplateFormat;
  220. constructor(input: ChatPromptTemplateInput<RunInput, PartialVariableName>);
  221. _getPromptType(): "chat";
  222. private _parseImagePrompts;
  223. formatMessages(values: TypedPromptInputValues<RunInput>): Promise<BaseMessage[]>;
  224. partial<NewPartialVariableName extends string>(values: PartialValues<NewPartialVariableName>): Promise<ChatPromptTemplate<InputValues<Exclude<Extract<keyof RunInput, string>, NewPartialVariableName>>, any>>;
  225. /**
  226. * Load prompt template from a template f-string
  227. */
  228. static fromTemplate<RunInput extends InputValues = Symbol, T extends string = string>(template: T, options?: Omit<PromptTemplateInput<RunInput, string, "f-string">, "template" | "inputVariables">): ChatPromptTemplate<ExtractedFStringParams<T, RunInput>>;
  229. static fromTemplate<RunInput extends InputValues = Symbol, T extends string = string>(template: T, options?: Omit<PromptTemplateInput<RunInput, string>, "template" | "inputVariables">): ChatPromptTemplate<ExtractedFStringParams<T, RunInput>>;
  230. static fromTemplate<RunInput extends InputValues = Symbol, T extends string = string>(template: T, options?: Omit<PromptTemplateInput<RunInput, string, "mustache">, "template" | "inputVariables">): ChatPromptTemplate<InputValues>;
  231. /**
  232. * Create a chat model-specific prompt from individual chat messages
  233. * or message-like tuples.
  234. * @param promptMessages Messages to be passed to the chat model
  235. * @returns A new ChatPromptTemplate
  236. */
  237. static fromMessages<RunInput extends InputValues = any, Extra extends ChatPromptTemplateInput<RunInput> = ChatPromptTemplateInput<RunInput>>(promptMessages: (ChatPromptTemplate<InputValues, string> | BaseMessagePromptTemplateLike)[], extra?: Omit<Extra, "inputVariables" | "promptMessages" | "partialVariables">): ChatPromptTemplate<RunInput>;
  238. /** @deprecated Renamed to .fromMessages */
  239. static fromPromptMessages<RunInput extends InputValues = any>(promptMessages: (ChatPromptTemplate<InputValues, string> | BaseMessagePromptTemplateLike)[]): ChatPromptTemplate<RunInput>;
  240. }
  241. export {};