import { default as OpenAI } from 'openai'; import { Stream } from 'openai/streaming'; import { APIResource } from '../../../resource'; export declare class Completions extends APIResource { protected endpoints: Record; /** * 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; create(body: ChatCompletionCreateParamsStreaming, options?: OpenAI.RequestOptions): Promise>; static buildCreateParams(params: ChatCompletionCreateParams): ChatCompletions.ChatCompletionCreateParams; static fromResponse(model: string, data: ChatCompletions.APIResponse): OpenAI.ChatCompletion; static fromOpenAIStream(model: string, stream: Stream, controller: AbortController): Stream; /** * 构建错误 * * @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 { model: ChatModel; disable_search?: boolean | null; enable_citation?: boolean | null; } export interface ChatCompletionCreateParamsStreaming extends Pick { 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; }; }