一、前期准备:环境与工具配置
1.1 账号与权限获取
访问百度智能云官方平台,完成企业/个人开发者实名认证。在控制台搜索”千帆大模型平台”,进入服务管理页面申请ERNIE-Bot API使用权限。需注意:
- 企业用户需完成企业认证以获取更高调用额度
- 个人开发者每日调用次数存在限制(通常500次/日)
- 申请后需等待1-2个工作日完成审核
1.2 开发环境搭建
推荐使用Python 3.8+环境,通过pip安装必要依赖:
pip install requests json5# 可选安装日志库pip install loguru
建议使用虚拟环境管理项目依赖,避免版本冲突:
python -m venv ernie_envsource ernie_env/bin/activate # Linux/Mac.\ernie_env\Scripts\activate # Windows
二、API调用核心流程解析
2.1 认证机制实现
百度千帆平台采用API Key+Secret Key双因子认证,生成访问令牌的完整流程:
- 在控制台获取AK/SK对
- 通过HMAC-SHA256算法生成签名
- 构造包含timestamp、nonce等参数的请求头
示例代码(签名生成部分):
import hmacimport hashlibimport base64import timeimport randomfrom urllib.parse import quotedef generate_signature(method, url, body, ak, sk):timestamp = str(int(time.time()))nonce = str(random.randint(10000, 99999))# 构造待签名字符串string_to_sign = f"{method}\n{url}\n{body}\n{timestamp}\n{nonce}"# HMAC-SHA256签名hmac_code = hmac.new(sk.encode('utf-8'),string_to_sign.encode('utf-8'),hashlib.sha256).digest()# Base64编码signature = base64.b64encode(hmac_code).decode('utf-8')return {'accessKey': ak,'timestamp': timestamp,'nonce': nonce,'signature': signature}
2.2 核心请求构造
ERNIE-Bot API v1版本支持两种调用模式:
- 标准模式:适合单轮问答场景
- 流式模式:支持实时文本生成(SSE协议)
标准模式请求示例:
import requestsimport jsondef call_ernie_bot(prompt, ak, sk):url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions"headers = {'Content-Type': 'application/json'}# 生成认证信息auth_info = generate_signature("POST", url, json.dumps({"messages": [{"role": "user", "content": prompt}]}), ak, sk)# 合并请求头headers.update({'X-Bce-Signature': auth_info['signature'],'X-Bce-Timestamp': auth_info['timestamp'],'X-Bce-Nonce': auth_info['nonce'],'X-Bce-AccessKey': auth_info['accessKey']})data = {"messages": [{"role": "user", "content": prompt}],"temperature": 0.7,"top_p": 0.8,"penalty_score": 1.0}response = requests.post(url,headers=headers,data=json.dumps(data))return response.json()
三、进阶调用技巧
3.1 参数优化策略
| 参数 | 作用范围 | 推荐值 | 适用场景 |
|---|---|---|---|
| temperature | 创造力控制 | 0.3-0.7 | 低值适合事实问答,高值适合创意生成 |
| top_p | 核心词筛选 | 0.8-0.95 | 平衡多样性与相关性 |
| max_tokens | 输出长度 | 200-2000 | 根据应用场景调整 |
| penalty_score | 重复惩罚 | 1.0-1.2 | 减少重复内容生成 |
3.2 错误处理机制
常见错误码及解决方案:
- 401 Unauthorized:检查AK/SK有效性及签名算法
- 429 Too Many Requests:实现指数退避重试机制
- 500 Internal Error:捕获异常并记录上下文信息
推荐实现的重试逻辑:
from time import sleepdef call_with_retry(prompt, ak, sk, max_retries=3):for attempt in range(max_retries):try:result = call_ernie_bot(prompt, ak, sk)if result.get('error_code') == 0:return resultelif result.get('error_code') == 429:wait_time = min(2**attempt, 30)sleep(wait_time)continueelse:raise Exception(f"API Error: {result}")except Exception as e:if attempt == max_retries - 1:raisesleep(2**attempt)
四、性能优化建议
4.1 请求批处理
对于高频调用场景,建议:
- 实现请求队列缓冲机制
- 采用异步IO框架(如aiohttp)
- 控制并发数不超过5个/账号
4.2 响应缓存策略
构建两级缓存体系:
- 短期缓存:Redis存储最近1000条问答对(TTL=5分钟)
- 长期缓存:数据库存储高频问题模板
缓存命中优化示例:
from functools import lru_cache@lru_cache(maxsize=1000)def cached_ernie_call(prompt):# 实际调用逻辑pass
五、安全合规注意事项
- 数据脱敏:调用前过滤用户敏感信息
- 日志管理:存储时去除可识别个人信息
- 内容过滤:后处理阶段增加敏感词检测
- 合规审计:定期检查调用记录是否符合服务条款
六、测试用例设计建议
6.1 功能测试
- 基础问答测试(事实性问题)
- 多轮对话测试(上下文保持)
- 边界条件测试(超长输入/输出)
6.2 性能测试
- 响应时间基准测试(P90/P99指标)
- 并发压力测试(逐步增加QPS)
- 稳定性测试(持续运行24小时)
6.3 兼容性测试
- 不同Python版本测试
- 异常输入处理测试
- 网络波动场景测试
七、后续开发衔接
完成API测试后,可进一步:
- 集成微信公众平台API
- 构建消息路由中间件
- 实现对话状态管理
- 部署监控告警系统
建议采用微服务架构,将大模型调用封装为独立服务,通过RESTful接口与其他组件交互。对于高并发场景,可考虑使用消息队列削峰填谷。
通过本指南的系统学习,开发者已掌握百度千帆ERNIE-Bot大模型API的核心调用方法。后续系列文章将深入讲解如何将这些能力与微信生态深度整合,构建具备上下文理解、多轮对话能力的智能聊天机器人。建议持续关注平台文档更新,及时适配API版本迭代。