doomiaichat
Version:
Doomisoft OpenAI
152 lines (138 loc) • 3.35 kB
text/typescript
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;
}