โปรเจ็กต์นี้ทำหน้าที่เป็นพื้นฐานสำหรับนักพัฒนาในการขยายกรณีการใช้งานของตนในโมเดลภาษาขนาดใหญ่ (LLM) ต่างๆ โดยใช้ตัวแทน Amazon Bedrock เป้าหมายคือการแสดงศักยภาพของการใช้ประโยชน์จากโมเดลต่างๆ บน Bedrock เพื่อสร้างการตอบสนองแบบเชื่อมโยงที่ปรับให้เข้ากับสถานการณ์ที่หลากหลาย นอกเหนือจากการสร้างเอาต์พุตแบบข้อความแล้ว แอปนี้ยังรองรับการสร้างและตรวจสอบรูปภาพโดยใช้การสร้างรูปภาพและโมเดลข้อความเป็นรูปภาพ ฟังก์ชันการทำงานที่ขยายเพิ่มนี้ช่วยเพิ่มความคล่องตัวของแอปพลิเคชัน ทำให้เหมาะสำหรับกรณีการใช้งานที่สร้างสรรค์และเห็นภาพมากขึ้น
สำหรับผู้ที่ชื่นชอบแนวทาง Infrastructure-as-Code (IaC) เรายังมีเทมเพลต AWS CloudFormation ที่จะตั้งค่าองค์ประกอบหลัก เช่น เอเจนต์ Amazon Bedrock, บัคเก็ต S3 และฟังก์ชัน Lambda หากคุณต้องการปรับใช้โปรเจ็กต์นี้ผ่าน AWS CloudFormation โปรดดูคู่มือเวิร์กชอปที่นี่
อีกทางหนึ่ง README นี้จะแนะนำคุณตลอดกระบวนการทีละขั้นตอนในการตั้งค่าและกำหนดค่าตัวแทน Amazon Bedrock ด้วยตนเองผ่าน AWS Console ทำให้คุณมีความยืดหยุ่นในการทดลองกับโมเดลล่าสุดและปลดล็อกศักยภาพของตัวแทน Bedrock ได้อย่างเต็มที่
ภาพรวมระดับสูงของโซลูชันมีดังนี้:
การตั้งค่าเอเจนต์และสภาพแวดล้อม: โซลูชันเริ่มต้นด้วยการกำหนดค่าเอเจนต์ Amazon Bedrock, ฟังก์ชัน AWS Lambda และบัคเก็ต Amazon S3 ขั้นตอนนี้จะสร้างรากฐานสำหรับการโต้ตอบกับโมเดลและการจัดการข้อมูล เตรียมระบบเพื่อรับและประมวลผลพร้อมท์จากแอปพลิเคชันส่วนหน้า การประมวลผลพร้อมท์และการอนุมานโมเดล: เมื่อได้รับพร้อมต์จากแอปพลิเคชันส่วนหน้า เอเจนต์ Bedrock จะประเมินและส่งพร้อมต์พร้อมกับรหัสโมเดลที่ระบุ ไปยังฟังก์ชัน Lambda โดยใช้กลไกกลุ่มการดำเนินการ ขั้นตอนนี้ใช้ประโยชน์จากสคีมา API ของกลุ่มการกระทำเพื่อการจัดการพารามิเตอร์ที่แม่นยำ อำนวยความสะดวกในการอนุมานโมเดลที่มีประสิทธิภาพตามพร้อมท์อินพุต การจัดการข้อมูลและการสร้างการตอบสนอง: สำหรับงานที่เกี่ยวข้องกับการแปลงรูปภาพเป็นข้อความหรือการแปลงข้อความเป็นรูปภาพ ฟังก์ชัน Lambda จะโต้ตอบกับบัคเก็ต S3 เพื่อดำเนินการอ่านหรือเขียนที่จำเป็นบนรูปภาพ ขั้นตอนนี้ช่วยให้มั่นใจได้ถึงการจัดการเนื้อหามัลติมีเดียแบบไดนามิก โดยจะสิ้นสุดในการสร้างการตอบสนองหรือการเปลี่ยนแปลงที่กำหนดโดยพร้อมท์เริ่มต้น
ในส่วนต่อไปนี้ เราจะแนะนำคุณตลอด:
AWS SAM (โมเดลแอปพลิเคชันไร้เซิร์ฟเวอร์) เป็นเฟรมเวิร์กโอเพ่นซอร์สที่ช่วยให้คุณสร้างแอปพลิเคชันไร้เซิร์ฟเวอร์บน AWS ช่วยให้การปรับใช้ การจัดการ และการตรวจสอบทรัพยากรแบบไร้เซิร์ฟเวอร์ เช่น AWS Lambda, Amazon API Gateway, Amazon DynamoDB และอื่นๆ ง่ายขึ้น ต่อไปนี้เป็นคำแนะนำที่ครอบคลุมเกี่ยวกับวิธีตั้งค่าและใช้งาน AWS SAM
Framework ช่วยลดความซับซ้อนของกระบวนการสร้าง ปรับใช้ และจัดการแอปพลิเคชันแบบไร้เซิร์ฟเวอร์โดยขจัดความซับซ้อนของโครงสร้างพื้นฐานระบบคลาวด์ โดยให้วิธีการแบบครบวงจรในการกำหนดและจัดการทรัพยากรแบบไร้เซิร์ฟเวอร์ของคุณโดยใช้ไฟล์การกำหนดค่าและชุดคำสั่ง
สร้างโปรเจ็กต์ไร้เซิร์ฟเวอร์ใหม่ด้วยเทมเพลต Python ในเทอร์มินัลของคุณ ให้รัน: cd infer-models จากนั้นรันแบบ ไร้เซิร์ฟเวอร์
นี่จะเป็นการเริ่มกระบวนการสร้างโปรเจ็กต์เชิงโต้ตอบของ Serverless Framework .. คุณจะได้รับแจ้งด้วยหลายตัวเลือก: เลือก "สร้างแอป Serverless ใหม่" เลือกเทมเพลต "aws-python3" และระบุ "infer-models" เป็นชื่อสำหรับโปรเจ็กต์ของคุณ
สิ่งนี้จะสร้างไดเร็กทอรีใหม่ที่เรียกว่า infer-models พร้อมด้วยโครงสร้างโปรเจ็กต์ Serverless พื้นฐานและเทมเพลต Python
คุณอาจได้รับแจ้งให้เข้าสู่ระบบ/ลงทะเบียน เลือกตัวเลือก "เข้าสู่ระบบ/ลงทะเบียน" นี่จะเป็นการเปิดหน้าต่างเบราว์เซอร์ซึ่งคุณสามารถสร้างบัญชีใหม่หรือเข้าสู่ระบบได้หากคุณมีบัญชีอยู่แล้ว หลังจากเข้าสู่ระบบหรือสร้างบัญชีแล้ว ให้เลือกตัวเลือก "Framework Open Source" ซึ่งใช้งานได้ฟรี
หากสแต็กของคุณล้มเหลวในการปรับใช้ โปรดใส่เครื่องหมายความคิดเห็นในบรรทัดที่ 2 ของ ไฟล์ serverless.yml
หลังจากดำเนินการคำสั่งแบบไร้เซิร์ฟเวอร์และปฏิบัติตามคำแนะนำ ไดเร็กทอรีใหม่ที่มีชื่อโปรเจ็กต์ (เช่น โมเดลอนุมาน) จะถูกสร้างขึ้น โดยมีโครงสร้างสำเร็จรูปและไฟล์การกำหนดค่าสำหรับโปรเจ็กต์แบบไร้เซิร์ฟเวอร์
ตอนนี้เราจะติดตั้งปลั๊กอิน serverless-python-requirements: ปลั๊กอิน serverless-python-requirements ช่วยจัดการการพึ่งพา Python สำหรับโปรเจ็กต์ Serverless ของคุณ ติดตั้งโดยการรัน:
npm ติดตั้งข้อกำหนดแบบไม่มีเซิร์ฟเวอร์ Python —save-dev
3.) npx sls deploy
(ก่อนที่จะรันคำสั่งข้างต้น DOCKER ENGINE จะต้องได้รับการติดตั้งและใช้งาน สามารถดูข้อมูลเพิ่มเติมได้ที่นี่ )
(ซึ่งจะจัดแพ็คเกจและปรับใช้ฟังก์ชัน AWS Lambda)
ตรวจสอบการปรับใช้ภายใน CloudFormation ในคอนโซล AWS
เราจำเป็นต้องให้สิทธิ์ตัวแทนข้อเท็จจริงเพื่อเรียกใช้ฟังก์ชันแลมบ์ดา เปิดฟังก์ชันแลมบ์ดาแล้วเลื่อนลงเพื่อเลือกแท็บ การกำหนดค่า ทางด้านซ้าย ให้เลือก สิทธิ์ เลื่อนลงไปที่คำชี้แจงนโยบายตามทรัพยากรและเลือกเพิ่มสิทธิ์
เลือก บริการ AWS ที่อยู่ตรงกลางสำหรับคำชี้แจงนโยบายของคุณ เลือก อื่นๆ สำหรับบริการของคุณ และใส่ Allow Agent สำหรับ StatementID สำหรับอาจารย์ใหญ่ ให้ใส่ bedrock.amazonaws.com
ป้อน arn:aws:bedrock:us-west-2:{aws-account-id}:agent/*
โปรดทราบว่า AWS แนะนำสิทธิ์ขั้นต่ำเพื่อให้เฉพาะตัวแทนที่ได้รับอนุญาตเท่านั้นที่สามารถเรียกใช้ฟังก์ชัน Lambda นี้ เครื่องหมาย * ที่ส่วนท้ายของ ARN ให้สิทธิ์ตัวแทนในการเข้าถึงบัญชีเพื่อเรียกใช้ Lambda นี้ ตามหลักการแล้ว เราจะไม่ใช้สิ่งนี้ในสภาพแวดล้อมการใช้งานจริง สุดท้ายสำหรับการดำเนินการ ให้เลือก lambda:InriggerFunction จากนั้นบันทึก
เพื่อช่วยในการอนุมาน เราจะเพิ่ม CPU/หน่วยความจำในฟังก์ชัน Lambda นอกจากนี้เรายังจะเพิ่มการหมดเวลาเพื่อให้ฟังก์ชันมีเวลาเพียงพอในการเรียกใช้ให้เสร็จสิ้น เลือก การกำหนดค่าทั่วไป ทางด้านซ้าย จากนั้น เลือกแก้ไข ทางด้านขวา
เปลี่ยนหน่วยความจำเป็น 2048 MB และหมดเวลาเป็น 1 นาที เลื่อนลงและเลือกบันทึก
Agents
ระบุชื่อตัวแทน เช่น ตัวแทนหลายรุ่น จากนั้นจึงสร้างตัวแทน You are a research agent that interacts with various large language models. You pass the model ID and prompt from requests to large language models to create and store images. Then, the LLM will return a presigned URL to the image similar to the URL example provided. You also call LLMS for text and code generation, summarization, problem solving, text-to-sql, response comparisons and ratings. Remeber. you use other large language models for inference. Do not decide when to provide your own response, unless asked.
หลังจากนั้นตรวจสอบให้แน่ใจว่าคุณเลื่อนไปด้านบนและเลือกปุ่ม บันทึก ก่อนที่จะไปยังขั้นตอนถัดไป
ต่อไปเราจะเพิ่มกลุ่มปฏิบัติการ เลื่อนลงไปที่ Action groups
จากนั้นเลือก เพิ่ม เรียกกลุ่มการกระทำ call-model
สำหรับประเภทกลุ่มการดำเนินการ ให้เลือก กำหนดด้วยสกีมา API
ในส่วนถัดไป เราจะเลือกฟังก์ชัน Lambda ที่มีอยู่ infer-models-dev-inferModel
สำหรับ API Schema เราจะเลือก Define with in-line OpenAPI schema editor
คัดลอกและวางสคีมาจากด้านล่างลงในตัวแก้ไข สคีมา OpenAPI ในบรรทัด จากนั้นเลือก เพิ่ม : (This API schema is needed so that the bedrock agent knows the format structure and parameters required for the action group to interact with the Lambda function.)
{
"openapi": "3.0.0",
"info": {
"title": "Model Inference API",
"description": "API for inferring a model with a prompt, and model ID.",
"version": "1.0.0"
},
"paths": {
"/callModel": {
"post": {
"description": "Call a model with a prompt, model ID, and an optional image",
"parameters": [
{
"name": "modelId",
"in": "query",
"description": "The ID of the model to call",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "prompt",
"in": "query",
"description": "The prompt to provide to the model",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"modelId": {
"type": "string",
"description": "The ID of the model to call"
},
"prompt": {
"type": "string",
"description": "The prompt to provide to the model"
},
"image": {
"type": "string",
"format": "binary",
"description": "An optional image to provide to the model"
}
},
"required": ["modelId", "prompt"]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "The result of calling the model with the provided prompt and optional image"
}
}
}
}
}
}
}
}
}
}
}
Orchestration
ให้เปิดใช้ Override orchestration template defaults
Here is an example of what a url response to access an image should look like:
URL Generated to access the image:
https://bedrock-agent-images.s3.amazonaws.com/generated_pic.png?AWSAccessKeyId=123xyz&Signature=rlF0gN%2BuaTHzuEDfELz8GOwJacA%3D&x-amz-security-token=IQoJb3JpZ2msqKr6cs7sTNRG145hKcxCUngJtRcQ%2FzsvDvt0QUSyl7xgp8yldZJu5Jg%3D%3D&Expires=1712628409
พรอมต์นี้ช่วยให้ตัวแทนมีตัวอย่างเมื่อจัดรูปแบบการตอบสนองของ URL ที่กำหนดไว้หลังจากสร้างรูปภาพในบัคเก็ต S3 นอกจากนี้ยังมีตัวเลือกในการใช้ฟังก์ชัน Parser Lambda แบบกำหนดเองเพื่อการจัดรูปแบบที่ละเอียดยิ่งขึ้น
เลื่อนไปที่ด้านล่างและเลือกปุ่ม Save and exit
หลังจากนั้น อย่าลืมกดปุ่ม Save and exit
อีกครั้งที่ด้านบน จากนั้นจึงคลิก ปุ่มเตรียมการ ที่ด้านบนของ UI ตัวแทนการทดสอบทางด้านขวา สิ่งนี้จะทำให้เราสามารถทดสอบการเปลี่ยนแปลงล่าสุดได้
(ก่อนดำเนินการต่อ โปรดตรวจสอบให้แน่ใจว่าได้เปิดใช้งานทุกรุ่นผ่านคอนโซล Amazon Bedrock ที่คุณวางแผนจะทดสอบ)
หากต้องการเริ่มการทดสอบ ให้เตรียมเอเจนต์โดยค้นหาปุ่มเตรียมบนหน้าตัวสร้างเอเจนต์
ทางด้านขวา คุณจะเห็นตัวเลือกในการทดสอบเอเจนต์กับช่องป้อนข้อมูลของผู้ใช้ ด้านล่างนี้คือข้อความแจ้งบางส่วนที่คุณสามารถทดสอบได้ อย่างไรก็ตาม เราขอแนะนำให้คุณใช้ความคิดสร้างสรรค์และทดสอบรูปแบบต่างๆ ของข้อความแจ้ง
สิ่งหนึ่งที่ควรทราบก่อนการทดสอบ เมื่อคุณทำการแปลงข้อความเป็นรูปภาพหรือรูปภาพเป็นข้อความ รหัสโปรเจ็กต์จะอ้างอิงไฟล์ .png เดียวกันแบบคงที่ ในสภาพแวดล้อมที่เหมาะสม ขั้นตอนนี้สามารถกำหนดค่าให้มีไดนามิกมากขึ้นได้
Use model amazon.titan-image-generator-v1 and create me an image of a woman in a boat on a river.
Use model anthropic.claude-3-haiku-20240307-v1:0 and describe to me the image that is uploaded. The model function will have the information needed to provide a response. So, dont ask about the image.
Use model stability.stable-diffusion-xl-v1. Create an image of an astronaut riding a horse in the desert.
Use model meta.llama3-70b-instruct-v1:0. You are a gifted copywriter, with special expertise in writing Google ads. You are tasked to write a persuasive and personalized Google ad based on a company name and a short description. You need to write the Headline and the content of the Ad itself. For example: Company: Upwork Description: Freelancer marketplace Headline: Upwork: Hire The Best - Trust Your Job To True Experts Ad: Connect your business to Expert professionals & agencies with specialized talent. Post a job today to access Upwork's talent pool of quality professionals & agencies. Grow your team fast. 90% of customers rehire. Trusted by 5M+ businesses. Secure payments. - Write a persuasive and personalized Google ad for the following company. Company: Click Description: SEO services
(หากคุณต้องการตั้งค่า UI กับโปรเจ็กต์นี้ ให้ดำเนินการต่อไปยังขั้นตอนที่ 6)
คุณจะต้องมี agent alias ID
พร้อมด้วย agent ID
สำหรับขั้นตอนนี้ ไปที่คอนโซลการจัดการ Bedrock จากนั้นเลือกตัวแทนหลายรุ่นของคุณ คัดลอก Agent ID
จากมุมขวาบนของส่วน Agent overview
จากนั้นเลื่อนลงไปที่ นามแฝง และเลือก สร้าง ตั้งชื่อนามแฝง a1
จากนั้นสร้างเอเจนต์ บันทึก รหัสนามแฝง ที่สร้างขึ้น ไม่ใช่ ชื่อนามแฝง
ตอนนี้ให้กลับไปที่ IDE ที่คุณใช้ในการเปิดโครงการ
ไปที่ไดเรกทอรี streamlit_app :
อัปเดตการกำหนดค่า :
เปิดไฟล์ invoid_agent.py
ในบรรทัดที่ 19 และ 20 ให้อัพเดตตัวแปร agentId
และ agentAliasId
ด้วยค่าที่เหมาะสม จากนั้นจึงบันทึก
ติดตั้ง Streamlit (หากยังไม่ได้ติดตั้ง):
รันคำสั่งต่อไปนี้เพื่อติดตั้งการขึ้นต่อกันทั้งหมดที่จำเป็น:
pip install streamlit boto3 pandas
เรียกใช้แอป Streamlit :
streamlit_app
: streamlit run app.py
โปรดจำไว้ ว่าคุณสามารถใช้รุ่นใดก็ได้จาก Amazon Bedrock และไม่จำกัดเฉพาะรายการด้านบน หากไม่มี ID รุ่นอยู่ในรายการ โปรดดูโมเดล (ID) ล่าสุดที่มีอยู่ในหน้าเอกสารประกอบของ Amazon Bedrock ที่นี่
คุณสามารถใช้ประโยชน์จากโปรเจ็กต์ที่ให้มาเพื่อปรับแต่งและเปรียบเทียบโซลูชันนี้กับชุดข้อมูลและกรณีการใช้งานของคุณเองได้ สำรวจการผสมผสานโมเดลต่างๆ ผลักดันขอบเขตของสิ่งที่เป็นไปได้ และขับเคลื่อนนวัตกรรมในภูมิทัศน์ที่พัฒนาตลอดเวลาของ generative AI
ดูการมีส่วนร่วมสำหรับข้อมูลเพิ่มเติม
ห้องสมุดนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT-0 ดูไฟล์ใบอนุญาต