Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kembangkan asisten berbasis obrolan otomatis sepenuhnya dengan menggunakan agen dan basis pengetahuan Amazon Bedrock
Jundong Qiao, Shuai Cao, Noah Hamilton, Kiowa Jackson, Praveen Kumar Jeyarajan, dan Kara Yang, Amazon Web Services
Ringkasan
Banyak organisasi menghadapi tantangan saat membuat asisten berbasis obrolan yang mampu mengatur beragam sumber data untuk menawarkan jawaban yang komprehensif. Pola ini menyajikan solusi untuk mengembangkan asisten berbasis obrolan yang mampu menjawab pertanyaan dari dokumentasi dan database, dengan penerapan langsung.
Dimulai dengan Amazon Bedrock, layanan kecerdasan buatan generatif (AI) generatif yang dikelola sepenuhnya ini menyediakan beragam model pondasi canggih ()FMs. Ini memfasilitasi pembuatan aplikasi AI generatif yang efisien dengan fokus yang kuat pada privasi dan keamanan. Dalam konteks pengambilan dokumentasi, Retrieval Augmented Generation (RAG) adalah fitur penting. Ini menggunakan basis pengetahuan untuk menambah permintaan FM dengan informasi yang relevan secara kontekstual dari sumber eksternal. Indeks Amazon OpenSearch Tanpa Server berfungsi sebagai basis data vektor di belakang basis pengetahuan untuk Amazon Bedrock. Integrasi ini ditingkatkan melalui rekayasa cepat yang cermat untuk meminimalkan ketidakakuratan dan memastikan bahwa tanggapan tertanam dalam dokumentasi faktual. Untuk kueri database, Amazon Bedrock mengubah pertanyaan tekstual menjadi kueri SQL terstruktur, menggabungkan parameter tertentu. FMs Ini memungkinkan pengambilan data yang tepat dari database yang dikelola oleh database AWS Glue. Amazon Athena digunakan untuk pertanyaan ini.
Untuk menangani pertanyaan yang lebih rumit, mencapai jawaban yang komprehensif menuntut informasi yang bersumber dari dokumentasi dan database. Agen untuk Amazon Bedrock adalah fitur AI generatif yang membantu Anda membangun agen otonom yang dapat memahami tugas kompleks dan memecahnya menjadi tugas yang lebih sederhana untuk orkestrasi. Kombinasi wawasan yang diambil dari tugas yang disederhanakan, difasilitasi oleh agen otonom Amazon Bedrock, meningkatkan sintesis informasi, yang mengarah ke jawaban yang lebih menyeluruh dan lengkap. Pola ini menunjukkan cara membangun asisten berbasis obrolan dengan menggunakan Amazon Bedrock dan layanan serta fitur AI generatif terkait dalam solusi otomatis.
Prasyarat dan batasan
Prasyarat
- Akun AWS yang aktif 
- AWS Cloud Development Kit (AWS CDK), diinstal dan di-bootstrap ke atau Wilayah AWS - us-east-1- us-west-2
- AWS CDK Toolkit versi 2.114.1 atau yang lebih baru, diinstal 
- AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi 
- Di Amazon Bedrock, aktifkan akses ke Claude 2, Claude 2.1, Claude Instant, dan Titan Embeddings G1 — Teks 
Batasan
- Solusi ini diterapkan ke satu akun AWS. 
- Solusi ini hanya dapat diterapkan di Wilayah AWS di mana Amazon Bedrock dan Amazon Tanpa OpenSearch Server didukung. Untuk informasi selengkapnya, lihat dokumentasi untuk Amazon Bedrock dan Amazon Tanpa OpenSearch Server. 
Versi produk
- LLAMA-index versi 0.10.6 atau yang lebih baru 
- Sqlalchemy versi 2.0.23 atau yang lebih baru 
- OpenSearch-PY versi 2.4.2 atau yang lebih baru 
- Requests_AWS4Auth versi 1.2.3 atau yang lebih baru 
- AWS SDK untuk Python (Boto3) versi 1.34.57 atau yang lebih baru 
Arsitektur
Tumpukan teknologi target
AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak open source untuk mendefinisikan infrastruktur cloud dalam kode dan menyediakannya melalui AWS. CloudFormation Tumpukan AWS CDK yang digunakan dalam pola ini menerapkan sumber daya AWS berikut:
- AWS Key Management Service (AWS KMS) 
- Amazon Simple Storage Service (Amazon S3) 
- AWS Glue Data Catalog, untuk komponen database AWS Glue 
- AWS Lambda 
- AWS Identity and Access Management (IAM) 
- Amazon Tanpa OpenSearch Server 
- Amazon Elastic Container Registry (Amazon ECR) 
- Amazon Elastic Container Service (Amazon ECS) 
- AWS Fargate 
- Amazon Virtual Private Cloud (Amazon VPC) 
Arsitektur target

