Skip to content

Latest commit

 

History

History
372 lines (245 loc) · 23 KB

README_vi-VN.md

File metadata and controls

372 lines (245 loc) · 23 KB

Trò chuyện Claude của Bedrock (Nova)

English | 日本語 | 한국어 | 中文 | Français | Deutsch | Español | Italian | Norsk | ไทย | Bahasa Indonesia | Bahasa Melayu | Tiếng Việt | Polski

Warning

Đã phát hành phiên bản V2. Để cập nhật, vui lòng xem kỹ hướng dẫn di chuyển. Nếu không cẩn thận, CÁC BOT TỪ V1 SẼ TRỞ NÊN VÔ DỤNG.

Một chatbot đa ngôn ngữ sử dụng các mô hình LLM do Amazon Bedrock cung cấp cho AI sinh tạo.

Xem Tổng quan và Hướng dẫn Cài đặt trên YouTube

Tổng quan

Cuộc Trò Chuyện Cơ Bản

Cá Nhân Hóa Bot

Thêm hướng dẫn của riêng bạn và cung cấp kiến thức bên ngoài dưới dạng URL hoặc tệp (còn gọi là RAG). Bot có thể được chia sẻ giữa các người dùng ứng dụng. Bot được tùy chỉnh cũng có thể được xuất bản dưới dạng API độc lập (Xem chi tiết).

Important

Vì lý do quản trị, chỉ những người dùng được phép mới có thể tạo bot tùy chỉnh. Để cho phép tạo bot tùy chỉnh, người dùng phải là thành viên của nhóm có tên CreatingBotAllowed, có thể được thiết lập thông qua bảng điều khiển quản lý > Nhóm người dùng Amazon Cognito hoặc aws cli. Lưu ý rằng ID nhóm người dùng có thể được tham khảo bằng cách truy cập CloudFormation > BedrockChatStack > Outputs > AuthUserPoolIdxxxx.

Bảng điều khiển quản trị

Bảng điều khiển quản trị

Phân tích việc sử dụng cho từng người dùng / bot trên bảng điều khiển quản trị. chi tiết

Tác Nhân Được Hỗ Trợ Bởi LLM

Tác Nhân Được Hỗ Trợ Bởi LLM

Bằng cách sử dụng chức năng Tác Nhân, chatbot của bạn có thể tự động xử lý các tác vụ phức tạp hơn. Ví dụ: để trả lời câu hỏi của người dùng, Tác Nhân có thể truy xuất thông tin cần thiết từ các công cụ bên ngoài hoặc chia nhỏ tác vụ thành nhiều bước để xử lý.

🚀 Triển Khai Siêu Dễ Dàng

  • Trong khu vực us-east-1, mở Truy cập Mô hình Bedrock > Quản lý truy cập mô hình > Chọn tất cả Anthropic / Claude 3, tất cả Amazon / Nova, Amazon / Titan Text Embeddings V2Cohere / Embed Multilingual sau đó Lưu thay đổi.
Ảnh chụp màn hình

  • Mở CloudShell tại khu vực bạn muốn triển khai
  • Chạy triển khai thông qua các lệnh sau. Nếu bạn muốn chỉ định phiên bản để triển khai hoặc cần áp dụng các chính sách bảo mật, vui lòng chỉ định các tham số phù hợp từ Các Tham Số Tùy Chọn.
git clone https://github.com/aws-samples/bedrock-claude-chat.git
cd bedrock-claude-chat
chmod +x bin.sh
./bin.sh
  • Bạn sẽ được hỏi nếu là người dùng mới hay đang sử dụng phiên bản v2. Nếu bạn không phải là người dùng tiếp tục từ v0, vui lòng nhập y.

Các Tham Số Tùy Chọn

