Penggunaan Token
Ini mencakup cara melacak dan mengontrol penggunaan token di LibreChat. Anda akan mempelajari cara melihat konteks dan biaya, mengonfigurasi transaksi, mengaktifkan saldo pengguna, dan menambahkan kredit ke akun.
Pengantar
Mulai dari v0.6.0, LibreChat melacak penggunaan token secara akurat untuk endpoint yang didukung. Semua transaksi token disimpan dalam koleksi "Transactions" di database Anda. Rilis saat ini juga menampilkan penggunaan konteks dan biaya secara real-time di UI percakapan saat diaktifkan.
Saat ini, Anda dapat membatasi penggunaan token pengguna dengan mengaktifkan saldo pengguna. Alih-alih mengonfigurasi batas kredit token melalui variabel lingkungan, Anda sekarang menetapkan opsi-opsi ini di dalam file librechat.yaml Anda di bawah bagian balance. Nilai biaya disembunyikan secara default dan harus diaktifkan dengan interface.contextCost.
Melihat Penggunaan Konteks dan Biaya
LibreChat menampilkan pengukur konteks saat percakapan sedang berlangsung. Pengukur tersebut diperbarui dari peristiwa penggunaan selama streaming dan dapat menampilkan:
- Penggunaan prompt/konteks saat ini terhadap jendela konteks model
- Ringkasan hover untuk detail token dan biaya yang cepat
- Rincian klik untuk penggunaan token prompt, penyelesaian, cache, total cabang, dan total percakapan
Rincian penggunaan disimpan bersama pesan dan percakapan. Obrolan yang dibuka kembali tetap menyimpan detail cabang dan total penggunaan/biaya alih-alih hanya mengandalkan sesi streaming yang aktif.
Ketika peringkasan memadatkan percakapan yang panjang, LibreChat mencatat garis dasar ringkasan yang dipadatkan tersebut dan hanya menghitung giliran percakapan setelah ringkasan di atasnya untuk pengukur konteks. Total penggunaan dan biaya tetap mencakup pengeluaran cabang secara penuh.
Admin dapat mengontrol tampilan ini di librechat.yaml:
interface:
contextUsage: true
contextCost: true
currency:
code: EUR
rate: 0.92contextUsagemengontrol apakah pengguna dapat melihat jendela konteks dan pengukur penggunaan token.contextCostmengontrol apakah pengguna melihat nilai biaya dalam detail penggunaan. Nilai defaultnya adalahfalse; atur ketrueuntuk menampilkan biaya.currencymengonversi biaya USD yang ditampilkan menggunakan pengali statis saat tampilan biaya diaktifkan. Transaksi tetap dicatat menggunakan akuntansi kredit token LibreChat.
Konfigurasi Token Endpoint Kustom
Untuk endpoint kustom, tentukan jendela konteks khusus model dan tarif per juta token dengan endpoints.custom[].tokenConfig:
endpoints:
custom:
- name: 'Mistral'
apiKey: '${MISTRAL_API_KEY}'
baseURL: 'https://api.mistral.ai/v1'
models:
default: ['mistral-large-latest']
tokenConfig:
mistral-large-latest:
prompt: 2
completion: 6
context: 128000prompt, completion, dan context wajib ada untuk setiap entri model. cacheRead dan cacheWrite dapat ditambahkan untuk penyedia yang melaporkan penggunaan input yang di-cache. Untuk Agen yang menggunakan beberapa endpoint, LibreChat menggunakan konfigurasi token endpoint/model yang cocok saat mencatat penggunaan dan biaya.
Konfigurasi token yang diambil di-cache dengan cakupan pengguna ketika model endpoint, kunci, URL, atau header dapat bervariasi berdasarkan konteks permintaan, sehingga penetapan harga endpoint kustom dan jendela konteks yang terisolasi tetap terpisah.
Konfigurasi Transaksi
Sistem transaksi mengontrol apakah catatan penggunaan token disimpan ke dalam basis data. Hal ini dapat dikonfigurasi secara terpisah dari sistem saldo.
Pengaturan Transaksi
version: 1.2.9
# Transaction settings
# Controls whether to save transaction records to the database
# Default is true (enabled)
transactions:
enabled: falsePenting: Ketika balance.enabled diatur ke true, perekaman transaksi diaktifkan secara otomatis terlepas dari pengaturan transactions.enabled. Hal ini memastikan fungsi pelacakan saldo berjalan dengan benar dengan memelihara catatan lengkap dari semua penggunaan token.
Lihat halaman Transactions Configuration untuk detail lebih lanjut.
Konfigurasi Saldo
Sistem saldo di LibreChat memungkinkan administrator untuk mengonfigurasi bagaimana saldo kredit token dikelola untuk pengguna. Semua pengaturan saldo sekarang dikelola dalam konfigurasi YAML Anda di bawah objek balance.
Catatan: Ini menggantikan variabel lingkungan sebelumnya (CHECK_BALANCE dan START_BALANCE) dan menyediakan cara yang lebih terstruktur untuk mengelola saldo pengguna.
Pengaturan Saldo Lengkap
version: 1.3.5
# Balance settings
balance:
enabled: true # Enable token credit balances for users
startBalance: 20000 # Initial tokens credited upon registration
autoRefillEnabled: false # Enable automatic token refills
refillIntervalValue: 30 # Numerical value for refill interval
refillIntervalUnit: 'days' # Time unit for refill interval (days, hours, etc.)
refillAmount: 10000 # Tokens added during each refillPenjelasan Pengaturan Saldo
-
enabled: Mengaktifkan pelacakan kredit token dan manajemen saldo untuk pengguna. Jika diatur ke
true, sistem akan melacak penggunaan token dan menerapkan batas saldo. -
startBalance: Menentukan jumlah token awal yang dikreditkan ke pengguna saat pendaftaran. Ini adalah saldo awal untuk semua pengguna baru.
-
autoRefillEnabled: Menentukan apakah pengisian ulang otomatis kredit token diaktifkan. Jika diatur ke
true, sistem akan secara otomatis menambahkan kredit ke saldo pengguna berdasarkan interval pengisian ulang. -
refillIntervalValue: Menentukan nilai numerik untuk interval di mana kredit token diisi ulang secara otomatis. Bekerja bersama dengan
refillIntervalUnit. -
refillIntervalUnit: Menentukan satuan waktu untuk interval pengisian ulang. Nilai yang didukung mencakup "seconds", "minutes", "hours", "days", "weeks", dan "months".
-
refillAmount: Menentukan jumlah token yang akan ditambahkan ke saldo pengguna selama setiap pengisian ulang otomatis.
Lihat halaman Balance Configuration untuk detail lebih lanjut.
Cara Kerja Auto-Refill
Ketika saldo pengguna dilacak dan autoRefill diaktifkan, sistem akan secara otomatis menambahkan kredit ke saldo hanya setelah interval waktu yang ditentukan berlalu sejak pengisian ulang terakhir. Hal ini dicapai dengan membandingkan tanggal saat ini dengan tanggal lastRefill ditambah interval yang ditentukan.
Proses Isi Ulang Otomatis
- Ketika pengguna mencoba menggunakan token, sistem akan memeriksa apakah saldo saat ini mencukupi
- Jika saldo akan turun menjadi nol atau di bawahnya setelah transaksi, sistem akan memeriksa apakah pengisian otomatis (auto-refill) diaktifkan.
- Jika auto-refill diaktifkan, sistem akan memeriksa apakah interval waktu sejak pengisian ulang terakhir telah berlalu:
- Sistem membandingkan tanggal saat ini dengan
lastRefill + refillInterval - Jika interval telah berlalu, token akan ditambahkan ke saldo pengguna
- Tanggal
lastRefilldiperbarui ke tanggal saat ini
- Sistem membandingkan tanggal saat ini dengan
- Transaksi dilanjutkan jika saldo mencukupi (baik saldo awal maupun setelah pengisian ulang)
Satuan Waktu yang Didukung
refillIntervalUnit dapat diatur ke salah satu nilai berikut:
- detik
- menit
- jam
- hari
- minggu
- bulan
Sebagai contoh, jika refillIntervalValue diatur ke 30 dan refillIntervalUnit adalah days, sistem akan menambahkan token refillAmount ke saldo pengguna hanya jika 30 hari telah berlalu sejak pengisian ulang terakhir.
Sinkronisasi Saldo
Saat pengguna masuk, sistem secara otomatis menyinkronkan pengaturan saldo mereka dengan konfigurasi saldo global saat ini. Hal ini memastikan bahwa setiap perubahan pada konfigurasi saldo diterapkan ke semua pengguna.
Proses sinkronisasi:
- Memeriksa apakah pengguna memiliki catatan saldo
- Jika tidak ada catatan yang ditemukan, buat satu catatan baru dengan
startBalancesaat ini - Memperbarui pengaturan isi ulang otomatis pengguna agar sesuai dengan konfigurasi global
- Memastikan interval pengisian ulang dan jumlah pengguna sesuai dengan pengaturan global
Mengelola Saldo Token
Anda dapat menambahkan atau mengatur saldo pengguna secara manual. Hal ini sangat berguna selama pengembangan atau jika Anda berencana untuk membangun sistem akumulasi saldo lengkap di masa mendatang (sebagai contoh, melalui dasbor admin).
Menambahkan Saldo
# Local Development
npm run add-balance
# Docker (default setup)
docker compose exec api npm run add-balance
# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run add-balance"# Local Development
npm run add-balance [email protected] 1000
# Docker (default setup)
docker compose exec api npm run add-balance [email protected] 1000
# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run add-balance [email protected] 1000"Mengatur Saldo
Selain itu, Anda dapat menetapkan saldo untuk pengguna. Saldo yang sudah ada akan ditimpa oleh saldo yang baru.
# Local Development
npm run set-balance
# Docker (default setup)
docker compose exec api npm run set-balance
# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run set-balance"# Local Development
npm run set-balance [email protected] 1000
# Docker (default setup)
docker compose exec api npm run set-balance [email protected] 1000
# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run set-balance [email protected] 1000"Daftar saldo
# Local Development
npm run list-balances
# Docker (default setup)
docker compose exec api npm run list-balances
# Docker (deployment setup)
docker exec -it LibreChat-API /bin/sh -c "cd .. && npm run list-balances"Ini berfungsi dengan baik untuk melacak penggunaan Anda sendiri untuk penggunaan pribadi; 1000 kredit = $0,001 (1 mil USD)
Catatan tentang Penggunaan Token dan Saldo
- Dengan fitur peringkasan diaktifkan, Anda akan diblokir dari melakukan permintaan API jika biaya konten yang perlu diringkas + payload pesan Anda melebihi saldo saat ini.
- Penggunaan model subagent child-run dicatat terhadap transaksi induk sehingga run agen induk menyertakan penggunaan yang didelegasikan dalam totalnya.
- Penghitungan token Prompt sangat akurat untuk panggilan OpenAI, tetapi tidak 100% untuk plugin (karena pemanggilan fungsi). Hasilnya sangat mendekati dan konservatif, yang berarti jumlahnya mungkin lebih tinggi sebesar 2-5 token.
- Sistem ini mengizinkan defisit yang terjadi akibat token penyelesaian (completion tokens). Sistem hanya memeriksa apakah Anda memiliki cukup token untuk token prompt, dan cukup longgar terhadap penyelesaian. Grafik di bawah ini merinci logikanya.
- Meskipun demikian, plugin diperiksa pada setiap langkah pembuatan, karena proses ini bekerja dengan beberapa panggilan API. Apa pun yang telah dihasilkan oleh LLM sejak prompt awal pengguna akan dibagikan kepada pengguna dalam pesan kesalahan seperti yang terlihat di bawah ini.
- Terdapat buffer 150 token untuk pemberian judul karena ini adalah proses 2 langkah, yang rata-rata menghabiskan sekitar 200 token secara total. Jika dana tidak mencukupi, pemberian judul akan dibatalkan sebelum ada penggunaan biaya dan tidak ada error yang muncul.
Detail lebih lanjut
sumber: LibreChat/discussions/1640
"rawAmount": -000, // apa ini?
Jumlah token mentah sebagaimana dihitung menurut algoritma tokenizer.
"tokenValue": -00000, // apa ini?
Nilai kredit token. 1000 kredit = $0.001 (1 mil USD)
"rate": 00, // apa ini?
Laju di mana token dibebankan sebagai kredit.
Sebagai contoh, gpt-3.5-turbo-1106 memiliki rasio 1 untuk prompt pengguna (input) dan 2 untuk penyelesaian (output)
| Model | Input | Output |
|---|---|---|
| gpt-3.5-turbo-1106 | $0.0010 / 1K token | $0.0020 / 1K token |
Berdasarkan contoh yang diberikan:
"rawAmount": -137
"tokenValue": -205.5
"rate": 1.5\text{Token Value} = (\text{Raw Amount of Tokens}) \times (\text{Rate})137 \times 1.5 = 205.5Dan untuk mendapatkan jumlah pengeluaran USD yang sebenarnya berdasarkan Token Value:
\frac{\text{Token Value}}{1,000,000} = \left(\frac{\text{Raw Amount of Tokens} \times \text{Rate}}{1,000,000}\right)\frac{205.5}{1,000,000} = \$0.0002055 \text{ USD}Untuk endpoint kustom, lebih disarankan menggunakan endpoints.custom[].tokenConfig di dalam librechat.yaml untuk pengaturan tarif dan jendela konteks per model.
Pratinjau
Catatan Tambahan
- Dengan fitur summarization diaktifkan, permintaan API akan diblokir jika biaya konten ditambah payload pesan melebihi saldo saat ini.
- Sistem ini cukup longgar terhadap token penyelesaian (completion tokens), dengan fokus utama pada token prompt untuk pemeriksaan saldo.
- Buffer ditambahkan untuk penjudulan (sekitar 150 token) guna memperhitungkan proses dua langkah tersebut.
- Kredit token diterjemahkan menjadi nilai moneter (contoh: 1000 kredit = $0,001 USD).
Untuk detail dan kustomisasi lebih lanjut, silakan merujuk ke Dokumentasi LibreChat.
Bagaimana panduan ini?
Spanduk
Tampilkan pengumuman dan pemberitahuan kepada pengguna Anda
API RAG
Konfigurasikan API Retrieval-Augmented Generation (RAG) untuk pengindeksan dan pengambilan dokumen menggunakan Langchain dan FastAPI. API ini terintegrasi dengan LibreChat untuk memberikan respons berbasis konteks berdasarkan file yang diunggah pengguna.