English | 日本語 | 한국어 | 中文 | Français | Deutsch | Español | Italian | Norsk | ไทย | Bahasa Indonesia | Bahasa Melayu | Tiếng Việt | Polski
Warning
Versi 2 telah dikeluarkan. Untuk mengemas kini, sila semak semula panduan migrasi migration guide dengan teliti. Tanpa penjagaan, BOT DARI V1 AKAN MENJADI TIDAK BOLEH DIGUNAKAN.
Chatbot pelbagai bahasa yang menggunakan model LLM yang disediakan oleh Amazon Bedrock untuk AI generatif.
Tambahkan arahan anda sendiri dan berikan pengetahuan luar seperti URL atau fail (a.k.a RAG. Bot boleh dikongsi di kalangan pengguna aplikasi. Bot yang disesuaikan juga boleh diterbitkan sebagai API bebas (Lihat butiran).
Important
Atas sebab tadbir urus, hanya pengguna yang dibenarkan sahaja yang boleh membuat bot yang disesuaikan. Untuk membenarkan penciptaan bot yang disesuaikan, pengguna mestilah ahli kumpulan yang dipanggil CreatingBotAllowed
, yang boleh disediakan melalui konsol pengurusan > Amazon Cognito User pools atau aws cli. Sila ambil perhatian bahawa ID kumpulan pengguna boleh dirujuk dengan mengakses CloudFormation > BedrockChatStack > Outputs > AuthUserPoolIdxxxx
.
Papan pemuka pentadbir
Analisis penggunaan untuk setiap pengguna / bot pada papan pemuka pentadbir. butiran
Agen yang didayakan LLM
Dengan menggunakan fungsi Agen, chatbot anda boleh mengendalikan tugas yang lebih kompleks secara automatik. Sebagai contoh, untuk menjawab soalan pengguna, Agen boleh mengambil maklumat yang diperlukan daripada alat luar atau memecahkan tugas kepada beberapa langkah untuk diproses.
- Di kawasan us-east-1, buka Akses Model Bedrock >
Urus akses model
> Tandakan semuaAnthropic / Claude 3
, semuaAmazon / Nova
,Amazon / Titan Text Embeddings V2
danCohere / Embed Multilingual
kemudianSimpan perubahan
.
- Buka CloudShell di kawasan tempat anda ingin melakukan pengploian
- Jalankan pengploian melalui arahan berikut. Jika anda ingin menetapkan versi untuk diploikan atau perlu menggunakan dasar keselamatan, sila nyatakan parameter yang sesuai dari Parameter Pilihan.
git clone https://github.com/aws-samples/bedrock-claude-chat.git
cd bedrock-claude-chat
chmod +x bin.sh
./bin.sh
- Anda akan ditanya sama ada pengguna baru atau menggunakan v2. Jika anda bukan pengguna yang berterusan dari v0, sila masukkan
y
.
Anda boleh menetapkan parameter berikut semasa pengploian untuk meningkatkan keselamatan dan penyesuaian:
- --disable-self-register: Lumpuhkan pendaftaran sendiri (lalai: didayakan). Jika bendera ini ditetapkan, anda perlu membuat semua pengguna pada cognito dan ia tidak akan membenarkan pengguna mendaftar akaun mereka sendiri.
- --enable-lambda-snapstart: Dayakan Lambda SnapStart (lalai: dilumpuhkan). Jika bendera ini ditetapkan, ia meningkatkan masa permulaan sejuk untuk fungsi Lambda, memberikan masa respons yang lebih pantas untuk pengalaman pengguna yang lebih baik.
- --ipv4-ranges: Senarai rentang IPv4 yang dibenarkan yang dipisahkan dengan koma. (lalai: benarkan semua alamat ipv4)
- --ipv6-ranges: Senarai rentang IPv6 yang dibenarkan yang dipisahkan dengan koma. (lalai: benarkan semua alamat ipv6)
- --disable-ipv6: Lumpuhkan sambungan melalui IPv6. (lalai: didayakan)
- --allowed-signup-email-domains: Senarai domain e-mel yang dibenarkan untuk pendaftaran yang dipisahkan dengan koma. (lalai: tiada sekatan domain)
- --bedrock-region: Tentukan kawasan di mana bedrock tersedia. (lalai: us-east-1)
- --repo-url: Repositori Bedrock Claude Chat yang disesuaikan untuk diploikan, jika fork atau kawalan sumber yang disesuaikan. (lalai: https://github.com/aws-samples/bedrock-claude-chat.git)
- --version: Versi Bedrock Claude Chat untuk diploikan. (lalai: versi terkini dalam pembangunan)
- --cdk-json-override: Anda boleh mengatasi mana-mana nilai konteks CDK semasa pengploian menggunakan blok JSON override. Ini membolehkan anda mengubah konfigurasi tanpa mengedit fail cdk.json secara langsung.
Contoh penggunaan:
./bin.sh --cdk-json-override '{
"context": {
"selfSignUpEnabled": false,
"enableLambdaSnapStart": true,
"allowedIpV4AddressRanges": ["192.168.1.0/24"],
"allowedSignUpEmailDomains": ["example.com"]
}
}'
JSON override mesti mengikuti struktur yang sama seperti cdk.json. Anda boleh mengatasi mana-mana nilai konteks termasuk:
selfSignUpEnabled
enableLambdaSnapStart
allowedIpV4AddressRanges
allowedIpV6AddressRanges
allowedSignUpEmailDomains
bedrockRegion
enableRagReplicas
enableBedrockCrossRegionInference
- Dan nilai konteks lain yang ditakrifkan dalam cdk.json
[!Nota] Nilai override akan digabungkan dengan konfigurasi cdk.json sedia ada semasa masa pengploian dalam pembinaan kod AWS. Nilai yang dinyatakan dalam override akan mempunyai keutamaan berbanding nilai dalam cdk.json.
./bin.sh --disable-self-register --ipv4-ranges "192.0.2.0/25,192.0.2.128/25" --ipv6-ranges "2001:db8:1:2::/64,2001:db8:1:3::/64" --allowed-signup-email-domains "example.com,anotherexample.com" --bedrock-region "us-west-2" --version "v1.2.6"
- Selepas kira-kira 35 minit, anda akan mendapatkan output berikut, yang boleh anda akses dari pelayar anda
Frontend URL: https://xxxxxxxxx.cloudfront.net
Skrin pendaftaran akan muncul seperti yang ditunjukkan di atas, di mana anda boleh mendaftar e-mel anda dan log masuk.
[!Penting] Tanpa menetapkan parameter pilihan, kaedah pengploian ini membenarkan sesiapa yang mengetahui URL untuk mendaftar. Untuk kegunaan pengeluaran, sangat disyorkan untuk menambah sekatan alamat IP dan melumpuhkan pendaftaran sendiri untuk mengurangkan risiko keselamatan (anda boleh mentakrifkan allowed-signup-email-domains untuk menyekat pengguna supaya hanya alamat e-mel dari domain syarikat anda yang boleh mendaftar). Gunakan kedua-dua ipv4-ranges dan ipv6-ranges untuk sekatan alamat IP, dan lumpuhkan pendaftaran sendiri dengan menggunakan disable-self-register semasa melaksanakan ./bin.
[!PETUA] Jika
Frontend URL
tidak muncul atau Bedrock Claude Chat tidak berfungsi dengan baik, ia mungkin masalah dengan versi terkini. Dalam kes ini, sila tambah--version "v1.2.6"
ke parameter dan cuba pengploian semula.
Ia adalah senibina yang dibina di atas perkhidmatan terurus AWS, menghapuskan keperluan pengurusan infrastruktur. Dengan menggunakan Amazon Bedrock, tiada keperluan untuk berkomunikasi dengan API di luar AWS. Ini membolehkan penggunaan aplikasi yang boleh diskalakan, boleh dipercayai, dan selamat.
- Amazon DynamoDB: Pangkalan data NoSQL untuk menyimpan sejarah perbualan
- Amazon API Gateway + AWS Lambda: Titik akhir API backend (AWS Lambda Web Adapter, FastAPI)
- Amazon CloudFront + S3: Penghantaran aplikasi frontend (React, Tailwind CSS)
- AWS WAF: Pembatasan alamat IP
- Amazon Cognito: Pengesahan pengguna
- Amazon Bedrock: Perkhidmatan terurus untuk menggunakan model asas melalui API
- Amazon Bedrock Knowledge Bases: Menyediakan antara muka terurus untuk Generasi Perolehan Semula (RAG), menawarkan perkhidmatan untuk menyematkan dan mengurai dokumen
- Amazon EventBridge Pipes: Menerima peristiwa dari aliran DynamoDB dan melancarkan Step Functions untuk menyematkan pengetahuan luaran
- AWS Step Functions: Mengatur saluran penyerapan untuk menyematkan pengetahuan luaran ke dalam Bedrock Knowledge Bases
- Amazon OpenSearch Serverless: Berkhidmat sebagai pangkalan data backend untuk Bedrock Knowledge Bases, menyediakan ciri carian teks penuh dan carian vektor, membolehkan perolehan semula maklumat yang tepat
- Amazon Athena: Perkhidmatan pertanyaan untuk menganalisis baldi S3
Deployment Super-mudah menggunakan AWS CodeBuild untuk melakukan deployment melalui CDK secara dalaman. Bahagian ini menerangkan prosedur untuk deployment terus dengan CDK.
- Sediakan persekitaran UNIX, Docker dan runtime Node.js. Jika tidak, anda boleh menggunakan Cloud9
[!Penting] Jika ruang storan tidak mencukupi dalam persekitaran tempatan semasa deployment, CDK bootstrapping mungkin menghasilkan ralat. Jika anda sedang berjalan di Cloud9 dll., kami mencadangkan mengembangkan saiz volum contoh sebelum deployment.
- Klon repositori ini
git clone https://github.com/aws-samples/bedrock-claude-chat
- Pasang pakej npm
cd bedrock-claude-chat
cd cdk
npm ci
-
Jika perlu, edit entri berikut dalam cdk.json jika perlu.
bedrockRegion
: Wilayah di mana Bedrock tersedia. NOTA: Bedrock TIDAK menyokong semua wilayah pada masa ini.allowedIpV4AddressRanges
,allowedIpV6AddressRanges
: Julat Alamat IP yang dibenarkan.enableLambdaSnapStart
: Secara lalai adalah true. Tetapkan ke false jika deployment ke wilayah yang tidak menyokong Lambda SnapStart untuk fungsi Python.
-
Sebelum deployment CDK, anda perlu bekerja dengan Bootstrap sekali untuk wilayah yang anda deploy.
npx cdk bootstrap
- Deploy projek sampel ini
npx cdk deploy --require-approval never --all
- Anda akan mendapatkan output yang serupa dengan berikut. URL aplikasi web akan dikeluarkan dalam
BedrockChatStack.FrontendURL
, jadi sila akses dari pelayar anda.
✅ BedrockChatStack
✨ Deployment time: 78.57s
Outputs:
BedrockChatStack.AuthUserPoolClientIdXXXXX = xxxxxxx
BedrockChatStack.AuthUserPoolIdXXXXXX = ap-northeast-1_XXXX
BedrockChatStack.BackendApiBackendApiUrlXXXXX = https://xxxxx.execute-api.ap-northeast-1.amazonaws.com
BedrockChatStack.FrontendURL = https://xxxxx.cloudfront.net
Kemas kini enableMistral
kepada true
dalam cdk.json, dan jalankan npx cdk deploy
.
...
"enableMistral": true,
[!Penting] Projek ini fokus pada model Anthropic Claude, model Mistral mempunyai sokongan terhad. Contohnya, contoh prompt adalah berdasarkan model Claude. Ini adalah pilihan Mistral sahaja, sebaik sahaja anda menghidupkan model Mistral, anda hanya boleh menggunakan model Mistral untuk semua ciri sembang, BUKAN kedua-dua model Claude dan Mistral.
Pengguna boleh melaraskan parameter generasi teks dari skrin penciptaan bot tersuai. Jika bot tidak digunakan, parameter lalai yang ditetapkan dalam config.py akan digunakan.
DEFAULT_GENERATION_CONFIG = {
"max_tokens": 2000,
"top_k": 250,
"top_p": 0.999,
"temperature": 0.6,
"stop_sequences": ["Human: ", "Assistant: "],
}
Jika menggunakan cli dan CDK, sila npx cdk destroy
. Jika tidak, akses CloudFormation dan kemudian padamkan BedrockChatStack
dan FrontendWafStack
secara manual. Sila ambil perhatian bahawa FrontendWafStack
berada di rantau us-east-1
.
Aset ini secara automatik mengesan bahasa menggunakan i18next-browser-languageDetector. Anda boleh menukar bahasa dari menu aplikasi. Sebagai alternatif, anda boleh menggunakan Query String untuk menetapkan bahasa seperti yang ditunjukkan di bawah.
https://example.com?lng=ja
Sampel ini mempunyai pendaftaran sendiri yang didayakan secara lalai. Untuk melumpuhkan pendaftaran sendiri, buka cdk.json dan tukar selfSignUpEnabled
kepada false
. Jika anda mengkonfigurasi penyedia identiti luar, nilai akan diabaikan dan automatik dilumpuhkan.
Secara lalai, sampel ini tidak menghadkan domain untuk alamat e-mel pendaftaran. Untuk membenarkan pendaftaran hanya dari domain tertentu, buka cdk.json
dan nyatakan domain sebagai senarai dalam allowedSignUpEmailDomains
.
"allowedSignUpEmailDomains": ["example.com"],
Sampel ini menyokong penyedia identiti luar. Pada masa ini kami menyokong Google dan penyedia OIDC tersuai.
Sampel ini mempunyai kumpulan berikut untuk memberi izin kepada pengguna:
Jika anda ingin pengguna yang baru dicipta secara automatik menyertai kumpulan, anda boleh menyatakannya dalam cdk.json.
"autoJoinUserGroups": ["CreatingBotAllowed"],
Secara lalai, pengguna yang baru dicipta akan disertakan ke kumpulan CreatingBotAllowed
.
[Selebihnya terjemahan sama seperti yang diberikan, dengan memastikan format markdown dan struktur kekal sama]
Pustaka ini dibenarkan di bawah Lesen MIT-0. Lihat fail LESEN.