Bạn có thể chỉ định các tham số sau trong quá trình triển khai để tăng cường bảo mật và tùy chỉnh:

  • --disable-self-register: Vô hiệu hóa đăng ký tự động (mặc định: được bật). Nếu cờ này được đặt, bạn sẽ cần tạo tất cả người dùng trên cognito và sẽ không cho phép người dùng tự đăng ký tài khoản.
  • --enable-lambda-snapstart: Bật Lambda SnapStart (mặc định: vô hiệu). Nếu cờ này được đặt, cải thiện thời gian khởi động lạnh cho các hàm Lambda, cung cấp thời gian phản hồi nhanh hơn để có trải nghiệm người dùng tốt hơn.
  • --ipv4-ranges: Danh sách các dải IPv4 được phép, phân tách bằng dấu phẩy. (mặc định: cho phép tất cả địa chỉ ipv4)
  • --ipv6-ranges: Danh sách các dải IPv6 được phép, phân tách bằng dấu phẩy. (mặc định: cho phép tất cả địa chỉ ipv6)
  • --disable-ipv6: Vô hiệu hóa kết nối qua IPv6. (mặc định: được bật)
  • --allowed-signup-email-domains: Danh sách các miền email được phép đăng ký, phân tách bằng dấu phẩy. (mặc định: không hạn chế miền)
  • --bedrock-region: Xác định khu vực nơi bedrock có sẵn. (mặc định: us-east-1)
  • --repo-url: Kho lưu trữ tùy chỉnh của Bedrock Claude Chat để triển khai, nếu đã fork hoặc điều khiển nguồn tùy chỉnh. (mặc định: https://github.com/aws-samples/bedrock-claude-chat.git)
  • --version: Phiên bản của Bedrock Claude Chat để triển khai. (mặc định: phiên bản mới nhất trong quá trình phát triển)
  • --cdk-json-override: Bạn có thể ghi đè bất kỳ giá trị ngữ cảnh CDK nào trong quá trình triển khai bằng cách sử dụng khối JSON ghi đè. Điều này cho phép bạn sửa đổi cấu hình mà không cần chỉnh sửa trực tiếp tệp cdk.json.

Ví dụ sử dụng:

./bin.sh --cdk-json-override '{
  "context": {
    "selfSignUpEnabled": false,
    "enableLambdaSnapStart": true,
    "allowedIpV4AddressRanges": ["192.168.1.0/24"],
    "allowedSignUpEmailDomains": ["example.com"]
  }
}'

JSON ghi đè phải tuân theo cùng cấu trúc như cdk.json. Bạn có thể ghi đè bất kỳ giá trị ngữ cảnh nào bao gồm:

  • selfSignUpEnabled
  • enableLambdaSnapStart
  • allowedIpV4AddressRanges
  • allowedIpV6AddressRanges
  • allowedSignUpEmailDomains
  • bedrockRegion
  • enableRagReplicas
  • enableBedrockCrossRegionInference
  • Và các giá trị ngữ cảnh khác được xác định trong cdk.json

[!Lưu ý] Các giá trị ghi đè sẽ được hợp nhất với cấu hình cdk.json hiện có trong thời gian triển khai của AWS code build. Các giá trị được chỉ định trong phần ghi đè sẽ có ưu tiên hơn các giá trị trong cdk.json.

Ví dụ lệnh với các tham số:

./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"
  • Sau khoảng 35 phút, bạn sẽ nhận được đầu ra sau, mà bạn có thể truy cập từ trình duyệt của mình
URL Frontend: https://xxxxxxxxx.cloudfront.net

Màn hình đăng ký sẽ xuất hiện như hình trên, nơi bạn có thể đăng ký email và đăng nhập.

[!Quan Trọng] Nếu không đặt tham số tùy chọn, phương pháp triển khai này cho phép bất kỳ ai biết URL đều có thể đăng ký. Đối với việc sử dụng trong sản xuất, rất khuyến nghị thêm các hạn chế địa chỉ IP và vô hiệu hóa đăng ký tự động để giảm thiểu rủi ro bảo mật (bạn có thể xác định allowed-signup-email-domains để hạn chế người dùng sao cho chỉ các địa chỉ email từ miền công ty của bạn mới có thể đăng ký). Sử dụng cả ipv4-ranges và ipv6-ranges để hạn chế địa chỉ IP, và vô hiệu hóa đăng ký tự động bằng cách sử dụng disable-self-register khi thực thi ./bin.

