การเรียกใช้ฟังก์ชันโดยใช้ 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 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

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

นอกจากนี้ คุณยังทดสอบข้อความแจ้งและการกำหนดค่าโมเดลได้โดยใช้ Vertex AI Studio

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

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


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