《2026 Python零基础入门:用AI主题学编程》第十一课:简单 AI Agent 雏形——判断用户意图 + 调用不同 prompt / 工具,实现更智能的交互
本课讲解简单 AI Agent 雏形:用关键词匹配判断用户意图,根据意图动态切换 system prompt 和回复风格。示例构建能自动区分写作/问答/脑暴模式的交互机器人。学完可让 AI 更智能地响应不同需求,适合零基础读者向个性化 AI 助手方向收尾。
大家好,我是链上杯子(CSDN:链上杯子)。
失业一年了,天天想着怎么翻身。最近的多轮对话虽然能聊了,但模型每次都用同一套风格回复,总觉得不够“聪明”。如果能让程序先判断用户想干什么(写故事?问问题?脑暴想法?),再自动选择不同的 prompt 模板或工具,交互就更像一个有脑子的助手了。今天试着搭一个最简单的 Agent 雏形,感觉离“自己写个小 Grok”又近了一点点,哈哈哈。
本课目标:学会用 if 判断用户意图(关键词匹配或简单分类),根据意图选择不同的 prompt 模板或处理逻辑。构建一个基础 AI Agent,能根据输入自动切换“写作模式”“问答模式”“脑暴模式”等,实现更智能的交互。
核心代码实战
1. 基础意图判断 —— 用关键词匹配
def detect_intent(user_input):
text = user_input.lower()
if any(word in text for word in ["写", "故事", "小说", "文案", "诗", "段落"]):
return "writing"
elif any(word in text for word in ["问", "什么", "怎么", "解释", "介绍", "是", "吗", "?"]):
return "qa"
elif any(word in text for word in ["想法", "脑暴", "点子", "建议", "推荐", "几个"]):
return "brainstorm"
else:
return "general"
# 测试
print(detect_intent("帮我写一段关于未来的短故事")) # writing
print(detect_intent("Python 的列表和元组有什么区别?")) # qa
print(detect_intent("给我脑暴 5 个小红书标题的创意")) # brainstorm
2. 根据意图选择不同 prompt 模板 + 调用 API
import requests
# API 配置(同前课)
api_url = "https://api.deepseek.com/v1/chat/completions"
api_key = "你的 DeepSeek API Key"
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
def get_system_prompt(intent):
if intent == "writing":
return "你是一个专业创意写手,擅长小说、文案、诗词。输出直接开始正文,风格根据用户要求调整。"
elif intent == "qa":
return "你是一个知识渊博的导师,回答问题时准确、简洁、有条理。必要时分点说明。"
elif intent == "brainstorm":
return "你是一个脑暴高手,想法大胆、有趣、多角度。每次给出 5-8 个创意,用编号列出。"
else:
return "你是一个友好助手,根据用户需求自然回复。"
def call_llm(messages):
data = {
"model": "deepseek-chat",
"messages": messages,
"temperature": 0.8,
"max_tokens": 800
}
try:
resp = requests.post(api_url, headers=headers, json=data, timeout=30)
resp.raise_for_status()
return resp.json()["choices"][0]["message"]["content"].strip()
except Exception as e:
return f"调用失败:{str(e)}"
# 主循环
messages = [{"role": "system", "content": "你是一个多功能助手,根据用户意图自动切换模式。"}]
print("=== 简单 AI Agent 开始(输入 'quit' 退出) ===")
while True:
user_input = input("你:")
if user_input.lower() == "quit":
break
intent = detect_intent(user_input)
print(f"[调试] 检测到意图:{intent}")
# 动态调整 system prompt(或追加一条 system 消息)
messages.append({"role": "user", "content": user_input})
# 可以选择在这里插入一条临时 system 消息来强化意图
temp_messages = messages.copy()
temp_messages.insert(1, {"role": "system", "content": get_system_prompt(intent)})
reply = call_llm(temp_messages)
print("AI:", reply)
messages.append({"role": "assistant", "content": reply})
运行示例对话:
- 你:写一个关于猫咪穿越的短故事 → 意图 writing → 用写作风格回复故事
- 你:Python lambda 怎么用? → 意图 qa → 用解释风格分点回答
- 你:脑暴 10 个周末约会点子 → 意图 brainstorm → 列出编号创意
3. 扩展:加“保存历史”命令
# 在循环里加
if user_input.lower() == "save":
import json
with open("agent_history.json", "w", encoding="utf-8") as f:
json.dump(messages, f, ensure_ascii=False, indent=2)
print("历史已保存到 agent_history.json")
continue
小练习(2 道)
练习1(基础)
扩展 detect_intent 函数,增加一个新意图 "translate"(翻译模式),当输入包含“翻译”“翻成”“英文”“日文”等词时返回 "translate"。
然后在 get_system_prompt 里加对应模板,例如“你是一个专业翻译助手,直接输出翻译结果,不加多余解释。”
练习2(进阶)
在主循环中加一个“mode”命令,让用户手动指定模式,例如输入“mode writing”就强制切换到写作模板。
提示:可以用一个变量 current_intent,平时用 detect_intent 自动判断,用户输入 mode 时手动覆盖。
测试混合使用:自动判断 + 手动切换,看模型输出是否更贴合预期。建议保存几轮对话历史对比。
本课小结
本课通过关键词意图判断 + 动态 system prompt,实现了简单 AI Agent 的雏形,能根据用户输入自动切换写作/问答/脑暴等模式。
这是从“工具调用”到“智能决策”的第一步,后续可以扩展更多工具和更强的意图识别。
下节预告
下一课:小项目总结 + 扩展方向 —— 回顾全系列,介绍 LangChain 基础、Streamlit 界面等,帮你规划下一步。
欢迎在评论区贴出你的 Agent 运行截图、意图判断结果或有趣的对话,有问题可以留言。
更多推荐

所有评论(0)