Kembangkan asisten berbasis obrolan AI generatif tingkat lanjut dengan menggunakan RAG dan prompt ReAct - 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 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

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.

Diagram arsitektur.
  1. Fungsi orkestrasi Lambda mengirimkan permintaan prompt LLM ke model Amazon Bedrock (Claude 2).

  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.

Diagram arsitektur.
  • 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 query memulai salah satu dari tiga layanan:

    • RAG Retrieval service, yang mengambil konteks yang relevan dari database vektor Amazon Kendra 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 input query menjadi kueri SQL. Layanan Kueri Database menjalankan kueri SQL terhadap database SageMaker harga melalui Amazon Athena dan merangkum hasil kueri sebagai respons.

    • In-context ReACT Agent service, yang memecah input query menjadi beberapa langkah sebelum memberikan respons. Agen menggunakan RAG Retrieval service dan Database Query service sebagai 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-chatbotrepositori.

Repositori kode berisi file dan folder berikut:

  • assetsfolder — Aset statis diagram arsitektur dan dataset publik

  • code/lambda-containerfolder - Kode Python yang dijalankan dalam fungsi Lambda

  • code/streamlit-appfolder - Kode Python yang dijalankan sebagai gambar kontainer di Amazon ECS

  • testsfolder — File Python yang dijalankan untuk menguji unit konstruksi AWS CDK

  • code/code_stack.py— AWS CDK membangun file Python yang digunakan untuk membuat sumber daya AWS

  • app.py— File Python tumpukan AWS CDK yang digunakan untuk menyebarkan sumber daya AWS di akun AWS target

  • requirements.txt— Daftar semua dependensi Python yang harus diinstal untuk AWS CDK

  • requirements-dev.txt— Daftar semua dependensi Python yang harus diinstal untuk AWS CDK untuk menjalankan rangkaian unit-test

  • cdk.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

Epik

TugasDeskripsiKeterampilan 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.

export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number> export CDK_DEFAULT_REGION=<region>
DevOps insinyur, AWS DevOps

Siapkan profil AWS CLI.

Untuk menyiapkan profil AWS CLI untuk akun, ikuti petunjuk dalam dokumentasi AWS.

DevOps insinyur, AWS DevOps
TugasDeskripsiKeterampilan yang dibutuhkan

Kloning repo di mesin lokal Anda.

Untuk mengkloning repositori, jalankan perintah berikut di terminal Anda.

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

Siapkan lingkungan virtual Python dan instal dependensi yang diperlukan.

Untuk mengatur lingkungan virtual Python, jalankan perintah berikut.

cd genai-bedrock-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 dan sintesis kode AWS CDK.

  1. Untuk mengatur lingkungan AWS CDK di akun AWS Anda, jalankan perintah berikut.

    cdk bootstrap aws://ACCOUNT-NUMBER/REGION
  2. Untuk mengonversi kode ke konfigurasi AWS CloudFormation stack, jalankan perintahcdk synth.

DevOps insinyur, AWS DevOps
TugasDeskripsiKeterampilan 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:

  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. app.pyFile di root repositori kloning berisi nama CloudFormation tumpukan AWS yang digunakan untuk penerapan. Nama stack default adalahchatbot-stack.

  3. Untuk menyebarkan sumber daya, jalankan perintahcdk deploy.

    cdk deployPerintah ini menggunakan konstruksi L3 untuk membuat beberapa fungsi Lambda untuk menyalin dokumen dan file dataset CSV ke bucket S3.

  4. Setelah perintah selesai, masuk ke AWS Management Console, buka CloudFormation konsol, dan tinjau apakah tumpukan berhasil diterapkan.

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:

  1. Arahkan ke konsol AWS Glue.

  2. Di panel navigasi, di bawah Katalog Data, pilih Crawler.

  3. Pilih crawler dengan akhiransagemaker-pricing-crawler.

  4. Jalankan crawler.

  5. Setelah crawler berjalan dengan sukses, crawler akan membuat tabel AWS Glue Data Catalog.

catatan

Kode 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:

  1. Arahkan ke konsol Amazon Kendra.

  2. Pilih indeks dengan akhiranchatbot-index.

  3. Di panel navigasi, pilih Sumber data, dan pilih konektor sumber data dengan akhiranchatbot-index.

  4. Pilih Sinkronkan Sekarang untuk memulai proses pengindeksan.

AWS DevOps, DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Hapus sumber daya AWS.

Setelah Anda menguji solusinya, bersihkan sumber daya:

  1. Untuk menghapus sumber daya AWS yang digunakan oleh solusi, jalankan perintahcdk destroy.

  2. Hapus semua objek dari dua ember S3, lalu lepaskan ember.

    Untuk informasi selengkapnya, lihat Menghapus bucket.

DevOps insinyur, AWS DevOps

Pemecahan Masalah

IsuSolusi

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 ls
  • Memancarkan template AWS yang disintesis CloudFormation

    cdk synth
  • Menerapkan tumpukan ke akun AWS default dan Wilayah Anda

    cdk deploy
  • Membandingkan tumpukan yang diterapkan dengan status saat ini

    cdk diff
  • Membuka dokumentasi AWS CDK

    cdk docs
  • Menghapus CloudFormation tumpukan dan menghapus sumber daya yang diterapkan AWS

    cdk destroy