大模型智能对话系统是AIGC应用落地最直接的产品形态,从客服机器人、办公助手到企业知识问答,底层能力基本一致:理解用户意图、维护多轮上下文、必要时调用工具,再生成自然语言回复。本文以Python为例,走一遍从大模型API接入、多轮会话管理、Function Calling工具调用到评测上线的完整流程,内容可直接套用到生产项目。
对话系统架构分层与模型选型
一套可维护的智能对话系统通常分四层:接入层负责对接网页、IM等渠道;会话层负责存储和传递上下文;业务逻辑层提供订单查询、工单提交等能力;模型层承担推理生成。模型选型重点看三个指标:响应时延、每千Token成本、上下文长度。需要处理长文档或私有知识库的场景,建议选择支持检索增强(RAG)的部署方案,把资料检索结果拼进提示词,而不是把全量文档塞进对话。
大模型API接入与流式输出实现
目前主流大模型API大多兼容OpenAI协议,统一走 /v1/chat/completions。流式输出对对话体验影响明显,首字到达时间直接决定用户感知,客户端按流式逐段渲染即可。示例代码:
import json, requests
def stream_chat(messages, api_key, base_url):
resp = requests.post(
f"{base_url}/v1/chat/completions",
headers={"Authorization": f"Bearer {api_key}"},
json={"model": "gpt-4o", "messages": messages, "stream": True},
timeout=120,
)
for line in resp.iter_lines(decode_unicode=True):
if not line or not line.startswith("data:"):
continue
data = line[5:].strip()
if data == "[DONE]":
break
chunk = json.loads(data)
delta = chunk["choices"][0]["delta"].get("content", "")
if delta:
yield delta
生产环境还要处理重试、超时、限流(429)与内容安全过滤,这些逻辑与业务解耦,单独封装在调用层。
多轮对话的状态管理方案
多轮对话的本质是把历史消息管理好再交给模型。两种常见做法:一是全量携带最近N轮消息,实现简单,适合轮数少的问答;二是对超长历史做摘要压缩,保留早期关键信息。压缩方案示例:
def build_messages(user_id, session_id, max_rounds=10):
history = get_history(session_id)
if len(history) > max_rounds:
keep = history[:-max_rounds]
summary = summarize(keep) # 调用模型生成摘要
history = [
{"role": "system", "content": f"历史对话摘要:{summary}"}
] + history[-max_rounds:]
history.append({"role": "user", "content": "你好,帮我查一下订单状态"})
return history
业务状态(订单号、用户ID、权限)不应混进对话上下文,应单独存表,需要时以system消息注入,避免模型把业务数据当闲聊内容处理。
Function Calling工具调用扩展对话能力
查订单、建工单这类操作必须交给真实系统执行。Function Calling的做法是:声明函数的JSON Schema,模型在需要时返回tool_calls,业务层执行函数并把结果回传模型,由模型生成最终回复。函数描述写得越具体,触发准确率越高。
tools = [{
"type": "function",
"function": {
"name": "query_order_status",
"description": "根据订单号查询订单状态与物流信息",
"parameters": {
"type": "object",
"properties": {
"order_id": {"type": "string", "description": "订单号"}
},
"required": ["order_id"]
}
}
}]
执行侧要做参数校验、超时与错误兜底,工具异常时返回给模型一段错误说明,让模型向用户如实描述,而不是假装成功。
对话质量评测与持续优化闭环
上线前做两层评测:单轮准确性(意图识别率、答案相关性)与多轮一致性(上下文保持、不重复回答)。公开数据集可用MultiWOZ做英文基准,中文场景建议自建评测集,覆盖高频问题和失败样本。每次模型版本或提示词变更后跑回归评测,通过后再灰度上线。
上线后持续收集转人工、反复追问、用户差评三类样本,反向改进提示词和评测集。对话系统不是一次性开发,质量在反馈闭环中逐步提升。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/da-mo-xing-zhi-neng-dui-hua-xi-tong-kai-fa-shi-zhan-cong/