Diagram menunjukkan penyiapan cloud-native AWS yang komprehensif dalam satu Wilayah AWS, menggunakan beberapa layanan AWS. Antarmuka utama untuk asisten berbasis obrolan adalah aplikasi StreamlitInvocation Lambda, yang kemudian berinteraksi dengan agen untuk Amazon Bedrock. Agen ini menanggapi pertanyaan pengguna dengan berkonsultasi dengan basis pengetahuan untuk Amazon Bedrock atau dengan menjalankan fungsi Lambda. Agent executor Fungsi ini memicu serangkaian tindakan yang terkait dengan agen, mengikuti skema API yang telah ditentukan sebelumnya. Basis pengetahuan untuk Amazon Bedrock menggunakan indeks  OpenSearch  Tanpa Server sebagai fondasi basis data vektor mereka. Selain itu, Agent executor fungsi ini menghasilkan kueri SQL yang dijalankan terhadap database AWS Glue melalui Amazon Athena. 
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 open source 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. 
- 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. 
- 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. 
- 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 OpenSearch Serverless adalah konfigurasi tanpa server sesuai permintaan untuk Amazon Service. OpenSearch Dalam pola ini, indeks OpenSearch Tanpa Server berfungsi sebagai database vektor untuk basis pengetahuan untuk Amazon Bedrock. 
- Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data. 
Alat lainnya
- Streamlit - adalah kerangka kerja Python open source untuk membuat aplikasi data. 
Repositori kode
Kode untuk pola ini tersedia di  GitHub  genai-bedrock-agent-chatbot
- assetsfolder — Aset statis, seperti diagram arsitektur dan dataset publik.
- code/lambdas/action-lambdafolder — Kode Python untuk fungsi Lambda yang bertindak sebagai tindakan untuk agen Amazon Bedrock.
- code/lambdas/create-index-lambdafolder — Kode Python untuk fungsi Lambda yang menciptakan indeks Tanpa Server. OpenSearch
- code/lambdas/invoke-lambdafolder — Kode Python untuk fungsi Lambda yang memanggil agen Amazon Bedrock, yang dipanggil langsung dari aplikasi Streamlit.
- code/lambdas/update-lambdafolder — Kode Python untuk fungsi Lambda yang memperbarui atau menghapus sumber daya setelah sumber daya AWS digunakan melalui AWS CDK.
- code/layers/boto3_layerfolder — Tumpukan AWS CDK yang membuat lapisan Boto3 yang dibagikan di semua fungsi Lambda.
- code/layers/opensearch_layerfolder — Tumpukan AWS CDK yang membuat lapisan OpenSearch Tanpa Server yang menginstal semua dependensi untuk membuat indeks.
- code/streamlit-appfolder - Kode Python yang dijalankan sebagai gambar kontainer di Amazon ECS
- code/code_stack.py— AWS CDK membangun file Python yang membuat sumber daya AWS.
- app.py— AWS CDK menumpuk file Python yang menyebarkan sumber daya AWS di akun AWS target.
- requirements.txt— Daftar semua dependensi Python yang harus diinstal untuk AWS CDK.
- cdk.json— File input untuk memberikan nilai-nilai yang diperlukan untuk membuat sumber daya. Juga, di- context/configbidang, Anda dapat menyesuaikan solusi yang sesuai. Untuk informasi selengkapnya tentang penyesuaian, lihat bagian Informasi tambahan.
Praktik terbaik
- Contoh kode yang diberikan di sini adalah untuk proof-of-concept (PoC) atau tujuan percontohan saja. Jika Anda ingin membawa kode ke produksi, pastikan untuk menggunakan praktik terbaik berikut: - Aktifkan pencatatan akses Amazon S3 
- Aktifkan Log Aliran VPC 
 
- Siapkan pemantauan dan peringatan untuk fungsi Lambda. Untuk informasi selengkapnya, lihat Memantau dan memecahkan masalah fungsi Lambda. Untuk praktik terbaik, lihat Praktik terbaik untuk bekerja dengan fungsi AWS Lambda. 
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
|---|---|---|
| Variabel ekspor untuk akun dan Wilayah. | Untuk memberikan kredensi AWS untuk AWS CDK dengan menggunakan variabel lingkungan, jalankan perintah berikut. 
 | AWS DevOps, DevOps insinyur | 
| Siapkan profil bernama AWS CLI. | Untuk mengatur profil bernama AWS CLI untuk akun, ikuti petunjuk dalam pengaturan Konfigurasi dan file kredensi. | AWS DevOps, DevOps insinyur | 
| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
|---|---|---|
| Kloning repo ke workstation lokal Anda. | Untuk mengkloning repositori, jalankan perintah berikut di terminal Anda. 
 | DevOps insinyur, AWS DevOps | 
| Siapkan lingkungan virtual Python. | Untuk mengatur lingkungan virtual Python, jalankan perintah berikut. 
 Untuk mengatur dependensi yang diperlukan, jalankan perintah berikut. 
 | DevOps insinyur, AWS DevOps | 
| Siapkan lingkungan AWS CDK. | Untuk mengonversi kode ke  CloudFormation  template AWS, jalankan perintah | AWS DevOps, DevOps insinyur | 
| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
|---|---|---|
| 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 pada tab Output di konsol. CloudFormation | DevOps insinyur, AWS DevOps | 
| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
|---|---|---|
| Hapus sumber daya AWS. | Setelah Anda menguji solusinya, untuk membersihkan sumber daya, jalankan perintah | AWS DevOps, DevOps insinyur | 
Sumber daya terkait
Dokumentasi AWS
- Sumber daya Amazon Bedrock: 
- Sumber daya AWS CDK: 
Sumber daya AWS lainnya
Sumber daya lainnya
Informasi tambahan
Sesuaikan asisten berbasis obrolan dengan data Anda sendiri
Untuk mengintegrasikan data kustom Anda untuk menerapkan solusi, ikuti panduan terstruktur ini. Langkah-langkah ini dirancang untuk memastikan proses integrasi yang mulus dan efisien, memungkinkan Anda untuk menerapkan solusi secara efektif dengan data yang dipesan lebih dahulu.
Untuk integrasi data basis pengetahuan
Persiapan data
- Temukan - assets/knowledgebase_data_source/direktori.
- Tempatkan dataset Anda dalam folder ini. 
Penyesuaian konfigurasi
- Buka file - cdk.json.
- Arahkan ke - context/configure/paths/knowledgebase_file_namebidang, lalu perbarui sesuai dengan itu.
- Arahkan ke - bedrock_instructions/knowledgebase_instructionbidang, lalu perbarui untuk secara akurat mencerminkan nuansa dan konteks kumpulan data baru Anda.
Untuk integrasi data struktural
Organisasi data
- Di dalam - assets/data_query_data_source/direktori, buat subdirektori, seperti- tabular_data.
- Masukkan kumpulan data terstruktur Anda (format yang dapat diterima termasuk CSV, JSON, ORC, dan Parket) ke dalam subfolder yang baru dibuat ini. 
- Jika Anda terhubung ke database yang ada, perbarui fungsi - create_sql_engine()- code/lambda/action-lambda/build_query_engine.pyuntuk terhubung ke database Anda.
Pembaruan konfigurasi dan kode
- Dalam - cdk.jsonfile, perbarui- context/configure/paths/athena_table_data_prefixbidang untuk menyelaraskan dengan jalur data baru.
- Merevisi - code/lambda/action-lambda/dynamic_examples.csvdengan memasukkan text-to-SQL contoh baru yang sesuai dengan dataset Anda.
- Merevisi - code/lambda/action-lambda/prompt_templates.pyuntuk mencerminkan atribut kumpulan data terstruktur Anda.
- Dalam - cdk.jsonfile, perbarui- context/configure/bedrock_instructions/action_group_descriptionbidang untuk menjelaskan tujuan dan fungsionalitas fungsi- Action groupLambda.
- Dalam - assets/agent_api_schema/artifacts_schema.jsonfile, jelaskan fungsionalitas baru fungsi- Action groupLambda Anda.
Pembaruan umum
Dalam cdk.json file, di context/configure/bedrock_instructions/agent_instruction bagian ini, berikan deskripsi komprehensif tentang fungsionalitas dan tujuan desain agen Amazon Bedrock yang dimaksudkan, dengan mempertimbangkan data yang baru terintegrasi.