Menerapkan cache prompt menggunakan LangChain untuk membangun aplikasi LLM yang efisien

Penulis

Shalini Harkar

Lead AI Advocate

Apa itu cache prompt?

Cache prompt adalah cara untuk menyimpan dan kemudian menggunakan kembali respons yang dihasilkan dari prompt yang dieksekusi saat bekerja dengan model bahasa seperti model IBM® Granite. Jika input (prompt) yang sama ditemui kembali, alih-alih membuat panggilan API baru, aplikasi akan mengambil respons yang disimpan sebelumnya di cache prompt.

Bayangkan cache prompt sebagai semacam "memori" untuk aplikasi Anda. Sistem menyimpan hasil dari kueri sebelumnya untuk menghemat waktu komputasi karena tidak perlu membuat permintaan berulang pada input yang sama.

Mengapa cache prompt penting?

Cache prompt penting karena menghindari panggilan antarmuka pemrograman aplikasi (API) berulang dengan menggunakan kembali respons yang ada untuk prompt berulang yang identik. Kemampuan ini menghasilkan waktu respons yang lebih cepat, output yang konsisten, dan penggunaan API yang lebih rendah, yang membantu untuk tetap berada dalam batas tarif. Ini juga membantu untuk menskalakan aliran dan menciptakan ketahanan selama pemadaman. Cache prompt adalah fitur penting yang menambah nilai bagi aplikasi AI yang hemat biaya, efisien, dan ramah pengguna.

Prasyarat

  1. Anda memerlukan akun IBM Cloud untuk membuat proyek watsonx.ai .

  2. Anda juga memerlukan Python versi 3.12.7

Langkah-langkah 

Langkah 1: Siapkan lingkungan Anda

Meskipun terdapat pilihan beberapa alat, tutorial ini akan memandu Anda untuk menyiapkan akun IBM menggunakan Jupyter Notebook.

  1. Masuk ke watsonx.ai dengan menggunakan akun IBM Cloud Anda.

  2. Buat proyek watsonx.ai. Anda bisa mendapatkan ID proyek dari dalam proyek Anda. Klik tab Kelola . Kemudian, salin ID proyek dari bagian Detail di halaman Umum . Anda memerlukan ID ini untuk tutorial ini.

  3. Buat Jupyter NotebookLangkah ini akan membuka lingkungan Jupyter Notebook tempat Anda dapat menyalin kode dari tutorial ini. Atau, Anda dapat mengunduh aplikasi notebook ini ke sistem lokal Anda dan mengunggahnya ke proyek watsonx.ai sebagai aset. Untuk melihat lebih banyak tutorial Granite, lihat Komunitas IBM Granite.

Langkah 2: Siapkan instans watsonx.ai Runtime dan kunci API

  1. Buat instans layanan watsonx.ai Runtime (pilih paket Lite, yang merupakan instans gratis).

  2. Buat Kunci API.

  3. Kaitkan layanan watsonx.ai Runtime ke proyek yang Anda buat di watsonx.ai.

Langkah 3: Penginstalan paket

Kita membutuhkan pustaka untuk bekerja dengan kerangka kerja Langchain dan WatsonxLLM. Mari kita instal paket yang diperlukan terlebih dahulu. Tutorial ini dibuat menggunakan Python 3.12.7

Catatan: Jika Anda menggunakan pip versi lama, Anda dapat menggunakan perintah pip install --upgrade pip untuk dengan mudah menginstal paket terbaru yang mungkin tidak kompatibel dengan versi lama. Namun jika sudah menggunakan versi terbaru atau baru saja meningkatkan paket, Anda dapat melewatkan perintah ini.

!pip install -q langchain langchain-ibm langchain_experimental langchain-text-splitters langchain_chroma transformers bs4 langchain_huggingface sentence-transformers

Langkah 3: Impor pustaka yang diperlukan

Modul os digunakan untuk mengakses variabel lingkungan, seperti kredensial proyek atau kunci API.

WatsonXLLM adalah modul dari langchain_ibm yang mengintegrasikan IBM Watson LLM untuk menghasilkan output dari model AI generatif.

