跳到主要內容
Open In ColabOpen on GitHub

MongoDB

MongoDB 是一個源代碼可用、跨平台的文檔導向資料庫程式。被歸類為 NoSQL 資料庫程式,MongoDB 使用類似 JSON 的文檔,並帶有可選的模式。

MongoDB 由 MongoDB Inc. 開發,並在 Server Side Public License (SSPL) 授權下發布。 - 維基百科

本筆記本說明如何使用 MongoDBChatMessageHistory 類別在 Mongodb 資料庫中儲存聊天訊息歷史記錄。

設定

此整合位於 langchain-mongodb 套件中,因此我們需要安裝它。

pip install -U --quiet langchain-mongodb

設定 LangSmith 以獲得一流的可觀察性也很有幫助(但非必要)。

# os.environ["LANGSMITH_TRACING"] = "true"
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass()

用法

要使用儲存功能,您只需要提供 2 件事

  1. Session Id - 會話的唯一識別符,例如使用者名稱、電子郵件、聊天 ID 等。
  2. 連線字串 - 指定資料庫連線的字串。它將被傳遞到 MongoDB create_engine 函數。

如果您想自訂聊天歷史記錄的儲存位置,您還可以傳遞

  1. database_name - 要使用的資料庫名稱
  2. collection_name - 在該資料庫中使用的集合名稱
from langchain_mongodb.chat_message_histories import MongoDBChatMessageHistory

chat_message_history = MongoDBChatMessageHistory(
session_id="test_session",
connection_string="mongodb://mongo_user:password123@mongo:27017",
database_name="my_db",
collection_name="chat_histories",
)

chat_message_history.add_user_message("Hello")
chat_message_history.add_ai_message("Hi")
API 參考文件:MongoDBChatMessageHistory
chat_message_history.messages
[HumanMessage(content='Hello'), AIMessage(content='Hi')]

鏈接

我們可以輕鬆地將此訊息歷史記錄類別與 LCEL Runnables 結合使用

為此,我們將需要使用 OpenAI,因此我們需要安裝它。您還需要將 OPENAI_API_KEY 環境變數設定為您的 OpenAI 金鑰。

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI
import os

assert os.environ[
"OPENAI_API_KEY"
], "Set the OPENAI_API_KEY environment variable with your OpenAI API key."
prompt = 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: MongoDBChatMessageHistory(
session_id=session_id,
connection_string="mongodb://mongo_user:password123@mongo:27017",
database_name="my_db",
collection_name="chat_histories",
),
input_messages_key="question",
history_messages_key="history",
)
# This is where we configure the session id
config = {"configurable": {"session_id": "<SESSION_ID>"}}
chain_with_history.invoke({"question": "Hi! I'm bob"}, config=config)
AIMessage(content='Hi Bob! How can I assist you today?')
chain_with_history.invoke({"question": "Whats my name"}, config=config)
AIMessage(content='Your name is Bob. Is there anything else I can help you with, Bob?')

此頁面是否對您有幫助?