11. Menentukan Model Cadangan (Fallback)

Cadangan (fallback)

Terdapat berbagai kesalahan/kegagalan dalam aplikasi LLM, termasuk masalah API LLM, kualitas output model yang buruk, dan masalah terkait integrasi lainnya. Fitur fallback dapat digunakan untuk menangani dan mengisolasi masalah-masalah ini secara elegan.

Yang penting, fallback dapat diterapkan di seluruh level yang dapat dieksekusi, tidak hanya di level LLM.

Cara Mengatasi Kesalahan LLM API

Penanganan kesalahan API LLM adalah salah satu kasus yang paling umum untuk menggunakan fallback.

Permintaan ke API LLM dapat gagal karena berbagai alasan. API mungkin sedang down, mencapai batas kecepatannya, atau sejumlah masalah lainnya. Menggunakan fallback dapat membantu melindungi dari jenis masalah ini.

Penting: Secara default, banyak pembungkus LLM yang menangkap kesalahan dan mencoba kembali. Disarankan agar Anda mematikan perilaku default ini ketika menggunakan fallback, jika tidak, pembungkus pertama akan terus mencoba ulang dan tidak pernah gagal.

%pip install -qU langchain langchain-openai

Pertama, mari kita lihat apa yang terjadi ketika RateLimitError dilemparkan di OpenAI. RateLimitError adalah kesalahan yang terjadi ketika batas biaya pemanggilan API OpenAI terlampaui.

Ketika kesalahan ini terjadi, permintaan API dibatasi untuk jangka waktu tertentu, sehingga aplikasi Anda perlu menanganinya dengan tepat. Uji coba memungkinkan Anda untuk melihat bagaimana perilaku aplikasi Anda ketika RateLimitError dilemparkan, dan untuk memeriksa logika penanganan kesalahan Anda.

Hal ini akan membantu Anda menghindari masalah yang mungkin muncul dalam produksi nyata dan memastikan bahwa Anda menyediakan layanan yang dapat diandalkan.

from langchain_anthropic import ChatAnthropic
from langchain_openai import ChatOpenAI
from unittest.mock import patch

import httpx
from openai import RateLimitError

request = httpx.Request("GET", "/")  # Membuat permintaan GET.
response = httpx.Response(
    200, request=request
)  # Membuat respons dengan kode status 200.
# Membuat RateLimitError dengan pesan "rate limit", respons, dan isi kosong.
error = RateLimitError("rate limit", response=response, body="")

Buat objek ChatOpenAI di variabel openai_llm, dan setel parameter max_retries ke 0 untuk mencegah pengulangan karena batas biaya panggilan API, dll.

Gunakan metode with_fallbacks untuk menetapkan anthropic_llm sebagai LLM fallback, dan tetapkan ke variabel llm.

Contoh ini mensimulasikan rate limit API OpenAI dan menguji apa yang terjadi ketika terjadi kesalahan batas laju panggilan API.

Anda dapat melihat bahwa model GPT OpenAI gagal ketika mencoba menggunakannya, dan model fallback, model Anthropic, melakukan inferensi sebagai gantinya.

Jika model fallback disetel with_fallback() dan model fallback berhasil dijalankan, tidak ada RateLimitError yang dilemparkan.

Model yang diset ke llm.with_fallbacks() juga akan berperilaku sama seperti model yang dapat dijalankan biasa.

Kode di bawah ini juga tidak memberikan “error” karena model fallback telah bekerja dengan baik.

Menentukan Beberapa Model Fallback Secara Berurutan

Anda dapat menentukan beberapa model untuk model fallback, bukan hanya satu. Bila beberapa model ditentukan, model-model tersebut akan dicoba secara berurutan.

Buat dua rantai, satu chain yang melemparkan kesalahan dan satu chain yang berfungsi.

Last updated