ChatWatsonx memungkinkan interaksi berbasis obrolan menggunakan IBM watsonx melalui LangChain.

SimpleDirectoryReader digunakan untuk memuat dan membaca dokumen dari direktori untuk pengindeksan dengan LlamaIndex.

GenParams berisi kunci metadata untuk mengonfigurasi parameter pembuatan teks Watsonx.

SQLiteCache memungkinkan penyiapan basis data .cache.db SQLite lokal untuk menghindari panggilan API yang berlebihan dan mempercepat pengembangan dan pengujian.

Kita membutuhkan beberapa pustaka dan modul untuk tutorial ini. Pastikan untuk mengimpor yang berikut ini dan jika tidak diinstal, instalasi pip cepat akan menyelesaikan masalah.

import os
import getpass
import requests
import random
import json
from typing import Dict, List
from langchain_ibm import WatsonxLLM
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams
from langchain_ibm import WatsonxLLM
from langchain_ibm import ChatWatsonx
from llama_index.core import SimpleDirectoryReader

Langkah 5: Baca data teks

from llama_index.core import SimpleDirectoryReader

documents = SimpleDirectoryReader(
input_files=["~/Artificial Intelligence/Generative_AI/files/FIle2.txt"],
).load_data()

document_text = documents[0].text
print(document_text[:200] + "...")

Langkah 6: Siapkan kredensial

Kode ini menyiapkan kredensial untuk mengakses API IBM Watson machine learning (WML) dan membantu memastikan bahwa ID proyek dikonfigurasi dengan benar.

  • Kredensial kamus dibuat dengan URL layanan WML dan kunci API. Kunci API dikumpulkan dengan aman menggunakan getpass.getpass untuk menghindari mengekspos informasi sensitif.
  • kode mencoba mengambil PROJECT_ID dari variabel lingkungan menggunakan os.environ. Jika PROJECT_ID tidak ditemukan, pengguna diminta untuk memasukkannya secara manual melalui input.
credentials = {
"url": "https://us-south.ml.cloud.ibm.com", # Replace with the correct region if needed
"apikey": getpass.getpass("Please enter your WML API key (hit enter): ")
}

# Set up project_id
try:
project_id = os.environ["PROJECT_ID"]
except KeyError:
project_id = input("Please enter your project_id (hit enter): ")

Langkah 6: Awali model bahasa besar

Kode ini mengawali IBM WatsonXLLM untuk digunakan dalam aplikasi:

  1. Kode ini membuat instans WatsonxLLM menggunakan model ibm/granite-3-8b-instruct (Granite-3.1-8B-Instruct) yang dirancang untuk tugas AI generatif berbasis instruksi.
  2. Nilai url, apikey, dan project_id dari kredensial yang telah disiapkan sebelumnya diteruskan untuk mengautentikasi dan terhubung ke layanan IBM Watson LLM.
  3. Konfigurasi parameter max_new_tokens untuk membatasi jumlah token yang dihasilkan oleh model dalam setiap respons (2.000 token dalam kasus ini).

Untuk mengetahui lebih lanjut tentang parameter model ini, seperti batas token minimum dan maksimum, lihat dokumentasi.

llm = WatsonxLLM(
model_id= "ibm/granite-3-8b-instruct",
url=URL,
apikey=WATSONX_APIKEY,
project_id=WATSONX_PROJECT_ID,
params={
GenParams.DECODING_METHOD: "greedy",
GenParams.TEMPERATURE: 0,
GenParams.MIN_NEW_TOKENS: 5,
GenParams.MAX_NEW_TOKENS: 2000,
GenParams.REPETITION_PENALTY:1.2,
GenParams.STOP_SEQUENCES: ["\n\n"]
}
)

Langkah 8: Siapkan cache SQLite untuk respons LLM yang lebih cepat

