สามารถกำหนดและจัดเตรียมฟังก์ชันที่กำหนดเองให้กับโมเดล Gemini โดยใช้ฟังก์ชัน ฟีเจอร์การโทร โมเดลจะเรียกใช้ฟังก์ชันเหล่านี้โดยตรง แต่จะเรียกใช้ฟังก์ชันอื่นแทน สร้างเอาต์พุต Structured Data ที่ระบุชื่อฟังก์ชันและรายการที่แนะนำ อาร์กิวเมนต์ ผลลัพธ์นี้จะช่วยให้คุณสามารถเขียนแอปพลิเคชันที่ใช้ เอาต์พุตและเรียก API ภายนอก แล้วเอาต์พุต API ที่ได้จะสามารถเป็น รวมอยู่ในพรอมต์โมเดลเพิ่มเติมที่ช่วยให้ได้การค้นหาที่ครอบคลุมยิ่งขึ้น คำตอบ การเรียกใช้ฟังก์ชันช่วยให้ผู้ใช้โต้ตอบกับฟังก์ชันแบบเรียลไทม์ ข้อมูลและบริการต่างๆ เช่น ฐานข้อมูล ความสัมพันธ์กับลูกค้า ระบบการจัดการ และที่เก็บเอกสาร เพื่อช่วยเพิ่มความสามารถในการ ให้คำตอบที่เกี่ยวข้องและตามบริบท
วิธีการทำงานของการเรียกใช้ฟังก์ชัน
คุณใช้ฟีเจอร์การเรียกฟังก์ชันโดยการเพิ่มข้อมูลการค้นหาที่มีโครงสร้างซึ่งอธิบาย การเขียนโปรแกรมอินเทอร์เฟซที่เรียกว่าการประกาศฟังก์ชันไปยังพรอมต์ของโมเดล การประกาศฟังก์ชัน ระบุชื่อฟังก์ชัน API อธิบายวัตถุประสงค์ พารามิเตอร์ที่ระบบรองรับ รวมถึงคำอธิบายพารามิเตอร์เหล่านั้น หลังจากคุณผ่านแล้ว รายการการประกาศฟังก์ชันในการค้นหาไปยังโมเดล โมเดลจะวิเคราะห์ฟังก์ชัน และคำค้นหาส่วนที่เหลือเพื่อกำหนดวิธีใช้ API ตามคำขอ
จากนั้นโมเดลจะแสดงออบเจ็กต์ใน สคีมาที่เข้ากันได้กับ OpenAPI ระบุวิธีเรียกใช้ฟังก์ชันที่ประกาศอย่างน้อย 1 รายการเพื่อตอบกลับ สำหรับคำถามของผู้ใช้ จากนั้นคุณสามารถใช้การเรียกฟังก์ชันที่แนะนำ เรียก API จริง รับการตอบกลับ และแสดงการตอบสนองนั้นให้กับ ผู้ใช้หรือดำเนินการเพิ่มเติม โปรดทราบว่าจริงๆ แล้วโมเดลไม่ได้เรียกเมธอด ที่ประกาศ ให้ใช้พารามิเตอร์ออบเจ็กต์สคีมาที่แสดงผลเพื่อ เรียกใช้ฟังก์ชัน Gemini API ยังรองรับการเรียกใช้ฟังก์ชันพร้อมกันด้วย โดย โมเดลนี้แนะนำให้เรียกใช้ฟังก์ชัน API หลายครั้งโดยอิงตามคำขอเดียว
รุ่นที่รองรับ
รุ่นต่อไปนี้รองรับฟีเจอร์การเรียกใช้ฟังก์ชัน
gemini-1.0-pro
gemini-1.0-pro-001
gemini-1.5-flash-latest
gemini-1.5-pro-latest
การประกาศฟังก์ชัน
การใช้การเรียกฟังก์ชันในพรอมต์จะเป็นการสร้างออบเจ็กต์ tools
ซึ่งมี function declarations
อย่างน้อย 1 รายการ คุณกำหนดฟังก์ชัน
ใช้ JSON โดยเฉพาะที่มี
เลือกชุดย่อย
ของ
สคีมา OpenAPI
การประกาศฟังก์ชันเดียวอาจมีพารามิเตอร์ต่อไปนี้
name
(สตริง): ตัวระบุที่ไม่ซ้ำกันสำหรับฟังก์ชันภายใน API การโทรdescription
(สตริง): คำอธิบายโดยละเอียดเกี่ยวกับฟังก์ชัน และความสามารถparameters
(ออบเจ็กต์): กำหนดข้อมูลอินพุตที่ฟังก์ชันต้องการtype
(สตริง): ระบุประเภทข้อมูลโดยรวม เช่นobject
properties
(ออบเจ็กต์): แสดงรายการพารามิเตอร์แต่ละรายการ โดยแต่ละรายการมีสิ่งต่อไปนี้type
(สตริง): ประเภทข้อมูลของพารามิเตอร์ เช่นstring
,integer
,boolean
description
(สตริง): คำอธิบายที่ชัดเจนเกี่ยวกับพารามิเตอร์ วัตถุประสงค์และรูปแบบที่คาดไว้
required
(อาร์เรย์): อาร์เรย์ของสตริงที่แสดงชื่อพารามิเตอร์ ซึ่งเป็นสิ่งจำเป็นเพื่อให้ฟังก์ชันทำงานได้
ดูตัวอย่างโค้ดของการประกาศฟังก์ชันโดยใช้คำสั่ง cURL ได้ที่ ตัวอย่างการเรียกใช้ฟังก์ชัน ตัวอย่างเช่น และข้อมูลเกี่ยวกับการสร้างการประกาศฟังก์ชันสำหรับแพลตฟอร์มอื่นๆ โปรดดู คำแนะนำเกี่ยวกับแพลตฟอร์มการเรียกใช้ฟังก์ชัน
แนวทางปฏิบัติแนะนำสำหรับการประกาศฟังก์ชัน
การกำหนดฟังก์ชันให้ถูกต้องเป็นสิ่งจำเป็นในการผสานรวมฟังก์ชันเข้ากับ
คำขอ แต่ละฟังก์ชันจะใช้พารามิเตอร์ที่เฉพาะเจาะจงซึ่งเป็นแนวทางในการทำงาน
และการโต้ตอบกับโมเดล รายชื่อต่อไปนี้มีคำแนะนำเกี่ยวกับ
การกำหนดพารามิเตอร์ของแต่ละฟังก์ชันใน functions_declarations
อาร์เรย์
name
: ใช้ชื่อที่สื่อความหมายและชัดเจนโดยไม่ต้องมีช่องว่างและจุด (.
) หรืออักขระขีดกลาง (-
) โปรดใช้อักขระขีดล่าง (_
) แทน หรืออูฐก็ได้description
: ระบุฟังก์ชันอย่างละเอียด ชัดเจน และเฉพาะเจาะจง คำอธิบายโดยยกตัวอย่าง ถ้าจำเป็น ตัวอย่างเช่น แทนที่จะแสดงfind theaters
โปรดใช้find theaters based on location and optionally movie title that is currently playing in theaters.
หลีกเลี่ยงการใช้คำที่กว้างหรือกำกวมเกินไป คำอธิบายproperties
type
: ใช้พารามิเตอร์ที่พิมพ์อย่างเข้มงวดเพื่อลด ความไม่สมเหตุสมผลของโมเดล เช่น หากค่าพารามิเตอร์มาจากขอบเขตจำกัด ให้ใช้ช่องenum
แทนการแสดงค่าไว้ในคำอธิบาย (เช่น"type": "enum", "values": ["now_playing", "upcoming"]
) หาก จะเป็นจำนวนเต็มเสมอ ให้กำหนดประเภทเป็นinteger
แทนที่จะแสดงnumber
properties
description
: แสดงตัวอย่างที่เป็นรูปธรรมและข้อจำกัด เช่น ใช้The city and state, e.g. San Francisco, CA or a zip code e.g. 95616
แทนthe location to search
สำหรับแนวทางปฏิบัติที่ดีที่สุดเพิ่มเติมเมื่อใช้การเรียกใช้ฟังก์ชัน โปรดดู แนวทางปฏิบัติแนะนำ
โหมดการเรียกฟังก์ชัน
คุณสามารถใช้พารามิเตอร์การเรียกฟังก์ชัน mode
เพื่อแก้ไขการดำเนินการ
ลักษณะการทำงานของฟีเจอร์ โดยมี 3 โหมดดังต่อไปนี้
AUTO
: ลักษณะการทำงานของโมเดลเริ่มต้น โมเดลตัดสินใจที่จะคาดการณ์ หรือการตอบสนองด้วยภาษาธรรมชาติANY
: โมเดลถูกจำกัดให้คาดการณ์การเรียกใช้ฟังก์ชันเสมอ ถ้า ไม่ได้ให้allowed_function_names
โดยโมเดลจะเลือกจาก การประกาศฟังก์ชันที่ใช้ได้ หากระบุallowed_function_names
ไว้ โมเดลเลือกจากชุดฟังก์ชันที่อนุญาตNONE
: โมเดลจะไม่คาดการณ์การเรียกใช้ฟังก์ชัน ในกรณีนี้ โมเดล จะเหมือนกับการไม่ผ่านการตรวจสอบฟังก์ชันใดๆ
การใช้งานโหมด ANY
("การเรียกฟังก์ชันแบบบังคับ") คือ
ใช้ได้กับรุ่น Gemini 1.5 Pro
เท่านั้น
คุณยังสามารถส่งผ่านชุด allowed_function_names
ซึ่งขีดจำกัดเมื่อมีให้
ฟังก์ชันที่โมเดลจะเรียกใช้ คุณควรใส่เฉพาะ
allowed_function_names
เมื่อโหมดคือ ANY
ชื่อฟังก์ชันควรตรงกับ
ชื่อการประกาศฟังก์ชัน เมื่อตั้งค่าโหมดเป็น ANY
และ
allowed_function_names
โมเดลจะคาดการณ์การเรียกใช้ฟังก์ชันจาก
ของชื่อฟังก์ชัน
ข้อมูลโค้ดต่อไปนี้จาก
คำขอตัวอย่างแสดงวิธี
ตั้งค่า mode
เป็น ANY
และระบุรายการฟังก์ชันที่อนุญาต ดังนี้
"tool_config": {
"function_calling_config": {
"mode": "ANY",
"allowed_function_names": ["find_theaters", "get_showtimes"]
},
}
ตัวอย่างการเรียกใช้ฟังก์ชัน
ส่วนนี้จะแสดงตัวอย่างพรอมต์สำหรับการเรียกใช้ฟังก์ชันโดยใช้คำสั่ง cURL ตัวอย่างเช่น สถานการณ์จำลองที่เลี้ยวเพียงครั้งเดียวและหลายเลี้ยว โหมดการโทรด้วยฟังก์ชันต่างๆ
เมื่อใช้คำสั่ง cURL กับฟีเจอร์นี้ ฟังก์ชันและพารามิเตอร์
จะรวมอยู่ในองค์ประกอบ tools
การประกาศฟังก์ชันแต่ละรายการใน
เอลิเมนต์ tools
มีชื่อฟังก์ชัน และคุณระบุพารามิเตอร์โดยใช้
สคีมาที่เข้ากันได้กับ OpenAPI
และคำอธิบายฟังก์ชัน
ตัวอย่างแบบเลี้ยวเดียว
จุดเดียวคือเมื่อเรียกใช้โมเดลภาษา 1 ครั้ง ด้วยการเรียกฟังก์ชัน กรณีการใช้งานแบบผลัดเดียวอาจเป็นเมื่อคุณให้ภาษาธรรมชาติกับโมเดล และรายการฟังก์ชัน ในกรณีนี้ โมเดลจะใช้ฟังก์ชัน ซึ่งมีชื่อฟังก์ชัน พารามิเตอร์ และคำอธิบาย คาดการณ์ฟังก์ชันที่จะเรียกใช้และอาร์กิวเมนต์ที่จะใช้
ตัวอย่าง Curl ต่อไปนี้เป็นตัวอย่างของการส่งผ่านในคำอธิบายของ
ที่ส่งคืนข้อมูลเกี่ยวกับตำแหน่งที่ภาพยนตร์กำลังเล่น หลายรายการ
การประกาศฟังก์ชันรวมอยู่ในคำขอ เช่น find_movies
และ
find_theaters
คำขอตัวอย่างการเรียกใช้ฟังก์ชันแบบเลี้ยวเดียว
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -d '{ "contents": { "role": "user", "parts": { "text": "Which theaters in Mountain View show Barbie movie?" } }, "tools": [ { "function_declarations": [ { "name": "find_movies", "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "description": { "type": "string", "description": "Any kind of description including category or genre, title words, attributes, etc." } }, "required": [ "description" ] } }, { "name": "find_theaters", "description": "find theaters based on location and optionally movie title which is currently playing in theaters", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" } }, "required": [ "location" ] } }, { "name": "get_showtimes", "description": "Find the start times for movies playing in a specific theater", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" }, "theater": { "type": "string", "description": "Name of the theater" }, "date": { "type": "string", "description": "Date for requested showtime" } }, "required": [ "location", "movie", "theater", "date" ] } } ] } ] }'
คำตอบสำหรับตัวอย่าง curl นี้อาจคล้ายกับตัวอย่างต่อไปนี้
ตัวอย่างการตอบสนองด้วย Curl สำหรับฟังก์ชันแบบเลี้ยวเดียว
[{ "candidates": [ { "content": { "parts": [ { "functionCall": { "name": "find_theaters", "args": { "movie": "Barbie", "location": "Mountain View, CA" } } } ] }, "finishReason": "STOP", "safetyRatings": [ { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } ], "usageMetadata": { "promptTokenCount": 9, "totalTokenCount": 9 } }]
ตัวอย่างแบบเลี้ยวเดียวโดยใช้โหมดใดก็ได้
ตัวอย่าง curl ต่อไปนี้ดูคล้ายกับ
แบบผลัดเดียว แต่กลับ
โหมดเป็น ANY
:
"tool_config": {
"function_calling_config": {
"mode": "ANY"
},
}
การเรียกฟังก์ชันแบบเลี้ยวเดียวโดยใช้โหมดใดก็ได้ (คำขอ)
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -d '{ "contents": { "role": "user", "parts": { "text": "What movies are showing in North Seattle tonight?" } }, "tools": [ { "function_declarations": [ { "name": "find_movies", "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "description": { "type": "string", "description": "Any kind of description including category or genre, title words, attributes, etc." } }, "required": [ "description" ] } }, { "name": "find_theaters", "description": "find theaters based on location and optionally movie title which is currently playing in theaters", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" } }, "required": [ "location" ] } }, { "name": "get_showtimes", "description": "Find the start times for movies playing in a specific theater", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" }, "theater": { "type": "string", "description": "Name of the theater" }, "date": { "type": "string", "description": "Date for requested showtime" } }, "required": [ "location", "movie", "theater", "date" ] } } ] } ], "tool_config": { "function_calling_config": { "mode": "ANY" }, } }'
คำตอบอาจคล้ายกับข้อความต่อไปนี้
การเรียกฟังก์ชันแบบเลี้ยวเดียวโดยใช้โหมดใดก็ได้ (การตอบกลับ)
{ "candidates": [ { "content": { "parts": [ { "functionCall": { "name": "find_movies", "args": { "description": "", "location": "North Seattle, WA" } } } ], "role": "model" }, "finishReason": "STOP", "index": 0, "safetyRatings": [ { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" } ] } ], "promptFeedback": { "safetyRatings": [ { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } }
ตัวอย่างแบบเลี้ยวเดียวที่ใช้โหมดใดก็ได้และฟังก์ชันที่อนุญาต
ตัวอย่าง curl ต่อไปนี้ดูคล้ายกับ
แบบผลัดเดียว แต่กลับ
โหมดเป็น ANY
และมีรายการที่อนุญาต
ฟังก์ชัน:
"tool_config": {
"function_calling_config": {
"mode": "ANY",
"allowed_function_names": ["find_theaters", "get_showtimes"]
},
}
การเรียกฟังก์ชันแบบเลี้ยวเดียวโดยใช้โหมดใดก็ได้และฟังก์ชันที่อนุญาต (คำขอ)
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -d '{ "contents": { "role": "user", "parts": { "text": "What movies are showing in North Seattle tonight?" } }, "tools": [ { "function_declarations": [ { "name": "find_movies", "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "description": { "type": "string", "description": "Any kind of description including category or genre, title words, attributes, etc." } }, "required": [ "description" ] } }, { "name": "find_theaters", "description": "find theaters based on location and optionally movie title which is currently playing in theaters", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" } }, "required": [ "location" ] } }, { "name": "get_showtimes", "description": "Find the start times for movies playing in a specific theater", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "string", "description": "Any movie title" }, "theater": { "type": "string", "description": "Name of the theater" }, "date": { "type": "string", "description": "Date for requested showtime" } }, "required": [ "location", "movie", "theater", "date" ] } } ] } ], "tool_config": { "function_calling_config": { "mode": "ANY", "allowed_function_names": ["find_theaters", "get_showtimes"] }, } }'
โมเดลนี้คาดการณ์ฟังก์ชัน find_movies
ไม่ได้เนื่องจากไม่ได้อยู่ในรายการ
ของฟังก์ชันที่อนุญาต โมเดลจึงคาดการณ์ฟังก์ชันอื่นแทน คำตอบ
อาจมีลักษณะคล้ายกับข้อความต่อไปนี้
การเรียกฟังก์ชันแบบเลี้ยวเดียวโดยใช้โหมดใดก็ได้และฟังก์ชันที่อนุญาต (การตอบกลับ)
{ "candidates": [ { "content": { "parts": [ { "functionCall": { "name": "find_theaters", "args": { "location": "North Seattle, WA", "movie": null } } } ], "role": "model" }, "finishReason": "STOP", "index": 0, "safetyRatings": [ { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } ], "promptFeedback": { "safetyRatings": [ { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } }
ตัวอย่างหลายเลี้ยว
คุณสามารถใช้สถานการณ์การเรียกใช้ฟังก์ชันแบบหลายเลี้ยวได้โดยดำเนินการดังนี้
- รับการตอบกลับการเรียกใช้ฟังก์ชันโดยการเรียกใช้โมเดลภาษา นี่คือรายการแรก เปิดหรือปิด
- เรียกใช้โมเดลภาษาโดยใช้การตอบกลับการเรียกใช้ฟังก์ชันตั้งแต่เลี้ยวแรก และการตอบสนองของฟังก์ชันที่คุณได้รับจากการเรียกใช้ฟังก์ชันนั้น นี่คือ รอบที่ 2
การตอบสนองจากรอบที่ 2 จะสรุปผลลัพธ์เพื่อตอบ ในจุดแรก หรือมีการเรียกฟังก์ชันที่สองที่คุณสามารถใช้เพื่อดู ข้อมูลเพิ่มเติมสำหรับคำถามของคุณ
หัวข้อนี้มีตัวอย่าง Curl แบบมัลติเทิร์น 2 รายการ:
- ตัวอย่าง Curl ที่ใช้การตอบสนองของฟังก์ชันจากการเลี้ยวก่อนหน้า
- ตัวอย่าง Curl ที่เรียกใช้โมเดลภาษาหลายครั้ง
ใช้คำตอบจากการเลี้ยวก่อนหน้า
ตัวอย่าง curl ต่อไปนี้เรียกใช้ฟังก์ชันและอาร์กิวเมนต์ที่แสดงผลโดย ตัวอย่างการเปลี่ยนครั้งเดียวก่อนหน้านี้ เพื่อรับคำตอบ เมธอดและพารามิเตอร์ ซึ่งแสดงผลโดยตัวอย่างแบบเลี้ยวครั้งเดียวนั้นอยู่ใน JSON นี้
"functionCall": {
"name": "find_theaters",
"args": {
"movie": "Barbie",
"location": "Mountain View, CA"
}
}
ตัวอย่างคำขอ curl สำหรับฟังก์ชันหลายเลี้ยว
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -d '{ "contents": [{ "role": "user", "parts": [{ "text": "Which theaters in Mountain View show Barbie movie?" }] }, { "role": "model", "parts": [{ "functionCall": { "name": "find_theaters", "args": { "location": "Mountain View, CA", "movie": "Barbie" } } }] }, { "role": "function", "parts": [{ "functionResponse": { "name": "find_theaters", "response": { "name": "find_theaters", "content": { "movie": "Barbie", "theaters": [{ "name": "AMC Mountain View 16", "address": "2000 W El Camino Real, Mountain View, CA 94040" }, { "name": "Regal Edwards 14", "address": "245 Castro St, Mountain View, CA 94040" }] } } } }] }], "tools": [{ "functionDeclarations": [{ "name": "find_movies", "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "description": { "type": "STRING", "description": "Any kind of description including category or genre, title words, attributes, etc." } }, "required": ["description"] } }, { "name": "find_theaters", "description": "find theaters based on location and optionally movie title which is currently playing in theaters", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "STRING", "description": "Any movie title" } }, "required": ["location"] } }, { "name": "get_showtimes", "description": "Find the start times for movies playing in a specific theater", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "STRING", "description": "Any movie title" }, "theater": { "type": "STRING", "description": "Name of the theater" }, "date": { "type": "STRING", "description": "Date for requested showtime" } }, "required": ["location", "movie", "theater", "date"] } }] }] }'
การตอบสนองต่อตัวอย่าง curl นี้ประกอบด้วยผลลัพธ์ของการเรียกใช้ฟิลด์
find_theaters
วิธี คำตอบอาจคล้ายกับข้อความต่อไปนี้
ตัวอย่างการตอบสนองด้วย Curl สำหรับฟังก์ชันหลายเลี้ยว
{ "candidates": [ { "content": { "parts": [ { "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14." } ] } } ], "usageMetadata": { "promptTokenCount": 9, "candidatesTokenCount": 27, "totalTokenCount": 36 } }
เรียกใช้โมเดลหลายครั้ง
ตัวอย่าง cURL ต่อไปนี้เรียกใช้โมเดล Generative AI หลายครั้ง ฟังก์ชัน แต่ละครั้งที่โมเดลเรียกใช้ฟังก์ชัน โมเดลจะใช้ฟังก์ชัน เพื่อตอบคำถามของผู้ใช้รายอื่นๆ ในคำขอ
ตัวอย่างคำขอ curl สำหรับฟังก์ชันหลายเลี้ยว
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -d '{ "contents": [{ "role": "user", "parts": [{ "text": "Which theaters in Mountain View show Barbie movie?" }] }, { "role": "model", "parts": [{ "functionCall": { "name": "find_theaters", "args": { "location": "Mountain View, CA", "movie": "Barbie" } } }] }, { "role": "function", "parts": [{ "functionResponse": { "name": "find_theaters", "response": { "name": "find_theaters", "content": { "movie": "Barbie", "theaters": [{ "name": "AMC Mountain View 16", "address": "2000 W El Camino Real, Mountain View, CA 94040" }, { "name": "Regal Edwards 14", "address": "245 Castro St, Mountain View, CA 94040" }] } } } }] }, { "role": "model", "parts": [{ "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14." }] },{ "role": "user", "parts": [{ "text": "Can we recommend some comedy movies on show in Mountain View?" }] }], "tools": [{ "functionDeclarations": [{ "name": "find_movies", "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "description": { "type": "STRING", "description": "Any kind of description including category or genre, title words, attributes, etc." } }, "required": ["description"] } }, { "name": "find_theaters", "description": "find theaters based on location and optionally movie title which is currently playing in theaters", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "STRING", "description": "Any movie title" } }, "required": ["location"] } }, { "name": "get_showtimes", "description": "Find the start times for movies playing in a specific theater", "parameters": { "type": "OBJECT", "properties": { "location": { "type": "STRING", "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616" }, "movie": { "type": "STRING", "description": "Any movie title" }, "theater": { "type": "STRING", "description": "Name of the theater" }, "date": { "type": "STRING", "description": "Date for requested showtime" } }, "required": ["location", "movie", "theater", "date"] } }] }] }'
ตัวอย่างการตอบสนองด้วย Curl สำหรับฟังก์ชันหลายเลี้ยว
[{ "candidates": [ { "content": { "parts": [ { "functionCall": { "name": "find_movies", "args": { "description": "comedy", "location": "Mountain View, CA" } } } ] }, "finishReason": "STOP", "safetyRatings": [ { "category": "HARM_CATEGORY_HARASSMENT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_HATE_SPEECH", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "probability": "NEGLIGIBLE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "probability": "NEGLIGIBLE" } ] } ], "usageMetadata": { "promptTokenCount": 48, "totalTokenCount": 48 } } ]
แนวทางปฏิบัติแนะนำ
ทำตามแนวทางปฏิบัติแนะนำเหล่านี้เพื่อปรับปรุงความแม่นยำและ ความเสถียรของการเรียกฟังก์ชัน
ข้อความแจ้งผู้ใช้
เพื่อผลลัพธ์ที่ดีที่สุด ให้เพิ่มรายละเอียดต่อไปนี้ไว้หน้าคำค้นหาของผู้ใช้
- บริบทเพิ่มเติมสำหรับโมเดล ตัวอย่างเช่น
You are a movie API assistant to help users find movies and showtimes based on their preferences.
- รายละเอียดหรือวิธีการและเวลาในการใช้ฟังก์ชัน ตัวอย่างเช่น
Don't make assumptions on showtimes. Always use a future date for showtimes.
- วิธีการถามคำถามเพื่อความชัดเจนหากคำถามของผู้ใช้ไม่ชัดเจน สำหรับ
ตัวอย่างเช่น
Ask clarifying questions if not enough information is available to complete the request.
พารามิเตอร์การสุ่มตัวอย่าง
สำหรับพารามิเตอร์อุณหภูมิ ให้ใช้ 0
หรือค่าอื่นระดับต่ำ วิธีนี้จะส่งผล
โมเดลเพื่อสร้างผลลัพธ์ที่มั่นใจมากขึ้นและลดความไม่สมเหตุสมผล
การเรียกใช้ API
หากโมเดลเสนอการเรียกใช้ฟังก์ชันที่จะส่งคำสั่งซื้อ อัปเดตฐานข้อมูล หรือมีผลที่ตามมาที่สำคัญ ให้ตรวจสอบ กับผู้ใช้ก่อนที่จะเรียกใช้