在构建AI回答采集系统时,模型调用是整个链路的核心环节。本文以腾讯混元为例,详细介绍模型调用的工程实践,包括认证方式、SDK使用、流式输出、结构化响应以及错误处理。通过本文,读者可以了解如何设计一个稳定、可扩展的模型调用模块,并掌握关键配置和验证方法。本文适合需要进行AI回答采集或大模型API接入的开发者,需要具备基本的Python或Node.js编程知识,并已开通腾讯云账号及混元模型服务。
在品牌AI可见度监测系统中,我们需要定期向多个AI模型提出预设问题,并采集其回答,以分析品牌在AI答案中的呈现情况。这一过程看似简单,但实际工程化时面临诸多挑战:
本文以腾讯混元为例,分享我们在模型调用环节的工程实践。
我们选择腾讯混元作为模型服务,原因包括:
整体架构如下:
采集任务调度器 -> 模型调用模块 -> 腾讯混元API -> 回答解析与存储模型调用模块负责认证、请求构建、发送、接收和错误处理。
在开始之前,需要准备:
tencentcloud-sdk-python。注意:密钥必须妥善保存,不要提交到代码仓库。建议使用环境变量或密钥管理服务。
使用腾讯云SDK,通过SecretId和SecretKey初始化客户端。示例代码如下:
from tencentcloud.common import credential
from tencentcloud.hunyuan.v20230901 import hunyuan_client, models
cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
client = hunyuan_client.HunyuanClient(cred, "ap-guangzhou")说明:地域需要根据实际服务开通地域填写,此处以ap-guangzhou为例。
构建请求参数,调用ChatCompletions接口。示例:
req = models.ChatCompletionsRequest()
req.Model = "hunyuan-lite"
req.Messages = [
{"Role": "user", "Content": "请介绍一下腾讯云"}
]
resp = client.ChatCompletions(req)
print(resp.Choices[0].Message.Content)说明:模型名称需根据实际可用模型填写,此处以hunyuan-lite为例。
对于长回答,使用流式输出可以提升用户体验。SDK支持流式调用:
req.Stream = True
resp = client.ChatCompletions(req)
for event in resp:
if event.Choices:
print(event.Choices[0].Delta.Content, end="")说明:流式响应需要逐段处理,适合需要实时显示的场景。
为了便于解析,我们要求模型返回JSON格式。通过设置ResponseFormat为json_object:
req.ResponseFormat = {"Type": "json_object"}注意:并非所有模型都支持该参数,需确认模型能力。
网络调用可能遇到限流、超时等错误。我们设计了重试机制:
TencentCloudSDKException,判断错误码。示例:
import time
from tencentcloud.common.exception import TencentCloudSDKException
max_retries = 3
for i in range(max_retries):
try:
resp = client.ChatCompletions(req)
break
except TencentCloudSDKException as e:
if e.code in ["LimitExceeded", "RequestLimitExceeded"]:
time.sleep(2 ** i)
else:
raise验证模型调用是否成功,可以检查:
建议编写单元测试,使用Mock数据模拟响应。
本文介绍了以腾讯混元为例的AI回答采集中的模型调用实践,包括认证、SDK使用、流式输出、结构化响应和错误处理。通过合理的设计,可以构建稳定高效的采集链路。需要注意密钥安全、成本控制和错误处理。未来可考虑增加缓存、任务队列等优化。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。