Skip to main content
Open In ColabOpen on GitHub

Google Firestore(原生模式)

Google Cloud Firestore 是一种无服务器、以文档为中心的数据库,可按需自动扩展。通过利用 Firestore's Langchain 集成功能,扩展您的数据库应用,构建由人工智能驱动的体验。

本笔记本介绍了如何使用 Google Cloud Firestore 通过 FirestoreChatMessageHistory 类来存储聊天消息历史。

Learn more about the package on GitHub.

Open In Colab

开始之前

要运行此笔记本,您需要执行以下操作:

在确认此笔记本运行环境中的数据库访问后,请填写以下值并运行该单元格,然后运行示例脚本。

🦜🔗 库安装

The integration lives in its own langchain-google-firestore package, so we need to install it.

%pip install --upgrade --quiet langchain-google-firestore

仅限 Colab:取消以下单元格的注释以重启内核,或使用按钮重启内核。对于 Vertex AI Workbench,您可以使用顶部的按钮重启终端。

# # Automatically restart kernel after installs so that your environment can access the new packages
# import IPython

# app = IPython.Application.instance()
# app.kernel.do_shutdown(True)

☁ 设置您的Google云项目

设置您的Google Cloud项目,以便在此笔记本中利用Google Cloud资源。

如果您不知道您的项目ID,请尝试以下方法:

  • 运行 gcloud config list
  • 运行 gcloud projects list
  • 见支持页面:查找项目ID
# @markdown Please fill in the value below with your Google Cloud project ID and then run the cell.

PROJECT_ID = "my-project-id" # @param {type:"string"}

# Set the project id
!gcloud config set project {PROJECT_ID}

🔐 认证

请以笔记本中已登录的IAM用户身份向Google Cloud进行认证,以便访问您的Google Cloud项目。

  • 如果您在Colab中运行此笔记本,请使用下方单元格继续。
  • 如果您正在使用Vertex AI工作区,请参阅设置说明这里
from google.colab import auth

auth.authenticate_user()

基本用法

FirestoreChatMessageHistory

初始化 FirestoreChatMessageHistory 类时,您只需提供以下三点:

  1. session_id - 一个唯一的标识符字符串,用于指定会话的ID。
  2. collection : 到 Firestore 集合的单个以 /-分隔的路径。
from langchain_google_firestore import FirestoreChatMessageHistory

chat_history = FirestoreChatMessageHistory(
session_id="user-session-id", collection="HistoryMessages"
)

chat_history.add_user_message("Hi!")
chat_history.add_ai_message("How can I help you?")
chat_history.messages

清理

当特定会话的历史记录已过时,可以从数据库和内存中删除时,可以通过以下方式进行。

注意: 一旦删除,数据将不再存储在 Firestore 中,并且永远无法恢复。

chat_history.clear()

自定义客户端

默认使用可用的环境变量创建客户端。可以将自定义客户端传递给构造函数。

from google.auth import compute_engine
from google.cloud import firestore

client = firestore.Client(
project="project-custom",
database="non-default-database",
credentials=compute_engine.Credentials(),
)

history = FirestoreChatMessageHistory(
session_id="session-id", collection="History", client=client
)

history.add_user_message("New message")

history.messages

history.clear()