09. Menyimpan percakapan dalam SQLite

SQL (SQLAlchemy)

Structured Query Language (SQL) link text adalah bahasa khusus domain yang digunakan untuk pemrograman, yang dirancang untuk mengelola data dalam sistem manajemen basis data relasional (RDBMS) atau pemrosesan aliran dalam sistem manajemen aliran data relasional (RDSMS). Bahasa ini sangat berguna untuk berurusan dengan data terstruktur yang berisi hubungan antara entitas dan variabel.

SQLAlchemy adalah toolkit SQL sumber terbuka dan pemetaan hubungan objek (ORM) untuk bahasa pemrograman Python yang didistribusikan di bawah lisensi MIT.

Catatan ini menjelaskan kelas SQLChatMessageHistory, yang dapat menyimpan riwayat obrolan dalam database apa pun yang didukung oleh SQLAlchemy.

Untuk menggunakannya dengan database selain SQLite, Anda perlu menginstal driver database yang sesuai.

# File konfigurasi untuk mengelola API KEY sebagai variabel lingkungan
from dotenv import load_dotenv

# Memuat informasi API KEY
load_dotenv()

Cara penggunaan

Untuk menggunakan penyimpanan, Anda hanya perlu menyediakan dua hal berikut

  1. session_id - pengenal unik untuk sesi, seperti nama pengguna, email, ID obrolan, dll.

  2. connection - sebuah string yang menentukan koneksi basis data. String ini diteruskan ke fungsi create_engine di SQLAlchemy.

from langchain_community.chat_message_histories import SQLChatMessageHistory

# Membuat objek SQLChatMessageHistory dan menetapkan ID sesi serta file koneksi database
chat_message_history = SQLChatMessageHistory(
    session_id="sql_history", connection="sqlite:///sqlite.db"
)

Memeriksa percakapan yang disimpan: chat_message_history.messages

Terapkan ke Rantai

Kita dapat dengan mudah menggabungkan kelas perekaman pesan ini dengan LCEL Runnables.

Buat sebuah fungsi untuk mendapatkan transkrip dialog dari sqlite.db.

config_fields. Ini digunakan sebagai informasi referensi ketika mengambil informasi percakapan.

  • user_id: ID Pengguna

  • conversation_id: ID percakapan

atur pasangan nilai key “user_id”, “conversation_id” di dalam kamus “configurable”.

Mari kita ajukan sebuah pertanyaan yang menanyakan sebuah nama. Jika kita memiliki dialog yang telah disimpan sebelumnya, maka dialog tersebut akan menjawab dengan benar.

  • Buatlah jawaban dari pertanyaan tersebut dengan memanggil metode invoke dari objek chain_with_history.

  • Metode invoke dilewatkan kamus question dan config.

Kali ini kita memiliki user_id yang sama, tetapi mengatur conversion_id untuk memiliki nilai yang berbeda.

Last updated