UNPKG

doomiaichat

Version:

Doomisoft OpenAI

152 lines (138 loc) 3.35 kB
import { EmbeddingItem } from '@azure/openai'; import axios from 'axios'; export interface ApiResult { /** * return the result of api called * @type {boolean} */ 'successed': boolean /** * The error info * @type {any} * @memberof ChatReponse */ 'error'?: any; } /** * Api封装后的返回结果 */ export interface ChatReponse extends ApiResult { /** * The name of the user in a multi-user chat * @type {Array<any>} * @memberof ChatReponse */ 'message'?: Array<any>; 'usage'?: any; } /** * 调用OpenAI Api的参数约定 */ export interface OpenAIApiParameters { 'embedding'?: string, ///模型引擎,兼容Azure 'model'?: string, ///模型名称 'maxtoken'?: number; ///返回的最大token 'temperature'?: number; 'top_p'?: number; 'presence_penalty'?: number; 'frequency_penalty'?: number; 'replyCounts'?: number; ///返回多少答案 'tools'?: Array<any>, 'tool_choice'?: string, 'enableToolCall'?: number ///是否允许调用toolfunction } /** * Azure 上的OpenAI的链接参数 */ export interface ProxyPatameters { 'serviceurl': string; ///端点 } /** * OpenAI Proxy 链接参数 */ export interface AzureOpenAIPatameters { 'endpoint': string; ///端点 'engine': string; ///GPT部署的项目名称 'embedding'?: string; ///向量引擎项目名称 'version'?: string; ///Api 版本 } /** * 调用OpenAI Api的向量约定 */ export interface EmbeddingResult extends ApiResult { 'embedding'?: EmbeddingItem[], } /** * 远程请求的返回 */ export interface RpcResult extends ApiResult { 'data'?: any; } /** * Axios远程请求封装 * @param opts * @returns */ export async function request(opts: any = {}): Promise<RpcResult> { if (!opts.data) opts.data = opts.body; try { let result = await axios(opts); return { successed: true, data: result.data } } catch (err) { return { successed: false, error: err, data: err } } } /** * * @param opts * @returns */ export function requestStream(opts: any = {},processChunkData:Function) { if (!opts.data) opts.data = opts.body; axios(opts) .then((res: any) => { res.data.on('data', (chunk: any) => { processChunkData(chunk); }); }) } /** * 数据缓存提供者接口 */ export interface CacheProvider { /** * 缓存数据 * @param key 数据的键名称 * @param value 数据的键值 */ set(key: string, value: string | object, exp?: number): void; /** * 从缓存中读取数据 * @param key 数据的键名称 */ get(key: string): Promise<string | null>; /** * 删除缓存信息 * @param key 数据的键名称 */ delete(key: string): void; } export interface StabilityOption { 'cfg_scale'?: number, 'clip_guidance_preset'?: string, 'height'?: number, 'width'?: number, 'samples'?: number, 'seed'?: number, 'steps'?: number, 'sampler'?: string, 'negative'?: string, 'engine'?: string, 'endpoint'?: string 'denoising_strength'?: number, 'hr_scale'?: number } export interface StabilityResult extends ApiResult { 'data'?: any; 'type'?: string; }