Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kembangkan asisten berbasis obrolan AI generatif tingkat lanjut dengan menggunakan RAG dan prompt ReAct
Praveen Kumar Jeyarajan, Shuai Cao, Noah Hamilton, Kiowa Jackson, Jundong Qiao, dan Kara Yang, Amazon Web Services
Ringkasan
Sebuah perusahaan tipikal memiliki 70 persen datanya yang terperangkap dalam sistem siloed. Anda dapat menggunakan asisten berbasis obrolan berbasis AI generatif untuk membuka wawasan dan hubungan antara silo data ini melalui interaksi bahasa alami. Untuk mendapatkan hasil maksimal dari AI generatif, output harus dapat dipercaya, akurat, dan inklusif dari data perusahaan yang tersedia. Asisten berbasis obrolan yang sukses bergantung pada hal-hal berikut:
Model AI generatif (seperti Anthropic Claude 2)
Vektorisasi sumber data
Teknik penalaran tingkat lanjut, seperti ReAct kerangka kerja
, untuk mendorong model
Pola ini menyediakan pendekatan pengambilan data dari sumber data seperti bucket Amazon Simple Storage Service (Amazon S3), AWS Glue, dan Amazon Relational Database Service (Amazon RDS). Nilai diperoleh dari data tersebut dengan menyisipkan Retrieval Augmented Generation (RAG) dengan metode. chain-of-thought Hasilnya mendukung percakapan asisten berbasis obrolan kompleks yang memanfaatkan keseluruhan data yang disimpan perusahaan Anda.
Pola ini menggunakan SageMaker manual Amazon dan tabel data harga sebagai contoh untuk mengeksplorasi kemampuan asisten berbasis obrolan AI generatif. Anda akan membangun asisten berbasis obrolan yang membantu pelanggan mengevaluasi SageMaker layanan dengan menjawab pertanyaan tentang harga dan kemampuan layanan. Solusinya menggunakan perpustakaan Streamlit untuk membangun aplikasi frontend dan LangChain kerangka kerja untuk mengembangkan backend aplikasi yang didukung oleh model bahasa besar (LLM).
Pertanyaan ke asisten berbasis obrolan dipenuhi dengan klasifikasi maksud awal untuk merutekan ke salah satu dari tiga kemungkinan alur kerja. Alur kerja paling canggih menggabungkan panduan penasehat umum dengan analisis harga yang kompleks. Anda dapat menyesuaikan pola agar sesuai dengan kasus penggunaan perusahaan, perusahaan, dan industri.
Prasyarat dan batasan
Prasyarat
AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi
AWS Cloud Development Kit (AWS CDK) Toolkit 2.114.1 atau yang lebih baru diinstal dan dikonfigurasi
Keakraban dasar dengan Python dan AWS CDK
Git
diinstal Python 3.11 atau yang lebih baru
diinstal dan dikonfigurasi (untuk informasi lebih lanjut, lihat bagian Alat) Bootstrap akun AWS aktif dengan menggunakan AWS CDK
Akses model Amazon Titan dan Anthropic Claude diaktifkan di layanan Amazon Bedrock
Kredensi keamanan AWS, termasuk
AWS_ACCESS_KEY_ID, dikonfigurasi dengan benar di lingkungan terminal Anda
Batasan
LangChain tidak mendukung setiap LLM untuk streaming. Model Anthropic Claude didukung, tetapi model dari AI21 Labs tidak.
Solusi ini diterapkan ke satu akun AWS.
Solusi ini hanya dapat digunakan di Wilayah AWS di mana Amazon Bedrock dan Amazon Kendra tersedia. Untuk informasi tentang ketersediaan, lihat dokumentasi untuk Amazon Bedrock dan Amazon Kendra.
Versi produk
Python versi 3.11 atau yang lebih baru
Streamlit versi 1.30.0 atau yang lebih baru
Streamlit-chat versi 0.1.1 atau yang lebih baru
LangChain versi 0.1.12 atau yang lebih baru
AWS CDK versi 2.132.1 atau yang lebih baru
Arsitektur
Tumpukan teknologi target
Amazon Athena
Amazon Bedrock
Amazon Elastic Container Service (Amazon ECS)
AWS Glue
AWS Lambda
Amazon S3
Amazon Kendra
Penyeimbang Beban Elastis
Arsitektur target
Kode AWS CDK akan menerapkan semua sumber daya yang diperlukan untuk menyiapkan aplikasi asisten berbasis obrolan di akun AWS. Aplikasi asisten berbasis obrolan yang ditunjukkan dalam diagram berikut dirancang untuk menjawab pertanyaan SageMaker terkait dari pengguna. Pengguna terhubung melalui Application Load Balancer ke VPC yang berisi cluster Amazon ECS yang menghosting aplikasi Streamlit. Fungsi Lambda orkestrasi terhubung ke aplikasi. Sumber data bucket S3 menyediakan data ke fungsi Lambda melalui Amazon Kendra dan AWS Glue. Fungsi Lambda terhubung ke Amazon Bedrock untuk menjawab pertanyaan (pertanyaan) dari asisten pengguna berbasis obrolan.

