Obrolan LLM Dasar adalah aplikasi Chainlit yang dibangun menggunakan AWS CDK dan Converse API yang memungkinkan Anda berinteraksi dengan model bahasa Amazon Bedrock. Ini menyediakan antarmuka yang ramah pengguna untuk mengobrol dengan Amazon Bedrock LLM, mengunggah gambar atau dokumen , dan menerima respons multimodal. Aplikasi ini diterapkan di AWS menggunakan berbagai layanan seperti Amazon Bedrock, Amazon Elastic Container Service, Amazon Cognito, Amazon CloudFront, dan banyak lagi.
Diagram arsitektur mengilustrasikan penerapan AWS pada aplikasi Obrolan LLM Dasar. Pengguna berinteraksi dengan aplikasi melalui antarmuka web yang diamankan dengan autentikasi Amazon Cognito. Aplikasi ini didistribusikan secara global menggunakan CDN Amazon CloudFront. Dalam wilayah AWS tertentu, aplikasi diterapkan di beberapa Availability Zone menggunakan Amazon ECS untuk penerapan dalam container. Backend terintegrasi dengan Amazon Bedrock untuk memanfaatkan berbagai model bahasa, memungkinkan pengguna terlibat dalam percakapan multimodal dengan asisten AI.
Aplikasi dikonfigurasi melalui file config.json
di folder ./bin
. Opsi konfigurasi utama meliputi:
default_system_prompt
: Bidang ini berisi prompt sistem default yang akan digunakan oleh chatbot jika tidak ditentukan di bawah pada bidang bedrock_models
. Ini mendefinisikan instruksi awal dan perilaku asisten AI. Anda dapat mengubah nilai ini untuk mengubah persona asisten atau perintah awal.
max_characters_parameter
: Bidang ini menentukan jumlah maksimum karakter yang diperbolehkan dalam teks masukan. Jika disetel ke string "None"
, tidak ada batasan karakter. Anda dapat mengubah nilai ini untuk membatasi panjang teks masukan jika diinginkan.
max_content_size_mb_parameter
: Bidang ini menetapkan ukuran maksimum konten masukan (misalnya gambar) dalam megabita. Jika disetel ke string "None"
, tidak ada batasan ukuran. Anda dapat mengubah nilai ini untuk membatasi ukuran maksimum konten masukan.
default_aws_region
: Bidang ini menentukan wilayah AWS tempat aplikasi diterapkan. Anda juga dapat mengatur wilayah untuk setiap bidang model Amazon Bedrock.
prefix
: Bidang ini memungkinkan Anda menyetel awalan untuk nama sumber daya yang dibuat oleh aplikasi. Anda dapat membiarkannya kosong atau memberikan awalan khusus jika diinginkan.
Bidang ini berisi kamus model Batuan Dasar yang dapat digunakan chatbot. Setiap model diidentifikasi dengan sebuah kunci (misalnya, "Sonnet", "Haiku") dan, kunci tersebut adalah nama yang digunakan dalam profil Obrolan Chainlit. Setiap model minimal memiliki properti berikut:
id
: ID atau ARN model Amazon Bedrock. Anda dapat menemukan ID model yang tersedia di dokumentasi AWS.region
: serangkaian wilayah yang digunakan untuk mengakses model. Satu jika Anda tidak mengaktifkan inferensi lintas wilayah, kelipatan untuk inferensi lintas wilayah.Parameter konfigurasi opsional meliputi:
inference_profile
: Pengaturan untuk inferensi lintas wilayahprefix
: Awalan wilayah (misalnya, "kita")region
: Wilayah inferensi primersystem_prompt
: Perintah sistem khususcost
: Informasi hargainput_1k_price
: Biaya (dalam USD) untuk 1.000 token masukan. Anda dapat menemukan informasi harga untuk berbagai model di halaman harga AWS Bedrock.output_1k_price
: Biaya (dalam USD) untuk 1.000 token keluaran.vision
[opsional] : benar atau salah. Jika kemampuan visi diaktifkan untuk model.document
[opsional] : benar atau salah. Jika kemampuan dokumen diaktifkan](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html) untuk model.tool
[opsional] : benar atau salah. Jika kemampuan alat diaktifkan](https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html) untuk model.default
[opsional] : benar atau salah. Model yang dipilih secara default Anda dapat memodifikasi bagian bedrock_models
untuk menyertakan model tambahan atau memperbarui model yang sudah ada sesuai kebutuhan Anda.
Berikut ini contoh cara mengambil ID model dan informasi harga:
Untuk menemukan ID model atau ARN, lihat dokumentasi ID Model Batuan Dasar AWS. Misalnya, ID untuk model Claude 3 Soneta adalah anthropic.claude-3-sonnet-20240229-v1:0
.
Untuk menemukan informasi harga, lihat dokumentasi Harga AWS Bedrock. Untuk model Claude 3 Soneta, harga input dan outputnya adalah sebagai berikut:
Setelah melakukan perubahan yang diinginkan pada file config.json
, Anda dapat melanjutkan penerapan seperti yang dijelaskan dalam README.
Berikut contoh jsonnya:
{
"default_system_prompt" : " you are an assistant " ,
"max_characters_parameter" : " None " ,
"max_content_size_mb_parameter" : " None " ,
"default_aws_region" : " us-west-2 " ,
"prefix" : " " ,
"bedrock_models" : {
"Claude Sonnet 3.5 New" : {
"system_prompt" : " you are an assistant " ,
"id" : " us.anthropic.claude-3-5-sonnet-20241022-v2:0 " ,
"inference_profile" : {
"prefix" : " us " ,
"region" : " us-west-2 "
},
"region" : [ " us-east-1 " , " us-west-2 " , " us-east-2 " ],
"cost" : {
"input_1k_price" : 0.003 ,
"output_1k_price" : 0.015
},
"default" : true ,
"vision" : true ,
"document" : true ,
"tool" : true
},
"Meta Llama 3.2 90B Vision Instruct" : {
"id" : " us.meta.llama3-2-90b-instruct-v1:0 " ,
"inference_profile" : {
"prefix" : " us " ,
"region" : " us-west-2 "
},
"region" : [ " us-east-1 " , " us-west-2 " ],
"cost" : {
"input_1k_price" : 0.002 ,
"output_1k_price" : 0.002
},
"vision" : true ,
"document" : true ,
"tool" : true
},
"Mistral Large 2" : {
"id" : " mistral.mistral-large-2407-v1:0 " ,
"cost" : {
"input_1k_price" : 0.003 ,
"output_1k_price" : 0.009
},
"vision" : false ,
"document" : true ,
"tool" : true
}
}
}
Aplikasi ini memanfaatkan Amazon Bedrock Prompt Manager untuk:
Saat ini aplikasi mendukung 2 substitusi variabel otomatis:
%Y-%m-%d
hari ini;%Y-%m-%d %H:%M:%S UTC
Anda dapat mengedit fungsi extract_and_process_prompt
di dalam chainlit_image/foundational-llm-chat_app/massages_utils.py
untuk menambahkan lebih banyak substitusi langsung.
Aplikasi ini menggunakan Converse API Amazon Bedrock, menyediakan:
Semua perintah sistem disimpan dan dikelola melalui Amazon Bedrock Prompt Manager, yang menawarkan:
Saat menggunakan perintah sistem untuk mengonfigurasi perilaku model bahasa, penting untuk mempertimbangkan implikasi keamanan dan mengambil tindakan untuk mencegah potensi penyalahgunaan atau kerentanan. Salah satu risiko yang signifikan adalah injeksi cepat , yaitu masukan yang berbahaya dapat memanipulasi perintah sistem dengan cara yang tidak diinginkan, sehingga berpotensi menghasilkan keluaran yang berbahaya atau bias.
Titik awal yang baik adalah panduan berikut: Mengurangi jailbreak & suntikan cepat.
Rekayasa cepat mengacu pada praktik menyusun perintah atau instruksi dengan hati-hati untuk memandu model bahasa dalam menghasilkan keluaran yang diinginkan. Rekayasa cepat yang efektif sangat penting untuk memastikan bahwa model bahasa memahami dan merespons dengan tepat konteks dan tugas yang diberikan.
Kursus berikut ini dimaksudkan untuk memberi Anda pemahaman langkah demi langkah yang komprehensif tentang cara merekayasa prompt yang optimal dalam Claude, menggunakan Batuan Dasar: Rekayasa Prompt dengan Anthropic Claude v3.
Panduan ini mencakup berbagai teknik dan praktik terbaik untuk rekayasa cepat melalui serangkaian pelajaran dan latihan, yang disusun dalam tiga tingkatan: Pemula, Menengah, dan Lanjutan.
Dengan mengikuti prinsip dan teknik yang diuraikan dalam panduan ini, Anda dapat meningkatkan kinerja dan keandalan aplikasi model bahasa Anda, memastikan bahwa asisten AI menghasilkan respons yang lebih relevan, koheren, dan peka konteks.
Kami merekomendasikan penerapan dengan AWS Cloud9. Jika Anda ingin menggunakan Cloud9 untuk menerapkan solusi ini, Anda memerlukan hal berikut sebelum melanjutkan:
m5.large
sebagai jenis Instance.Amazon Linux 2023
sebagai platformnya. Jika Anda memutuskan untuk tidak menggunakan AWS Cloud9, verifikasi bahwa lingkungan Anda memenuhi prasyarat berikut:
Verifikasikan bahwa lingkungan Anda memenuhi prasyarat berikut:
Anda memiliki:
Akun AWS
Kebijakan akses yang memungkinkan Anda membuat sumber daya yang terkandung dalam Sampel AWS
Akses konsol dan terprogram
NodeJS sudah terinstal
nvm
Anda dapat menjalankan perintah berikut sebelum melanjutkan nvm install --lts
NPM sudah diinstal
nvm
Anda dapat menjalankan perintah berikut sebelum melanjutkan nvm install-latest-npm
AWS CLI diinstal dan dikonfigurasi untuk digunakan dengan akun AWS Anda
AWS CDK CLI diinstal
Finch terinstal atau Docker terinstal
Mengaktifkan akses model Amazon Bedrock di wilayah penerapan: Cara mengaktifkan akses model Amazon Bedrock.
Aktifkan setidaknya salah satu dari:
Kloning repositori, buka folder, instal dependensi:
git clone https://github.com/aws-samples/foundational-llm-chat.git
cd foundational-llm-chat
npm install
[Opsional hanya jika Anda belum pernah melakukannya sebelumnya di wilayah penerapan] Bootstrap lingkungan CDK:
cdk bootstrap
Bangun dan sebarkan tumpukan:
cdk deploy --region YOUR_DEPLOY_REGION
di mana YOUR_DEPLOY_REGION adalah wilayah AWS tempat Anda ingin menerapkan aplikasi. Misalnya: us-west-2
.
Jika Anda menggunakan Finch dan bukan Docker, harap tambahkan CDK_DOCKER=finch
di awal perintah seperti pada contoh berikut:
CDK_DOCKER=finch cdk deploy --region us-west-2
Ini akan membuat semua sumber daya yang diperlukan di AWS, termasuk klaster ECS, kumpulan pengguna Cognito, distribusi CloudFront, dan banyak lagi.
Setelah penerapan selesai, URL distribusi CloudFront akan ditampilkan di terminal. Gunakan URL ini untuk mengakses aplikasi obrolan-llm-dasar.
Setelah penerapan Anda akan mendapatkan sesuatu yang mirip dengan ini:
✅ Foundational-LLM-ChatStack
Deployment time: 465.09s
Outputs:
FoundationalLlmChatStack.CognitoUserPool = ID
FoundationalLlmChatStack.NetworkingFoundationalLlmChatChatbotStack = CLOUDFRONT_DISTRIBUTION_ADDRESS
FoundationalLlmChatStack.ecsApplicationFoundationalLlmChatServiceLoadBalancer = ECS_LOAD_BALANCER
FoundationalLlmChatStack.ecsApplicationFoundationalLlmChatServiceServiceURL = ECS_LOAD_BALANCER_ADDRESS
Stack ARN: ARN
Total time: 469.14s
Distribusi Amazon CloudFront ditunjukkan pada baris berikut: FoundationalLlmChatStack.NetworkingFoundationalLlmChat = CLOUDFRONT_DISTRIBUTION_ADDRESS
foundational-llm-chat-user-pool
. Buka kumpulan pengguna ini dan buat pengguna yang juga memverifikasi alamat email;Untuk menghindari timbulnya biaya yang tidak perlu, disarankan untuk membersihkan dan menghapus sumber daya yang dibuat oleh sampel ini setelah Anda selesai menggunakannya. Ikuti langkah-langkah berikut untuk menghapus tumpukan dan sumber daya terkait:
Foundational-LLM-ChatStack
.Tindakan ini akan menghapus seluruh tumpukan, termasuk klaster ECS, kumpulan pengguna Cognito, distribusi CloudFront, dan semua sumber daya terkait lainnya.
Alternatifnya, Anda dapat menggunakan AWS CDK untuk menghapus tumpukan dari baris perintah:
cdk destroy --region YOUR_DEPLOY_REGION
Ganti YOUR_DEPLOY_REGION
dengan wilayah AWS tempat Anda men-deploy aplikasi.
Perhatikan bahwa menghapus tumpukan tidak akan secara otomatis menghapus log CloudWatch dan ketentuan tugas Amazon ECS yang dibuat selama penerapan. Anda mungkin ingin menghapus sumber daya ini secara manual jika Anda tidak lagi membutuhkannya untuk menghindari biaya tambahan.
Meskipun arsitektur saat ini memberikan titik awal yang baik untuk menerapkan aplikasi Obrolan LLM Dasar, ada pertimbangan tambahan untuk penerapan siap produksi:
Dalam arsitektur saat ini, komunikasi antara distribusi CloudFront dan Application Load Balancer (ALB) dilakukan melalui HTTP. Untuk penerapan produksi, sangat disarankan untuk menggunakan HTTPS (TLS/SSL) untuk komunikasi yang aman:
Mengaktifkan HTTPS dengan penghentian TLS di kedua tingkat (tugas ALB dan ECS) memastikan enkripsi ujung ke ujung dan meningkatkan keamanan aplikasi.
Sampel AWS ini dimaksudkan untuk tujuan demonstrasi dan pendidikan saja. Ini tidak dirancang untuk penggunaan produksi tanpa modifikasi dan pengerasan lebih lanjut. Sebelum menerapkan aplikasi ini ke lingkungan produksi, penting untuk melakukan pengujian menyeluruh, penilaian keamanan, dan pengoptimalan berdasarkan kebutuhan spesifik dan praktik terbaik Anda.
Perintah sistem untuk claude dapat diperoleh langsung dari dokumentasi Antropis di sini: Perintah Sistem
Kontribusi dipersilahkan! Silakan ikuti alur kerja Git yang biasa:
Perpustakaan ini dilisensikan di bawah Lisensi MIT-0. Lihat file LISENSI.
Anda harus mempertimbangkan untuk melakukan penilaian independen sebelum menggunakan konten dalam sampel ini untuk tujuan produksi. Hal ini dapat mencakup (antara lain) pengujian, pengamanan, dan pengoptimalan konten yang disediakan dalam sampel ini, berdasarkan praktik dan standar kontrol kualitas spesifik Anda.