การเรียกฟังก์ชันช่วยให้คุณได้รับเอาต์พุตข้อมูลที่มีโครงสร้างจากโมเดล Generative ได้ง่ายขึ้น จากนั้นคุณสามารถใช้เอาต์พุตเหล่านี้เพื่อเรียกใช้ API อื่นๆ และส่งคืนข้อมูลการตอบกลับที่เกี่ยวข้องไปยังโมเดลได้ กล่าวคือ การเรียกใช้ฟังก์ชันช่วยให้คุณเชื่อมต่อโมเดล Generative กับระบบภายนอกได้ เพื่อให้เนื้อหาที่สร้างขึ้นมีข้อมูลที่ถูกต้องและเป็นปัจจุบันที่สุด
คุณระบุโมเดล Gemini พร้อมคำอธิบายฟังก์ชันได้ ฟังก์ชันเหล่านี้เป็นฟังก์ชันที่คุณเขียนในภาษาของแอป (ซึ่งไม่ใช่ Google Cloud Functions) โมเดลอาจขอให้คุณเรียกฟังก์ชันและส่งผลลัพธ์กลับมาเพื่อช่วยให้โมเดลจัดการกับคำค้นหาของคุณ
ดูข้อมูลเพิ่มเติมได้ในข้อมูลเบื้องต้นเกี่ยวกับการเรียกใช้ฟังก์ชัน หากยังไม่ได้อ่าน
ตั้งค่าโปรเจ็กต์
ก่อนที่จะเรียกใช้ Gemini API คุณต้องตั้งค่าโปรเจ็กต์ ซึ่งรวมถึงการตั้งค่าคีย์ API การติดตั้งแพ็กเกจ SDK และการเริ่มต้นใช้งานโมเดล
ตั้งค่าการเรียกใช้ฟังก์ชัน
สำหรับบทแนะนำนี้ คุณจะให้โมเดลโต้ตอบกับ API การแลกเปลี่ยนสกุลเงินสมมติที่รองรับพารามิเตอร์ต่อไปนี้
พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
currencyFrom |
string | ใช่ | สกุลเงินที่จะแปลง |
currencyTo |
string | ใช่ | สกุลเงินที่จะแปลง |
ตัวอย่างคำขอ API
{
"currencyFrom": "USD",
"currencyTo": "SEK"
}
ตัวอย่างการตอบกลับจาก API
{
"base": "USD",
"rates": {"SEK": 0.091}
}
ขั้นตอนที่ 1: สร้างฟังก์ชันที่ส่งคำขอ API
หากยังไม่ได้สร้าง ให้เริ่มด้วยการสร้างฟังก์ชันที่ส่งคำขอ API
เพื่อจุดประสงค์ในการสาธิตในบทแนะนำนี้ คุณจะส่งคืนค่าแบบฮาร์ดโค้ดในรูปแบบเดียวกับที่ API จริงจะแสดง แทนการส่งคำขอ API จริง
async function makeApiRequest(currencyFrom, currencyTo) {
// This hypothetical API returns a JSON such as:
// {"base":"USD","rates":{"SEK": 0.091}}
return {
base: currencyFrom,
rates: { [currencyTo]: 0.091 },
};
}
ขั้นตอนที่ 2: สร้างการประกาศฟังก์ชัน
สร้างการประกาศฟังก์ชันที่คุณจะส่งไปยังโมเดล Generative (ขั้นตอนถัดไปของบทแนะนำนี้)
ใส่รายละเอียดให้มากที่สุดเท่าที่จะทำได้ในฟังก์ชันและคำอธิบายพารามิเตอร์ โมเดล Generative ใช้ข้อมูลนี้เพื่อกําหนดฟังก์ชันที่ควรเลือกและวิธีระบุค่าสําหรับพารามิเตอร์ในการเรียกใช้ฟังก์ชัน
// Function declaration, to pass to the model.
const getExchangeRateFunctionDeclaration = {
name: "getExchangeRate",
parameters: {
type: "OBJECT",
description: "Get the exchange rate for currencies between countries",
properties: {
currencyFrom: {
type: "STRING",
description: "The currency to convert from.",
},
currencyTo: {
type: "STRING",
description: "The currency to convert to.",
},
},
required: ["currencyTo", "currencyFrom"],
},
};
// Executable function code. Put it in a map keyed by the function name
// so that you can call it once you get the name string from the model.
const functions = {
getExchangeRate: ({ currencyFrom, currencyTo }) => {
return makeApiRequest( currencyFrom, currencyTo)
}
};
ขั้นตอนที่ 3: ระบุการประกาศฟังก์ชันระหว่างการเริ่มต้นโมเดล
ระบุการประกาศฟังก์ชันเมื่อเริ่มต้นโมเดล Generative โดยการตั้งค่าพารามิเตอร์ tools
ของโมเดล ดังนี้
const { GoogleGenerativeAI } = require("@google/generative-ai");
// Access your API key as an environment variable (see "Set up your API key" above)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
// ...
const generativeModel = genAI.getGenerativeModel({
// Use a model that supports function calling, like a Gemini 1.5 model
model: "gemini-1.5-flash",
// Specify the function declaration.
tools: {
functionDeclarations: [getExchangeRateFunctionDeclaration],
},
});
ขั้นตอนที่ 4: สร้างการเรียกใช้ฟังก์ชัน
จากนั้นคุณสามารถเรียกพรอมต์โมเดลด้วยฟังก์ชันที่กำหนดไว้ได้
วิธีที่แนะนำสำหรับการเรียกใช้ฟังก์ชันคือดำเนินการผ่านอินเทอร์เฟซแชท เนื่องจากการเรียกใช้ฟังก์ชันจะสอดรับกับโครงสร้างแบบหมุนหลายตัวของแชทอย่างลงตัว
const chat = generativeModel.startChat();
const prompt = "How much is 50 US dollars worth in Swedish krona?";
// Send the message to the model.
const result = await chat.sendMessage(prompt);
// For simplicity, this uses the first function call found.
const call = result.response.functionCalls()[0];
if (call) {
// Call the executable function named in the function call
// with the arguments specified in the function call and
// let it call the hypothetical API.
const apiResponse = await functions[call.name](call.args);
// Send the API response back to the model so it can generate
// a text response that can be displayed to the user.
const result2 = await chat.sendMessage([{functionResponse: {
name: 'getExchangeRate',
response: apiResponse
}}]);
// Log the text response.
console.log(result2.response.text());
}