Namun Asisten Cerdas Lainnya (YAIA)
Antarmuka multimodal chat dengan akses ke banyak alat.
Keterangan
YAIA adalah antarmuka multimodal chat canggih yang didukung oleh model AI canggih dan dilengkapi dengan beragam alat. Itu bisa:
- Telusuri dan jelajahi web secara real-time
- Tanyakan Wikipedia untuk mendapatkan informasi
- Lakukan pencarian berita dan peta
- Jalankan kode Python dengan aman yang dapat menghasilkan teks dan gambar seperti bagan dan diagram
- Buat artikel panjang yang memadukan teks dan gambar
- Hasilkan, cari, dan bandingkan gambar
- Analisis dokumen dan gambar
- Cari dan unduh makalah arXiv
- Hasilkan dan simpan percakapan sebagai file teks dan audio
- Simpan file ke direktori keluaran
- Lacak peningkatan pribadi
- Kelola daftar periksa untuk pelacakan tugas
Arsitektur
Ini adalah komponen utamanya:
- Gradio 5 untuk antarmuka web
- Amazon Bedrock untuk menangani percakapan dan penggunaan alat
- Anthropic Claude 3.5 Soneta sebagai model utama
- Model Amazon Titan Text dan Multimodal Embeddings
- Pembuat Gambar Amazon Titan
- OpenSearch untuk indeks teks dan multimodal
- Amazon Polly untuk suara
- AWS Lambda untuk penerjemah kode
Contoh
Berikut adalah contoh cara menggunakan berbagai alat:
Penelusuran Web : "Telusuri web untuk mengetahui kemajuan terkini dalam komputasi kuantum."
Wikipedia : "Temukan artikel Wikipedia tentang sejarah kecerdasan buatan."
Skrip Python : "Buat skrip Python untuk menghasilkan diagram batang emisi CO2 global menurut negara."
Sketchbook : "Mulailah buku sketsa baru dan tulis pengantar tentang cara menghitung Pi dengan metode numerik."
Pembuatan Gambar : "Hasilkan gambaran kota futuristik dengan mobil terbang dan gedung pencakar langit yang tinggi."
Pencarian Gambar : "Cari katalog gambar untuk gambar spesies yang terancam punah."
Integrasi arXiv : "Cari makalah penelitian terbaru tentang pembelajaran mendalam dalam pemrosesan bahasa alami."
Pembuatan Percakapan : "Buat percakapan antara tiga pakar yang membahas cara menyiapkan RAG multimodal."
Manajemen File : "Simpan ringkasan diskusi kita tentang perubahan iklim ke file bernama 'climate_change_summary.txt'."
Peningkatan Pribadi : “Ini saran untuk perbaikan: untuk memperbaiki jawaban, carilah sumber resmi.”
Checklist : "Mulai checklist baru untuk mengikuti daftar tugas satu per satu."
Fitur dan Alat Utama
Interaksi Web :
- Pencarian Teks DuckDuckGo: Melakukan pencarian web
- Pencarian Berita DuckDuckGo: Mencari artikel berita terkini
- DuckDuckGo Maps Search: Mencari lokasi dan bisnis
- Pencarian Gambar DuckDuckGo: Mencari gambar yang tersedia untuk umum
- Browser Web: Menjelajahi situs web dan mengambil kontennya
Alat Wikipedia :
- Pencarian Wikipedia: Menemukan halaman Wikipedia yang relevan
- Pencarian Geodata Wikipedia: Menemukan artikel Wikipedia berdasarkan lokasi geografis
- Pengambil Halaman Wikipedia: Mengambil konten halaman Wikipedia secara lengkap
Skrip Python :
- Menjalankan skrip Python untuk komputasi, pengujian, dan pembuatan keluaran, termasuk teks dan gambar
- Modul Python dapat ditambahkan ke juru bahasa Python
- Kode Python dijalankan di lingkungan aman yang disediakan oleh AWS Lambda
Manajemen Konten :
- Arsip Pribadi: Menyimpan dan mengambil teks, Penurunan harga, atau konten HTML, menggunakan database semantik
- Buku Sketsa: Mengelola buku sketsa multi-halaman untuk menulis dan meninjau konten berdurasi panjang. Mendukung berbagai format keluaran:
- Penurunan harga (.md): Agar mudah dibaca dan diedit
- Dokumen Word (.docx): Untuk mengedit dokumen
Penanganan Gambar :
- Pembuatan Gambar: Membuat gambar berdasarkan perintah teks
- Pencarian Katalog Gambar: Mencari gambar berdasarkan deskripsi
- Pencarian Kesamaan Gambar: Menemukan gambar serupa berdasarkan gambar referensi
- Gambar Acak: Mengambil gambar acak dari katalog
- Dapatkan Gambar berdasarkan ID: Mengambil gambar tertentu dari katalog menggunakan ID-nya
- Jumlah Katalog Gambar: Mengembalikan jumlah total gambar dalam katalog
- Unduh Gambar: Menambahkan gambar dari URL ke katalog
Integrasi arXiv :
- Cari dan unduh makalah arXiv
- Simpan konten kertas dalam arsip untuk memudahkan pengambilan
Generasi Percakapan :
- Ubah konten menjadi percakapan antara dua hingga empat orang
- Hasilkan file audio untuk percakapan menggunakan text-to-speech
Manajemen File :
- Simpan File: Memungkinkan menyimpan konten teks ke file dengan nama tertentu di direktori keluaran
Peningkatan Pribadi :
- Lacak saran dan kesalahan untuk perbaikan di masa mendatang
Daftar periksa :
- Kelola daftar tugas dengan kemampuan untuk menambahkan item, menandainya sebagai selesai, dan meninjau kemajuan
Untuk daftar lengkap alat yang tersedia dan penggunaannya, lihat ./Config/tools.json
.
Persyaratan
- Alat kontainer: Docker atau Finch (untuk menginstal Finch, ikuti instruksi di sini)
- Python 3.12 atau lebih baru
- Akun AWS dengan izin yang sesuai untuk mengakses Amazon Bedrock, AWS Lambda, dan Amazon ECR
Instalasi
Kloning repositori:
git clone https://github.com/danilop/multimodal-chat
cd multimodal-chat
Membuat dan mengaktifkan lingkungan virtual (opsional namun disarankan):
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Instal paket yang diperlukan:
pip install -r requirements.txt
Siapkan fungsi AWS Lambda untuk eksekusi kode:
cd LambdaFunction
./deploy_lambda_function.sh
cd ..
Untuk menggunakan Selenium untuk penjelajahan web, instal ChromeDriver. Menggunakan minuman rumahan:
brew install --cask chromedriver
Untuk mengeluarkan audio, instal ffmpeg
. Menggunakan minuman rumahan:
Menyiapkan OpenSearch
Anda dapat menggunakan instance OpenSearch lokal atau menyambung ke server jarak jauh. Untuk pengaturan lokal:
Arahkan ke direktori OpenSearch:
Tetapkan kata sandi admin (pengaturan pertama kali), langkah ini akan membuat file .env
dan file opensearch_env.sh
:
Mulai OpenSearch secara lokal (membutuhkan akses ke file .env
):
Pastikan OpenSearch (2 node + dasbor) dimulai dengan benar dengan memeriksa hasilnya
Untuk memperbarui OpenSearch, unduh gambar kontainer baru menggunakan skrip ini:
Untuk pengaturan server jarak jauh, perbarui kode pembuatan klien di skrip utama.
Untuk mengubah kata sandi, Anda perlu menghapus wadah pengguna finch
atau docker
dan kemudian menetapkan kata sandi baru.
Penggunaan
Model default untuk teks, gambar, dan penyematan ada di file Config/config.ini
. Model yang akan digunakan ditentukan menggunakan ID model Amazon Bedrock atau ID profil inferensi lintas wilayah. Anda memerlukan izin dan akses ke model ini seperti yang dijelaskan dalam Mengakses model dasar.
Bagian ini mengasumsikan OpenSearch berjalan secara lokal di jendela terminal lain seperti yang dijelaskan sebelumnya.
Muat kata sandi admin OpenSearch ke lingkungan:
source OpenSearch/opensearch_env.sh
Jalankan aplikasi:
python multimodal_chat.py
Untuk mengatur ulang indeks teks dan multimodal (catatan: ini tidak menghapus gambar di ./Images/
):
python multimodal_chat.py --reset-index
Buka browser web dan navigasikan ke http://127.0.0.1:7860/ untuk mulai mengobrol.
Video demo
Berikut adalah beberapa contoh apa yang dapat Anda lakukan dengan aplikasi ini.
Jelajahi internet dan gunakan arsip semantik
Dalam demo ini:
- Jelajahi situs web menggunakan Selenium dan alat khusus untuk DuckDuckGo (pencarian, berita, geosearch) dan Wikipedia
- Gunakan alat arsip teks semantik untuk mengarsipkan dokumen dan mengambil berdasarkan kata kunci
Impor dan cari Gambar
Dalam demo ini:
- Menggunakan indeks multimodal dan sistem file lokal untuk mengelola katalog gambar
- Simpan gambar dengan deskripsi yang dihasilkan
- Ambil gambar dengan deskripsi teks (pencarian semantik)
- Ambil gambar berdasarkan kemiripan dengan gambar lain
- Ambil gambar acak
Hasilkan dan cari gambar
Dalam demo ini:
- Hasilkan gambar dari deskripsi tekstual
- Prompt teks-ke-gambar dihasilkan dari instruksi obrolan
- Pendekatan ini memungkinkan penggunaan percakapan secara keseluruhan untuk meningkatkan prompt
Penerjemah kode Python
Dalam demo ini:
- Menjalankan kode yang dihasilkan AI untuk memecahkan masalah
- Berjalan demi keamanan dalam fungsi AWS Lambda dengan izin dasar
- Diterapkan melalui gambar kontainer untuk menambahkan modul Python dengan mudah
- Hanya Python tetapi mudah diperluas
Menulis di "buku sketsa"
Dalam demo ini:
- Alat untuk membantu menulis teks berbentuk panjang seperti artikel dan postingan blog)
- Menyediakan akses berurutan ke teks yang dibagi menjadi beberapa halaman
- Untuk mengurangi "asimetri" antara ukuran masukan dan keluaran model
Buku sketsa dengan ulasan kode Python
Dalam demo ini:
- Hasil terbaik menggunakan lebih dari satu alat secara bersamaan
- Mulailah dengan buku sketsa untuk menulis artikel panjang
- Artikel tersebut berisi cuplikan kode
- Peninjauan menjalankan dan menguji semua cuplikan kode dan memperbarui setiap halaman dengan memperbaiki kode (jika diperlukan) dan menambahkan hasil aktual
Pemecahan masalah
- Jika Anda mengalami masalah dengan OpenSearch, periksa pengaturan koneksi dan pastikan layanan berjalan
- Untuk kesalahan fungsi AWS Lambda, verifikasi kredensial dan izin AWS Anda
- Jika pemrosesan gambar gagal, pastikan Anda telah menginstal perpustakaan yang diperlukan dan periksa izin file
Berkontribusi
Kontribusi untuk YAIA dipersilahkan! Silakan merujuk ke pedoman kontribusi untuk informasi lebih lanjut tentang cara mengirimkan permintaan penarikan, melaporkan masalah, atau fitur permintaan.
Lisensi
Proyek ini dilisensikan di bawah Lisensi MIT. Lihat file LISENSI untuk detailnya.
Tip Penggunaan
- Gabungkan beberapa alat untuk tugas kompleks. Misalnya, gunakan penelusuran web untuk mencari informasi, lalu gunakan buku sketsa untuk menulis ringkasan, dan terakhir buat percakapan tentang topik tersebut.
- Saat bekerja dengan gambar, Anda dapat membuat gambar baru, mencari gambar yang sudah ada, atau mengunduh gambar dari web untuk ditambahkan ke katalog Anda.
- Gunakan integrasi arXiv untuk tetap mendapatkan informasi terkini tentang penelitian terbaru di bidang yang Anda minati.
- Alat pembuat percakapan sangat bagus untuk membuat konten yang menarik atau mempersiapkan presentasi.
- Periksa dan perbarui peningkatan pribadi Anda secara teratur untuk melacak kemajuan dan area pertumbuhan Anda.
Untuk informasi lebih rinci tentang komponen tertentu atau penggunaan lanjutan, silakan merujuk ke dokumentasi inline dalam kode sumber.