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