apphouse
Version:
Component library for React that uses observable state management and theme-able components.
43 lines (42 loc) • 1.6 kB
TypeScript
import { Chat, List } from '..';
import { ChatHistory } from './Chat';
import { ChatCompletionMessageParam } from 'openai/resources/index.mjs';
export interface OpenAiChatApi {
chatCompletion: (history: ChatHistory) => Promise<any>;
createAudioTranscription: (file: File) => Promise<any>;
uploadFile: (file: File) => Promise<any>;
}
export type ChatCompletionMessage = ChatCompletionMessageParam & {
id: string;
};
export type ChatRoomHistory = List<ChatCompletionMessage>;
export declare class OpenAiChat {
chat: Chat;
loadingAiResponse: boolean;
api: OpenAiChatApi;
constructor(api: OpenAiChatApi);
get lastAssistantMessageIndex(): number;
get history(): ChatHistory;
/**
* The api does not include an id for the message, so we strip these out
*/
get chatAiChatHistory(): {
userId: string;
content: string;
}[];
addMessage: (message: ChatCompletionMessage) => void;
requestAudioTranscription: (file: File) => Promise<void>;
uploadFile: (file: File) => Promise<void>;
sendUserMessage: (message: string) => Promise<void>;
setAiLoading: (loading: boolean) => void;
/**
* Handle error when content length is exceeded
* code: "context_length_exceeded"
* message: "This model's maximum context length is 4097 tokens. However, your messages resulted in 4176 tokens. Please reduce the length of the messages."
* param: "messages"
* type: "invalid_request_error"
*/
private handleErrorContentLengthExceeded;
private resolveErrorMessage;
private handleErrorMessage;
}