curl Gemini Api
參考網址:https://ai.google.dev/api?hl=zh-tw 參考網址:https://ai.google.dev/api/generate-content?hl=zh-tw
curl 語法
curl "網址" \
-H "Header" \
-H 'Content-Type: application/json' \
-X POST \
-d `傳送的Body`
-H為Header請求標頭- Content-Type 為傳送的Body格式,可為text或json
-XHTTP 請求方法,可以為POST或GET-dd為Data(資料)的縮寫,後面單引號 ‘ ‘ 裡面為資料主體(Payload)
以下body為文字對話,contents為對話內容,parts是list,text為文字,內容為提問的問題。
{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a few words"
}
]
}
]
}
curl Gemini Api
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: 你的API KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a few words"
}
]
}
]
}'
回傳內容如下:
- promptTokenCount 詢問消耗的Token數量
- candidatesTokenCount AI回答消耗的Token數量
{ "candidates": [ { "content": { "parts": [ { "text": "AI learns from data to make predictions or decisions." } ], "role": "model" }, "finishReason": "STOP", "index": 0 } ], "usageMetadata": { "promptTokenCount": 8, "candidatesTokenCount": 10, "totalTokenCount": 579, "promptTokensDetails": [ { "modality": "TEXT", "tokenCount": 8 } ], "thoughtsTokenCount": 561, "serviceTier": "standard" }, "modelVersion": "gemini-2.5-flash", "responseId": "xEIzaojQD-Cb1e8P7p-56Qw" }
Postman 測試API
Header:

body:

多次對話:
因為單次對話沒辦法記錄前一個問題,所以需使用多次對話記錄大模型之前的對話,model為記錄大模型之前的對話。
- role為user 使用者提出問題
- role為model 記錄大模型的回答
body的內容如下:
-d '{
"contents": [
{
"role": "user",
"parts": [
// A list of Part objects goes here
]
},
{
"role": "model",
"parts": [
// A list of Part objects goes here
]
}
]
}'
contents 為 對話的內容。
- role 為 user使用者 或 model 大模型。
- parts 為 提問內容 或 大模型回覆內容。
多次對話的順序要為user -> model -> user -> model -> user
最後一次對話一定要為user。
以下範例為:
第一次:
user 問: 我有10個蘋果分給5個人怎麼分?
大模型 回: 每個人2顆蘋果
第二次:
user 問: 那如果分成2個人呢?
大模型就會根據之前的user問、model回,找出原本的問題我有10個蘋果分給5個人怎麼分,產生回答。
大模型 回: 那每個人就是5顆蘋果。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: 你的APIkey" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "我有10個蘋果分給5個人怎麼分?"
}
]
},
{
"role": "model",
"parts": [
{
"text": "每個人2顆蘋果"
}
]
},
{
"role": "user",
"parts": [
{
"text": "那如果分成2個人呢?"
}
]
}
]
}'
大模型回覆內容:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "那每個人就是5顆蘋果。"
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 27,
"candidatesTokenCount": 8,
"totalTokenCount": 273,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 27
}
],
"thoughtsTokenCount": 238,
"serviceTier": "standard"
},
"modelVersion": "gemini-2.5-flash",
"responseId": "bE0zatGsOJXOvr0P84OwqQY"
}
參考資料
systemInstruction 變成了你的「知識庫託管所」 我們把「規則(必須根據參考資料回答)」和「真正的參考資料內容(減肥就是少吃多動…)」通通塞進 systemInstruction 的 text 裡。這等於是在 Gemini 的大腦深處刻下這條家規。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: 你的_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"systemInstruction": {
"parts": [
{
"text": "【重要任務】\n你必須完全根據下方提供的『參考資料』來回答使用者的問題。禁止說你找不到,請直接把參考資料的內容整理出來!\n\n【參考資料】\n1. 減肥就是少吃多動\n2. 跑步是很好的運動\n3. 節制食量,控制飲食\n4. 早睡早起"
}
]
},
"contents": [
{
"role": "user",
"parts": [
{
"text": "如何減肥"
}
]
}
]
}'
回覆內容:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "根據參考資料,減肥的方法如下:\n\n1. **少吃多動**:減肥的核心原則是減少攝取、增加消耗。\n2. **節制食量,控制飲食**:透過管理飲食來減少熱量攝取。\n3. **跑步**:這是一種很好的運動方式,有助於增加活動量。\n4. **早睡早起**:保持良好的作息習慣。"
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 82,
"candidatesTokenCount": 94,
"totalTokenCount": 497,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 82
}
],
"thoughtsTokenCount": 321,
"serviceTier": "standard"
},
"modelVersion": "gemini-2.5-flash",
"responseId": "PFQzapzcDJWcvr0P-ZCP4A0"
}
設定角色身份
systemInstruction 為角色設定。
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: 你的_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{
"systemInstruction": {
"parts": [
{
"text": "你是一個紫微斗數算命師。"
}
]
},
"contents": [
{
"role": "user",
"parts": [
{
"text": "你好,我在台灣出生,性別女,西元2000年6月1日,早上11點出生,我想知道我的命宮有什麼星?"
}
]
},
{
"role": "model",
"parts": [
{
"text": "你的命宮為太陰"
}
]
},
{
"role": "user",
"parts": [
{
"text": "那我的官祿宮呢?"
}
]
}
]
}'