4. 构建一个简单的聊天机器人

任务目标

基于大模型API,实现一个支持多轮对话的聊天机器人。机器人需要维护会话历史,将用户输入与历史消息一并发送给模型,使模型能够理解上下文并给出连贯回复。

环境与依赖

本案例使用 Python SDK 调用大模型API(兼容接口的服务均可,如DeepSeek、Moonshot等)。需安装:

pip install 

同时需要准备一个有效的和Base URL(如使用DeepSeek:https://api.deepseek.com)。

完整实现

以下代码实现了一个命令行多轮聊天机器人。核心逻辑是:将每次用户输入追加到 messages 列表,连同历史消息一起发送给模型,再将模型回复追加回列表,从而实现上下文记忆。

from  import 

# ========== 配置区 ==========
 = "your--here"       # 替换为你的
BASE_URL = "https://api.deepseek.com"  # 替换为你的服务地址
MODEL = "deepseek-chat"              # 替换为你的模型名称
# ============================

client = (=, base_url=BASE_URL)

# 系统提示词:定义机器人角色
messages = [
    {"role": "system", "content": "你是一个乐于助人的中文聊天助手,回答简洁友好。"}
]

print("聊天机器人已启动(输入 exit 或 quit 退出)")
print("-" * 40)

while True:
    user_input = input("你: ").strip()
    if user_input.lower() in ("exit", "quit"):
        print("再见!")
        break
    if not user_input:
        continue

    # 将用户消息加入历史
    messages.append({"role": "user", "content": user_input})

    # 调用大模型API
    response = client.chat.completions.create(
        model=MODEL,
        messages=messages,
        temperature=0.7,
        max_tokens=1024
    )

    # 获取模型回复
    assistant_reply = response.choices[0].message.content
    print(f"机器人: {assistant_reply}")

    # 将模型回复加入历史,供下一轮使用
    messages.append({"role": "assistant", "content": assistant_reply})

运行方式

  1. 将代码中的 、BASE_URL、MODEL 替换为你的实际配置。
  2. 保存为 chatbot.py,在终端执行:
python chatbot.py

验证方法

启动后,依次输入以下内容并观察回复:

  1. 输入 你好,我叫小明,机器人应正常问候。
  2. 输入 我叫什么名字?,若机器人能正确回答“小明”,说明多轮上下文记忆生效。
  3. 输入 exit 退出程序。

通过条件:第2步中机器人能根据前一轮对话中的信息正确回答用户名字,即证明多轮对话功能正常。

常见问题

  • 认证失败:检查是否正确,以及Base URL是否与所选服务商匹配。
  • 模型不存在:确认 MODEL 名称与你的API服务商提供的模型ID一致。
  • 上下文超长:多轮对话后消息列表会持续增长,超出模型上下文窗口时会报错。可自行添加逻辑,仅保留最近N轮消息。