欢迎来到 LangChain 聊天机器人的世界!🎉 在这个教程中,我们将学习如何使用 LangChain 构建智能聊天机器人,并探索两种不同的消息存储方式。
本教程包含两个核心:
import sys
sys.stdout.reconfigure(encoding='utf-8') # 确保中文输出正常
from dotenv import load_dotenv
load_dotenv() # 加载环境变量from langchain_community.chat_models.moonshot import MoonshotChat
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.messages import HumanMessage, SystemMessage, AIMessage支持的模型:
消息类型 | 作用 | 示例 |
|---|---|---|
SystemMessage | 设定AI角色和行为 | “你是一名社交媒体运营专家” |
HumanMessage | 用户输入的消息 | “你好,介绍一下如何使用YouTube进行视频创作” |
AIMessage | AI的回复消息 | “您需要确定目标受众和内容主题呀主人~” |
apikey可以设置到同级目录下的.env文件中
# 构建对话历史
messages = [
SystemMessage("你是一名社交媒体运营专家"), # 🎭 设定角色
HumanMessage("你好,介绍一下如何使用YouTube进行视频创作"), # 👤 用户问题
AIMessage("您需要确定目标受众和内容主题呀主人~") # 🤖 AI回复
]
# 初始化模型并获取回复
llm = ChatZhipuAI(model="GLM-4-FlashX-250414")
result = llm.invoke(messages)
print(f"GLM4-FlashX:{result.content}")# 方式1:使用Moonshot模型
# llm = MoonshotChat(model="kimi-k2-0711-preview")
# 方式2:使用智谱GLM模型
llm = ChatZhipuAI(model="GLM-4-FlashX-250414")history.py 文件展示了两种消息存储方式:
# 直接存入内存的方式
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}")优点: ✅ 简单快速,无需配置 缺点: ❌ 程序重启后历史消失
PROJECT_ID = "..." # 🏗️ Google Cloud项目ID
SESSION_ID = "user_session_new" # 👤 用户会话ID
COLLECTION_NAME = "chat_history" # 📁 Firestore集合名称print("初始化Firestore客户端...")
client = firestore.Client(project=PROJECT_ID)
print("初始化Firestore聊天记录...")
chat_history = FirestoreChatMessageHistory(
session_id=SESSION_ID,
collection=COLLECTION_NAME,
client=client
)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存储 ☁️ |
|---|---|---|
持久性 | ❌ 临时 | ✅ 永久 |
配置复杂度 | ✅ 简单 | ⚠️ 需要配置 |
跨会话访问 | ❌ 不支持 | ✅ 支持 |
数据安全 | ⚠️ 易丢失 | ✅ 云端备份 |
性能 | ✅ 快速 | ⚠️ 网络延迟 |
成本 | ✅ 免费 | 💰 按使用付费 |
pip install langchain-community
pip install langchain-google-firestore
pip install google-cloud-firestore
pip install python-dotenv创建 .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.jsonpython chat.pypython history.py通过这个教程,你学会了:
现在你可以根据自己的需求选择合适的存储方式,构建属于自己的智能聊天机器人了!🎊
💡 小贴士: 在开发阶段建议使用内存存储进行快速测试,在生产环境中使用Firestore确保数据安全和持久性。
🔗 相关资源:
祝你编程愉快!🚀✨