Amazon Bedrock เป็นบริการที่มีการจัดการเต็มรูปแบบซึ่งเสนอตัวเลือกโมเดลพื้นฐานประสิทธิภาพสูงจากบริษัท AI ชั้นนำ และชุดความสามารถในการสร้างแอปพลิเคชัน AI เชิงสร้างสรรค์
ที่เก็บตัวอย่างนี้ให้ตัวอย่างการใช้การเรียกใช้ฟังก์ชันโดยใช้ Converse API กับ Anthropic Claude 3 Sonnet โดยใช้เครื่องมือหลายรายการ Repo นี้เป็นโค้ดตัวอย่างเท่านั้น ซึ่งสาธิตวิธีการใช้การเรียกใช้ฟังก์ชันเป็นเครื่องมือสำหรับโมเดลเพื่อใช้ดึงผลลัพธ์โดยใช้โค้ดฟังก์ชันธรรมดา
Converse
API มีอินเทอร์เฟซที่สอดคล้องกันซึ่งใช้ได้กับทุกรุ่นที่รองรับข้อความ ซึ่งจะทำให้คุณสามารถเขียนโค้ดได้เพียงครั้งเดียวและใช้กับโมเดลต่างๆ ได้ หากโมเดลมีพารามิเตอร์การอนุมานเฉพาะ คุณยังสามารถส่งพารามิเตอร์เฉพาะเหล่านั้นไปยังโมเดลได้
การเรียกใช้ฟังก์ชัน (หรือที่เรียกว่าเครื่องมือ) เป็นวิธีหนึ่งในการจัดทำโมเดล พร้อมด้วยคำแนะนำเชิงอธิบายสำหรับฟังก์ชันที่โมเดลสามารถใช้ได้เพื่อตอบสนองต่ออินพุตของผู้ใช้
ในตัวอย่างนี้ เราจะขอให้ Claude 3 ตอบว่ามูลค่าหุ้นคืออะไร และมีตัวเลือกในการแปลงสกุลเงินเริ่มต้นของหุ้นเป็นสกุลเงินใดๆ ที่ระบุไว้ในการป้อนข้อมูลของผู้ใช้
มีเครื่องมือ 2 แบบให้เลือกใช้:
โมเดลแต่ละเทิร์นจะตรวจสอบพรอมต์ที่ให้ไว้ และตัดสินใจว่าจะสามารถตอบคำถามที่ให้ไว้ในอินพุตของผู้ใช้ได้อย่างถูกต้องหรือไม่ แต่ละเทิร์นตามคำตอบจาก Bedrock end_turn
หรือ tool_use
end_turn
หมายความว่ามีการให้คำตอบสุดท้ายแล้ว และ tool_use
จะแยกวิเคราะห์ข้อมูลที่เหมาะสมตามคำอธิบายเครื่องมือที่จะใช้เพื่อดำเนินการฟังก์ชันเครื่องมือ และสร้างผลลัพธ์ที่เหมาะสมกลับไปยังโมเดล
โค้ดตัวอย่างนี้ได้รับการทดสอบโดยใช้ pyenv กับ python 3.12 และตั้งค่าเป็น .python-version
การกำหนดค่า AWS :
us-west-2
และได้รับการกำหนดค่าใน Ask.pyการเข้าถึงพื้นหิน :
anthropic.claude-3-sonnet-20240229-v1:0
สิทธิ์ IAM :
ตรวจสอบให้แน่ใจว่าผู้ใช้ IAM ที่รันโปรเจ็กต์นี้ ตรวจสอบให้แน่ใจว่าเขามีสิทธิ์ในการเรียกใช้โมเดล Claude 3 สำหรับตัวอย่างนี้ คุณสามารถใช้:
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " LeastPrivilege4BRClient " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel "
],
"Resource" : " arn:aws:bedrock:us-west-2::foundation-model/* "
}]
}
สิ่งนี้สามารถถูกจำกัดได้มากขึ้นโดยใช้สิทธิ์ขั้นต่ำกับรหัสรุ่นเฉพาะ
เมื่อต้องการเรียกใช้โค้ดตัวอย่างนี้ ให้ทำตามขั้นตอนเหล่านี้:
pip install -r requirements.txt
python main.py
--input "new input here"
เพื่อแทนที่ข้อความอินพุตเริ่มต้นของผู้ใช้พรอมต์เริ่มต้น : "ราคาหุ้นปัจจุบันของหุ้น Amazon เป็นปอนด์คือเท่าไร?
ตัวอย่างเช่น Anthropic Claude 3 Sonnet จะรู้ว่า Amazon Ticker คือ AMZN จะใช้เครื่องมือรับค่า Ticker จากนั้นจะแปลงสกุลเงินต้นทางของราคาหุ้นเป็นสกุลเงินปลายทาง
การอนุมานซ้ำแต่ละครั้ง เมื่อส่งคืน tool_use
ข้อความที่ส่งคืนจะถูกต่อท้ายเพื่อสร้างการสนทนาเหมือนกับโมเดล เนื่องจากธรรมชาติของ LLM เป็นแบบไร้สัญชาติ
ข้อความสุดท้ายก่อนคำตอบสุดท้ายจาก Claude 3 จะมีลักษณะดังนี้:
[
{
"role" : " user " ,
"content" : [
{
"text" : " What is the current stock price of amazon stock in pounds? "
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " Okay, let me get the current Amazon (AMZN) stock price and convert it to British pounds for you: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"name" : " get_stock_price " ,
"input" : {
"ticker" : " AMZN "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"content" : [
{
"json" : {
"ticker" : " AMZN " ,
"price" : 200 ,
"currency" : " USD "
}
}
]
}
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " The current Amazon stock price is $200.00 USD. To convert that to British pounds: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"name" : " convert_currency " ,
"input" : {
"amount" : 200 ,
"source_currency" : " USD " ,
"target_currency" : " GBP "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"content" : [
{
"json" : {
"converted_currency" : 158.0185237159697
}
}
]
}
}
]
}
]
และคำตอบสุดท้ายควรคล้ายกับสิ่งนี้: So the current Amazon (AMZN) stock price of $200.00 USD converts to £158.02 GBP.
หมายเหตุ: ราคาหุ้นและอัตราแลกเปลี่ยนเงินตราต่างประเทศมีความผันผวนสูงและสามารถเปลี่ยนแปลงได้อย่างรวดเร็ว ผลลัพธ์ตัวอย่างที่แสดงใน README นี้อาจไม่สะท้อนถึงมูลค่าตลาดในปัจจุบัน เมื่อรันโค้ด คุณจะได้รับข้อมูลแบบเรียลไทม์ซึ่งอาจแตกต่างจากตัวอย่างที่ให้ไว้
ดูการมีส่วนร่วมสำหรับข้อมูลเพิ่มเติม
ดูการมีส่วนร่วมสำหรับข้อมูลเพิ่มเติม
โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต Apache-2.0