跳到主要內容
Open In ColabOpen on GitHub

SQLite

SQLite 是一種以 C 程式語言撰寫的資料庫引擎。它不是獨立應用程式;相反地,它是一個軟體開發人員嵌入到其應用程式中的函式庫。因此,它屬於嵌入式資料庫系列。它是部署最廣泛的資料庫引擎,因為許多頂級網路瀏覽器、作業系統、行動電話和其他嵌入式系統都使用它。

在本逐步指南中,我們將建立一個簡單的對話鏈,使用由 SqliteEntityStore 支援的 ConversationEntityMemory

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

使用方式

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

  1. 會話 ID - 會話的唯一識別符,例如使用者名稱、電子郵件、聊天 ID 等。
  2. 連線字串 - 指定資料庫連線的字串。對於 SQLite,該字串為 slqlite:///,後跟資料庫檔案的名稱。如果該檔案不存在,將會建立它。
from langchain_community.chat_message_histories import SQLChatMessageHistory

chat_message_history = SQLChatMessageHistory(
session_id="test_session_id", connection_string="sqlite:///sqlite.db"
)

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

鏈接

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

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

pip install -U langchain-openai

export OPENAI_API_KEY='sk-xxxxxxx'
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI
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: SQLChatMessageHistory(
session_id=session_id, connection_string="sqlite:///sqlite.db"
),
input_messages_key="question",
history_messages_key="history",
)
# This is where we configure the session id
config = {"configurable": {"session_id": "<SQL_SESSION_ID>"}}
chain_with_history.invoke({"question": "Hi! I'm bob"}, config=config)
AIMessage(content='Hello 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 specific you would like assistance with, Bob?')

此頁面是否對您有幫助?