[!MẸO] Nếu URL Frontend không xuất hiện hoặc Bedrock Claude Chat không hoạt động đúng, có thể là do vấn đề với phiên bản mới nhất. Trong trường hợp này, vui lòng thêm --version "v1.2.6" vào các tham số và thử triển khai lại.

Kiến trúc

Đây là kiến trúc được xây dựng trên các dịch vụ quản lý của AWS, loại bỏ nhu cầu quản lý cơ sở hạ tầng. Sử dụng Amazon Bedrock, không cần thiết phải giao tiếp với các API bên ngoài AWS. Điều này cho phép triển khai các ứng dụng có khả năng mở rộng, đáng tin cậy và an toàn.

  • Amazon DynamoDB: Cơ sở dữ liệu NoSQL để lưu trữ lịch sử cuộc trò chuyện
  • Amazon API Gateway + AWS Lambda: Điểm cuối API backend (Bộ chuyển đổi Web AWS Lambda, FastAPI)
  • Amazon CloudFront + S3: Phân phối ứng dụng frontend (React, Tailwind CSS)
  • AWS WAF: Hạn chế địa chỉ IP
  • Amazon Cognito: Xác thực người dùng
  • Amazon Bedrock: Dịch vụ quản lý để sử dụng các mô hình nền tảng thông qua API
  • Amazon Bedrock Knowledge Bases: Cung cấp giao diện quản lý cho Truy xuất-Tăng cường Sinh thành (RAG), cung cấp các dịch vụ nhúng và phân tích tài liệu
  • Amazon EventBridge Pipes: Nhận sự kiện từ luồng DynamoDB và khởi chạy Step Functions để nhúng kiến thức bên ngoài
  • AWS Step Functions: Điều phối quy trình nhập liệu để nhúng kiến thức bên ngoài vào Bedrock Knowledge Bases
  • Amazon OpenSearch Serverless: Phục vụ như cơ sở dữ liệu backend cho Bedrock Knowledge Bases, cung cấp khả năng tìm kiếm toàn văn và tìm kiếm vector, cho phép truy xuất thông tin liên quan chính xác
  • Amazon Athena: Dịch vụ truy vấn để phân tích bucket S3

Triển khai bằng CDK

Triển khai Siêu dễ dàng sử dụng AWS CodeBuild để thực hiện triển khai CDK nội bộ. Phần này mô tả quy trình triển khai trực tiếp bằng CDK.

  • Vui lòng chuẩn bị môi trường UNIX, Docker và môi trường chạy Node.js. Nếu không, bạn cũng có thể sử dụng Cloud9

[!Quan trọng] Nếu không gian lưu trữ trong môi trường cục bộ không đủ trong quá trình triển khai, việc khởi tạo CDK có thể dẫn đến lỗi. Nếu bạn đang chạy trên Cloud9 v.v., chúng tôi khuyến nghị mở rộng kích thước khối lượng của phiên bản trước khi triển khai.

  • Sao chép kho lưu trữ này
git clone https://github.com/aws-samples/bedrock-claude-chat
  • Cài đặt các gói npm
cd bedrock-claude-chat
cd cdk
npm ci
  • Nếu cần, hãy chỉnh sửa các mục sau trong cdk.json nếu cần.

    • bedrockRegion: Khu vực nơi Bedrock có sẵn. LƯU Ý: Bedrock KHÔNG hỗ trợ tất cả các khu vực vào lúc này.
    • allowedIpV4AddressRanges, allowedIpV6AddressRanges: Phạm vi địa chỉ IP được phép.
    • enableLambdaSnapStart: Mặc định là true. Đặt thành false nếu triển khai tại khu vực không hỗ trợ Lambda SnapStart cho các hàm Python.
  • Trước khi triển khai CDK, bạn sẽ cần thực hiện Bootstrap một lần cho khu vực bạn đang triển khai.

npx cdk bootstrap
  • Triển khai dự án mẫu này
