🤖 LangChain 聊天机器人教程
欢迎来到 LangChain 聊天机器人的世界!🎉 在这个教程中,我们将学习如何使用 LangChain 构建智能聊天机器人,并探索两种不同的消息存储方式。
📚 项目概述
本教程包含两个核心:
- 基础聊天功能和模型切换 💬
- `消息历史存储(内存 vs 云端)📝
🚀 第一部分:基础聊天功能 (chat.py)
🔧 核心组件
1. 环境配置
python
import sys
sys.stdout.reconfigure(encoding='utf-8') # 确保中文输出正常
from dotenv import load_dotenv
load_dotenv() # 加载环境变量
2. 模型导入
python
from langchain_community.chat_models.moonshot import MoonshotChat
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage
支持的模型:
- 🌙 MoonshotChat (Kimi模型)
- ⚡ ChatZhipuAI (智谱GLM模型)
3. 消息类型详解
消息类型 | 作用 | 示例 |
---|---|---|
SystemMessage |
设定AI角色和行为 | "你是一名社交媒体运营专家" |
HumanMessage |
用户输入的消息 | "你好,介绍一下如何使用YouTube进行视频创作" |
AIMessage |
AI的回复消息 | "您需要确定目标受众和内容主题呀主人~" |
4. 完整代码解析
apikey可以设置到同级目录下的.env文件中
python
# 构建对话历史
messages = [
SystemMessage("你是一名社交媒体运营专家"), # 🎭 设定角色
HumanMessage("你好,介绍一下如何使用YouTube进行视频创作"), # 👤 用户问题
AIMessage("您需要确定目标受众和内容主题呀主人~") # 🤖 AI回复
]
# 初始化模型并获取回复
llm = ChatZhipuAI(model="GLM-4-FlashX-250414")
result = llm.invoke(messages)
print(f"GLM4-FlashX:{result.content}")
🔄 模型切换示例
python
# 方式1:使用Moonshot模型
# llm = MoonshotChat(model="kimi-k2-0711-preview")
# 方式2:使用智谱GLM模型
llm = ChatZhipuAI(model="GLM-4-FlashX-250414")
💾 第二部分:消息历史存储 (history.py)
📋 功能介绍
history.py
文件展示了两种消息存储方式:
- 内存存储 - 临时存储,程序结束后消失 🧠
- 云端存储 - 使用 Google Firestore 持久化存储 ☁️
🧠 方式一:内存存储(注释部分)
python
# 直接存入内存的方式
messages = [] # 简单的列表存储
system_message = SystemMessage("你是一名社交媒体运营专家")
messages.append(system_message)
# 聊天循环
while True:
query = input("You:")
if query.lower() == "exit":
break
messages.append(HumanMessage(content=query)) # 添加用户消息
result = model.invoke(messages)
response = result.content
messages.append(AIMessage(content=response)) # 添加AI回复
print(f"AI:{response}")
优点: ✅ 简单快速,无需配置
缺点: ❌ 程序重启后历史消失
☁️ 方式二:云端存储(Firestore)
1. 配置参数
python
PROJECT_ID = "..." # 🏗️ Google Cloud项目ID
SESSION_ID = "user_session_new" # 👤 用户会话ID
COLLECTION_NAME = "chat_history" # 📁 Firestore集合名称
2. 初始化Firestore客户端
python
print("初始化Firestore客户端...")
client = firestore.Client(project=PROJECT_ID)
print("初始化Firestore聊天记录...")
chat_history = FirestoreChatMessageHistory(
session_id=SESSION_ID,
collection=COLLECTION_NAME,
client=client
)
3. 持久化聊天循环
python
print("历史聊天记录:", chat_history.messages) # 📜 显示历史记录
while True:
query = input("You:")
if query.lower() == "exit":
break
# 🔄 自动保存到Firestore
chat_history.add_message(HumanMessage(content=query))
result = model.invoke(chat_history.messages)
response = result.content
# 🔄 自动保存AI回复到Firestore
chat_history.add_message(AIMessage(content=response))
print(f"AI:{response}")
print("---Message History---")
print(chat_history.messages) # 📋 显示完整历史
🆚 两种存储方式对比
特性 | 内存存储 🧠 | Firestore存储 ☁️ |
---|---|---|
持久性 | ❌ 临时 | ✅ 永久 |
配置复杂度 | ✅ 简单 | ⚠️ 需要配置 |
跨会话访问 | ❌ 不支持 | ✅ 支持 |
数据安全 | ⚠️ 易丢失 | ✅ 云端备份 |
性能 | ✅ 快速 | ⚠️ 网络延迟 |
成本 | ✅ 免费 | 💰 按使用付费 |
🛠️ 环境配置指南
1. 安装依赖
bash
pip install langchain-community
pip install langchain-google-firestore
pip install google-cloud-firestore
pip install python-dotenv
2. 环境变量配置
创建 .env
文件:
env
# API密钥配置
ZHIPU_API_KEY=your_zhipu_api_key
MOONSHOT_API_KEY=your_moonshot_api_key
# Google Cloud配置
GOOGLE_APPLICATION_CREDENTIALS=path/to/your/service-account-key.json
3. Google Firestore 设置
- 创建 Google Cloud 项目 🏗️
- 启用 Firestore API 🔧
- 创建服务账户密钥 🔑
- 下载 JSON 密钥文件 📄
🎯 实际应用场景
🧠 内存存储适用于:
- 临时对话测试
- 原型开发
- 简单的一次性交互
☁️ Firestore存储适用于:
- 生产环境应用
- 需要历史记录的客服系统
- 多用户聊天应用
- 长期对话分析
🚀 运行示例
运行基础聊天
bash
python chat.py
运行带历史记录的聊天
bash
python history.py
🎉 总结
通过这个教程,你学会了:
- 🔧 LangChain基础使用 - 消息类型、模型调用
- 🔄 模型切换 - 支持多种AI模型
- 💾 存储策略 - 内存 vs 云端存储
- 🛠️ 实际部署 - 环境配置和最佳实践
现在你可以根据自己的需求选择合适的存储方式,构建属于自己的智能聊天机器人了!🎊
💡 小贴士: 在开发阶段建议使用内存存储进行快速测试,在生产环境中使用Firestore确保数据安全和持久性。
🔗 相关资源:
祝你编程愉快!🚀✨