把前 19 天的知识串起来,我用 Python 做了个能聊天的客服机器人
✨ 从零到一做出第一个 AI 应用,从此不是"只会看教程"
API 调用不是目的,
是解决问题的工具。
90% 的人学完还在"收藏=学会",老手已经做出能用的机器人。
"小雪,我淘宝店每天客服咨询 200+,80% 都是重复问题:'发什么快递'、'什么时候发货'、'能便宜吗'。我雇了 3 个客服,每天还是回复不过来,差评越来越多。"
我问他:"这些问题有标准答案吗?"
他说:"有啊,都是固定的。发圆通、48 小时发货、不议价。"
我给他写了个客服机器人:
class CustomerServiceBot:
def chat(self, question):
# 自动回答客户问题
answer = call_ai(question)
return answer
现在,80% 的常见问题机器人自动回复,3 个客服只处理 20% 的复杂问题。
✅ 客服成本从 15000/月降到 5000/月,省下的钱够再开一家店。
这不是代码,这是竞争力。✿
| 响应速度 | 秒回 | |
| 工作时间 | 7×24 小时 | |
| 成本 | 500 元/月(API 费) | |
| 情绪波动 | 永远耐心 | |
| 知识更新 | 改提示词即可 | |
| 并发能力 | 1 对无限 |
💡 关键理解:AI 不是替代人,是让人做更有价值的事。客服从重复问答中解放,去处理复杂投诉和客户关系。
用户提问 → 程序接收 → 调用 API → 模型生成 → 返回回答 → 显示给用户
↓
保存对话历史(下次能记住上下文)
👂 用户输入 = 耳朵(听):接收问题
👄 API 客户端 = 嘴巴(说):发送请求
🎭 系统提示词 = 人设(身份):设定角色
🧠 对话历史 = 记忆(脑):记住上下文
🛡️ 错误处理 = 免疫系统:出问题时不崩溃
# 导入 OpenAI 库
import openai
# 配置 API 密钥(从环境变量读取更安全,详见下文避坑指南)
openai.api_key = "sk-你的 API Key"
# 定义智能客服机器人类
class CustomerServiceBot:
"""智能客服机器人,支持多轮对话和错误处理"""
# 初始化方法:设定机器人角色,初始化对话历史
def __init__(self, product_name="AI 学习课程"):
# 保存产品名称
self.product_name = product_name
# 设定机器人角色提示词
self.system_prompt = f"""你是一个专业的客服助手,负责解答关于{product_name}的问题。
要求:
1. 回答准确、友好、简洁
2. 不知道的问题诚实承认
3. 每次回答控制在 200 字以内"""
# 初始化对话历史,第一条是系统提示词
self.history = [{"role": "system", "content": self.system_prompt}]
# 核心对话方法:接收用户问题,返回 AI 回答
def chat(self, user_input):
# 添加用户问题到对话历史
self.history.append({"role": "user", "content": user_input})
try:
# 调用 OpenAI API 获取回答
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 使用的模型
messages=self.history, # 传入完整对话历史(实现多轮对话)
temperature=0.7, # 回答随机性(0-2,越大越有创意)
max_tokens=300 # 最大输出长度(控制费用)
)
# 提取回答内容
answer = response.choices[0].message.content
# 把 AI 回答保存到对话历史(下次对话能记住上下文)
self.history.append({"role": "assistant", "content": answer})
# 返回回答给用户
return answer
# 错误处理:API 调用失败时不崩溃,返回友好提示
except Exception as e:
return f"抱歉,出了点问题:{e}"
# 清空对话历史方法
def clear(self):
"""清空对话历史,重新开始对话"""
self.history = [{"role": "system", "content": self.system_prompt}]
# 主程序:交互式对话
if __name__ == "__main__":
# 打印欢迎信息
print("=" * 50)
print("🤖 智能客服机器人 v1.0")
print("=" * 50)
# 创建机器人实例
bot = CustomerServiceBot(product_name="AI 学习课程")
print("\n💬 开始对话(输入'quit'退出,'clear'清空)\n")
# 循环接收用户输入
while True:
user_input = input("👤 你:").strip()
# 退出命令
if user_input.lower() in ["quit", "exit"]:
print("👋 再见!")
break
# 清空历史命令
if user_input.lower() == "clear":
bot.clear()
print("✅ 已清空\n")
continue
# 调用机器人对话方法,打印回答
answer = bot.chat(user_input)
print(f"🤖 客服:{answer}\n")
💡 运行方法:保存为 bot.py,终端运行 python bot.py
可以来「搭纸」小程序里,在这里有一群人一起努力,可以互相鼓励,一起坚持。
✅ 个人日程 — 可以记录自己重要的日程,提醒你
✅ 习惯打卡 — 创建你学习AI的习惯,提醒你打卡
✅ 打卡分享 — 分享你的学习感受,让更多的人看到你的优先
点击下方小程序卡片「搭纸」快来一起学习
关注公众号,可私信进学习交流群 🎁
==================================================
🤖 智能客服机器人 v1.0
==================================================
💬 开始对话(输入'quit'退出,'clear'清空)
👤 你:这个课程多少钱?
🤖 客服:我们的 AI 学习课程售价 199 元,包含 180 天的完整学习内容和社群服务。
👤 你:学完能找到工作吗?
🤖 客服:这取决于你的学习投入和基础。课程从零开始,完成后可掌握 AI 应用开发技能。
👤 你:有优惠吗?
🤖 客服:目前有两种优惠:学生凭证 8 折,团报(3 人及以上)7 折。
👤 你:quit
👋 再见!
✅ 看,机器人记住了上下文!问价格→问就业→问优惠,对话连贯自然。
def chat(question):
# 错误:每次都只发当前问题,不保存历史
# 机器人无法记住上文,不能连续对话
messages = [{"role": "user", "content": question}]
response = openai.ChatCompletion.create(messages=messages)
⚠️ 后果:机器人没有记忆,每轮对话都是新的,无法连续聊天。
class ChatBot:
def __init__(self):
# 正确:用类变量保存对话历史
self.history = [...]
def chat(self, question):
# 正确:每次把用户问题添加到历史
self.history.append({"role": "user", "content": question})
# ... 调用 API
# 正确:把机器人回答也保存到历史
self.history.append({"role": "assistant", "content": answer})
# 错误:没有错误处理,出错直接崩溃
# 网络波动、Key 错误、限流都会导致程序闪退
response = openai.ChatCompletion.create(...)
⚠️ 后果:网络波动、Key 错误、限流都会让程序崩溃。
try:
# 尝试调用 API
response = openai.ChatCompletion.create(...)
# 处理限流错误
except openai.error.RateLimitError:
# 返回友好提示,不崩溃
return "请求太多,请稍后再试"
# 处理其他所有异常
except Exception as e:
# 返回错误信息,程序继续运行
return f"抱歉,出了点问题:{e}"
# 错误:直接把 API Key 写在代码里
# 上传 GitHub 会被爬虫抓取,导致 Key 被盗用
# 可能会被刷爆信用卡!
openai.api_key = "sk-xxxxx"
⚠️ 后果:Key 被盗用,信用卡被刷爆。
# 正确:从环境变量读取 API Key
# 代码里不出现明文,不会泄露
import os
openai.api_key = os.getenv("OPENAI_API_KEY")
💡 设置环境变量:
Mac/Linux: export OPENAI_API_KEY=sk-xxx
Windows: set OPENAI_API_KEY=sk-xxx
1. 复制上面的完整代码
2. 替换 API Key 为你的真实密钥
3. 修改产品名称为"Python 入门课"
4. 运行程序,测试以下问题:
• "学完能找到工作吗?"
• "有优惠吗?"
• "课程多长时间?"
def chat(self, user_input):
# 思路:先检查是否是常见固定问题
# 如果是,直接返回预设答案,节省 API 费用
if "价格" in user_input or "多少钱" in user_input:
# 价格问题,直接回答
return "我们的课程售价 199 元"
elif "时间" in user_input or "几天" in user_input:
# 时长问题,直接回答
return "课程共 180 天,每天 30 分钟"
else:
# 非常见问题,再调用 AI API
return self.call_api(user_input)
# 提示:每次对话后追加写入文件
# 'a' 表示追加模式,不会覆盖之前的记录
# encoding="utf-8" 支持中文
with open("chat_history.txt", "a", encoding="utf-8") as f:
# 写入用户提问
f.write(f"用户:{user_input}\n")
# 写入客服回答
f.write(f"客服:{answer}\n\n")
💡 提交方式:在评论区晒出你的运行截图,我会逐一点评!
✅ 理解智能客服工作流程
✅ 封装可复用的 API 调用函数
✅ 添加错误处理和重试机制
✅ 支持多轮对话(记住上下文)
✅ 完成第一个可运行的 AI 应用
🎉 第一阶段(大模型 API 调用基础)完成!
从明天开始,我们进入 Prompt 工程 系列,学习如何让大模型给出更准确、更有用的回答。
明天见! 👋
📌 记得把代码运行起来,动手实践比只看更重要!✿
关注公众号,下篇Prompt 工程基础




