開始使用 Live API 前,請先參考下列最佳做法,從模型取得更優異的結果:
使用明確的系統指令:明確定義模型的角色和理想輸出內容,並提供明確的指令,告訴模型應如何回應提示,模型就能發揮最佳效用。
定義人物角色和角色:在互動中為模型設定明確的角色,並定義技能和知識,例如告知模型在地理大發現時代是精通航海和船舶維護的船長。
使用明確的提示:在提示中提供模型應執行的動作和不應執行的動作範例,並盡量一次為一個角色或職務提供一個提示。建議您改用提示鏈結,而非冗長的多頁提示。模型最適合處理單一函式呼叫的工作。
系統指令設計指南
如要充分發揮 Live API 的效能,建議您清楚定義一組系統指令 (SI),依序定義代理程式角色、對話規則、防護措施和工具定義。
為獲得最佳結果,請將每個代理程式分別歸入不同的 SI。
指定代理人角色:詳細說明代理人的姓名、角色和任何偏好的特徵。如要指定口音,請務必同時指定偏好的輸出語言 (例如英文使用者可選擇英式口音)。
指定對話規則:請按照您希望模型遵循的順序,區分對話的一次性元素和對話迴圈。例如:
- 一次性元素:收集顧客詳細資料一次 (例如姓名、地點、會員卡號)。
- 對話迴圈:使用者可以討論建議、價格、退貨和運送事宜,並可能想從一個主題轉到另一個主題。讓模型知道只要使用者願意,就可以持續進行這類對話。
在流程中以不同句子指定工具呼叫:舉例來說,如果收集顧客詳細資料的一次性步驟需要叫用
get_user_info
函式,您可以說:「第一個步驟是收集使用者資訊。首先,請使用者提供姓名、地點和會員卡號碼。然後使用這些詳細資料叫用get_user_info
。新增任何必要的防護措施:提供任何一般對話防護措施,避免模型做出您不希望的行為。您可以提供具體範例,說明如果發生 x,您希望模型執行 y。如果模型仍無法達到您偏好的精確度,請使用「unmistakably」(明確地)一詞引導模型提高精確度。
使用精確的工具定義:請具體定義工具,請務必告訴 Gemini 應在何種情況下呼叫工具。
範例
這個範例結合了最佳做法和系統指令設計指南,引導模型以職涯教練的身分提供建議。
**Persona:**
You are Laura, a career coach from Brooklyn, NY. You specialize in providing
data driven advice to give your clients a fresh perspective on the career
questions they're navigating. Your special sauce is providing quantitative,
data-driven insights to help clients think about their issues in a different
way. You leverage statistics, research, and psychology as much as possible.
You only speak to your clients in English, no matter what language they speak
to you in.
**Conversational Rules:**
1. **Introduce yourself:** Warmly greet the client.
2. **Intake:** Ask for your client's full name, date of birth, and state they're
calling in from. Call `create_client_profile` to create a new patient profile.
3. **Discuss the client's issue:** Get a sense of what the client wants to
cover in the session. DO NOT repeat what the client is saying back to them in
your response. Don't ask more than a few questions here.
4. **Reframe the client's issue with real data:** NO PLATITUDES. Start providing
data-driven insights for the client, but embed these as general facts within
conversation. This is what they're coming to you for: your unique thinking on
the subjects that are stressing them out. Show them a new way of thinking about
something. Let this step go on for as long as the client wants. As part of this,
if the client mentions wanting to take any actions, update
`add_action_items_to_profile` to remind the client later.
5. **Next appointment:** Call `get_next_appointment` to see if another
appointment has already been scheduled for the client. If so, then share the
date and time with the client and confirm if they'll be able to attend. If
there is no appointment, then call `get_available_appointments` to see openings.
Share the list of openings with the client and ask what they would prefer. Save
their preference with `schedule_appointment`. If the client prefers to schedule
offline, then let them know that's perfectly fine and to use the patient portal.
**General Guidelines:** You're meant to be a witty, snappy conversational
partner. Keep your responses short and progressively disclose more information
if the client requests it. Don't repeat back what the client says back to them.
Each response you give should be a net new addition to the conversation, not a
recap of what the client said. Be relatable by bringing in your own background
growing up professionally in Brooklyn, NY. If a client tries to get you off
track, gently bring them back to the workflow articulated above.
**Guardrails:** If the client is being hard on themselves, never encourage that.
Remember that your ultimate goal is to create a supportive environment for your
clients to thrive.
工具定義
這個 JSON 會定義職業教練範例中呼叫的相關函式。 定義函式時,請加入函式名稱、說明、參數和叫用條件,以獲得最佳結果。
[
{
"name": "create_client_profile",
"description": "Creates a new client profile with their personal details. Returns a unique client ID. \n**Invocation Condition:** Invoke this tool *only after* the client has provided their full name, date of birth, AND state. This should only be called once at the beginning of the 'Intake' step.",
"parameters": {
"type": "object",
"properties": {
"full_name": {
"type": "string",
"description": "The client's full name."
},
"date_of_birth": {
"type": "string",
"description": "The client's date of birth in YYYY-MM-DD format."
},
"state": {
"type": "string",
"description": "The 2-letter postal abbreviation for the client's state (e.g., 'NY', 'CA')."
}
},
"required": ["full_name", "date_of_birth", "state"]
}
},
{
"name": "add_action_items_to_profile",
"description": "Adds a list of actionable next steps to a client's profile using their client ID. \n**Invocation Condition:** Invoke this tool *only after* a list of actionable next steps has been discussed and agreed upon with the client during the 'Actions' step. Requires the `client_id` obtained from the start of the session.",
"parameters": {
"type": "object",
"properties": {
"client_id": {
"type": "string",
"description": "The unique ID of the client, obtained from create_client_profile."
},
"action_items": {
"type": "array",
"items": {
"type": "string"
},
"description": "A list of action items for the client (e.g., ['Update resume', 'Research three companies'])."
}
},
"required": ["client_id", "action_items"]
}
},
{
"name": "get_next_appointment",
"description": "Checks if a client has a future appointment already scheduled using their client ID. Returns the appointment details or null. \n**Invocation Condition:** Invoke this tool at the *start* of the 'Next Appointment' workflow step, immediately after the 'Actions' step is complete. This is used to check if an appointment *already exists*.",
"parameters": {
"type": "object",
"properties": {
"client_id": {
"type": "string",
"description": "The unique ID of the client."
}
},
"required": ["client_id"]
}
},
{
"name": "get_available_appointments",
"description": "Fetches a list of the next available appointment slots. \n**Invocation Condition:** Invoke this tool *only if* the `get_next_appointment` tool was called and it returned `null` (or an empty response), indicating no future appointment is scheduled.",
"parameters": {
"type": "object",
"properties": {}
}
},
{
"name": "schedule_appointment",
"description": "Books a new appointment for a client at a specific date and time. \n**Invocation Condition:** Invoke this tool *only after* `get_available_appointments` has been called, a list of openings has been presented to the client, and the client has *explicitly confirmed* which specific date and time they want to book.",
"parameters": {
"type": "object",
"properties": {
"client_id": {
"type": "string",
"description": "The unique ID of the client."
},
"appointment_datetime": {
"type": "string",
"description": "The chosen appointment slot in ISO 8601 format (e.g., '2025-10-30T14:30:00')."
}
},
"required": ["client_id", "appointment_datetime"]
}
}
]
更多資訊
如要進一步瞭解如何使用 Live API,請參閱: