Kembangkan asisten berbasis obrolan otomatis sepenuhnya dengan menggunakan agen dan basis pengetahuan Amazon Bedrock - AWS Prescriptive Guidance

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

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)

  • Penyeimbang Beban Aplikasi

Arsitektur target

Diagram arsitektur menggunakan basis pengetahuan dan agen Amazon Bedrock

Diagram menunjukkan penyiapan cloud-native AWS yang komprehensif dalam satu Wilayah AWS, menggunakan beberapa layanan AWS. Antarmuka utama untuk asisten berbasis obrolan adalah aplikasi Streamlit yang dihosting di cluster Amazon ECS. Application Load Balancer mengelola aksesibilitas. Kueri yang dibuat melalui antarmuka ini mengaktifkan fungsi Invocation 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-chatbotrepositori. Repositori kode berisi file dan folder berikut:

  • 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/config bidang, Anda dapat menyesuaikan solusi yang sesuai. Untuk informasi selengkapnya tentang penyesuaian, lihat bagian Informasi tambahan.

Praktik terbaik

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Variabel ekspor untuk akun dan Wilayah.

Untuk memberikan kredensi AWS untuk AWS CDK dengan menggunakan variabel lingkungan, jalankan perintah berikut.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
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
TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repo ke workstation lokal Anda.

Untuk mengkloning repositori, jalankan perintah berikut di terminal Anda.

git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git
DevOps insinyur, AWS DevOps

Siapkan lingkungan virtual Python.

Untuk mengatur lingkungan virtual Python, jalankan perintah berikut.

cd genai-bedrock-agent-chatbot python3 -m venv .venv source .venv/bin/activate

Untuk mengatur dependensi yang diperlukan, jalankan perintah berikut.

pip3 install -r requirements.txt
DevOps insinyur, AWS DevOps

Siapkan lingkungan AWS CDK.

Untuk mengonversi kode ke CloudFormation template AWS, jalankan perintahcdk synth.

AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan sumber daya di akun.

Untuk menerapkan sumber daya di akun AWS dengan menggunakan AWS CDK, lakukan hal berikut:

  1. Di root repositori kloning, dalam cdk.json file, berikan input untuk parameter logging. Contoh nilai adalahINFO,DEBUG,WARN, danERROR.

    Nilai-nilai ini menentukan pesan log-level untuk fungsi Lambda dan aplikasi Streamlit.

  2. cdk.jsonFile di root repositori kloning berisi nama CloudFormation tumpukan AWS yang digunakan untuk penerapan. Nama stack default adalahchatbot-stack. Nama agen Amazon Bedrock default adalahChatbotBedrockAgent, dan alias agen Amazon Bedrock default adalah. Chatbot_Agent

  3. Untuk menyebarkan sumber daya, jalankan perintahcdk deploy.

    cdk deployPerintah ini menggunakan konstruksi lapisan-3 untuk membuat beberapa fungsi Lambda untuk menyalin dokumen dan file dataset CSV ke bucket S3. Ini juga menyebarkan agen Amazon Bedrock, basis pengetahuan, dan fungsi Action group Lambda untuk agen Amazon Bedrock.

  4. Masuk ke AWS Management Console, lalu buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation/.

  5. Konfirmasikan bahwa tumpukan berhasil digunakan. Untuk petunjuknya, lihat Meninjau tumpukan Anda di CloudFormation konsol AWS.

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
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus sumber daya AWS.

Setelah Anda menguji solusinya, untuk membersihkan sumber daya, jalankan perintahcdk destroy.

AWS DevOps, DevOps insinyur

Sumber daya terkait

Dokumentasi AWS

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

  1. Temukan assets/knowledgebase_data_source/ direktori.

  2. Tempatkan dataset Anda dalam folder ini.

Penyesuaian konfigurasi

  1. Buka file cdk.json.

  2. Arahkan ke context/configure/paths/knowledgebase_file_name bidang, lalu perbarui sesuai dengan itu.

  3. Arahkan ke bedrock_instructions/knowledgebase_instruction bidang, lalu perbarui untuk secara akurat mencerminkan nuansa dan konteks kumpulan data baru Anda.

Untuk integrasi data struktural

Organisasi data

  1. Di dalam assets/data_query_data_source/ direktori, buat subdirektori, sepertitabular_data.

  2. Masukkan kumpulan data terstruktur Anda (format yang dapat diterima termasuk CSV, JSON, ORC, dan Parket) ke dalam subfolder yang baru dibuat ini.

  3. Jika Anda terhubung ke database yang ada, perbarui fungsi create_sql_engine() code/lambda/action-lambda/build_query_engine.py untuk terhubung ke database Anda.

Pembaruan konfigurasi dan kode

  1. Dalam cdk.json file, perbarui context/configure/paths/athena_table_data_prefix bidang untuk menyelaraskan dengan jalur data baru.

  2. Merevisi code/lambda/action-lambda/dynamic_examples.csv dengan memasukkan text-to-SQL contoh baru yang sesuai dengan dataset Anda.

  3. Merevisi code/lambda/action-lambda/prompt_templates.py untuk mencerminkan atribut kumpulan data terstruktur Anda.

  4. Dalam cdk.json file, perbarui context/configure/bedrock_instructions/action_group_description bidang untuk menjelaskan tujuan dan fungsionalitas fungsi Action group Lambda.

  5. Dalam assets/agent_api_schema/artifacts_schema.json file, jelaskan fungsionalitas baru fungsi Action group Lambda 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.