การแนะนำ
ข้อกำหนดเบื้องต้น
สแต็คเทคโนโลยีเป้าหมาย
การปรับใช้
คำสั่ง CDK ที่เป็นประโยชน์
โครงสร้างรหัส
ปรับแต่งแชทบอทด้วยข้อมูลของคุณเอง
แอปพลิเคชัน GenAI ChatBot นี้สร้างขึ้นด้วย Amazon Bedrock ซึ่งประกอบด้วย KnowledgeBase, Agent และโซลูชัน GenAI ไร้เซิร์ฟเวอร์ AWS เพิ่มเติม โซลูชันที่ให้มาจะแสดง Chatbot ที่ใช้ความเข้าใจเกี่ยวกับอินสแตนซ์ EC2 และราคาของอินสแตนซ์ EC2 แชทบอทนี้ทำหน้าที่เป็นตัวอย่างความสามารถของ Amazon Bedrock ในการแปลงภาษาธรรมชาติเป็นการสืบค้นของ Amazon Athena และเพื่อประมวลผลและใช้ชุดข้อมูลที่ซับซ้อน เครื่องมือโอเพ่นซอร์ส เช่น LLamaIndex ถูกนำมาใช้เพื่อเพิ่มขีดความสามารถของระบบในการประมวลผลและเรียกค้นข้อมูล การบูรณาการทรัพยากร AWS หลายๆ รายการยังเน้นในโซลูชันนี้ด้วย ทรัพยากรเหล่านี้ประกอบด้วย Amazon S3 สำหรับการจัดเก็บข้อมูล, Amazon Bedrock KnowledgeBase เพื่ออำนวยความสะดวกในการเรียกข้อมูล Augmented Generation (RAG), Amazon Bedrock Agent เพื่อดำเนินการงานหลายขั้นตอนในแหล่งข้อมูล, AWS Glue เพื่อจัดเตรียมข้อมูล, Amazon Athena เพื่อดำเนินการสืบค้นที่มีประสิทธิภาพ, Amazon Lambda เพื่อ จัดการคอนเทนเนอร์และ Amazon ECS เพื่อดูแลคอนเทนเนอร์ การใช้ทรัพยากรเหล่านี้ร่วมกันช่วยให้ Chatbot สามารถดึงและจัดการเนื้อหาจากฐานข้อมูลและเอกสารได้อย่างมีประสิทธิภาพ ซึ่งแสดงให้เห็นถึงความสามารถของ Amazon Bedrock ในการพัฒนาแอปพลิเคชัน Chatbot ขั้นสูง
นักเทียบท่า
AWS CDK Toolkit 2.114.1+ ติดตั้งและกำหนดค่าแล้ว สำหรับข้อมูลเพิ่มเติม โปรดดูการเริ่มต้นใช้งาน AWS CDK ในเอกสารประกอบ AWS CDK
Python 3.11+ ติดตั้งและกำหนดค่าแล้ว สำหรับข้อมูลเพิ่มเติม โปรดดูคู่มือสำหรับผู้เริ่มต้น/ดาวน์โหลดในเอกสารประกอบ Python
บัญชี AWS ที่ใช้งานอยู่
บัญชี AWS บูตสแตรปโดยใช้ AWS CDK ใน us-east-1 หรือ us-west-2 เปิดใช้งานการเข้าถึงโมเดล Claude และโมเดล Titan Embedding ในบริการ Bedrock
อเมซอน ข้อเท็จจริง
Amazon OpenSearch แบบไร้เซิร์ฟเวอร์
อเมซอน อีซีเอส
กาว AWS
AWS แลมบ์ดา
อเมซอน S3
อเมซอน อาเธน่า
โหลดบาลานเซอร์แบบยืดหยุ่น
หากต้องการเรียกใช้แอปในเครื่อง ก่อนอื่นให้เพิ่มไฟล์ .env ลงในโฟลเดอร์ 'code/streamlit-app' ที่มีสิ่งต่อไปนี้
ACCOUNT_ID = <รหัสบัญชีของคุณ>AWS_REGION = <ภูมิภาคของคุณ>LAMBDA_FUNCTION_NAME = intakeAgentLambda # ตั้งชื่อตัวเลือกสำหรับฟังก์ชัน lambda ที่เรียกโดย streamlit สำหรับการตอบกลับ ขณะนี้กำลังเรียกตัวแทน
ไฟล์ cdk.json
จะบอก CDK Toolkit ถึงวิธีดำเนินการแอปของคุณ
โปรเจ็กต์นี้ได้รับการตั้งค่าเหมือนกับโปรเจ็กต์ Python มาตรฐาน กระบวนการเริ่มต้นยังสร้าง virtualenv ภายในโปรเจ็กต์นี้ ซึ่งจัดเก็บไว้ในไดเร็กทอรี .venv
ในการสร้าง virtualenv จะถือว่ามี python3
(หรือ python
สำหรับ Windows) ที่สามารถเรียกใช้งานได้ในเส้นทางของคุณพร้อมการเข้าถึงแพ็คเกจ venv
หากการสร้าง virtualenv อัตโนมัติล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม คุณสามารถสร้าง virtualenv ด้วยตนเองได้
หากต้องการสร้าง virtualenv บน MacOS และ Linux ด้วยตนเอง:
$ python3 -m venv .venv
หลังจากกระบวนการเริ่มต้นเสร็จสิ้นและสร้าง virtualenv แล้ว คุณสามารถใช้ขั้นตอนต่อไปนี้เพื่อเปิดใช้งาน virtualenv ของคุณ
$ แหล่งที่มา .venv/bin/activate
หากคุณเป็นแพลตฟอร์ม Windows คุณจะเปิดใช้งาน virtualenv ดังนี้:
% .venvScriptsactivate.bat
เมื่อเปิดใช้งาน virtualenv แล้ว คุณจะสามารถติดตั้งการขึ้นต่อกันที่จำเป็นได้
$ pip ติดตั้ง -r ข้อกำหนด txt
หากต้องการเพิ่มการขึ้นต่อกันเพิ่มเติม เช่น ไลบรารี CDK อื่นๆ เพียงเพิ่มลงในไฟล์ setup.py
ของคุณแล้วรันคำสั่ง pip install -r requirements.txt
อีกครั้ง
ณ จุดนี้ คุณสามารถสังเคราะห์เทมเพลต CloudFormation สำหรับโค้ดนี้ได้
$ cdk สังเคราะห์
หากต้องการเพิ่มการขึ้นต่อกันเพิ่มเติม เช่น ไลบรารี CDK อื่นๆ เพียงเพิ่มลงในไฟล์ setup.py
ของคุณแล้วรันคำสั่ง pip install -r requirements.txt
อีกครั้ง
คุณจะต้องบูตเครื่องหากนี่เป็นครั้งแรกที่คุณใช้งาน cdk ในบัญชีและภูมิภาคใดบัญชีหนึ่ง
$ cdk บูตสแตรป
เมื่อบูตสแตรปแล้ว คุณสามารถดำเนินการปรับใช้ cdk ได้
$ cdk ปรับใช้
หากนี่เป็นครั้งแรกที่คุณปรับใช้ กระบวนการอาจใช้เวลาประมาณ 30-45 นาทีในการสร้างอิมเมจ Docker หลายรายการใน ECS (Amazon Elastic Container Service) โปรดอดใจรอจนกว่าจะเสร็จสมบูรณ์ หลังจากนั้นจะเริ่มปรับใช้ chatbot-stack ซึ่งโดยทั่วไปจะใช้เวลาประมาณ 5-8 นาที
เมื่อกระบวนการปรับใช้เสร็จสมบูรณ์ คุณจะเห็นเอาต์พุตของ cdk ในเทอร์มินัล และคุณยังสามารถตรวจสอบสถานะในคอนโซล CloudFormation ของคุณได้อีกด้วย
คุณสามารถทดสอบเอเจนต์ในคอนโซล AWS หรือผ่าน URL ของแอปสตรีมลิทที่แสดงอยู่ในเอาต์พุตของ chatbot-stack ใน CloudFormation
หากต้องการลบ cdk เมื่อคุณใช้งานเสร็จแล้วเพื่อหลีกเลี่ยงค่าใช้จ่ายในอนาคต คุณสามารถลบผ่านคอนโซลหรือดำเนินการคำสั่งต่อไปนี้ในเทอร์มินัล
$ cdk ทำลาย
คุณอาจต้องลบบัคเก็ต S3 ที่สร้างโดย cdk ด้วยตนเอง โปรดตรวจสอบให้แน่ใจว่าได้ลบทรัพยากรที่สร้างขึ้นทั้งหมดเพื่อหลีกเลี่ยงค่าใช้จ่ายที่เกิดขึ้น
cdk ls
แสดงรายการสแต็กทั้งหมดในแอป
cdk synth
ปล่อยเทมเพลต CloudFormation ที่สังเคราะห์แล้ว
cdk deploy
ปรับใช้สแต็กนี้กับบัญชี/ภูมิภาค AWS เริ่มต้นของคุณ
cdk diff
เปรียบเทียบสแต็กที่ปรับใช้กับสถานะปัจจุบัน
cdk docs
เปิดเอกสาร CDK
cdk destroy
dstroys หนึ่งสแต็กที่ระบุขึ้นไป
code # Root folder for code for this solution ├── lambdas # Root folder for all lambda functions │ ├── action-lambda # Lambda function that acts as an action for the Amazon Bedrock Agent │ ├── create-index-lambda # Lambda function that create Amazon Opensearch serverless index as Amazon Bedrock Knowlege base's vector database │ ├── invoke-lambda # Lambda function that invokes Amazon Bedrock Agent, which is called diretly from the streamlit app │ └── update-lambda # Lambda function that update/delete resources after AWS resources deployed via AWS CDK. ├── layers # Root folder for all lambda layers │ ├── boto3_layer # Boto3 layer that is shared across all lambdas │ └── opensearch_layer # opensearh layer that installs all dependencies for create Amazon Opensearch serverless index. ├── streamlit-app # Steamlit app that interacts with the Amazon Bedrock Agent └── code_stack.py # Amazon CDK stack that deploys all AWS resources
หากต้องการผสานรวมข้อมูลที่กำหนดเองของคุณสำหรับการปรับใช้โซลูชัน โปรดปฏิบัติตามหลักเกณฑ์ที่มีโครงสร้างเหล่านี้ซึ่งปรับให้เหมาะกับความต้องการของคุณ:
ค้นหาไดเร็กทอรี assets/knowledgebase_data_source/
วางชุดข้อมูลของคุณภายในโฟลเดอร์นี้
เข้าถึงไฟล์ cdk.json
นำทางไปยังฟิลด์ context/configure/paths/knowledgebase_file_name
และอัปเดตตามนั้น
นอกจากนี้ ให้แก้ไขช่อง bedrock_instructions/knowledgebase_instruction
ในไฟล์ cdk.json
เพื่อให้สะท้อนถึงความแตกต่างและบริบทของชุดข้อมูลใหม่ของคุณได้อย่างแม่นยำ
ภายในไดเร็กทอรี assets/data_query_data_source/
ให้สร้างไดเร็กทอรีย่อย เช่น tabular_data
ฝากชุดข้อมูลที่มีโครงสร้างของคุณ (รูปแบบที่ยอมรับ ได้แก่ CSV , JSON , ORC และ Parquet ) ลงในโฟลเดอร์ย่อยที่สร้างขึ้นใหม่นี้
หากคุณกำลังเชื่อมต่อกับ ฐานข้อมูลที่มีอยู่ ให้อัปเดตฟังก์ชัน create_sql_engine()
ใน code/lambda/action-lambda/build_query_engine.py
เพื่อเชื่อมต่อกับฐานข้อมูลของคุณ
อัปเดตฟิลด์ context/configure/paths/athena_table_data_prefix
ของไฟล์ cdk.json
เพื่อให้สอดคล้องกับเส้นทางข้อมูลใหม่
แก้ไข code/lambda/action-lambda/dynamic_examples.csv
โดยรวมข้อความใหม่เข้ากับตัวอย่าง SQL ที่สอดคล้องกับชุดข้อมูลของคุณ
แก้ไข code/lambda/action-lambda/prompt_templates.py
เพื่อจำลองแอตทริบิวต์ของข้อมูลแบบตารางใหม่ของคุณ
แก้ไข context/configure/bedrock_instructions/action_group_description
ของไฟล์ cdk.json
เพื่ออธิบายวัตถุประสงค์และฟังก์ชันการทำงานของแลมบ์ดาการดำเนินการที่ปรับให้เหมาะกับชุดข้อมูลของคุณ
สะท้อนถึงฟังก์ชันการทำงานใหม่ของ Action lambda ในไฟล์ assets/agent_api_schema/artifacts_schema.json
ในไฟล์ cdk.json
ภายใต้ context/configure/bedrock_instructions/agent_instruction section
ให้ระบุคำอธิบายที่ครอบคลุมเกี่ยวกับฟังก์ชันการทำงานและวัตถุประสงค์การออกแบบของ Amazon Bedrock Agent โดยคำนึงถึงข้อมูลที่ผสานรวมใหม่
ขั้นตอนเหล่านี้ได้รับการออกแบบมาเพื่อให้แน่ใจว่ากระบวนการบูรณาการราบรื่นและมีประสิทธิภาพ ช่วยให้คุณสามารถปรับใช้โซลูชันได้อย่างมีประสิทธิภาพกับข้อมูลที่คุณต้องการ