SQLiteCache adalah alat caching berkesinambungan yang ditawarkan oleh LangChain, yang menyimpan respons dari panggilan LLM dalam file basis data SQLite. SQLiteCache dengan cerdas mengurangi waktu CPU dengan menyimpan komputasi yang mahal, yang berarti berfokus pada pengambilan data alih-alih menghitung ulang. Ketimbang melalui seluruh proses kembali, mekanisme ini hanya menarik hasil dari disk—menjadikannya efisien, andal, dan dapat digunakan kembali.

Alur kerja cache prompt

Gambar mengilustrasikan cache prompt, bagaimana hasil dimuat secara instan dari disk; tanpa cache, setiap kueri membuang waktu pada komputasi yang berlebihan.

from langchain.cache import SQLiteCache
from langchain.globals import set_llm_cache
set_llm_cache(SQLiteCache(database_path=".langchain.db"))
%%time
prompt = "System: You are a helpful assistant.\nUser: Why did Paul Graham start YC?\nAssistant:"
resp = llm.invoke(prompt)
print(resp)

Dalam hal ini, CPU hanya bekerja selama 22 ms, tetapi waktu yang berlalu sebenarnya adalah 1, 43 detik.

Contoh ini menunjukkan bahwa sebagian besar waktu dihabiskan untuk menunggu, kemungkinan untuk operasi I/O (misalnya, baca dan tulis disk, akses jaringan, atau panggilan API)

Sekarang, mari kita jalankan model untuk kedua kalinya dengan prompt dan lihat waktu respons.

%%time
llm.predict(resp)

Tampak jelas bahwa dengan SQLiteCache CPU yang digunakan hanya 7,26 ms, tetapi waktu dinding adalah 6,15 detik.

Ini jelas menunjukkan pemblokiran dependensi eksternal (seperti menunggu respons dari server).

Kesimpulan

Cache prompt mempercepat dan mengurangi biaya permintaan API ke model bahasa besar, seperti GPT-4o. Konten cache prompt seperti token input, token output, penanaman, dan pesan dari pengguna, prompt sistem atau output dari fungsi, yang sekarang menggunakan konten yang disimpan di cache, bukan permintaan jaringan untuk revisi baru. Metode ini memberikan harga yang lebih rendah, peningkatan latensi respons, dan peningkatan indikator kinerja utama (KPI).

Cache prompt dapat bermanfaat untuk chatbot, sistem RAG, penyempurnaan, dan code assistant. Strategi cache yang kuat yang mencakup berbagai fungsi seperti baca cache, tulis cache, pesan sistem, kontrol cache, dan time to live (TTL) yang tepat akan meningkatkan tingkat cache hit dan menurunkan tingkat cache miss.

Penggunaan token prompt yang sama secara konsisten, awalan prompt, dan penggunaan instruksi sistem, membantu kinerja prompt yang konsisten dalam banyak pertukaran percakapan dan permintaan berikutnya. Terlepas dari penggunaan Python, SDK, atau bekerja dengan OpenAI atau penyedia lain, memahami cara kerja cache prompt akan lebih memungkinkan Anda menerapkan cache prompt untuk digunakan dalam banyak contoh penggunaan.

Solusi terkait
IBM® watsonx.ai

Latih, validasi, lakukan tuning, dan terapkan AI generatif, model dasar, dan kemampuan machine learning dengan IBM watsonx.ai, studio perusahaan generasi berikutnya untuk pembangun AI. Bangun aplikasi AI dalam waktu singkat, dengan sedikit data.

Jelajahi watsonx.ai
Solusi kecerdasan buatan (AI)

Manfaatkan AI di bisnis Anda dengan perpaduan antara keahlian AI terdepan di industri dari IBM dan portofolio solusi Anda.

Jelajahi solusi AI
Konsultasi dan layanan kecerdasan buatan (AI)

Layanan IBM Consulting AI membantu merancang ulang cara kerja bisnis dengan AI untuk transformasi.

Jelajahi layanan AI
Ambil langkah selanjutnya

Dengan menggunakan AI, IBM Concert mengungkap insight penting tentang operasi Anda dan memberikan rekomendasi spesifik aplikasi untuk perbaikan. Temukan cara Concert dapat memajukan bisnis Anda.

Jelajahi Concert Jelajahi solusi otomatisasi proses bisnis