暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

跟着教程做了个客服机器人,帮我每个月省了10000块

何先振 2026-04-15
67
📝 Day 25 · 大模型 API 调用基础

把前 19 天的知识串起来,我用 Python 做了个能聊天的客服机器人

✨ 从零到一做出第一个 AI 应用,从此不是"只会看教程"

🌟 学完这篇你将获得
💰 独立做出第一个可运行的 AI 应用
⏰ 手动回复 1 小时→机器人自动回复 30 秒
📚 学习时间 50 分钟

⚡ 30 秒速读
核心结论:智能客服就 4 步:接收问题→调用 API→获取回答→保存历史
真实收益:7×24 小时在线,客服成本从 15000/月降到 5000/月
关键技巧:用 class 封装机器人,用 try-except 处理错误
最大坑点:忘记保存对话历史、不处理 API 错误、Key 泄露

API 调用不是目的,
是解决问题的工具。
90% 的人学完还在"收藏=学会",老手已经做出能用的机器人。


🎯 从一个真实故事开始

"小雪,我淘宝店每天客服咨询 200+,80% 都是重复问题:'发什么快递'、'什么时候发货'、'能便宜吗'。我雇了 3 个客服,每天还是回复不过来,差评越来越多。"

我问他:"这些问题有标准答案吗?"

他说:"有啊,都是固定的。发圆通、48 小时发货、不议价。"

我给他写了个客服机器人:

📄 核心代码
class CustomerServiceBot:
    def chat(self, question):
        # 自动回答客户问题
        answer = call_ai(question)
        return answer

现在,80% 的常见问题机器人自动回复,3 个客服只处理 20% 的复杂问题。

✅ 客服成本从 15000/月降到 5000/月,省下的钱够再开一家店。

这不是代码,这是竞争力。✿


📊 人工客服 vs AI 客服对比
对比项
❌ 人工客服
✅ AI 客服机器人
响应速度
30 秒 -5 分钟
秒回
工作时间
8 小时/天
7×24 小时
成本
5000 元/月/人
500 元/月(API 费)
情绪波动
会累会烦
永远耐心
知识更新
需要培训
改提示词即可
并发能力
1 对 1
1 对无限

💡 关键理解:AI 不是替代人,是让人做更有价值的事。客服从重复问答中解放,去处理复杂投诉和客户关系。


📊 智能客服工作流程
📄 工作流程图
用户提问 → 程序接收 → 调用 API → 模型生成 → 返回回答 → 显示给用户

         ↓
    保存对话历史(下次能记住上下文)

核心组件(5 个)

👂 用户输入 = 耳朵(听):接收问题
👄 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 应用,你需要记录哪些东西?

可以来「搭纸」小程序里,在这里有一群人一起努力,可以互相鼓励,一起坚持。

✅ 个人日程 — 可以记录自己重要的日程,提醒你

✅ 习惯打卡 — 创建你学习AI的习惯,提醒你打卡

✅ 打卡分享 — 分享你的学习感受,让更多的人看到你的优先

点击下方小程序卡片「搭纸」快来一起学习

关注公众号,可私信进学习交流群 🎁



🎬 运行效果演示
📄 终端输出
==================================================
🤖 智能客服机器人 v1.0
==================================================

💬 开始对话(输入'quit'退出,'clear'清空)

👤 你:这个课程多少钱?
🤖 客服:我们的 AI 学习课程售价 199 元,包含 180 天的完整学习内容和社群服务。

👤 你:学完能找到工作吗?
🤖 客服:这取决于你的学习投入和基础。课程从零开始,完成后可掌握 AI 应用开发技能。

👤 你:有优惠吗?
🤖 客服:目前有两种优惠:学生凭证 8 折,团报(3 人及以上)7 折。

👤 你:quit
👋 再见!

✅ 看,机器人记住了上下文!问价格→问就业→问优惠,对话连贯自然。


⚠️ 常见错误(避坑指南)
01 忘记保存对话历史
❌ 错误写法:
📄 错误代码
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})

02 不处理 API 错误
❌ 错误写法:
📄 错误代码
# 错误:没有错误处理,出错直接崩溃
# 网络波动、Key 错误、限流都会导致程序闪退
response = openai.ChatCompletion.create(...)

⚠️ 后果:网络波动、Key 错误、限流都会让程序崩溃。

✅ 正确写法:
📄 正确代码
try:
    # 尝试调用 API
    response = openai.ChatCompletion.create(...)
# 处理限流错误
except openai.error.RateLimitError:
    # 返回友好提示,不崩溃
    return "请求太多,请稍后再试"
# 处理其他所有异常
except Exception as e:
    # 返回错误信息,程序继续运行
    return f"抱歉,出了点问题:{e}"

03 API Key 直接写代码里
❌ 错误写法:
📄 错误代码
# 错误:直接把 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


✅ 今日作业
01 基础题(必做)

1. 复制上面的完整代码
2. 替换 API Key 为你的真实密钥
3. 修改产品名称为"Python 入门课"
4. 运行程序,测试以下问题:

• "这个课程多少钱?"
• "学完能找到工作吗?"
• "有优惠吗?"
• "课程多长时间?"
02 进阶题
给客服机器人添加固定问答功能(不调用 API,直接返回):
📄 提示代码
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)

03 挑战题
改造代码,将对话记录保存到文件:
📄 提示代码
# 提示:每次对话后追加写入文件
# '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 工程基础

文章转载自何先振,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论