@mlc-ai/web-llm
Version:
Hardware accelerated language model chats on browsers
100 lines • 4.47 kB
TypeScript
import { ChatConfig, ConvTemplateConfig, Role } from "./config";
import { ChatCompletionContentPart, ChatCompletionContentPartImage, ChatCompletionRequest } from "./openai_api_protocols/index";
type ImageURL = ChatCompletionContentPartImage.ImageURL;
/**
* Helper to keep track of history conversations.
*/
export declare class Conversation {
/** Each message is a tuple of (Role, role_name_str, message), where message can be either a
* string or an array of contentPart for possible image input.
*/
messages: Array<[
Role,
string,
string | Array<ChatCompletionContentPart> | undefined
]>;
readonly config: ConvTemplateConfig;
/** Whether the Conversation object is for text completion with no conversation-style formatting */
isTextCompletion: boolean;
/** Used when isTextCompletion is true */
prompt: string | undefined;
function_string: string;
use_function_calling: boolean;
override_system_message?: string;
constructor(config: ConvTemplateConfig, isTextCompletion?: boolean);
private getPromptArrayInternal;
/**
* Get prompt arrays with the first one as system.
*
* It is returned as an array of `string | Array<string | ImageURL>`, where each element of
* the array represents the formatted message of a role/turn. If the message only contains text,
* it will be a string that concatenates the role string, message, and separators. If the
* message contains image(s), it will be an array of string and ImageURL in the order of which
* they will be prefilled into the model. e.g. it can be something like
* [
* "<|system|>\nSome system prompt\n",
* [
* "<|user|>\n",
* imageURL1,
* "\n",
* imageURL2,
* "\n",
* "Some user input<|end|>\n"
* ],
* ]
*
* @returns The prompt array.
*/
getPromptArray(): Array<string | Array<string | ImageURL>>;
/**
* Get the last round of prompt has not been fed as input.
*
* @note This function needs to be used with the assumption that
* the caller call appendMessage then appendReplyHeader.
*
* @returns The prompt array.
*/
getPromptArrayLastRound(): (string | (string | ChatCompletionContentPartImage.ImageURL)[])[];
/**
* Return prompt in an array for non-conversation text completion.
*/
getPromptArrayTextCompletion(): Array<string>;
/**
* Resets all states for this.conversation.
*/
reset(): void;
getStopStr(): string[];
getStopTokens(): number[];
appendMessage(role: Role, message: string | Array<ChatCompletionContentPart>, role_name?: string): void;
appendReplyHeader(role: Role): void;
finishReply(message: string): void;
}
export declare function getConversation(conv_template: ConvTemplateConfig, conv_config?: Partial<ConvTemplateConfig>, isTextCompletion?: boolean): Conversation;
/**
* Compare the states of two conversation instances. Equality is defined as their getPromptArray()
* should return the exact same things, which is determined by fields: messages, function_string,
* use_function_calling, and override_system_message.
*
* @returns True if `convA` equals to `convB`
* @note We assume convA and convB has the same `this.config`.
*/
export declare function compareConversationObject(convA: Conversation, convB: Conversation): boolean;
/**
* Get a new Conversation object based on the chat completion request.
*
* @param request The incoming ChatCompletionRequest
* @param includeLastMsg Include last message, by default is false. Set to true for testing only.
* @note By default, `request.messages[-1]` is not included as it would be treated as a normal
* input to `prefill()`.
*/
export declare function getConversationFromChatCompletionRequest(request: ChatCompletionRequest, config: ChatConfig, includeLastMsg?: boolean): Conversation;
/**
* Returns the function string based on the request.tools and request.tool_choice, raises erros if
* encounter invalid request.
*
* @param request The chatCompletionRequest we are about to prefill for.
* @returns The string used to set Conversation.function_string
*/
export declare function getFunctionCallUsage(request: ChatCompletionRequest): string;
export {};
//# sourceMappingURL=conversation.d.ts.map