QnABot di AWS adalah antarmuka percakapan multi-saluran dan multi-bahasa (chatbot) yang merespons pertanyaan, jawaban, dan masukan pelanggan Anda. Ini memungkinkan Anda menerapkan chatbot yang berfungsi penuh di berbagai saluran termasuk obrolan, suara, SMS, dan Amazon Alexa. Lingkungan manajemen konten solusi, dan panduan integrasi pusat kontak memungkinkan Anda menyiapkan dan menyesuaikan lingkungan yang memberikan manfaat berikut:
Tingkatkan pengalaman pelanggan Anda dengan menyediakan tutorial yang dipersonalisasi dan dukungan tanya jawab dengan interaksi multi-bagian yang cerdas
Kurangi waktu tunggu pusat panggilan dengan mengotomatiskan alur kerja dukungan pelanggan
Menerapkan teknologi pembelajaran mesin terbaru untuk menciptakan interaksi yang menarik dan mirip manusia untuk chatbots
Menerapkan solusi ini dengan parameter default akan menyebarkan komponen berikut di akun AWS Anda (komponen berbatas bersifat opsional).
Gambar 1: QnABot pada arsitektur AWS
Alur proses tingkat tinggi untuk komponen solusi yang diterapkan dengan templat AWS CloudFormation adalah sebagai berikut:
Admin menerapkan solusi ke akun AWS mereka, membuka UI Perancang Konten atau klien web Amazon Lex, dan menggunakan Amazon Cognito untuk mengautentikasi.
Setelah autentikasi, Amazon API Gateway dan Amazon S3 mengirimkan konten UI Perancang Konten.
Admin mengonfigurasi pertanyaan dan jawaban di Desainer Konten dan UI mengirimkan permintaan ke Amazon API Gateway untuk menyimpan pertanyaan dan jawaban.
Fungsi Content Designer
AWS Lambda menyimpan input di Amazon OpenSearch Service dalam indeks bank soal. Jika menggunakan penyematan teks, permintaan ini pertama-tama akan melewati model LLM yang dihosting di Amazon Bedrock atau Amazon SageMaker untuk menghasilkan penyematan sebelum disimpan ke bank soal di OpenSearch. Selain itu, Content Designer
menyimpan pengaturan konfigurasi default dan kustom di Penyimpanan Parameter AWS Systems Manager.
Pengguna chatbot berinteraksi dengan Amazon Lex melalui UI klien web, Amazon Alexa, atau Amazon Connect.
Amazon Lex meneruskan permintaan ke fungsi Bot Fulfillment
AWS Lambda. Pengguna juga dapat mengirimkan permintaan ke fungsi Lambda ini melalui perangkat Amazon Alexa.
Informasi pengguna dan obrolan disimpan di Amazon DynamoDB untuk membedakan pertanyaan lanjutan dari konteks tanya jawab sebelumnya.
Bot Fulfillment
Fungsi AWS Lambda mengambil masukan pengguna dan menggunakan Amazon Comprehend dan Amazon Translate (jika diperlukan) untuk menerjemahkan permintaan Bahasa non-Asli ke Bahasa Asli yang dipilih oleh pengguna selama penerapan dan kemudian mencari jawabannya di Amazon OpenSearch Service . Jika menggunakan fitur LLM seperti pembuatan teks dan penyematan teks, permintaan ini pertama-tama akan melewati berbagai model LLM yang dihosting di Amazon Bedrock atau Amazon SageMaker untuk menghasilkan kueri penelusuran dan penyematan untuk dibandingkan dengan yang disimpan di bank soal di OpenSearch.
Jika tidak ada kecocokan yang dikembalikan dari bank soal OpenSearch, maka fungsi Lambda pemenuhan Bot meneruskan permintaan sebagai berikut:
A. Jika indeks Amazon Kendra dikonfigurasi untuk fallback, maka fungsi Bot Fulfillment
AWS Lambda meneruskan permintaan ke Kendra jika tidak ada kecocokan yang dikembalikan dari bank soal OpenSearch. LLM pembuatan teks secara opsional dapat digunakan untuk membuat permintaan pencarian dan untuk mensintesis respons dari kutipan dokumen yang dikembalikan.
B. Jika ID Basis Pengetahuan Bedrock dikonfigurasi, maka fungsi Bot Fulfillment
AWS Lambda meneruskan permintaan ke Basis Pengetahuan Bedrock. Fungsi Bot Fulfillment
AWS Lambda memanfaatkan API RetrieveAndGenerate untuk mengambil hasil yang relevan untuk kueri pengguna, menambah permintaan model dasar, dan mengembalikan respons.
Interaksi pengguna dengan fungsi Bot Fulfillment
menghasilkan data log dan metrik, yang dikirim ke Amazon Kinesis Data Firehose lalu ke Amazon S3 untuk analisis data selanjutnya. Dasbor OpenSearch dapat digunakan untuk melihat riwayat penggunaan, ucapan yang dicatat, ucapan tidak ada hits, umpan balik pengguna yang positif, dan umpan balik pengguna yang negatif dan juga menyediakan kemampuan untuk membuat laporan khusus.
Dasbor OpenSearch dapat digunakan untuk melihat riwayat penggunaan, ucapan yang dicatat, ucapan tidak ada hits, umpan balik pengguna yang positif, dan umpan balik pengguna yang negatif, dan juga menyediakan kemampuan untuk membuat laporan khusus.
Lihat panduan implementasi untuk instruksi terperinci tentang penerapan QnABot di akun AWS Anda.
Alternatifnya, jika Anda ingin menerapkan QnABot secara khusus di AWS, lihat detailnya di bawah.
Arahkan ke direktori root QnABot (direktori akan dibuat setelah Anda mengkloning repo ini).
Mulai dari direktori /source.
cd source
Instal virtualenv:
pip3 install virtualenv
Instal modul node.js dari QnABot:
npm install
Selanjutnya, siapkan file konfigurasi Anda:
npm run config
sekarang edit config.json
untuk parameter berikut:
param | keterangan |
---|---|
wilayah | wilayah AWS untuk meluncurkan tumpukan |
profil | profil kredensial AWS yang akan digunakan |
ruang nama | ruang nama logis untuk menjalankan templat Anda seperti dev, test dan/atau prod |
devEmail(wajib) | email yang akan digunakan saat membuat pengguna admin dalam peluncuran tumpukan otomatis |
Selanjutnya, gunakan perintah berikut untuk meluncurkan templat CloudFormation guna membuat bucket S3 yang akan digunakan untuk kode Lambda dan templat CloudFormation. Tunggu hingga templat ini selesai (Anda dapat melihat kemajuannya dari baris perintah atau konsol AWS CloudFormation)
npm run bootstrap
Terakhir, gunakan perintah berikut untuk meluncurkan templat guna menerapkan QnABot di akun AWS Anda. Ketika tumpukan telah selesai Anda akan dapat masuk ke UI Desainer (URL adalah keluaran dari templat). Kata sandi sementara untuk email di config.json Anda:
npm run up
Jika Anda sudah memiliki tumpukan, Anda dapat menjalankan perintah berikut untuk memperbarui tumpukan Anda:
npm run update
Untuk menjalankan pengujian unit, jalankan perintah berikut dari folder root:
npm test
Untuk memperbarui snapshot pengujian saat memodifikasi direktori /website atau /templates, jalankan perintah berikut:
npm run test:update:snapshot
CATATAN: Menjalankan pengujian regresi akan membuat, mengubah, dan menghapus konten dan pengaturan dari Perancang Konten. Hanya jalankan uji regresi pada bot non-produksi jika kehilangan atau modifikasi konten dan pengaturan dapat diterima.
Ini menjalankan pengujian integrasi terhadap penerapan QnABot yang diterapkan di akun Anda. Sebelum menjalankan pengujian, ikuti langkah-langkah di atas untuk membuat dan menerapkan versi atau menerapkan menggunakan templat dari laman landas QnABot: Luncurkan QnABot.
cd .nightswatch
brew install python@3
brew install geckodriver
brew install --cask chromedriver
pip3 install virtualenv
python3 -m virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt
Atur variabel lingkungan berikut agar mengarah ke penerapan Bot QnA yang sedang diuji:
export CURRENT_STACK_REGION= ' <QNA BOT Region> '
export CURRENT_STACK_NAME= ' <QNA BOT Cloudformation Stack Name> '
export EMAIL= ' <admin user e-mail>
Secara opsional, berikan nama pengguna dan kata sandi untuk digunakan oleh pengguna Admin. Jika variabel lingkungan ini tidak disetel maka pengguna 'QnaAdmin' default akan dibuat selama pengujian awal. Jika Anda ingin menjalankan pengujian tertentu, berikan nama pengguna karena pengguna default hanya akan dibuat pada pengujian awal.
export USER= ' <QNA BOT existing admin user> '
export PASSWORD= ' <QNA BOT existing admin password> '
Secara opsional, berikan Pengenal dan Versi Pagar Pembatas Batuan Dasar untuk diuji. Jika variabel lingkungan ini tidak disetel maka pengujian Pagar Pembatas Batuan Dasar di test_knowledge_base.py dan test_llm.py akan dilewati.
export BEDROCK_GUARDRAIL_IDENTIFIER= ' <Pre-configurated Guardrail Identifier in your AWS account> '
export BEDROCK_GUARDRAIL_VERSION= ' <Pre-configurated Guardrail Version in your AWS account> '
Jika Anda ingin meluncurkan browser saat menjalankan tes, atur juga variabel env di bawah ini:
export HEADLESS_BROWSER= ' false '
Jika Anda ingin melihat waktu mulai dan berakhir untuk setiap tes:
export TIMESTAMPS= ' true '
Jika Anda ingin menggunakan profil AWS tertentu untuk pengujian. Jika tidak diatur, uji regresi akan menggunakan sesi AWS saat ini yang sedang dijalankan.
export TEST_ACCOUNT_PROFILE_NAMES= ' <AWS profile name> '
cd functional
pytest -v
Pengguna tingkat lanjut yang tertarik untuk merilis QnABot kustom dapat menggunakan petunjuk berikut untuk memublikasikan artefak penerapan yang tersedia untuk pengguna eksternal.
Buat bucket S3 untuk menghosting templat (lihat $DIST_OUTPUT_BUCKET di bawah). Anda juga memerlukan bucket regional untuk setiap wilayah tempat pengguna Anda akan di-deploy. Bucket regional harus diberi nama $DIST_OUTPUT_BUCKET-$AWS_REGION. Anda harus memberikan izin akses yang sesuai ke bucket untuk pengguna yang Anda targetkan. Silakan merujuk ke tautan di bawah untuk praktik terbaik keamanan bucket dan kontrol akses:
CATATAN: Semua bucket harus mengaktifkan pembuatan versi, jika tidak, tumpukan akan gagal diterapkan.
Tetapkan variabel lingkungan berikut untuk QnABot khusus Anda:
export DIST_OUTPUT_BUCKET= ' <name of the bucket to upload artifacts to> '
export SOLUTION_NAME= ' <name of your custom bot> '
export VERSION= ' <bot version> '
export AWS_REGIONS=( " us-east-1 " " us-west-2 " " ap-southeast-1 " " ap-southeast-2 " " ca-central-1 " " eu-west-1 " " ap-northeast-1 " " eu-central-1 " " eu-west-2 " " ap-northeast-2 " )
Variabel di atas akan menentukan jalur URL keranjang tempat bot Anda akan dihosting. Array AWS_REGIONS adalah daftar semua wilayah yang didukung QnABot. Daftar ini dapat diubah seperlunya jika versi bot Anda tidak akan diterapkan di wilayah tertentu.
Jalankan perintah berikut untuk mengunggah versi lokal saat ini ke bucket yang ditentukan:
cd deployment
./build-s3-dist.sh $DIST_OUTPUT_BUCKET $SOLUTION_NAME $VERSION
aws s3 cp global-s3-assets/ s3:// $DIST_OUTPUT_BUCKET / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
Buat bucket S3 untuk setiap wilayah jika belum ada. Bucket berikut perlu dikonfigurasi untuk penggunaan umum:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
echo " Bucket exists: s3:// $DIST_OUTPUT_BUCKET - $region "
else
aws s3api create-bucket --bucket " $DIST_OUTPUT_BUCKET - $region "
echo " Created bucket: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Jalankan perintah di bawah ini untuk setiap wilayah:
for region in " ${AWS_REGIONS[@]} " ;
do
if aws s3api head-bucket --bucket " $DIST_OUTPUT_BUCKET - $region " 2> /dev/null
then
aws s3 cp regional-s3-assets/ s3:// $DIST_OUTPUT_BUCKET - $region / $SOLUTION_NAME / $VERSION / --recursive --acl bucket-owner-full-control
else
echo " Bucket not found: s3:// $DIST_OUTPUT_BUCKET - $region "
fi
done
Templat dapat diterapkan dari URL berikut untuk semua wilayah:
echo https:// $DIST_OUTPUT_BUCKET .s3.amazonaws.com/ $SOLUTION_NAME / $VERSION /qnabot-on-aws-main.template
Untuk menjalankan Webpack dalam Mode Pengembangan, pastikan untuk memiliki yang berikut ini
Arahkan ke direktori root QnABot (direktori akan dibuat setelah Anda mengkloning repo ini).
npm install
Selanjutnya, tetapkan variabel lingkungan, ASSET_BUCKET_NAME
yang terletak di package.json dalam dev mode
skrip npm. Ini adalah nama bucket tempat QnABot memuat aset ./situs web dan biasanya diberi nama <stack-name>-bucket-<randomly-generated-chars>.
Setelah diatur dengan benar, jalankan
npm run dev-mode
Ini akan menyetel Webpack ke mode pengembangan dan mengunggah aset di ./website/build ke ASSET_BUCKET_NAME
. Ini juga akan mengawasi setiap perubahan di ./website dan memuat ulang aset ke dalam keranjang Anda jika aset berubah.
Saat ini satu-satunya browser yang didukung adalah:
Lihat file LICENSE.txt untuk detailnya.
Lihat file CHANGELOG.md untuk detail fitur baru di setiap versi.
Sebuah lokakarya juga tersedia yang memandu Anda melalui fitur-fitur QnABot.
Seiring berkembangnya QnABot selama bertahun-tahun, ia memanfaatkan berbagai layanan dan fungsi yang mungkin masuk dan keluar dari dukungan. Bagian ini berfungsi sebagai referensi ke versi solusi yang dapat diterapkan beserta tautan ke templat Public dan VPC CloudFormation.
Catatan: Versi solusi yang dapat diterapkan mengacu pada kemampuan untuk menerapkan versi QnABot di akun AWS mereka. Versi QnABot yang didukung secara aktif hanya tersedia untuk QnABot versi terbaru.
Kami tidak menyarankan untuk menggunakan versi ini karena potensi masalah dengan fungsi testall yang dapat menyebabkan sejumlah besar versi disimpan dalam bucket testall S3 ketika Perancang Konten tidak memiliki Tanya Jawab. Silakan gunakan versi terbaru yang tersedia.
Kami tidak menyarankan untuk menggunakan versi ini karena potensi masalah dengan fungsi testall yang dapat menyebabkan sejumlah besar versi disimpan dalam bucket testall S3 ketika Perancang Konten tidak memiliki Tanya Jawab. Silakan gunakan versi terbaru yang tersedia.
v5.5.0+
karena Vue 2 mencapai End of Life (EOL), yang mempengaruhi semua versi QnABot sebelumnya. Untuk informasi lebih lanjut, lihat di bawah.v5.4.X
ke versi yang lebih baru, jika Anda melakukan upgrade dari penerapan dengan LLMApi yang disetel ke SAGEMAKER, maka tetapkan nilai ini ke DISABLED sebelum melakukan upgrade. Setelah memutakhirkan, kembalikan nilai ini ke SAGEMAKER.Kami tidak menyarankan untuk menggunakan versi ini karena potensi masalah dengan fungsi testall yang dapat menyebabkan sejumlah besar versi disimpan dalam bucket testall S3 ketika Perancang Konten tidak memiliki Tanya Jawab. Silakan gunakan versi terbaru yang tersedia.
Kami tidak menyarankan untuk menggunakan versi ini karena potensi masalah dengan fungsi testall yang dapat menyebabkan sejumlah besar versi disimpan dalam bucket testall S3 ketika Perancang Konten tidak memiliki Tanya Jawab. Silakan gunakan versi terbaru yang tersedia.
Kami tidak menyarankan untuk menggunakan versi ini karena potensi masalah dengan fungsionalitas testall yang dapat menyebabkan sejumlah besar versi disimpan di bucket testall S3. Silakan gunakan versi terbaru yang tersedia.
Kami tidak menyarankan untuk menggunakan versi ini karena potensi masalah dengan fungsionalitas testall yang dapat menyebabkan sejumlah besar versi disimpan di bucket testall S3. Silakan gunakan versi terbaru yang tersedia.
v5.2.1
tidak lagi dapat diterapkan karena penghentian Lambda Runtime. Informasi ini disediakan sebagaimana adanya dan Anda sangat dianjurkan untuk memeriksa kalender penghentian dan akhir masa pakai kerangka kerja yang digunakan dalam solusi.Untuk QnABot, alasan paling umum adalah karena Runtime AWS Lambda tidak digunakan lagi. Ketika runtime Lambda ditandai sebagai tidak digunakan lagi, pelanggan tidak dapat lagi membuat fungsi Lambda baru di akun AWS mereka. Artinya, versi lama solusi kami yang menggunakan runtime tersebut akan gagal diterapkan. Hal ini menyulitkan komunitas untuk memberikan dukungan karena kami tidak dapat menerapkan lingkungan serupa untuk menyelidiki masalah dan mereproduksi laporan bug.
Jika saat ini Anda sudah memiliki penerapan yang berfungsi, Anda tidak perlu memperbarui apa pun. Namun, sangat disarankan agar Anda membuat rencana untuk menguji dan memigrasikan penerapan produksi ke versi yang didukung. Semakin jauh penerapan dari latest
semakin besar risiko terjadinya ketidakstabilan (terutama yang berkaitan dengan penerapan).
Dan bagi mereka yang ingin memulai solusi untuk pertama kalinya, Anda selalu disarankan untuk menggunakan versi terbaru. Ini adalah versi QnABot yang paling aman, stabil, dan kaya fitur!
Dalam kebanyakan kasus, operasi Update Stack yang sederhana akan memungkinkan Anda untuk memigrasikan instans Anda ke versi yang lebih baru sambil mempertahankan data Anda pada penerapan baru.
Catatan: Bagi mereka yang melakukan upgrade dari
v5.4.X
ke versi yang lebih baru, jika Anda melakukan upgrade dari penerapan dengan LLMApi yang disetel ke SAGEMAKER, maka tetapkan nilai ini ke DISABLED sebelum melakukan upgrade. Setelah memutakhirkan, kembalikan nilai ini ke SAGEMAKER.
Tim sangat menyarankan agar setiap peningkatan (terutama antara versi minor/mayor) diuji terlebih dahulu pada mesin virtual non-produksi untuk memeriksa regresi apa pun. Hal ini penting jika Anda telah membuat modifikasi khusus pada penerapan Anda, berintegrasi dengan layanan eksternal, atau beralih di antara beberapa versi.
Beberapa tindakan pencegahan tambahan yang dapat Anda lakukan adalah:
Export Settings
di bagian bawah halaman pengaturan)Solusi ini mengumpulkan metrik operasional yang dianonimkan untuk membantu AWS meningkatkan kualitas dan fitur solusi. Untuk informasi lebih lanjut, termasuk cara menonaktifkan kemampuan ini, silakan lihat panduan penerapan.
Hak Cipta Amazon.com, Inc. atau afiliasinya. Semua Hak Dilindungi Undang-undang.
Berlisensi di bawah Lisensi Apache, Versi 2.0 ("Lisensi"); Anda tidak boleh menggunakan file ini kecuali sesuai dengan Lisensi. Anda dapat memperoleh salinan Lisensi di
http://www.apache.org/licenses/LICENSE-2.0
Kecuali diwajibkan oleh undang-undang yang berlaku atau disetujui secara tertulis, perangkat lunak yang didistribusikan berdasarkan Lisensi didistribusikan berdasarkan DASAR "APA ADANYA", TANPA JAMINAN ATAU KETENTUAN DALAM BENTUK APAPUN, baik tersurat maupun tersirat. Lihat Lisensi untuk bahasa tertentu yang mengatur izin dan batasan berdasarkan Lisensi.