Agent智能体提示词实战:从零构建高效对话系统的核心技巧
基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)技能提升:学会申请、配置与调用火山引擎AI服务定制能力:通过代码修改自定义角色性
快速体验
在开始今天关于 Agent智能体提示词实战:从零构建高效对话系统的核心技巧 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。
我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API?
这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。

从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验
Agent智能体提示词实战:从零构建高效对话系统的核心技巧
刚接触智能体开发时,最让我头疼的就是明明模型能力很强,但实际对话时总出现答非所问的情况。后来发现,问题的关键往往出在提示词设计这个"隐形关卡"上。今天就用最直白的方式,分享如何用提示词打造一个听得懂人话、记得住上下文的AI助手。
为什么你的智能体总在"装傻"?
开发第一个客服机器人时,我遇到过这些典型问题:
- 用户说"太热了",机器人回复"建议多喝热水"(实际需要调空调温度)
- 问完"北京天气"后追问"那上海呢",机器人要求重新说明城市
- 遇到"帮我找个吃饭地方"这种模糊请求直接报错
这些问题的本质,都是提示词没做好三件事:
- 明确角色定位(你是谁)
- 规范处理流程(怎么思考)
- 管理对话记忆(上下文)
三种设计思路大比拼
试过市面上主流的方法后,我的体验对比如下:
- 规则模板(最早尝试)
if "天气" in query:
return get_weather(city=extract_city(query))
优点:响应快,成本低
缺点:要穷举所有可能,遇到"闷得慌"这种说法就失效
- Few-shot learning(中期方案) 在提示词里添加示例:
用户:今天适合出门吗
AI:需要您提供城市名称查询天气后判断
优点:处理部分模糊表达
缺点:示例太多会占用token
- 思维链(CoT)(现在主力)
prompt = """请按步骤思考:
1. 识别用户意图:{query}
2. 提取关键参数
3. 检查是否需追问"""
优点:适合复杂任务
缺点:响应稍慢
手把手搭建分层提示系统
现在展示我的标准模板,这个天气查询助手已经稳定运行半年:
def generate_response(query, history):
system_msg = """你是一个专业天气助手,必须:
- 用中文回答
- 不确定时主动询问
- 保持友好但专业"""
user_msg = f"用户最新询问:{query}"
history_msg = "对话历史:" + "\n".join(history[-3:]) if history else ""
full_prompt = f"{system_msg}\n{history_msg}\n{user_msg}"
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": full_prompt}],
temperature=0.7 # 控制创造性
)
return response.choices[0].message.content
关键改进点:
- 用temperature=0.7平衡准确性与亲和力
- 保留最近3轮对话避免遗忘
- 系统指令强调"必须"条款
必须掌握的避坑技巧
踩过坑后总结的防护措施:
防注入攻击
import re
def sanitize_input(text):
return re.sub(r"[<>{}[]]", "", text) # 移除特殊符号
隐私过滤
def filter_sensitive(text):
return re.sub(r"\d{11}", "[电话]", text) # 隐藏手机号
性能优化实战心得
当响应变慢时,我会检查:
- 是否在提示词里堆砌示例(控制在3个以内)
- 历史对话是否太长(超过5轮就摘要)
- 是否过度使用CoT(简单任务直接用指令)
完整天气助手案例
def weather_agent(query):
# 系统角色设定
role = "你是气象局官方助手,回答需包含:1)温度 2)天气现象 3)出行建议"
# 参数提取
params = {
"city": extract_city(query), # 自定义提取函数
"date": "今天" if "明天" not in query else "明天"
}
# 异常处理
if not params["city"]:
return "请问您想查询哪个城市?"
# 调用天气API
data = get_weather_api(params)
# 生成回复
return f"{data['city']} {params['date']}:{data['temp']}℃,{data['cond']},建议{data['advice']}"
三个优化思考题
- 当用户问"周五的天气怎么样",你的系统如何正确识别日期?(时间解析挑战)
- 如何设计提示词让AI在回答"杭州和上海天气"时能比较两地差异?(多任务处理)
- 发现用户连续询问不同城市天气时,怎样优化能减少API调用次数?(缓存策略)
想自己动手实现这样的智能体?推荐这个零门槛实验:从0打造个人豆包实时通话AI,我用周末时间就完成了第一个能语音对话的天气助手,关键代码都有详细注释,特别适合练手。
实验介绍
这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。
你将收获:
- 架构理解:掌握实时语音应用的完整技术链路(ASR→LLM→TTS)
- 技能提升:学会申请、配置与调用火山引擎AI服务
- 定制能力:通过代码修改自定义角色性格与音色,实现“从使用到创造”
从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验
更多推荐

所有评论(0)