阿里百炼(BaiLian)AI 接入教程(通用版)
适用场景:后端服务需要调用阿里百炼大模型完成文本生成/总结/问答/结构化抽取等任务,并将“发送内容与AI回复”按需落库。本文按通用代码形态整理,可直接映射到你现有的
ApiKey检查、systemPrompt、创建服务、拼接最终提示词、调用ChatWithHistoryAsync、落库与日志流程。
1. 总体流程概览(与代码结构对齐)
典型调用链路可拆为 4 步:
- 读取百炼配置(ApiKey/ModelName/SystemPrompt)
- 若
ApiKey为空:记录日志并跳过 AI 调用(业务可降级为规则/默认文案/不生成)。
- 准备输入数据(业务侧)
-
从业务对象/数据包/数据库中抽取“本次需要模型处理的内容”。
-
对长文本做截断/摘要(必要时分段,多次调用也需保持一致策略)。
- 构造最终提示词(Prompt)
-
systemPrompt:定义角色、边界、风格与禁区(例如“只基于提供内容,不要编造”)。 -
responseFormatHint:定义输出格式(Markdown 结构或 JSON 结构),并要求严格遵守。 -
将多个子问题/多段文本合并成一次请求,保证一致性并降低调用次数。
- 调用百炼并保存结果
-
CreateChatHistory(systemPrompt)创建上下文。 -
ChatWithHistoryAsync(chatHistory, finalPrompt)发起对话。 -
将发送内容与 AI 回复按需落库。
2. 百炼配置说明(Config / BaiLianConfig)
建议配置项:
-
ApiKey:百炼 API 密钥(必须保密) -
ModelName:模型名称(对话模型/指令模型等) -
SystemPrompt:系统提示词(可空;为空时使用默认通用系统提示)
推荐默认系统提示词(通用版):
- “你是一名专业的企业应用助手。请严格基于用户提供的内容回答,不要编造未提供的信息;如信息不足,请说明缺失点并提出需要的补充信息。输出遵循我给定的格式要求。”
配置与密钥建议:
-
不要把
ApiKey写进代码仓库。 -
优先使用环境变量、配置中心加密、KMS/KeyVault 等托管密钥。
-
生产环境对读取密钥与相关配置的权限做最小化。
3. 输入数据准备(通用)
3.1 输入来源
常见输入来源包括:
-
前端提交的表单/富文本
-
设备/第三方系统回传的内容
-
业务数据库中的记录(工单、日志、评论、对话、文档片段)
-
多条子任务(多个问题、多段文本、多条记录)
3.2 输入组织建议
-
只保留与任务相关的字段与片段。
-
为每段输入加上清晰标题/编号,便于模型引用。
-
明确任务目标:生成、总结、对比、抽取、改写、分类等。
4. Prompt 构造:多段合并 + 输出格式约束
4.1 为什么合并多段/多问题
把多个子问题或多段原文合并成一次请求的收益:
-
避免多次调用导致答案风格/结论不一致
-
降低请求次数与成本
-
让模型在更完整上下文内推理(更少误解)
合并策略建议:
-
固定顺序(如
Question1..N或Section1..N) -
每段之间用空行或分隔符清晰分隔
-
对每段加“标题/编号”,方便模型引用
4.2 systemPrompt 与 responseFormatHint 的分工
-
systemPrompt:定义角色、语气、边界(例如“只基于提供内容,不要编造”) -
responseFormatHint:定义输出结构(强约束),例如: -
Markdown 结构:适合直接展示
-
JSON 结构:适合程序解析、入库与前端渲染
4.3 推荐:只返回 JSON(更稳定、更易验收)
如需强一致、可校验、可解析,建议使用 JSON 输出约束,并在服务端做:
-
JSON 解析校验(失败则重试或降级)
-
字段缺失检查
-
字段长度/数组长度限制
JSON 输出示例(仅示意,按你业务字段调整):
{ "Summary": "...", "KeyPoints": ["..."], "Risks": ["..."], "Actions": ["..."] }
5. 日志与错误处理建议
建议生产环境遵循:
-
不打印完整 Prompt 与完整 Reply(避免日志膨胀与信息泄露风险)。
-
只记录必要的诊断信息:
-
请求ID(随机UUID)
-
模型名、耗时、成功/失败、错误码
-
入参长度/摘要哈希(不要记录密钥与凭证)
异常与降级策略建议:
-
超时控制 + 重试(指数退避)
-
熔断/限流保护
-
失败时返回可解释的降级结果(规则建议/空内容/提示补充信息)
6. 落库字段建议(SendContent / AiContent)
推荐最小落库集合:
-
SendContent:最终输入(便于复现与审计) -
AiContent:模型回复 -
ModelName/ 调用耗时 / 调用时间 / 请求ID
存储建议:
-
对
SendContent/AiContent做访问控制(按角色/租户)。 -
为数据设定保留期与删除策略。
7. 可复用提示词模板(通用版)
7.1 通用 systemPrompt(示例)
- “你是企业应用助手。仅基于我提供的内容回答;不要编造;若信息不足请列出缺失点;输出严格遵循格式要求。”
7.2 通用 responseFormatHint(示例:JSON)
- “请只返回 JSON(不要 Markdown/代码块/多余解释),格式:{…}。字段缺失用空字符串或空数组,不要添加未声明字段。”
8. 常见问题(排查清单)
8.1 提示“未配置 API 密钥”
-
检查
ApiKey是否为空/空白 -
检查配置加载来源与权限(环境变量/配置中心/密钥服务)
8.2 AI 返回为空或不稳定
-
输入是否为空或过短
-
是否触发限流/超时
-
输出格式约束是否过弱(建议改为只返回 JSON 并做校验)
8.3 JSON 解析失败
-
提示词是否明确“只返回 JSON”
-
是否包含多余前后缀文本
-
服务端应对失败做重试/纠错/降级
9. 最佳实践小结(可直接作为团队规范)
-
密钥不入库不入日志:不要在任何日志或错误信息中输出 ApiKey/Token。
-
输入可控:长文本做截断/摘要,避免一次请求过大。
-
输出可校验:优先 JSON;解析失败要有重试与降级。
-
可观测性:记录请求ID、耗时、错误码,便于定位问题。
-
可回放:按需保存输入与输出,方便追溯与质量评估。