@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
62 lines (50 loc) • 1.85 kB
text/typescript
import { AIBaseModelCard } from 'model-bank';
import OpenAI from 'openai';
import {
ChatMethodOptions,
ChatStreamPayload,
CreateImagePayload,
CreateImageResponse,
Embeddings,
EmbeddingsOptions,
EmbeddingsPayload,
GenerateObjectOptions,
GenerateObjectPayload,
ModelRequestOptions,
PullModelParams,
TextToImagePayload,
TextToSpeechOptions,
TextToSpeechPayload,
} from '../types';
/* eslint-disable sort-keys-fix/sort-keys-fix , typescript-sort-keys/interface */
export interface LobeRuntimeAI {
baseURL?: string;
chat?(payload: ChatStreamPayload, options?: ChatMethodOptions): Promise<Response>;
generateObject?(payload: GenerateObjectPayload, options?: GenerateObjectOptions): Promise<any>;
embeddings?(payload: EmbeddingsPayload, options?: EmbeddingsOptions): Promise<Embeddings[]>;
models?(): Promise<any>;
textToImage?: (payload: TextToImagePayload) => Promise<string[]>;
createImage?: (payload: CreateImagePayload) => Promise<CreateImageResponse>;
textToSpeech?: (
payload: TextToSpeechPayload,
options?: TextToSpeechOptions,
) => Promise<ArrayBuffer>;
// 模型管理相关接口
pullModel?(params: PullModelParams, options?: ModelRequestOptions): Promise<Response>;
}
/* eslint-enabled */
export abstract class LobeOpenAICompatibleRuntime {
abstract baseURL: string;
abstract client: OpenAI;
abstract chat(payload: ChatStreamPayload, options?: ChatMethodOptions): Promise<Response>;
abstract createImage(payload: CreateImagePayload): Promise<CreateImageResponse>;
abstract generateObject(
payload: GenerateObjectPayload,
options?: GenerateObjectOptions,
): Promise<Record<string, any>>;
abstract models(): Promise<AIBaseModelCard[]>;
abstract embeddings(
payload: EmbeddingsPayload,
options?: EmbeddingsOptions,
): Promise<Embeddings[]>;
}