UNPKG

ernie-ai-provider

Version:

Community-built ERNIE AI Provider for Vercel AI SDK - Integrate Baidu's ERNIE models with Vercel's AI application framework

342 lines 7.71 kB
/** * ERNIE 支持的聊天模型 ID */ export type ErnieChatModelId = 'ernie-4.0-8k' | 'ernie-3.5-8k' | 'ernie-lite-8k' | 'ernie-speed-128k' | 'ernie-tiny-8k' | 'ernie-4.0-turbo-8k' | 'ernie-3.5-4k' | (string & {}); /** * 网络搜索配置 * 根据千帆API文档,web_search是一个对象 */ export interface WebSearchConfig { /** * 是否启用网络搜索 */ enable?: boolean; /** * 搜索引擎来源 */ search_source?: string; /** * 搜索时间过滤 */ search_recency_filter?: string; /** * 搜索域名过滤 */ search_domain_filter?: string[]; } /** * 流式响应选项 */ export interface StreamOptions { /** * 流式响应是否输出usage * true: 是,设置为true时,在最后一个chunk会输出usage字段 * false: 否,流式响应默认不输出usage */ include_usage?: boolean; } /** * ERNIE 聊天模型设置 * 完全按照百度千帆API文档定义 */ export interface ErnieChatSettings { /** * 控制输出随机性的参数 * 取值范围:[0, 1] */ temperature?: number; /** * 核采样参数,控制输出多样性 * 取值范围:[0, 1] */ top_p?: number; /** * 通过对已生成的token增加惩罚,减少重复生成的现象 * 值越大表示惩罚越大 * 默认1.0,取值范围:[1.0, 2.0] */ penalty_score?: number; /** * 最大输出令牌数 */ max_tokens?: number; /** * 随机种子,用于确定性采样 * 取值范围: (0,2147483647),会由模型随机生成,默认值为空 * 如果指定,系统将尽最大努力进行确定性采样 */ seed?: number; /** * 生成停止标识 * 当模型生成结果以stop中某个元素结尾时,停止文本生成 * 每个元素长度不超过20字符,最多4个元素 */ stop?: string[]; /** * 频率惩罚参数 */ frequency_penalty?: number; /** * 存在惩罚参数 * 正值根据新token到目前为止是否出现在文本中来对其进行惩罚 * 从而增加模型谈论新主题的可能性 */ presence_penalty?: number; /** * 重复惩罚参数 * 控制模型生成文本时连续序列中的重复度 * 提高repetition_penalty可以降低模型生成的重复度 */ repetition_penalty?: number; /** * 是否以流式接口的形式返回数据 * true:是,按SSE协议逐块返回内容,以一条data: [DONE]消息结束 * false:否,默认false */ stream?: boolean; /** * 流式响应的选项,当字段stream为true时,该字段生效 */ stream_options?: StreamOptions; /** * 网络搜索配置 * 根据千帆API文档,这是一个对象而不是简单的布尔值 */ web_search?: WebSearchConfig; /** * 系统人设 * 用于设定AI的角色和行为模式 */ system?: string; /** * 用户标识符 * 表示最终用户的唯一标识符 */ user_id?: string; /** * 工具调用配置 */ tools?: any[]; /** * 响应格式配置 */ response_format?: { type: 'json_object' | 'text'; }; /** * AI SDK兼容:topP -> top_p */ topP?: number; /** * AI SDK兼容:maxTokens -> max_tokens */ maxTokens?: number; /** * AI SDK兼容:penaltyScore -> penalty_score */ penaltyScore?: number; /** * AI SDK兼容:frequencyPenalty -> frequency_penalty */ frequencyPenalty?: number; /** * AI SDK兼容:presencePenalty -> presence_penalty */ presencePenalty?: number; /** * AI SDK兼容:repetitionPenalty -> repetition_penalty */ repetitionPenalty?: number; /** * AI SDK兼容:enableSearch -> web_search.enable */ enableSearch?: boolean; /** * AI SDK兼容:searchSource -> web_search.search_source */ searchSource?: string; /** * AI SDK兼容:searchRecencyFilter -> web_search.search_recency_filter */ searchRecencyFilter?: string; /** * AI SDK兼容:searchDomainFilter -> web_search.search_domain_filter */ searchDomainFilter?: string[]; /** * AI SDK兼容:userId -> user_id */ userId?: string; /** * AI SDK兼容:streamOptions -> stream_options */ streamOptions?: { includeUsage?: boolean; }; } /** * ERNIE API 响应中的消息格式 */ export interface ErnieMessage { role: 'user' | 'assistant' | 'system' | 'tool'; content: string; name?: string; tool_calls?: any[]; tool_call_id?: string; } /** * 工具调用定义 */ export interface ToolCall { id: string; type: 'function'; function: { name: string; arguments: string; }; } /** * 工具定义 */ export interface Tool { type: 'function'; function: { name: string; description?: string; parameters?: any; }; } /** * ERNIE API 请求参数 * 完全按照百度千帆API文档定义 */ export interface ErnieApiRequest { /** * 模型名称 */ model: string; /** * 聊天上下文信息 */ messages: ErnieMessage[]; /** * 控制输出随机性的参数 */ temperature?: number; /** * 核采样参数 */ top_p?: number; /** * 通过对已生成的token增加惩罚,减少重复生成的现象 */ penalty_score?: number; /** * 最大输出令牌数 */ max_tokens?: number; /** * 随机种子 */ seed?: number; /** * 生成停止标识 */ stop?: string[]; /** * 频率惩罚参数 */ frequency_penalty?: number; /** * 存在惩罚参数 */ presence_penalty?: number; /** * 重复惩罚参数 */ repetition_penalty?: number; /** * 是否以流式接口的形式返回数据 */ stream?: boolean; /** * 流式响应的选项 */ stream_options?: { include_usage?: boolean; }; /** * 网络搜索配置 */ web_search?: { enable?: boolean; enable_citation?: boolean; enable_trace?: boolean; enable_status?: boolean; }; /** * 系统人设 */ system?: string; /** * 用户标识符 */ user_id?: string; /** * 工具调用配置 */ tools?: Tool[]; /** * 响应格式配置 */ response_format?: { type: 'json_object' | 'text'; }; } /** * ERNIE API 响应格式 */ export interface ErnieApiResponse { id: string; object: string; created: number; model: string; choices: Array<{ index: number; message: { role: string; content: string; tool_calls?: ToolCall[]; }; finish_reason: string; }>; usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number; }; } /** * ERNIE 流式响应格式 */ export interface ErnieStreamResponse { id: string; object: string; created: number; model: string; choices: Array<{ index: number; delta: { role?: string; content?: string; tool_calls?: ToolCall[]; }; finish_reason?: string; }>; usage?: { prompt_tokens: number; completion_tokens: number; total_tokens: number; }; } //# sourceMappingURL=ernie-chat-settings.d.ts.map