npx cdk deploy --require-approval never --all
  • Bạn sẽ nhận được đầu ra tương tự như sau. URL của ứng dụng web sẽ được xuất ra trong BedrockChatStack.FrontendURL, vì vậy vui lòng truy cập từ trình duyệt của bạn.
 ✅  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

Các mục khác

Cấu hình hỗ trợ mô hình Mistral

Cập nhật enableMistral thành true trong cdk.json, và chạy npx cdk deploy.

...
  "enableMistral": true,

[!Quan trọng] Dự án này tập trung vào các mô hình Anthropic Claude, các mô hình Mistral được hỗ trợ hạn chế. Ví dụ, các ví dụ về lời nhắc dựa trên các mô hình Claude. Đây là tùy chọn dành riêng cho Mistral, một khi bạn bật để kích hoạt các mô hình Mistral, bạn chỉ có thể sử dụng các mô hình Mistral cho tất cả các tính năng chat, KHÔNG phải cả Claude và Mistral.

Cấu hình sinh văn bản mặc định

Người dùng có thể điều chỉnh các tham số sinh văn bản từ màn hình tạo bot tùy chỉnh. Nếu bot không được sử dụng, các tham số mặc định được đặt trong config.py sẽ được sử dụng.

DEFAULT_GENERATION_CONFIG = {
    "max_tokens": 2000,
    "top_k": 250,
    "top_p": 0.999,
    "temperature": 0.6,
    "stop_sequences": ["Human: ", "Assistant: "],
}

Xóa tài nguyên

Nếu sử dụng cli và CDK, vui lòng sử dụng npx cdk destroy. Nếu không, truy cập CloudFormation và sau đó xóa BedrockChatStackFrontendWafStack theo cách thủ công. Lưu ý rằng FrontendWafStack ở khu vực us-east-1.

Cài đặt Ngôn ngữ

Tài sản này tự động phát hiện ngôn ngữ bằng i18next-browser-languageDetector. Bạn có thể chuyển đổi ngôn ngữ từ menu ứng dụng. Ngoài ra, bạn có thể sử dụng Chuỗi Truy vấn để đặt ngôn ngữ như dưới đây.

https://example.com?lng=ja

Vô hiệu hóa đăng ký tự động

Mẫu này có chức năng đăng ký tự động được bật theo mặc định. Để vô hiệu hóa đăng ký tự động, mở cdk.json và chuyển selfSignUpEnabled thành false. Nếu bạn cấu hình nhà cung cấp danh tính bên ngoài, giá trị sẽ bị bỏ qua và tự động vô hiệu hóa.

Hạn chế Miền cho Địa chỉ Email Đăng ký

Theo mặc định, mẫu này không giới hạn các miền cho địa chỉ email đăng ký. Để chỉ cho phép đăng ký từ các miền cụ thể, mở cdk.json và chỉ định các miền dưới dạng danh sách trong allowedSignUpEmailDomains.

"allowedSignUpEmailDomains": ["example.com"],

Nhà cung cấp Danh tính Bên ngoài

Mẫu này hỗ trợ nhà cung cấp danh tính bên ngoài. Hiện tại chúng tôi hỗ trợ Googlenhà cung cấp OIDC tùy chỉnh.

Tự động thêm người dùng mới vào nhóm

Mẫu này có các nhóm sau để cấp quyền cho người dùng:

Nếu bạn muốn người dùng mới được tự động tham gia các nhóm, bạn có thể chỉ định chúng trong cdk.json.

"autoJoinUserGroups": ["CreatingBotAllowed"],

Theo mặc định, người dùng mới được tạo sẽ được thêm vào nhóm CreatingBotAllowed.

Cấu hình Bản sao RAG

enableRagReplicas là một tùy chọn trong cdk.json kiểm soát cài đặt bản sao cho cơ sở dữ liệu RAG, cụ thể là Cơ sở Kiến thức sử dụng Amazon OpenSearch Serverless.

  • Mặc định: true
  • true: Tăng tính khả dụng bằng cách kích hoạt các bản sao bổ sung, phù hợp cho môi trường sản xuất nhưng tăng chi phí.
  • false: Giảm chi phí bằng cách sử dụng ít bản sao hơn, phù hợp cho phát triển và thử nghiệm.

