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
TypeScript
/**
* 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