การเรียกใช้ฟังก์ชันโดยใช้ Gemini API


โมเดล Generative มีประสิทธิภาพในการแก้ปัญหาหลายประเภท อย่างไรก็ตาม ฟีเจอร์เหล่านี้มีข้อจำกัด เช่น

  • ข้อมูลเหล่านี้จะหยุดทำงานหลังจากการฝึก ทำให้ความรู้ล้าสมัย
  • แต่จะค้นหาหรือแก้ไขข้อมูลภายนอกไม่ได้

การเรียกใช้ฟังก์ชันจะช่วยคุณเอาชนะข้อจำกัดเหล่านี้ได้ การเรียกใช้ฟังก์ชันบางครั้งเรียกว่าการใช้เครื่องมือ เนื่องจากช่วยให้โมเดลใช้เครื่องมือภายนอก เช่น API และฟังก์ชันเพื่อสร้างคำตอบสุดท้ายได้

คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้ฟังก์ชันได้ในเอกสารประกอบของ Google Cloud รวมถึงรายการกรณีการใช้งานที่เป็นประโยชน์สำหรับการเรียกใช้ฟังก์ชัน

การเรียกใช้ฟังก์ชันรองรับใน Gemini 1.0 Pro, Gemini 1.5 Pro และ Gemini 1.5 Flash

คู่มือนี้จะแสดงวิธีใช้การตั้งค่าการเรียกฟังก์ชันที่คล้ายกับตัวอย่างที่อธิบายไว้ในส่วนหลักถัดไปของหน้านี้ ขั้นตอนโดยย่อในการตั้งค่าการเรียกฟังก์ชันในแอปมีดังนี้

  1. เขียนฟังก์ชันที่สามารถให้ข้อมูลที่จำเป็นแก่โมเดลเพื่อสร้างคำตอบสุดท้าย (เช่น ฟังก์ชันสามารถเรียกใช้ API ภายนอก)

  2. สร้างประกาศฟังก์ชันที่อธิบายฟังก์ชันและพารามิเตอร์ของฟังก์ชัน

  3. ระบุการประกาศฟังก์ชันระหว่างการเริ่มต้นใช้งานโมเดลเพื่อให้โมเดลทราบวิธีใช้ฟังก์ชัน หากจําเป็น

  4. ตั้งค่าแอปเพื่อให้โมเดลส่งข้อมูลที่จําเป็นไปพร้อมกับแอปเพื่อเรียกใช้ฟังก์ชัน

  5. ส่งการตอบกลับของฟังก์ชันกลับไปยังโมเดลเพื่อให้โมเดลสร้างคำตอบสุดท้ายได้

ข้ามไปยังการติดตั้งใช้งานโค้ด

ภาพรวมของตัวอย่างการเรียกฟังก์ชัน

เมื่อส่งคําขอไปยังโมเดล คุณสามารถระบุชุด "เครื่องมือ" (เช่น ฟังก์ชัน) ให้กับโมเดลได้ ซึ่งจะใช้เพื่อสร้างคําตอบสุดท้าย หากต้องการใช้ฟังก์ชันเหล่านี้และเรียกใช้ ("การเรียกใช้ฟังก์ชัน") โมเดลและแอปของคุณจะต้องส่งข้อมูลไปมาระหว่างกัน ดังนั้นวิธีที่เราแนะนำในการใช้การเรียกใช้ฟังก์ชันคือผ่านอินเทอร์เฟซแชทแบบหลายรอบ

ลองจินตนาการว่าคุณมีแอปที่ผู้ใช้ป้อนพรอมต์ได้ เช่น 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 ให้เสร็จสมบูรณ์ หากยังไม่ได้ดำเนินการ ตรวจสอบว่าคุณได้ทำสิ่งต่อไปนี้ทั้งหมดแล้ว

  1. ตั้งค่าโปรเจ็กต์ Firebase ใหม่หรือที่มีอยู่ รวมถึงใช้แพ็กเกจราคา Blaze และเปิดใช้ API ที่จําเป็น

  2. เชื่อมต่อแอปกับ Firebase ซึ่งรวมถึงการลงทะเบียนแอปและเพิ่มการกําหนดค่า Firebase ลงในแอป

  3. เพิ่ม SDK และเริ่มต้นVertex AIบริการและโมเดล Generative ในแอป

หลังจากเชื่อมต่อแอปกับ Firebase, เพิ่ม SDK และเริ่มต้นบริการ Vertex AI และโมเดล Generative แล้ว คุณก็พร้อมเรียกใช้ 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

  • โดยค่าเริ่มต้น ระบบจะถือว่าช่องทั้งหมดใน Vertex AI in Firebase SDK ต้องกรอก เว้นแต่คุณจะระบุว่าเป็นช่องที่ไม่บังคับในอาร์เรย์ optionalProperties สําหรับช่องที่ไม่บังคับเหล่านี้ โมเดลจะป้อนข้อมูลในช่องหรือข้ามช่องก็ได้ โปรดทราบว่าการดำเนินการนี้ตรงข้ามกับลักษณะการทำงานเริ่มต้นของ Vertex AI Gemini API

ดูแนวทางปฏิบัติแนะนำที่เกี่ยวข้องกับการประกาศฟังก์ชัน รวมถึงเคล็ดลับเกี่ยวกับชื่อและคําอธิบายได้ที่แนวทางปฏิบัติแนะนำในเอกสารประกอบของ Google Cloud

วิธีเขียนประกาศฟังก์ชันมีดังนี้

ขั้นตอนที่ 3: ระบุการประกาศฟังก์ชันระหว่างการเริ่มต้นโมเดล

จำนวนประกาศฟังก์ชันสูงสุดที่คุณระบุพร้อมกับคำขอได้คือ 128 รายการ ดูลักษณะการทํางานและตัวเลือกเพิ่มเติมในหน้านี้เพื่อดูวิธีที่โมเดลอาจเลือกฟังก์ชันต่างๆ รวมถึงวิธีควบคุมการเลือกนั้น (โดยใช้ toolConfig เพื่อตั้งค่าโหมดการเรียกใช้ฟังก์ชัน)

ดูวิธีเลือกรูปแบบ Gemini และตำแหน่ง (ไม่บังคับ) ที่เหมาะสมกับ Use Case และแอปของคุณ

ขั้นตอนที่ 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 ครั้งไม่เพียงพอที่โมเดลจะสร้างคำตอบสุดท้ายได้ โมเดลอาจขอให้มีการเรียกฟังก์ชันเพิ่มเติม หรือขอให้เรียกฟังก์ชันอื่นโดยสิ้นเชิง กรณีหลังจะเกิดขึ้นก็ต่อเมื่อคุณระบุฟังก์ชันมากกว่า 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

ดูวิธีควบคุมการสร้างเนื้อหา

คุณยังทดสอบพรอมต์และการกําหนดค่ารูปแบบได้โดยใช้ Vertex AI Studio

ดูข้อมูลเพิ่มเติมเกี่ยวกับรุ่นต่างๆ ของ Gemini

ดูข้อมูลเกี่ยวกับรูปแบบที่ใช้ได้กับกรณีการใช้งานต่างๆ และโควต้าและราคา


แสดงความคิดเห็นเกี่ยวกับประสบการณ์ของคุณในการใช้ Vertex AI in Firebase