Đây là cài đặt cấp tài khoản/khu vực, ảnh hưởng đến toàn bộ ứng dụng chứ không phải từng bot riêng.

[!Ghi chú] Tính đến tháng 6 năm 2024, Amazon OpenSearch Serverless hỗ trợ 0.5 OCU, làm giảm chi phí đầu vào cho các workload quy mô nhỏ. Các triển khai sản xuất có thể bắt đầu với 2 OCU, trong khi các workload phát triển/thử nghiệm có thể sử dụng 1 OCU. OpenSearch Serverless tự động mở rộng quy mô dựa trên nhu cầu workload. Để biết thêm chi tiết, hãy truy cập thông báo.

Suy luận liên vùng

Suy luận liên vùng cho phép Amazon Bedrock định tuyến động các yêu cầu suy luận mô hình trên nhiều khu vực AWS, tăng cường thông lượng và khả năng phục hồi trong các giai đoạn cao điểm. Để cấu hình, chỉnh sửa cdk.json.

"enableBedrockCrossRegionInference": true

Lambda SnapStart

Lambda SnapStart cải thiện thời gian khởi động lạnh cho các hàm Lambda, cung cấp thời gian phản hồi nhanh hơn để mang lại trải nghiệm người dùng tốt hơn. Mặt khác, đối với các hàm Python, có khoản phí phụ thuộc vào kích thước bộ nhớ đệmkhông khả dụng ở một số khu vực hiện tại. Để vô hiệu hóa SnapStart, chỉnh sửa cdk.json.

"enableLambdaSnapStart": false

Cấu hình Tên Miền Tùy chỉnh

Bạn có thể cấu hình tên miền tùy chỉnh cho phân phối CloudFront bằng cách đặt các tham số sau trong cdk.json:

{
  "alternateDomainName": "chat.example.com",
  "hostedZoneId": "Z0123456789ABCDEF"
}
  • alternateDomainName: Tên miền tùy chỉnh cho ứng dụng chat của bạn (ví dụ: chat.example.com)
  • hostedZoneId: ID của vùng được lưu trữ Route 53 nơi các bản ghi DNS sẽ được tạo

Khi các tham số này được cung cấp, việc triển khai sẽ tự động:

  • Tạo chứng chỉ ACM với xác thực DNS trong khu vực us-east-1
  • Tạo các bản ghi DNS cần thiết trong vùng Route 53 của bạn
  • Cấu hình CloudFront để sử dụng tên miền tùy chỉnh của bạn

[!Ghi chú] Tên miền phải được quản lý bởi Route 53 trong tài khoản AWS của bạn. ID vùng được lưu trữ có thể được tìm thấy trong bảng điều khiển Route 53.

Phát triển Cục bộ

Xem PHÁT TRIỂN CỤC BỘ.

Đóng góp

Cảm ơn bạn đã cân nhắc đóng góp vào kho lưu trữ này! Chúng tôi hoan nghênh các bản sửa lỗi, bản dịch ngôn ngữ (i18n), cải tiến tính năng, công cụ đại lý và các cải tiến khác.

Đối với các cải tiến tính năng và các cải tiến khác, trước khi tạo Pull Request, chúng tôi rất mong bạn tạo một Vấn đề Yêu cầu Tính năng để thảo luận về phương pháp và chi tiết triển khai. Đối với các bản sửa lỗi và bản dịch ngôn ngữ (i18n), hãy tiến hành tạo Pull Request trực tiếp.

Vui lòng xem xét các hướng dẫn sau trước khi đóng góp:

Liên hệ

🏆 Những Đóng Góp Viên Nổi Bật

Những người đóng góp

Những người đóng góp của bedrock claude chat

Giấy Phép

Thư viện này được cấp phép theo Giấy Phép MIT-0. Xem tệp LICENSE.