Silakan bergabung dengan saluran slack #cdd-nim-anywhere jika Anda adalah pengguna internal, buka masalah jika Anda eksternal untuk pertanyaan dan masukan apa pun.
Salah satu manfaat utama penggunaan AI untuk Perusahaan adalah kemampuan mereka untuk bekerja dan belajar dari data internal mereka. Retrieval-Augmented Generation (RAG) adalah salah satu cara terbaik untuk melakukannya. NVIDIA telah mengembangkan serangkaian layanan mikro yang disebut layanan mikro NIM untuk membantu mitra dan pelanggan kami membangun saluran RAG yang efektif dengan mudah.
NIM Anywhere berisi semua peralatan yang diperlukan untuk mulai mengintegrasikan NIM untuk RAG. Ini awalnya diperluas ke laboratorium berukuran penuh dan hingga lingkungan produksi. Ini adalah berita bagus untuk membangun arsitektur RAG dan menambahkan NIM dengan mudah sesuai kebutuhan. Jika Anda belum terbiasa dengan RAG, RAG secara dinamis mengambil informasi eksternal yang relevan selama inferensi tanpa mengubah model itu sendiri. Bayangkan Anda adalah pemimpin teknologi di sebuah perusahaan yang memiliki database lokal yang berisi informasi rahasia dan terkini. Anda tidak ingin OpenAI mengakses data Anda, namun Anda memerlukan model untuk memahaminya agar dapat menjawab pertanyaan secara akurat. Solusinya adalah menghubungkan model bahasa Anda ke database dan memberi mereka informasi.
Untuk mempelajari lebih lanjut mengapa RAG merupakan solusi terbaik untuk meningkatkan akurasi dan keandalan model AI generatif Anda, baca blog ini.
Mulailah menggunakan NIM Anywhere sekarang dengan petunjuk memulai cepat dan bangun aplikasi RAG pertama Anda menggunakan NIM!
Untuk mengizinkan AI Workbench mengakses sumber daya cloud NVIDIA, Anda harus menyediakan Kunci Pribadi untuknya. Kunci ini dimulai dengan nvapi-
.
Buka Manajer Kunci Pribadi NGC. Jika Anda diminta, daftarkan akun baru dan masuk.
PETUNJUK Anda dapat menemukan alat ini dengan masuk ke ngc.nvidia.com, perluas menu profil Anda di kanan atas, pilih Setup , lalu pilih Generate Personal Key .
Pilih Hasilkan Kunci Pribadi .
Masukkan nilai apa pun sebagai nama Kunci, masa berlaku 12 bulan sudah cukup, dan pilih semua layanan. Tekan Hasilkan Kunci Pribadi setelah Anda selesai.
Simpan kunci pribadi Anda untuk nanti. Workbench akan membutuhkannya dan tidak ada cara untuk mengambilnya kembali nanti. Jika kuncinya hilang, kunci baru harus dibuat. Lindungi kunci ini seolah-olah itu adalah kata sandi.
Proyek ini dirancang untuk digunakan dengan NVIDIA AI Workbench. Meskipun ini bukan keharusan, menjalankan demo ini tanpa AI Workbench akan memerlukan pekerjaan manual karena otomatisasi dan integrasi yang telah dikonfigurasi sebelumnya mungkin tidak tersedia.
Panduan memulai cepat ini akan mengasumsikan mesin lab jarak jauh digunakan untuk pengembangan dan mesin lokal adalah klien tipis untuk mengakses mesin pengembangan dari jarak jauh. Hal ini memungkinkan sumber daya komputasi tetap terpusat dan pengembang menjadi lebih portabel. Catatan, mesin lab jarak jauh harus menjalankan Ubuntu, namun klien lokal dapat menjalankan Windows, MacOS, atau Ubuntu. Untuk menginstal proyek ini secara lokal saja, lewati saja instalasi jarak jauh.
diagram alur LR
lokal
lingkungan laboratorium subgraf
mesin laboratorium jarak jauh
akhir
lokal <-.ssh.-> mesin lab jarak jauh
Ubuntu diperlukan jika klien lokal juga akan digunakan untuk pengembangan. Saat menggunakan mesin lab jarak jauh, ini bisa berupa Windows, MacOS, atau Ubuntu.
Untuk petunjuk selengkapnya, lihat Panduan Pengguna NVIDIA AI Workbench.
Instal Perangkat Lunak Prasyarat
Unduh penginstal NVIDIA AI Workbench dan jalankan. Otorisasi Windows untuk mengizinkan penginstal melakukan perubahan.
Ikuti instruksi di wizard instalasi. Jika Anda perlu menginstal WSL2, izinkan Windows untuk melakukan perubahan dan reboot mesin lokal bila diminta. Saat sistem dimulai ulang, penginstal NVIDIA AI Workbench akan dilanjutkan secara otomatis.
Pilih Docker sebagai runtime kontainer Anda.
Masuk ke Akun GitHub Anda dengan menggunakan opsi Masuk melalui GitHub.com .
Masukkan informasi penulis git Anda jika diminta.
Untuk petunjuk selengkapnya, lihat Panduan Pengguna NVIDIA AI Workbench.
Instal Perangkat Lunak Prasyarat
Unduh image disk NVIDIA AI Workbench (file .dmg ) dan buka.
Seret AI Workbench ke folder Aplikasi dan jalankan NVIDIA AI Workbench dari peluncur aplikasi.
Pilih Docker sebagai runtime kontainer Anda.
Masuk ke Akun GitHub Anda dengan menggunakan opsi Masuk melalui GitHub.com .
Masukkan informasi penulis git Anda jika diminta.
Untuk petunjuk selengkapnya, lihat Panduan Pengguna NVIDIA AI Workbench. Jalankan instalasi ini sebagai pengguna yang akan menjadi pengguna Workbench. Jangan jalankan langkah-langkah ini sebagai root
.
Instal Perangkat Lunak Prasyarat
Unduh penginstal NVIDIA AI Workbench, buat agar dapat dieksekusi, lalu jalankan. Anda dapat membuat file tersebut dapat dieksekusi dengan perintah berikut:
chmod +x NVIDIA-AI-Workbench- * .AppImage
AI Workbench akan menginstal driver NVIDIA untuk Anda (jika diperlukan). Anda perlu me-reboot mesin lokal Anda setelah driver diinstal dan kemudian memulai ulang instalasi AI Workbench dengan mengklik dua kali ikon NVIDIA AI Workbench di desktop Anda.
Pilih Docker sebagai runtime kontainer Anda.
Masuk ke Akun GitHub Anda dengan menggunakan opsi Masuk melalui GitHub.com .
Masukkan informasi penulis git Anda jika diminta.
Hanya Ubuntu yang didukung untuk mesin jarak jauh.
Untuk petunjuk selengkapnya, lihat Panduan Pengguna NVIDIA AI Workbench. Jalankan instalasi ini sebagai pengguna yang akan menggunakan Workbench. Jangan jalankan langkah-langkah ini sebagai root
.
Pastikan otentikasi berbasis Kunci SSH diaktifkan dari mesin lokal ke mesin jarak jauh. Jika ini tidak diaktifkan saat ini, perintah berikut akan mengaktifkan hal ini pada sebagian besar situasi. Ubah REMOTE_USER
dan REMOTE-MACHINE
untuk mencerminkan alamat jarak jauh Anda.
ssh - keygen -f " C:Userslocal-user.sshid_rsa " - t rsa - N ' "" '
type $ env: USERPROFILE .sshid_rsa.pub | ssh REMOTE_USER @REMOTE - MACHINE " cat >> .ssh/authorized_keys "
if [ ! -e ~ /.ssh/id_rsa ] ; then ssh-keygen -f ~ /.ssh/id_rsa -t rsa -N " " ; fi
ssh-copy-id REMOTE_USER@REMOTE-MACHINE
SSH ke host jarak jauh. Kemudian, gunakan perintah berikut untuk mengunduh dan menjalankan Penginstal NVIDIA AI Workbench.
mkdir -p $HOME /.nvwb/bin &&
curl -L https://workbench.download.nvidia.com/stable/workbench-cli/ $( curl -L -s https://workbench.download.nvidia.com/stable/workbench-cli/LATEST ) /nvwb-cli- $( uname ) - $( uname -m ) --output $HOME /.nvwb/bin/nvwb-cli &&
chmod +x $HOME /.nvwb/bin/nvwb-cli &&
sudo -E $HOME /.nvwb/bin/nvwb-cli install
AI Workbench akan menginstal driver NVIDIA untuk Anda (jika diperlukan). Anda perlu me-reboot mesin jarak jauh setelah driver diinstal dan kemudian memulai ulang instalasi AI Workbench dengan menjalankan kembali perintah pada langkah sebelumnya.
Pilih Docker sebagai runtime kontainer Anda.
Masuk ke Akun GitHub Anda dengan menggunakan opsi Masuk melalui GitHub.com .
Masukkan informasi penulis git Anda jika diminta.
Setelah instalasi jarak jauh selesai, Lokasi Jarak Jauh dapat ditambahkan ke instance AI Workbench lokal. Buka aplikasi AI Workbench, klik Tambahkan Lokasi Jarak Jauh , lalu masukkan informasi yang diperlukan. Jika sudah selesai, klik Tambah Lokasi .
REMOTE-MACHINE
.REMOTE_USER
./home/USER/.ssh/id_rsa
.Ada dua cara mengunduh proyek ini untuk penggunaan lokal: Kloning dan Forking.
Mengkloning repositori ini adalah cara yang disarankan untuk memulai. Ini tidak memungkinkan modifikasi lokal, tetapi merupakan cara tercepat untuk memulai. Ini juga memungkinkan cara termudah untuk menarik pembaruan.
Forking repositori ini direkomendasikan untuk pengembangan karena perubahan dapat disimpan. Namun, untuk mendapatkan pembaruan, pengelola fork harus menarik secara teratur dari repo upstream. Untuk bekerja dari fork, ikuti instruksi GitHub lalu rujuk URL ke fork pribadi Anda di sisa bagian ini.
Buka jendela NVIDIA AI Workbench lokal. Dari daftar lokasi yang ditampilkan, pilih lokasi jarak jauh yang baru saja Anda atur, atau lokal jika Anda akan bekerja secara lokal.
Setelah masuk ke dalam lokasi, pilih Clone Project .
Di jendela pop-up 'Proyek Klon', atur URL Repositori ke https://github.com/NVIDIA/nim-anywhere.git
. Anda dapat membiarkan Path sebagai default /home/REMOTE_USER/nvidia-workbench/nim-anywhere.git
. Klik Klon .`
Anda akan diarahkan ke halaman proyek baru. Workbench akan secara otomatis mem-bootstrap lingkungan pengembangan. Anda dapat melihat kemajuan secara real-time dengan memperluas Output dari bagian bawah jendela.
Proyek harus dikonfigurasi untuk bekerja dengan sumber daya mesin lokal.
Sebelum dijalankan untuk pertama kalinya, konfigurasi khusus proyek harus disediakan. Konfigurasi proyek dilakukan menggunakan tab Lingkungan dari panel sebelah kiri.
Gulir ke bawah ke bagian Variabel dan temukan entri NGC_HOME . Itu harus diatur ke sesuatu seperti ~/.cache/nvidia-nims
. Nilai di sini digunakan oleh meja kerja. Lokasi yang sama ini juga muncul di bagian Mounts yang memasang direktori ini ke dalam container.
Gulir ke bawah ke bagian Rahasia dan temukan entri NGC_API_KEY . Tekan Konfigurasikan dan berikan kunci pribadi untuk NGC yang telah dibuat sebelumnya.
Gulir ke bawah ke bagian Mount . Di sini, ada dua mount untuk dikonfigurasi.
A. Temukan mount untuk /var/host-run. Ini digunakan untuk memungkinkan lingkungan pengembangan mengakses daemon Docker host dalam pola yang disebut Docker di luar Docker. Tekan Konfigurasikan dan berikan direktori /var/run
.
B. Temukan mount untuk /home/workbench/.cache/nvidia-nims. Pemasangan ini digunakan sebagai cache runtime untuk NIM tempat mereka dapat menyimpan file model dalam cache. Berbagi cache ini dengan host akan mengurangi penggunaan disk dan bandwidth jaringan.
Jika Anda belum memiliki cache nim, atau tidak yakin, gunakan perintah berikut untuk membuatnya di /home/USER/.cache/nvidia-nims
.
mkdir -p ~ /.cache/nvidia-nims
chmod 2777 ~ /.cache/nvidia-nims
Pembangunan kembali akan terjadi setelah pengaturan ini diubah.
Setelah pembangunan selesai dengan pesan Build Ready , semua aplikasi akan tersedia untuk Anda.
Bahkan Rantai LLM yang paling dasar pun bergantung pada beberapa layanan mikro tambahan. Ini dapat diabaikan selama pengembangan untuk alternatif dalam memori, tetapi perubahan kode diperlukan untuk masuk ke produksi. Untungnya, Workbench mengelola layanan mikro tambahan tersebut untuk lingkungan pengembangan.
PETUNJUK: Untuk setiap aplikasi, keluaran debug dapat dipantau di UI dengan mengeklik tautan Keluaran di sudut kiri bawah, memilih menu tarik-turun, dan memilih aplikasi yang diinginkan.
Semua aplikasi yang digabungkan dalam ruang kerja ini dapat dikontrol dengan membuka Lingkungan > Aplikasi .
Pertama, aktifkan Milvus Vector DB dan Redis . Milvus digunakan sebagai basis pengetahuan tidak terstruktur dan Redis digunakan untuk menyimpan riwayat percakapan.
Setelah layanan ini dimulai, Chain Server dapat dimulai dengan aman. Ini berisi kode LangChain khusus untuk menjalankan rantai penalaran kami. Secara default, ini akan menggunakan Milvus dan Redis lokal, tetapi menggunakan ai.nvidia.com untuk inferensi model LLM dan Penyematan.
[OPSIONAL]: Selanjutnya, mulai NIM LLM . Saat pertama kali LLM NIM dimulai, diperlukan beberapa waktu untuk mengunduh gambar dan model yang dioptimalkan.
A. Selama permulaan yang panjang, untuk mengonfirmasi bahwa NIM LLM telah dimulai, kemajuannya dapat diamati dengan melihat log menggunakan panel Output di kiri bawah UI.
B. Jika log menunjukkan kesalahan autentikasi, itu berarti NGC_API_KEY yang disediakan tidak memiliki akses ke NIM. Harap verifikasi bahwa ini dibuat dengan benar dan di organisasi NGC yang memiliki dukungan atau uji coba NVIDIA AI Enterprise.
C. Jika log tampak tersangkut di ..........: Pull complete
. ..........: Verifying complete
, atau ..........: Download complete
; ini semua adalah keluaran normal dari Docker bahwa berbagai lapisan gambar kontainer telah diunduh.
D. Kegagalan lainnya di sini perlu diatasi.
Setelah Server Rantai aktif, Antarmuka Obrolan dapat dimulai. Memulai antarmuka akan secara otomatis membukanya di jendela browser.
Untuk mulai mengembangkan demo, contoh kumpulan data disediakan bersama dengan Notebook Jupyter yang menunjukkan bagaimana data diserap ke dalam Database Vektor.
Untuk mengimpor dokumentasi PDF ke Database vektor, buka Jupyter menggunakan peluncur aplikasi di AI Workbench.
Gunakan Notebook Jupyter di code/upload-pdfs.ipynb
untuk menyerap kumpulan data default. Jika menggunakan dataset default, tidak diperlukan perubahan apa pun.
Jika menggunakan kumpulan data khusus, unggah ke direktori data/
di Jupyter dan ubah buku catatan yang disediakan seperlunya.
Proyek ini berisi aplikasi untuk beberapa layanan demo serta integrasi dengan layanan eksternal. Ini semua diatur oleh NVIDIA AI Workbench.
Layanan demo semuanya ada di folder code
. Tingkat akar folder kode memiliki beberapa buku catatan interaktif yang dimaksudkan untuk penyelaman mendalam secara teknis. Chain Server adalah contoh aplikasi yang memanfaatkan NIM dengan LangChain. (Perhatikan bahwa Chain Server di sini memberi Anda opsi untuk bereksperimen dengan dan tanpa RAG). Folder Chat Frontend berisi server UI interaktif untuk menjalankan server rantai. Terakhir, buku catatan contoh disediakan di direktori Evaluasi untuk menunjukkan penilaian pengambilan dan validasi.
peta pikiran
root((Meja Kerja AI))
Layanan Demo
Server Rantai
LangChain + NIM
Frontend
UI Demo Interaktif
Evaluasi
Validasi hasilnya
Notebook
Penggunaan tingkat lanjut
Integrasi
RedisRiwayat Percakapan
Basis Data Vektor Milvus
LLM NIMLLM yang Dioptimalkan
Chain Server dapat dikonfigurasi dengan file konfigurasi atau variabel lingkungan.
Secara default, aplikasi akan mencari file konfigurasi di semua lokasi berikut. Jika beberapa file konfigurasi ditemukan, nilai dari file yang lebih rendah dalam daftar akan diutamakan.
Jalur file konfigurasi tambahan dapat ditentukan melalui variabel lingkungan bernama APP_CONFIG
. Nilai dalam file ini akan diutamakan dibandingkan semua lokasi file default.
export APP_CONFIG=/etc/my_config.yaml
Konfigurasi juga dapat diatur menggunakan variabel lingkungan. Nama variabel akan berbentuk: APP_FIELD__SUB_FIELD
Nilai yang ditentukan sebagai variabel lingkungan akan diutamakan daripada semua nilai dari file.
# Your API key for authentication to AI Foundation.
# ENV Variables: NGC_API_KEY, NVIDIA_API_KEY, APP_NVIDIA_API_KEY
# Type: string, null
nvidia_api_key : ~
# The Data Source Name for your Redis DB.
# ENV Variables: APP_REDIS_DSN
# Type: string
redis_dsn : redis://localhost:6379/0
llm_model :
# The name of the model to request.
# ENV Variables: APP_LLM_MODEL__NAME
# Type: string
name : meta/llama3-8b-instruct
# The URL to the model API.
# ENV Variables: APP_LLM_MODEL__URL
# Type: string
url : https://integrate.api.nvidia.com/v1
embedding_model :
# The name of the model to request.
# ENV Variables: APP_EMBEDDING_MODEL__NAME
# Type: string
name : nvidia/nv-embedqa-e5-v5
# The URL to the model API.
# ENV Variables: APP_EMBEDDING_MODEL__URL
# Type: string
url : https://integrate.api.nvidia.com/v1
reranking_model :
# The name of the model to request.
# ENV Variables: APP_RERANKING_MODEL__NAME
# Type: string
name : nv-rerank-qa-mistral-4b:1
# The URL to the model API.
# ENV Variables: APP_RERANKING_MODEL__URL
# Type: string
url : https://integrate.api.nvidia.com/v1
milvus :
# The host machine running Milvus vector DB.
# ENV Variables: APP_MILVUS__URL
# Type: string
url : http://localhost:19530
# The name of the Milvus collection.
# ENV Variables: APP_MILVUS__COLLECTION_NAME
# Type: string
collection_name : collection_1
log_level :
Frontend obrolan juga memiliki beberapa opsi konfigurasi. Mereka dapat diatur dengan cara yang sama seperti server rantai.
# The URL to the chain on the chain server.
# ENV Variables: APP_CHAIN_URL
# Type: string
chain_url : http://localhost:3030/
# The url prefix when this is running behind a proxy.
# ENV Variables: PROXY_PREFIX, APP_PROXY_PREFIX
# Type: string
proxy_prefix : /
# Path to the chain server's config.
# ENV Variables: APP_CHAIN_CONFIG_FILE
# Type: string
chain_config_file : ./config.yaml
log_level :
Semua umpan balik dan kontribusi untuk proyek ini dipersilakan. Saat melakukan perubahan pada proyek ini, baik untuk penggunaan pribadi atau untuk kontribusi, disarankan untuk mengerjakan fork pada proyek ini. Setelah perubahan selesai pada fork, Permintaan Penggabungan harus dibuka.
Proyek ini telah dikonfigurasi dengan Linters yang telah disesuaikan untuk membantu kode tetap konsisten namun tidak terlalu memberatkan. Kami menggunakan Linter berikut:
Lingkungan VSCode tertanam dikonfigurasi untuk menjalankan linting dan pemeriksaan secara realtime.
Untuk menjalankan linting secara manual yang dilakukan oleh pipeline CI, jalankan /project/code/tools/lint.sh
. Tes individual dapat dijalankan dengan menentukannya berdasarkan nama: /project code/tools/lint.sh [deps|pylint|mypy|black|docs|fix]
. Menjalankan alat lint dalam mode perbaikan akan secara otomatis memperbaiki apa yang bisa dilakukan dengan menjalankan Black, memperbarui README, dan menghapus output sel di semua Notebook Jupyter.
Frontend telah dirancang dalam upaya meminimalkan pengembangan HTML dan Javascript yang diperlukan. Disediakan Shell Aplikasi bermerek dan bergaya yang dibuat dengan vanilla HTML, Javascript, dan CSS. Ini dirancang agar mudah untuk disesuaikan, tetapi tidak diperlukan. Komponen interaktif frontend semuanya dibuat di Gradio dan dipasang di shell aplikasi menggunakan iframe.
Di bagian atas shell aplikasi terdapat menu yang mencantumkan tampilan yang tersedia. Setiap tampilan mungkin memiliki tata letaknya sendiri yang terdiri dari satu atau beberapa halaman.
Halaman berisi komponen interaktif untuk demo. Kode untuk halaman ada di direktori code/frontend/pages
. Untuk membuat halaman baru:
__init__.py
di direktori baru yang menggunakan Gradio untuk mendefinisikan UI. Tata letak Blok Gradio harus didefinisikan dalam variabel bernama page
.chat
untuk contohnya.code/frontend/pages/__init__.py
, impor halaman baru, dan tambahkan halaman baru ke daftar __all__
.CATATAN: Membuat halaman baru tidak akan menambahkannya ke frontend. Itu harus ditambahkan ke tampilan agar muncul di Frontend.
Tampilan terdiri dari satu atau beberapa halaman dan harus berfungsi secara independen satu sama lain. Semua tampilan ditentukan dalam modul code/frontend/server.py
. Semua tampilan yang dideklarasikan akan secara otomatis ditambahkan ke bilah menu Frontend dan tersedia di UI.
Untuk menentukan tampilan baru, ubah daftar bernama views
. Ini adalah daftar objek View
. Urutan objek akan menentukan urutannya di menu Frontend. Tampilan pertama yang ditentukan akan menjadi default.
Objek tampilan menjelaskan nama tampilan dan tata letaknya. Mereka dapat dideklarasikan sebagai berikut:
my_view = frontend . view . View (
name = "My New View" , # the name in the menu
left = frontend . pages . sample_page , # the page to show on the left
right = frontend . pages . another_page , # the page to show on the right
)
Semua deklarasi halaman, View.left
atau View.right
, bersifat opsional. Jika tidak dideklarasikan, maka iframe terkait di tata letak web akan disembunyikan. Iframe lainnya akan diperluas untuk mengisi kekosongan. Diagram berikut menunjukkan berbagai tata letak.
blok-beta
kolom 1
menu["bilah menu"]
memblokir
kolom 2
kiri kanan
akhir
blok-beta
kolom 1
menu["bilah menu"]
memblokir
kolom 1
kiri:1
akhir
Frontend berisi beberapa aset bermerek yang dapat disesuaikan untuk berbagai kasus penggunaan.
Frontend berisi logo di kiri atas halaman. Untuk memodifikasi logo, diperlukan SVG dari logo yang diinginkan. Shell aplikasi kemudian dapat dengan mudah dimodifikasi untuk menggunakan SVG baru dengan memodifikasi file code/frontend/_assets/index.html
. Ada satu div
dengan ID logo
. Kotak ini berisi satu SVG. Perbarui ini ke definisi SVG yang diinginkan.
< div id =" logo " class =" logo " >
< svg viewBox =" 0 0 164 30 " > ... svg >
div >
Penataan gaya App Shell ditentukan dalam code/frontend/_static/css/style.css
. Warna dalam file ini dapat dimodifikasi dengan aman.
Penataan berbagai halaman ditentukan dalam code/frontend/pages/*/*.css
. File-file ini mungkin juga memerlukan modifikasi untuk skema warna khusus.
Tema Gradio didefinisikan dalam file code/frontend/_assets/theme.json
. Warna dalam file ini dapat dimodifikasi dengan aman sesuai merek yang diinginkan. Gaya lain dalam file ini juga dapat diubah, tetapi dapat menyebabkan perubahan besar pada frontend. Dokumentasi Gradio berisi informasi lebih lanjut tentang tema Gradio.
CATATAN: Ini adalah topik tingkat lanjut yang tidak diperlukan oleh sebagian besar pengembang.
Kadang-kadang, mungkin diperlukan beberapa halaman dalam satu tampilan yang berkomunikasi satu sama lain. Untuk tujuan ini, kerangka perpesanan postMessage
Javascript digunakan. Setiap pesan tepercaya yang diposting ke shell aplikasi akan diteruskan ke setiap iframe tempat halaman dapat menangani pesan sesuai keinginan. Halaman control
menggunakan fitur ini untuk mengubah konfigurasi halaman chat
.
Berikut ini akan memposting pesan ke shell aplikasi ( window.top
). Pesan tersebut akan berisi kamus dengan kunci use_kb
dan nilai true. Dengan menggunakan Gradio, Javascript ini dapat dijalankan oleh event Gradio apa pun.
window . top . postMessage ( { "use_kb" : true } , '*' ) ;
Pesan ini secara otomatis akan dikirim ke semua halaman oleh shell aplikasi. Kode contoh berikut akan menggunakan pesan di halaman lain. Kode ini akan berjalan secara asinkron ketika peristiwa message
diterima. Jika pesan tersebut dipercaya, komponen Gradio dengan elem_id
dari use_kb
akan diperbarui ke nilai yang ditentukan dalam pesan. Dengan cara ini, nilai komponen Gradio dapat diduplikasi di seluruh halaman.
window . addEventListener (
"message" ,
( event ) => {
if ( event . isTrusted ) {
use_kb = gradio_config . components . find ( ( element ) => element . props . elem_id == "use_kb" ) ;
use_kb . props . value = event . data [ "use_kb" ] ;
} ;
} ,
false ) ;
README dirender secara otomatis; suntingan langsung akan ditimpa. Untuk memodifikasi README Anda perlu mengedit file untuk setiap bagian secara terpisah. Semua file ini akan digabungkan dan README akan dibuat secara otomatis. Anda dapat menemukan semua file terkait di folder docs
.
Dokumentasi ditulis dalam Github Flavored Markdown dan kemudian dirender ke file Markdown akhir oleh Pandoc. Detail untuk proses ini ditentukan di Makefile. Urutan file yang dihasilkan ditentukan dalam docs/_TOC.md
. Dokumentasi dapat dipratinjau di jendela browser file Workbench.
File header adalah file pertama yang digunakan untuk mengkompilasi dokumentasi. File ini dapat ditemukan di docs/_HEADER.md
. Isi file ini akan ditulis kata demi kata, tanpa manipulasi apa pun, ke README sebelum hal lainnya.
File ringkasan berisi deskripsi singkat dan grafik yang menggambarkan proyek ini. Isi file ini akan ditambahkan ke README segera setelah header dan sebelum daftar isi. File ini diproses oleh Pandoc untuk menyematkan gambar sebelum ditulis ke README.
File terpenting untuk dokumentasi adalah file daftar isi di docs/_TOC.md
. File ini mendefinisikan daftar file yang harus digabungkan untuk menghasilkan manual README akhir. File harus ada dalam daftar ini untuk disertakan.
Simpan semua konten statis, termasuk gambar, ke folder _static
. Ini akan membantu organisasi.
Mungkin bermanfaat jika memiliki dokumen yang diperbarui dan ditulis sendiri. Untuk membuat dokumen dinamis, cukup buat file yang dapat dieksekusi yang menulis dokumen berformat Markdown ke stdout. Selama waktu pembuatan, jika entri dalam file daftar isi dapat dieksekusi, entri tersebut akan dieksekusi dan stdoutnya akan digunakan sebagai gantinya.
Saat penerapan terkait dokumentasi didorong, Tindakan GitHub akan merender dokumentasi tersebut. Setiap perubahan pada README akan dilakukan secara otomatis.
Sebagian besar konfigurasi lingkungan pengembangan terjadi dengan Variabel Lingkungan. Untuk membuat perubahan permanen pada variabel lingkungan, ubah variables.env
atau gunakan UI Meja Kerja.
Proyek ini menggunakan satu lingkungan Python di /usr/bin/python3
dan dependensi dikelola dengan pip
. Karena semua pengembangan dilakukan di dalam sebuah container, perubahan apa pun pada lingkungan Python hanya bersifat sementara. Untuk menginstal paket Python secara permanen, tambahkan paket tersebut ke file requirements.txt
atau gunakan UI Workbench.
Lingkungan pengembangan didasarkan pada Ubuntu 22.04. Pengguna utama memiliki akses sudo tanpa kata sandi, namun semua perubahan pada sistem hanya bersifat sementara. Untuk membuat perubahan permanen pada paket yang diinstal, tambahkan paket tersebut ke file [ apt.txt
]. Untuk membuat perubahan lain pada sistem operasi seperti memanipulasi file, menambahkan variabel lingkungan, dll; gunakan file postBuild.bash
dan preBuild.bash
.
Biasanya merupakan praktik yang baik untuk memperbarui dependensi setiap bulan untuk memastikan tidak ada CVE yang terekspos melalui dependensi yang disalahgunakan. Proses berikut dapat digunakan untuk menambal proyek ini. Disarankan untuk menjalankan pengujian regresi setelah patch untuk memastikan tidak ada yang rusak dalam pembaruan.
/project/code/tools/bump.sh
./project/code/tools/audit.sh
. Skrip ini akan mencetak laporan semua paket Python dalam keadaan peringatan dan semua paket dalam keadaan kesalahan. Apa pun yang berada dalam status kesalahan harus diselesaikan karena akan memiliki CVE aktif dan kerentanan yang diketahui.