一、认识
百度千帆大模型平台预置了全系列文心大模型与上百个精选第三方模型,构建了一个庞大而丰富的模型生态系统。从旗舰级通用模型到主力级、轻量级模型,一应俱全,能够满足不同行业、不同场景下的多样化需求。
旗舰级通用模型,如 ERNIE 4.0 Turbo,堪称大模型领域的 “全能冠军”。它具备强大的通用能力,广泛适用于各领域复杂任务场景。在逻辑推理和代码等复杂任务上表现卓越,对比 ERNIE 4.0,输出更长,时延更短,为用户提供更加精准、高效的服务。无论是文本创作、知识问答,还是复杂的数据分析和决策支持,它都能轻松应对,以出色的表现助力企业解决各种难题。
二、逐行参数作用与限制详解
- .model()
-
核心作用:指定调用的千帆大模型版本,是大模型调用的 “基础选择”。
-
常见取值限制:需符合千帆平台支持的模型列表,例如:
- 通用模型:ERNIE-4.0(旗舰)、ERNIE-3.5-Turbo(轻量);
- 行业模型:Medical-ERNIE(医疗)、Financial-ERNIE(金融);
- 错误示例:若传入未授权或不存在的模型名(如 GPT-4),会返回 “模型不存在” 错误。
- .temperature(0.6)
- 核心作用:控制模型输出的 “随机性”,是平衡 “准确性” 与 “创造性” 的关键参数。
- 取值范围:0~2(浮点数),不同区间效果差异显著:
| 取值区间 | 输出特点 | 适用场景 |
|---|---|---|
| 0~0.3 | 输出固定、严谨 | 事实问答、代码生成、数据计算 |
| 0.4~0.8 | 兼顾准确性与多样性 | 文案创作、方案建议 |
| 1.0~2.0 | 输出灵活、发散(易跑偏) | 创意写作、头脑风暴 |
- 注意:若任务需固定答案(如 “计算 2+3”),建议设为 0;若需多样文案(如 “写 3 条产品 slogan”),可设为 0.8~1.0。
- .maxOutputTokens(2048)
- 核心作用:限制模型输出的 “最大长度”(含汉字、字母、标点,1 个汉字≈2 个 Token),避免输出过长导致成本升高或超时。
- 取值限制:
- 受模型本身支持的最大 Token 限制(如 ERNIE-3.5-Turbo 支持最大 4096 Token,含输入 + 输出);
- 若设置超过模型上限(如给 ERNIE-3.5-Turbo 设为 5000),会自动降至模型最大支持值;
- 实际输出长度 = 输入 Token 数 + 输出 Token 数 ≤ 模型最大 Token 数(需预留输入长度,避免输出被截断)。
- 示例:若输入 prompt 占 512 Token,设置 maxOutputTokens=2048,则实际最大输出约 1536 Token(≈768 个汉字)。
- .addMessage("user", prompt)
- 核心作用:构造 “对话上下文”,明确当前输入的 “角色” 与 “内容”,是多轮对话的基础。
- 参数含义:
- 第一个参数:角色(固定取值 user,代表用户输入;其他角色如 system 用于设置系统提示,assistant 用于传入历史回复);
- 第二个参数:prompt,即用户的具体需求(如 “介绍百度千帆大模型的安全特性”)。
- 多轮对话示例:若需上下文连贯,需连续添加历史消息:
TypeScript取消自动换行复制
.addMessage("user", "什么是 RAG?") // 第一轮用户提问
.addMessage("assistant", "RAG 是检索增强生成技术...") // 第一轮模型回复
.addMessage("user", "RAG 在千帆平台怎么用?") // 第二轮用户追问(依赖历史上下文)
- .execute()
- 核心作用:触发大模型 API 调用,发送请求并获取返回结果,是调用流程的 “最后一步”。
- 执行逻辑:
- 客户端将参数封装为 HTTP 请求(含 API Key、模型参数、对话内容);
- 发送至百度千帆大模型服务器;
- 服务器处理后返回 ChatResponse 对象(含 result 输出内容、tokenUsage Token 消耗、requestId 请求 ID);
- 异常处理:若网络超时、API Key 无效或参数错误,会抛出异常(如 BceServiceException),需在代码中捕获处理。
6.topP(0.9)
- 核心作用:与 temperature 类似,用于控制输出随机性,但逻辑不同 —— 通过 “累积概率” 筛选候选词,避免极端随机或保守,常与 temperature 二选一使用(不建议同时调整)。
- 取值范围:0~1(浮点数),含义为 “只从概率总和达到该值的候选词中选择输出”:
- 0.1~0.5:仅选高概率词,输出更聚焦、严谨(适合事实类任务,如法律条文解读);
- 0.6~0.9:兼顾概率与多样性(适合产品介绍、方案框架撰写);
- 0.95~1.0:包含低概率词,输出更灵活(适合创意发散,如广告文案构思)。
- 注意:若已设置 temperature(如 0.6),建议 topP 保持默认(通常 1.0),避免参数冲突导致输出不可控。
- .stop(List.of("。", "?"))
- 核心作用:设置 “终止符”,当模型输出中出现指定字符 / 字符串时,立即停止生成,避免冗余内容。
- 取值限制:支持单个字符(如 ";")、短语(如 "END")或多组终止符(需用列表传入),最多设置 4 个终止符。
- 适用场景:
- 生成短句任务:如 “生成 5 个四字成语,用‘。’分隔”,设置 .stop(List.of("。")) 可确保每个成语独立输出;
- 格式约束任务:如 “写产品卖点,每条以‘-’开头,以‘;’结尾”,设置 .stop(List.of(";")) 避免单条卖点过长。
- .systemPrompt("你是专业的电商运营顾问,仅用简洁语言回答电商相关问题")
- 核心作用:定义模型的 “身份与规则”,约束输出范围和风格,是提升任务适配性的关键参数。
- 取值要点:
- 明确身份:如 “你是医疗领域助手,仅回答常见疾病预防问题,不涉及诊断建议”;
- 限定风格:如 “回答需口语化,避免专业术语,适合面向中老年用户”;
- 禁止行为:如 “不回答与教育无关的问题,若用户提问无关内容,回复‘请咨询教育相关问题’”。
- 示例:若用于电商客服场景,systemPrompt 可设为 “你是电商售后客服,回复需包含‘亲’开头、‘哦’结尾,且需在 3 句话内解决用户退款疑问”。
- .stream(Boolean.TRUE)
- 核心作用:控制输出模式为 “流式输出”(实时逐句返回)或 “完整输出”(等待全部内容生成后返回),影响用户体验和接口耗时。
- 取值限制:仅支持 true(流式)或 false(非流式,默认):
- 流式输出(true):适合对话机器人、实时内容生成场景(如 AI 写作助手),用户无需等待全部内容生成,可快速看到部分结果;
- 非流式输出(false):适合需要完整内容的场景(如报告生成、代码文件输出),避免逐句接收导致的内容拼接问题。
- 注意:流式输出需在代码中处理 “分块接收” 逻辑(如 Java 中监听 onMessage 事件),否则可能无法正常获取完整内容。
- .penaltyScore(1.2)
- 核心作用:控制 “重复词惩罚力度”,降低模型输出中重复内容的概率(如避免连续重复 “很好”“不错” 等词汇)。
- 取值范围:1.0~2.0(浮点数),值越大惩罚越强:
- 1.0~1.1:轻微惩罚,允许少量重复(适合故事续写,保留情节连贯性);
- 1.2~1.5:中度惩罚,显著减少重复(适合文案创作、多观点输出);
- 1.6~2.0:强惩罚,严格限制重复(适合长文本生成,如报告、论文,避免段落内容冗余)。
- 示例:若生成产品描述时,模型频繁重复 “高品质”,可将 penaltyScore 设为 1.3,提升内容多样性。
四、参数组合进阶示例(多场景适配)
场景 1:电商产品标题生成
TypeScript取消自动换行复制
.model("ERNIE-3.5-Turbo")
.systemPrompt("你是电商标题生成专家,标题需包含核心关键词(如‘夏季’‘纯棉’),控制在 15 字以内,风格活泼")
.temperature(0.7)
.maxOutputTokens(100)
.stop(List.of(",")) // 确保单条标题以“,”终止,便于批量生成
.execute();
场景 2:医疗常识问答
TypeScript取消自动换行复制
.model("Medical-ERNIE")
.systemPrompt("你是医疗科普助手,仅回答常见疾病的预防方法,不涉及诊断、用药建议,回答需用通俗语言,每条不超过 2 句话")
.temperature(0.2)
.penaltyScore(1.1)
.addMessage("user", "如何预防感冒?")
.execute();