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})
运行方式
- 将代码中的
、BASE_URL、MODEL替换为你的实际配置。 - 保存为
chatbot.py,在终端执行:
python chatbot.py
验证方法
启动后,依次输入以下内容并观察回复:
- 输入
你好,我叫小明,机器人应正常问候。 - 输入
我叫什么名字?,若机器人能正确回答“小明”,说明多轮上下文记忆生效。 - 输入
exit退出程序。
通过条件:第2步中机器人能根据前一轮对话中的信息正确回答用户名字,即证明多轮对话功能正常。
常见问题
- 认证失败:检查是否正确,以及Base URL是否与所选服务商匹配。
- 模型不存在:确认
MODEL名称与你的API服务商提供的模型ID一致。 - 上下文超长:多轮对话后消息列表会持续增长,超出模型上下文窗口时会报错。可自行添加逻辑,仅保留最近N轮消息。