Fungsi orkestrasi Lambda mengirimkan permintaan prompt LLM ke model Amazon Bedrock (Claude 2).
Amazon Bedrock mengirimkan respons LLM kembali ke fungsi Lambda orkestrasi.
Aliran logika dalam fungsi Lambda orkestrasi
Ketika pengguna mengajukan pertanyaan melalui aplikasi Streamlit, itu memanggil fungsi Lambda orkestrasi secara langsung. Diagram berikut menunjukkan aliran logika ketika fungsi Lambda dipanggil.

Langkah 1 — Masukan
query(pertanyaan) diklasifikasikan ke dalam salah satu dari tiga maksud:Pertanyaan SageMaker bimbingan umum
Pertanyaan SageMaker harga umum (pelatihan/inferensi)
Pertanyaan kompleks terkait dengan SageMaker dan harga
Langkah 2 — Input
querymemulai salah satu dari tiga layanan:RAG Retrieval service, yang mengambil konteks yang relevan dari database vektor AmazonKendra dan memanggil LLM melalui Amazon Bedrock untuk meringkas konteks yang diambil sebagai respons. Database Query service, yang menggunakan- LLM, metadata database, dan baris sampel dari tabel yang relevan untuk mengubah inputquerymenjadi kueri SQL. Layanan Kueri Database menjalankan kueri SQL terhadap database SageMaker harga melalui AmazonAthena dan merangkum hasil kueri sebagai respons. In-context ReACT Agent service, yang memecah inputquerymenjadi beberapa langkah sebelum memberikan respons. Agen menggunakanRAG Retrieval servicedanDatabase Query servicesebagai alat untuk mengambil informasi yang relevan selama proses penalaran. Setelah proses penalaran dan tindakan selesai, agen menghasilkan jawaban akhir sebagai respons.
Langkah 3 - Respons dari fungsi Lambda orkestrasi dikirim ke aplikasi Streamlit sebagai output.
Alat
Layanan AWS
Amazon Athena adalah layanan kueri interaktif yang membantu Anda menganalisis data secara langsung di Amazon Simple Storage Service (Amazon S3) dengan menggunakan SQL standar.
Amazon Bedrock adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
Amazon Elastic Container Service (Amazon ECS) adalah layanan manajemen kontainer yang cepat dan dapat diskalakan yang membantu Anda menjalankan, menghentikan, dan mengelola kontainer di klaster.
AWS Glue adalah layanan ekstrak, transformasi, dan beban (ETL) yang dikelola sepenuhnya. Ini membantu Anda mengkategorikan, membersihkan, memperkaya, dan memindahkan data dengan andal antara penyimpanan data dan aliran data. Pola ini menggunakan crawler AWS Glue dan tabel AWS Glue Data Catalog.
Amazon Kendra adalah layanan pencarian cerdas yang menggunakan pemrosesan bahasa alami dan algoritme pembelajaran mesin canggih untuk mengembalikan jawaban spesifik atas pertanyaan pencarian dari data Anda.
AWS Lambda adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
Elastic Load Balancing (ELB) mendistribusikan lalu lintas aplikasi atau jaringan yang masuk ke beberapa target. Misalnya, Anda dapat mendistribusikan lalu lintas di seluruh instans, container, dan alamat IP Amazon Elastic Compute Cloud (Amazon EC2) di satu atau beberapa Availability Zone.
Repositori kode
Kode untuk pola ini tersedia di GitHub genai-bedrock-chatbot
Repositori kode berisi file dan folder berikut:
assetsfolder — Aset statis diagram arsitektur dan dataset publikcode/lambda-containerfolder - Kode Python yang dijalankan dalam fungsi Lambdacode/streamlit-appfolder - Kode Python yang dijalankan sebagai gambar kontainer di Amazon ECStestsfolder — File Python yang dijalankan untuk menguji unit konstruksi AWS CDKcode/code_stack.py— AWS CDK membangun file Python yang digunakan untuk membuat sumber daya AWSapp.py— File Python tumpukan AWS CDK yang digunakan untuk menyebarkan sumber daya AWS di akun AWS targetrequirements.txt— Daftar semua dependensi Python yang harus diinstal untuk AWS CDKrequirements-dev.txt— Daftar semua dependensi Python yang harus diinstal untuk AWS CDK untuk menjalankan rangkaian unit-testcdk.json— File input untuk memberikan nilai yang diperlukan untuk memutar sumber daya
Catatan: Kode AWS CDK menggunakan konstruksi L3 (lapisan 3) dan kebijakan AWS Identity and Access Management (IAM) yang dikelola oleh AWS untuk menerapkan solusi. |
|---|
Praktik terbaik
Contoh kode yang diberikan di sini adalah untuk demo proof-of-concept (PoC) atau pilot saja. Jika Anda ingin membawa kode ke Produksi, pastikan untuk menggunakan praktik terbaik berikut:
Siapkan pemantauan dan peringatan untuk fungsi Lambda. Untuk informasi selengkapnya, lihat Memantau dan memecahkan masalah fungsi Lambda. Untuk praktik terbaik umum saat bekerja dengan fungsi Lambda, lihat dokumentasi AWS.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Ekspor variabel untuk akun dan Wilayah AWS tempat tumpukan akan digunakan. | Untuk memberikan kredensi AWS untuk AWS CDK dengan menggunakan variabel lingkungan, jalankan perintah berikut.
| DevOps insinyur, AWS DevOps |
Siapkan profil AWS CLI. | Untuk menyiapkan profil AWS CLI untuk akun, ikuti petunjuk dalam dokumentasi AWS. | DevOps insinyur, AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning repo di mesin lokal Anda. | Untuk mengkloning repositori, jalankan perintah berikut di terminal Anda.
| DevOps insinyur, AWS DevOps |
Siapkan lingkungan virtual Python dan instal dependensi yang diperlukan. | Untuk mengatur lingkungan virtual Python, jalankan perintah berikut.
Untuk mengatur dependensi yang diperlukan, jalankan perintah berikut.
| DevOps insinyur, AWS DevOps |
Siapkan lingkungan AWS CDK dan sintesis kode AWS CDK. |
| DevOps insinyur, AWS DevOps |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Penyediaan akses model Claude. | Untuk mengaktifkan akses model Anthropic Claude untuk akun AWS Anda, ikuti petunjuk dalam dokumentasi Amazon Bedrock. | AWS DevOps |
Menyebarkan sumber daya di akun. | Untuk menerapkan sumber daya di akun AWS dengan menggunakan AWS CDK, lakukan hal berikut:
Setelah penerapan berhasil, Anda dapat mengakses aplikasi asisten berbasis obrolan dengan menggunakan URL yang disediakan di bagian Output. CloudFormation | AWS DevOps, DevOps insinyur |
Jalankan crawler AWS Glue dan buat tabel Katalog Data. | Crawler AWS Glue digunakan untuk menjaga skema data tetap dinamis. Solusi ini membuat dan memperbarui partisi di tabel AWS Glue Data Catalog dengan menjalankan crawler sesuai permintaan. Setelah file kumpulan data CSV disalin ke bucket S3, jalankan crawler AWS Glue dan buat skema tabel Katalog Data untuk pengujian:
catatanKode AWS CDK mengonfigurasi crawler AWS Glue agar berjalan sesuai permintaan, tetapi Anda juga dapat menjadwalkannya untuk dijalankan secara berkala. | DevOps insinyur, AWS DevOps |
Memulai pengindeksan dokumen. | Setelah file disalin ke bucket S3, gunakan Amazon Kendra untuk merayapi dan mengindeksnya:
| AWS DevOps, DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hapus sumber daya AWS. | Setelah Anda menguji solusinya, bersihkan sumber daya:
| DevOps insinyur, AWS DevOps |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
AWS CDK mengembalikan kesalahan. | Untuk bantuan terkait masalah AWS CDK, lihat Memecahkan masalah umum AWS CDK. |
Sumber daya terkait
Informasi tambahan
Perintah AWS CDK
Saat bekerja dengan AWS CDK, ingatlah perintah berguna berikut:
Daftar semua tumpukan di aplikasi
cdk lsMemancarkan template AWS yang disintesis CloudFormation
cdk synthMenerapkan tumpukan ke akun AWS default dan Wilayah Anda
cdk deployMembandingkan tumpukan yang diterapkan dengan status saat ini
cdk diffMembuka dokumentasi AWS CDK
cdk docsMenghapus CloudFormation tumpukan dan menghapus sumber daya yang diterapkan AWS
cdk destroy