@h-lumos/llm-sdk
Version:
149 lines (147 loc) • 6.09 kB
TypeScript
import { default as OpenAI } from 'openai';
import { Stream } from 'openai/streaming';
import { APIResource } from '../../../resource';
export declare class Completions extends APIResource {
protected endpoints: Record<ChatModel, string>;
/**
* Creates a model response for the given chat conversation.
*
* 文心一言 由于分发在不同的平台,所以有不同的文档
* 百度云的响应和 OpenAI 的比较类似,但授权没有 AI Studio 方便
* 之前 AI Studio 的文档是有文档的,但现在不知道去哪了
* 参考:
* - https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11
* - https://github.com/PaddlePaddle/ERNIE-Bot-SDK/blob/develop/erniebot/backends/aistudio.py
*/
create(body: ChatCompletionCreateParamsNonStreaming, options?: OpenAI.RequestOptions): Promise<OpenAI.ChatCompletion>;
create(body: ChatCompletionCreateParamsStreaming, options?: OpenAI.RequestOptions): Promise<Stream<OpenAI.ChatCompletionChunk>>;
static buildCreateParams(params: ChatCompletionCreateParams): ChatCompletions.ChatCompletionCreateParams;
static fromResponse(model: string, data: ChatCompletions.APIResponse): OpenAI.ChatCompletion;
static fromOpenAIStream(model: string, stream: Stream<ChatCompletions.APIResponse>, controller: AbortController): Stream<OpenAI.ChatCompletionChunk>;
/**
* 构建错误
*
* @param code -
* @param message -
* @returns 错误
*/
static makeAPIError(code: number, message: string): import('openai/error').APIError;
/**
* 如果 code 不为 0,抛出 APIError
*
* @param code -
* @param message -
*/
static assert(resp: ChatCompletions.APIResponse): void;
}
export interface ChatCompletionCreateParamsNonStreaming extends Pick<OpenAI.ChatCompletionCreateParamsNonStreaming, 'messages' | 'functions' | 'temperature' | 'top_p' | 'presence_penalty' | 'stream' | 'stop' | 'user'> {
model: ChatModel;
disable_search?: boolean | null;
enable_citation?: boolean | null;
}
export interface ChatCompletionCreateParamsStreaming extends Pick<OpenAI.ChatCompletionCreateParamsStreaming, 'messages' | 'functions' | 'temperature' | 'top_p' | 'presence_penalty' | 'stream' | 'stop' | 'user'> {
model: ChatModel;
disable_search?: boolean | null;
enable_citation?: boolean | null;
}
export type ChatCompletionCreateParams = ChatCompletionCreateParamsNonStreaming | ChatCompletionCreateParamsStreaming;
export type ChatModel = 'ernie-bot' | 'ernie-bot-turbo' | 'ernie-bot-4' | 'ernie-bot-8k';
export declare namespace ChatCompletions {
interface ChatCompletionCreateParams {
/**
* 模型名称
*/
model: ChatModel;
/**
* 是否强制关闭实时搜索功能,默认 false,表示不关闭
*
* @defaultValue false
*/
disable_search?: boolean | null;
/**
* 是否开启上角标返回,说明:
* (1)开启后,有概率触发搜索溯源信息search_info,search_info内容见响应参数介绍
* (2)默认false,不开启
*
* @defaultValue false
*/
enable_citation?: boolean | null;
/**
* 模型人设,主要用于人设设定,例如,你是xxx公司制作的AI助手,说明:
* (1)长度限制1024个字符
* (2)如果使用 functions 参数,不支持设定人设 system
*
* @remarks OpenAI 是通过 messages 的 role 来区分的
*/
system?: string | null;
/**
* 聊天上下文信息
*
* @remarks 不支持 system 角色
*/
messages: OpenAI.ChatCompletionCreateParams['messages'];
/**
* 一个可触发函数的描述列表
*/
functions?: OpenAI.ChatCompletionCreateParams['functions'];
/**
* 内容随机性
*
* 说明:
* (1)较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定
* (2)默认0.8,范围 (0, 1.0],不能为0
* (3)建议该参数和 top_p 只设置1个
* (4)建议 top_p 和 temperature 不要同时更改
*/
temperature?: number | null;
/**
* 生成文本的多样性
*
* 说明:
* (1)影响输出文本的多样性,取值越大,生成文本的多样性越强
* (2)默认0.8,取值范围 [0, 1.0]
* (3)建议该参数和 temperature 只设置1个
* (4)建议 top_p 和 temperature 不要同时更改
*/
top_p?: number | null;
/**
*
* 通过对已生成的token增加惩罚,减少重复生成的现象。说明:
* (1)值越大表示惩罚越大
* (2)默认1.0,取值范围:[1.0, 2.0]
*
* @remarks 在 OpenAI 中,参数名为 presence_penalty
*/
penalty_score?: number | null;
/**
* 是否以流式接口的形式返回数据,默认 false
*/
stream?: boolean | null;
/**
* 生成停止标识,当模型生成结果以stop中某个元素结尾时,停止文本生成。说明:
* (1)每个元素长度不超过20字符
* (2)最多4个元素
*/
stop?: string | string[] | undefined;
/**
* 表示最终用户的唯一标识符,可以监视和检测滥用行为,防止接口恶意调用
*
* @remarks OpenAI 中是通过 user 区分
*/
user_id?: string | undefined;
}
type ChatCompletion = {
id: string;
result: string;
created: string;
is_end: boolean;
is_truncated: boolean;
need_clear_history: boolean;
usage: OpenAI.CompletionUsage;
};
type APIResponse = {
errorCode: number;
errorMsg: string;
result: ChatCompletion;
};
}