โมเดล Generative มีประสิทธิภาพในการแก้ปัญหาหลายประเภท แต่ก็จะมีข้อจำกัด เช่น
- ข้อมูลเหล่านี้จะหยุดทำงานหลังจากการฝึก ทำให้ความรู้ล้าสมัย
- แต่จะค้นหาหรือแก้ไขข้อมูลภายนอกไม่ได้
การเรียกใช้ฟังก์ชันสามารถช่วยคุณก้าวข้ามข้อจำกัดเหล่านี้ การเรียกใช้ฟังก์ชันบางครั้งเรียกว่าการใช้เครื่องมือ เนื่องจากช่วยให้โมเดลใช้เครื่องมือภายนอก เช่น API และฟังก์ชันเพื่อสร้างคำตอบสุดท้ายได้
คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้ฟังก์ชันได้ในเอกสารประกอบของ Google Cloud รวมถึงรายการกรณีการใช้งานที่เป็นประโยชน์สำหรับการเรียกใช้ฟังก์ชัน
การเรียกใช้ฟังก์ชันรองรับ Gemini 1.0 Pro, Gemini 1.5 Pro และ Gemini 1.5 Flash
คู่มือนี้จะแสดงวิธีนำการตั้งค่าการเรียกใช้ฟังก์ชันไปใช้ ซึ่งคล้ายกับตัวอย่างที่อธิบายไว้ในส่วนหลักถัดไปของหน้านี้ ขั้นตอนโดยย่อในการตั้งค่าการเรียกฟังก์ชันในแอปมีดังนี้
เขียนฟังก์ชันที่สามารถให้ข้อมูลที่จำเป็นแก่โมเดลเพื่อสร้างคำตอบสุดท้าย (เช่น ฟังก์ชันสามารถเรียกใช้ API ภายนอก)
สร้างประกาศฟังก์ชันที่อธิบายฟังก์ชันและพารามิเตอร์ของฟังก์ชัน
ระบุการประกาศฟังก์ชันระหว่างการเริ่มต้นโมเดลเพื่อให้โมเดลรู้ว่าจะใช้ฟังก์ชันได้อย่างไร หากจำเป็น
ตั้งค่าแอปเพื่อให้โมเดลส่งข้อมูลที่จำเป็นให้แอปเรียกใช้ฟังก์ชันได้
ส่งการตอบกลับของฟังก์ชันกลับไปยังโมเดลเพื่อให้โมเดลสร้างคำตอบสุดท้ายได้
ภาพรวมของตัวอย่างการเรียกฟังก์ชัน
เมื่อส่งคำขอไปยังโมเดล คุณอาจให้ชุด "เครื่องมือ" (เช่น ฟังก์ชัน) แก่โมเดลที่ใช้สร้างคำตอบสุดท้ายได้ หากต้องการใช้ฟังก์ชันเหล่านี้และเรียกใช้ ("การเรียกใช้ฟังก์ชัน") โมเดลและแอปของคุณจะต้องส่งข้อมูลไปมาระหว่างกัน ดังนั้นวิธีที่เราแนะนำในการใช้การเรียกใช้ฟังก์ชันคือผ่านอินเทอร์เฟซแชทแบบหลายรอบ
ลองจินตนาการว่าคุณมีแอปที่ผู้ใช้ป้อนพรอมต์ได้ เช่น
What was the weather in Boston on October 17, 2024?
โมเดลของ Gemini อาจไม่ทราบข้อมูลสภาพอากาศนี้ แต่สมมติว่าคุณทราบ API บริการสภาพอากาศภายนอกที่ระบุข้อมูลนี้ได้ คุณสามารถใช้การเรียกฟังก์ชันเพื่อให้โมเดล Gemini มีเส้นทางไปยัง API นั้นและข้อมูลสภาพอากาศ
ก่อนอื่น คุณต้องเขียนฟังก์ชัน fetchWeather
ในแอปที่โต้ตอบกับ API ภายนอกสมมตินี้ ซึ่งมีอินพุตและเอาต์พุตดังนี้
พารามิเตอร์ | ประเภท | ต้องระบุ | คำอธิบาย |
---|---|---|---|
อินพุต | |||
location |
ออบเจ็กต์ | ใช่ | ชื่อเมืองและรัฐที่จะดูสภาพอากาศ รองรับเฉพาะเมืองในสหรัฐอเมริกาเท่านั้น ต้องเป็นออบเจ็กต์ที่ฝังอยู่ของ city และ state เสมอ
|
date |
สตริง | ใช่ | วันที่ที่จะดึงข้อมูลสภาพอากาศ (ต้องอยู่ในรูปแบบ YYYY-MM-DD เสมอ)
|
เอาต์พุต | |||
temperature |
จำนวนเต็ม | ใช่ | อุณหภูมิ (ฟาเรนไฮต์) |
chancePrecipitation |
สตริง | ใช่ | โอกาสเกิดฝน (แสดงเป็นเปอร์เซ็นต์) |
cloudConditions |
สตริง | ใช่ | เงื่อนไขเมฆ (หนึ่งใน clear , partlyCloudy , mostlyCloudy , cloudy )
|
เมื่อเริ่มต้นโมเดล คุณต้องบอกโมเดลว่ามีfetchWeather
ฟังก์ชันนี้อยู่และวิธีใช้ฟังก์ชันดังกล่าวเพื่อประมวลผลคําขอขาเข้า หากจําเป็น
ซึ่งเรียกว่า "การประกาศฟังก์ชัน" โมเดลไม่ได้เรียกใช้ฟังก์ชันโดยตรง แต่ในขณะที่โมเดลประมวลผลคําขอขาเข้า โมเดลจะตัดสินใจว่าฟังก์ชัน fetchWeather
จะช่วยตอบกลับคําขอได้หรือไม่ หากรูปแบบตัดสินใจว่าฟังก์ชันนั้นมีประโยชน์จริง รูปแบบจะสร้าง Structured Data ที่จะทําให้แอปเรียกใช้ฟังก์ชันได้
ดูคำขอขาเข้าอีกครั้ง
What was the weather in Boston on October 17, 2024?
โมเดลมีแนวโน้มที่จะตัดสินว่าฟังก์ชัน fetchWeather
จะช่วยสร้างคำตอบได้ โมเดลจะดูว่าต้องใช้พารามิเตอร์อินพุตใดบ้างสําหรับ fetchWeather
จากนั้นจะสร้าง Structured Data ของอินพุตสําหรับฟังก์ชันซึ่งมีลักษณะคร่าวๆ ดังนี้
{
functionName: fetchWeather,
location: {
city: Boston,
state: Massachusetts // the model can infer the state from the prompt
},
date: 2024-10-17
}
โมเดลจะส่งข้อมูลอินพุตที่มีโครงสร้างนี้ไปยังแอปเพื่อให้แอปเรียกใช้ฟังก์ชัน fetchWeather
ได้ เมื่อแอปได้รับสภาพอากาศจาก API กลับมา แอปจะส่งข้อมูลไปยังโมเดล ข้อมูลสภาพอากาศนี้ช่วยให้โมเดลประมวลผลขั้นสุดท้ายให้เสร็จสมบูรณ์และสร้างการตอบกลับคำขอเริ่มต้นของ What was the weather in Boston on October 17, 2024?
โมเดลอาจให้คำตอบสุดท้ายเป็นภาษาธรรมชาติ เช่น
On October 17, 2024, in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.
ใช้การเรียกใช้ฟังก์ชัน
ก่อนเริ่มต้น
ทําตามคู่มือการเริ่มต้นใช้งาน Vertex AI in FirebaseSDK ให้เสร็จสมบูรณ์ หากยังไม่ได้ดำเนินการ ตรวจสอบว่าคุณได้ทำสิ่งต่อไปนี้ทั้งหมดแล้ว
ตั้งค่าโปรเจ็กต์ Firebase ใหม่หรือที่มีอยู่ รวมถึงใช้แพ็กเกจราคา Blaze และเปิดใช้ API ที่จําเป็น
เชื่อมต่อแอปกับ Firebase รวมถึงลงทะเบียนแอปและเพิ่มการกำหนดค่า Firebase ลงในแอป
เพิ่ม SDK และเริ่มต้นVertex AIบริการและโมเดล Generative ในแอป
หลังจากเชื่อมต่อแอปกับ Firebase, เพิ่ม SDK และเริ่มต้นบริการ Vertex AI และ Generative Model แล้ว คุณก็พร้อมเรียกใช้ Gemini API
ขั้นตอนที่เหลือในคู่มือนี้จะแสดงวิธีติดตั้งใช้งานการตั้งค่าการเรียกใช้ฟังก์ชันที่คล้ายกับเวิร์กโฟลว์ที่อธิบายไว้ในภาพรวมของตัวอย่างการเรียกใช้ฟังก์ชัน (ดูส่วนบนของหน้านี้)
คุณดูตัวอย่างโค้ดที่สมบูรณ์สําหรับตัวอย่างการเรียกฟังก์ชันนี้ได้ในส่วนต่อไปของหน้านี้
ขั้นตอนที่ 1: เขียนฟังก์ชัน
ลองจินตนาการว่าคุณมีแอปที่ผู้ใช้ป้อนพรอมต์ได้ เช่น
What was the weather in Boston on October 17, 2024?
โมเดลของ Gemini อาจไม่ทราบข้อมูลสภาพอากาศนี้ แต่สมมติว่าคุณทราบ API บริการสภาพอากาศภายนอกที่ระบุข้อมูลนี้ได้ ตัวอย่างในคู่มือนี้ใช้ API ภายนอกสมมตินี้
เขียนฟังก์ชันในแอปที่จะโต้ตอบกับ API ภายนอกสมมติและให้ข้อมูลที่จำเป็นในการสร้างคำขอสุดท้ายกับโมเดล ในตัวอย่างนี้เกี่ยวกับสภาพอากาศ จะเป็นฟังก์ชัน fetchWeather
ที่เรียกใช้ API ภายนอกสมมตินี้
ขั้นตอนที่ 2: สร้างประกาศฟังก์ชัน
สร้างประกาศฟังก์ชันที่จะส่งไปยังโมเดลในภายหลัง (ขั้นตอนถัดไปของคู่มือนี้)
ในประกาศ ให้ใส่รายละเอียดให้มากที่สุดในคำอธิบายของฟังก์ชันและพารามิเตอร์ของฟังก์ชัน
โมเดลใช้ข้อมูลในการประกาศฟังก์ชันเพื่อระบุฟังก์ชันที่จะเลือกและวิธีระบุค่าพารามิเตอร์สำหรับการเรียกใช้ฟังก์ชันจริง ดูลักษณะการทำงานและตัวเลือกเพิ่มเติมในหน้านี้เพื่อดูวิธีที่โมเดลอาจเลือกฟังก์ชันต่างๆ รวมถึงวิธีควบคุมการเลือกดังกล่าว
โปรดทราบข้อมูลต่อไปนี้เกี่ยวกับสคีมาที่คุณระบุ
คุณต้องระบุการประกาศฟังก์ชันในรูปแบบสคีมาที่เข้ากันได้กับสคีมา OpenAPI Vertex AI รองรับสคีมา OpenAPI อย่างจำกัด
ระบบรองรับแอตทริบิวต์ต่อไปนี้
type
,nullable
,required
,format
,description
,properties
,items
,enum
ระบบไม่รองรับแอตทริบิวต์ต่อไปนี้
default
,optional
,maximum
,oneOf
โดยค่าเริ่มต้น ช่องทุกช่องสำหรับ SDK Vertex AI in Firebase จะถือว่าต้องระบุเว้นแต่คุณจะระบุเป็นช่องที่ไม่บังคับในอาร์เรย์
optionalProperties
สําหรับช่องที่ไม่บังคับเหล่านี้ โมเดลจะป้อนข้อมูลในช่องหรือข้ามช่องก็ได้ โปรดทราบว่าการดำเนินการนี้ตรงข้ามกับลักษณะการทำงานเริ่มต้นของ Vertex AI Gemini API
ดูแนวทางปฏิบัติแนะนำที่เกี่ยวข้องกับการประกาศฟังก์ชัน รวมถึงเคล็ดลับเกี่ยวกับชื่อและคําอธิบายได้ที่แนวทางปฏิบัติแนะนำในเอกสารประกอบของ Google Cloud
วิธีเขียนการประกาศฟังก์ชัน
ขั้นตอนที่ 3: ระบุการประกาศฟังก์ชันระหว่างการเริ่มต้นโมเดล
จำนวนประกาศฟังก์ชันสูงสุดที่คุณระบุพร้อมกับคำขอได้คือ 128 รายการ ดูลักษณะการทํางานและตัวเลือกเพิ่มเติมในหน้านี้เพื่อดูวิธีที่โมเดลอาจเลือกฟังก์ชันต่างๆ รวมถึงวิธีควบคุมการเลือกนั้น (โดยใช้ toolConfig
เพื่อตั้งค่าโหมดการเรียกใช้ฟังก์ชัน)
ดูวิธีเลือกโมเดล Gemini และตำแหน่งที่ไม่บังคับสำหรับกรณีการใช้งานและแอปของคุณ
ขั้นตอนที่ 4: เรียกใช้ฟังก์ชันเพื่อเรียก API ภายนอก
หากโมเดลตัดสินใจว่าฟังก์ชัน fetchWeather
จะช่วยสร้างคำตอบสุดท้ายได้จริง แอปของคุณจะต้องเรียกใช้ฟังก์ชันนั้นโดยใช้ Structured Input Data ที่โมเดลให้ไว้
เนื่องจากต้องมีการส่งข้อมูลไปมาระหว่างโมเดลกับแอป วิธีที่เราแนะนําให้ใช้การเรียกฟังก์ชันคือผ่านอินเทอร์เฟซแชทแบบหลายรอบ
ข้อมูลโค้ดต่อไปนี้แสดงวิธีที่แอปทราบว่าโมเดลต้องการใช้ฟังก์ชัน fetchWeather
และยังแสดงให้เห็นว่าโมเดลได้ระบุค่าพารามิเตอร์อินพุตที่จำเป็นสำหรับการเรียกใช้ฟังก์ชัน (และ API ภายนอกที่สำคัญ)
ในตัวอย่างนี้ คําขอขาเข้ามีพรอมต์
What was the weather in Boston on October 17, 2024?
จากพรอมต์นี้ โมเดลจะอนุมานพารามิเตอร์อินพุตที่ฟังก์ชัน fetchWeather
จำเป็นต้องมี (ซึ่งก็คือ city
, state
และ date
)
ขั้นตอนที่ 5: ส่งเอาต์พุตของฟังก์ชันไปยังโมเดลเพื่อสร้างคำตอบสุดท้าย
หลังจากฟังก์ชัน fetchWeather
แสดงข้อมูลสภาพอากาศแล้ว แอปของคุณต้องส่งข้อมูลกลับไปยังโมเดล
จากนั้น โมเดลจะดำเนินการขั้นสุดท้ายและสร้างคำตอบสุดท้ายที่เป็นภาษาธรรมชาติ เช่น
On October 17, 2024 in Boston, it was 38 degrees Fahrenheit with partly cloudy skies.
ลักษณะการทำงานและตัวเลือกเพิ่มเติม
ลักษณะการทํางานเพิ่มเติมสําหรับการเรียกฟังก์ชันที่คุณต้องพิจารณาในโค้ดและตัวเลือกที่คุณควบคุมได้มีดังนี้
โมเดลอาจขอให้เรียกใช้ฟังก์ชันอีกครั้งหรือฟังก์ชันอื่น
หากการตอบสนองจากการเรียกใช้ฟังก์ชันหนึ่งไม่เพียงพอให้โมเดลสร้างคำตอบสุดท้าย โมเดลอาจขอให้เรียกใช้ฟังก์ชันเพิ่มเติม หรือขอให้เรียกใช้ฟังก์ชันที่แตกต่างกันโดยสิ้นเชิง กรณีหลังจะเกิดขึ้นก็ต่อเมื่อคุณระบุฟังก์ชันมากกว่า 1 รายการให้กับโมเดลในรายการประกาศฟังก์ชัน
แอปของคุณต้องรองรับการที่โมเดลอาจเรียกใช้ฟังก์ชันเพิ่มเติม
โมเดลอาจขอเรียกใช้ฟังก์ชันหลายรายการพร้อมกัน
คุณสามารถระบุฟังก์ชันได้สูงสุด 128 รายการในรายการประกาศฟังก์ชันให้กับรูปแบบ ด้วยเหตุนี้ โมเดลจึงอาจตัดสินใจว่าต้องใช้ฟังก์ชันหลายรายการเพื่อช่วยสร้างคำตอบสุดท้าย และอาจเลือกเรียกใช้ฟังก์ชันเหล่านี้พร้อมกัน ซึ่งเรียกว่าการเรียกใช้ฟังก์ชันแบบขนาน
แอปของคุณต้องรองรับการที่โมเดลอาจขอฟังก์ชันหลายรายการให้ทำงานพร้อมกัน และแอปต้องส่งคำตอบทั้งหมดจากฟังก์ชันกลับไปให้โมเดล
Gemini 1.5 Pro และ Gemini 1.5 Flash รองรับการเรียกฟังก์ชันแบบขนาน
คุณควบคุมได้ว่าจะให้โมเดลขอเรียกใช้ฟังก์ชันหรือไม่และอย่างไร
คุณอาจวางข้อจำกัดบางอย่างเกี่ยวกับวิธีและกรณีที่โมเดลควรใช้การประกาศฟังก์ชันที่มีให้ ซึ่งเรียกว่าการตั้งค่าโหมดการเรียกใช้ฟังก์ชัน โดยตัวอย่างมีดังนี้
คุณสามารถบังคับให้โมเดลใช้การเรียกฟังก์ชันเสมอแทนที่จะอนุญาตให้โมเดลเลือกระหว่างคำตอบที่เป็นภาษาธรรมชาติทันทีกับการเรียกฟังก์ชัน ซึ่งเรียกว่าการเรียกใช้ฟังก์ชันแบบบังคับ
หากมีการประกาศฟังก์ชันหลายรายการ คุณสามารถจํากัดให้โมเดลใช้เฉพาะฟังก์ชันย่อยที่ระบุ
คุณใช้ข้อจำกัด (หรือโหมด) เหล่านี้ได้โดยเพิ่มการกำหนดค่าเครื่องมือ (toolConfig
) พร้อมกับพรอมต์และการประกาศฟังก์ชัน ในการกำหนดค่าเครื่องมือ คุณสามารถระบุโหมดอย่างใดอย่างหนึ่งต่อไปนี้ โหมดที่มีประโยชน์ที่สุดคือ ANY
โหมด | คำอธิบาย |
---|---|
AUTO |
ลักษณะการทํางานเริ่มต้นของรูปแบบ โมเดลจะตัดสินใจว่าจะเรียกใช้ฟังก์ชันหรือการตอบกลับด้วยภาษาธรรมชาติ |
ANY |
โมเดลต้องใช้การเรียกใช้ฟังก์ชัน ("การเรียกใช้ฟังก์ชันแบบบังคับ") หากต้องการจำกัดโมเดลให้เป็นชุดย่อยของฟังก์ชัน ให้ระบุชื่อฟังก์ชันที่อนุญาตใน allowedFunctionNames
|
NONE |
โมเดลต้องไม่ใช้การเรียกฟังก์ชัน ลักษณะการทํางานนี้เทียบเท่ากับคําขอโมเดลที่ไม่มีประกาศฟังก์ชันที่เชื่อมโยง |
Gemini 1.5 Pro และ Gemini 1.5 Flash รองรับโหมดการเรียกใช้ฟังก์ชัน
คุณยังทำอะไรได้อีกบ้าง
ลองใช้ความสามารถอื่นๆ ของ Gemini API
- สร้างการสนทนาแบบหลายรอบ (แชท)
- สร้างข้อความจากพรอมต์แบบข้อความเท่านั้น
- สร้างข้อความจากพรอมต์แบบมัลติโมด (รวมถึงข้อความ รูปภาพ PDF วิดีโอ และเสียง)
ดูวิธีควบคุมการสร้างเนื้อหา
- ทำความเข้าใจการออกแบบพรอมต์ ซึ่งรวมถึงแนวทางปฏิบัติแนะนำ กลยุทธ์ และตัวอย่างพรอมต์
- กำหนดค่าพารามิเตอร์โมเดล เช่น โทเค็นอุณหภูมิและเอาต์พุตสูงสุด
- ใช้การตั้งค่าความปลอดภัยเพื่อปรับ โอกาสในการได้รับคำตอบที่อาจถือว่าเป็นอันตราย
ดูข้อมูลเพิ่มเติมเกี่ยวกับรุ่นต่างๆ ของ Gemini
ดูข้อมูลเกี่ยวกับรูปแบบที่ใช้ได้กับกรณีการใช้งานต่างๆ และโควต้าและราคาแสดงความคิดเห็นเกี่ยวกับประสบการณ์การใช้งาน Vertex AI in Firebase