View a markdown version of this page

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 Hal ini memungkinkan pengambilan data yang tepat dari database yang dikelola oleh AWS Glue database. 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 digunakan di Wilayah AWS tempat 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)Ini adalah kerangka pengembangan perangkat lunak open source untuk mendefinisikan infrastruktur cloud dalam kode dan menyediakannya. AWS CloudFormation AWS CDK Tumpukan yang digunakan dalam pola ini menyebarkan AWS sumber daya berikut: 

  • AWS Key Management Service (AWS KMS)

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Glue Data Catalog, untuk komponen AWS Glue database

  • 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 AWS cloud-native 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 menghasilkan kueri SQL yang dijalankan terhadap AWS Glue database 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 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 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 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 Glueadalah 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 AWS Glue crawler dan AWS Glue Data Catalog tabel.

  • AWS Lambdaadalah 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-alat lainnya

  • Streamlit adalah kerangka 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 digunakan melalui file. AWS AWS CDK

  • code/layers/boto3_layerfolder — AWS CDK Tumpukan yang membuat lapisan Boto3 yang dibagikan di semua fungsi Lambda.

  • code/layers/opensearch_layerfolder — AWS CDK Tumpukan 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 AWS membuat sumber daya.

  • app.py— AWS CDK Tumpukan file Python yang menyebarkan AWS sumber daya di akun target. AWS

  • 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 AWS kredensi untuk variabel lingkungan AWS CDK dengan menggunakan, jalankan perintah berikut.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
AWS DevOps, DevOps insinyur

Siapkan profil AWS CLI bernama.

Untuk mengatur profil AWS CLI bernama untuk akun, ikuti petunjuk di Pengaturan file konfigurasi dan 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

Mengatur AWS CDK lingkungan.

Untuk mengonversi kode menjadi AWS CloudFormation templat, jalankan perintahcdk synth.

AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Menyebarkan sumber daya di akun.

Untuk menyebarkan 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 AWS CloudFormation tumpukan 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 Konsol Manajemen AWS, lalu buka CloudFormation konsol.

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

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 AWS sumber daya.

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

AWS DevOps, DevOps insinyur

Sumber daya terkait

AWS dokumentasi

AWS Sumber daya 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 di 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.