Gemini API สามารถสร้างเอาต์พุตข้อความได้เมื่อมีการป้อนข้อความ รูปภาพ วิดีโอ และเสียงเป็นอินพุต
คู่มือนี้จะแสดงวิธีสร้างข้อความโดยใช้เมธอด generateContent
และ streamGenerateContent
หากต้องการดูข้อมูลเกี่ยวกับความสามารถในการทำงานกับภาพและเสียงของ Gemini ให้ดูคู่มือVisionและเสียง
สร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
วิธีที่ง่ายที่สุดในการสร้างข้อความโดยใช้ Gemini API คือการให้อินพุตแบบข้อความเท่านั้นรายการเดียวแก่โมเดล ดังที่แสดงในตัวอย่างต่อไปนี้
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Write a story about a magic backpack."}]
}]
}' 2> /dev/null
ในกรณีนี้พรอมต์ ("อธิบายวิธีการทำงานของ AI") จะไม่มีตัวอย่างเอาต์พุต วิธีการของระบบ หรือข้อมูลการจัดรูปแบบ การถ่ายภาพแบบไม่ต้องมีตัวอย่าง สําหรับบางกรณีการใช้งาน พรอมต์แบบคำเดียวหรือแบบไม่กี่คำอาจให้ผลลัพธ์ที่สอดคล้องกับความคาดหวังของผู้ใช้มากกว่า ในบางกรณี คุณอาจต้องระบุคำสั่งของระบบเพื่อช่วยให้โมเดลเข้าใจงานหรือทำตามหลักเกณฑ์ที่เฉพาะเจาะจง
สร้างข้อความจากอินพุตข้อความและรูปภาพ
Gemini API รองรับอินพุตแบบหลายรูปแบบที่รวมข้อความเข้ากับไฟล์สื่อ ตัวอย่างต่อไปนี้แสดงวิธีสร้างข้อความจากอินพุตข้อความและรูปภาพ
# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"
# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT
cat > "$TEMP_JSON" << EOF
{
"contents": [{
"parts":[
{"text": "Tell me about this instrument"},
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "$(cat "$TEMP_B64")"
}
}
]
}]
}
EOF
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d "@$TEMP_JSON" 2> /dev/null
เช่นเดียวกับพรอมต์แบบข้อความเท่านั้น พรอมต์แบบหลายสื่ออาจใช้แนวทางและการปรับแต่งที่หลากหลาย คุณอาจต้องเพิ่มขั้นตอนในพรอมต์หรืออธิบายวิธีการให้ชัดเจนยิ่งขึ้น ทั้งนี้ขึ้นอยู่กับผลลัพธ์จากตัวอย่างนี้ ดูข้อมูลเพิ่มเติมได้ที่กลยุทธ์การแจ้งให้ส่งไฟล์
สร้างสตรีมข้อความ
โดยค่าเริ่มต้น โมเดลจะแสดงคำตอบหลังจากดำเนินการสร้างข้อความทั้งหมดเสร็จสมบูรณ์ คุณสามารถโต้ตอบได้เร็วขึ้นโดยไม่ต้องรอผลลัพธ์ทั้งหมด และใช้การสตรีมเพื่อจัดการผลลัพธ์บางส่วนแทน
ตัวอย่างต่อไปนี้แสดงวิธีใช้การสตรีมโดยใช้เมธอด streamGenerateContent
เพื่อสร้างข้อความจากพรอมต์การป้อนข้อความเท่านั้น
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'
สร้างแชทแบบอินเทอร์แอกทีฟ
Gemini SDK ช่วยให้คุณรวบรวมคำถามและคำตอบได้หลายรอบ ซึ่งช่วยให้ผู้ใช้สามารถค้นหาคำตอบหรือรับความช่วยเหลือเกี่ยวกับปัญหาแบบหลายส่วนได้ ฟีเจอร์ SDK นี้มีอินเทอร์เฟซสำหรับติดตามประวัติการสนทนา แต่เบื้องหลังจะใช้generateContent
วิธีเดียวกันในการสร้างคำตอบ
ตัวอย่างโค้ดต่อไปนี้แสดงการใช้งานแชทพื้นฐาน
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
เปิดใช้การสตรีมแชท
นอกจากนี้ คุณยังใช้การสตรีมร่วมกับแชทได้ด้วย ดังที่แสดงในตัวอย่างต่อไปนี้
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
กำหนดค่าการสร้างข้อความ
พรอมต์ทุกรายการที่คุณส่งไปยังโมเดลจะมีพารามิเตอร์ที่ควบคุมวิธีที่โมเดลสร้างคำตอบ คุณใช้ GenerationConfig
เพื่อกําหนดค่าพารามิเตอร์เหล่านี้ได้ หากคุณไม่ได้กําหนดค่าพารามิเตอร์ โมเดลจะใช้ตัวเลือกเริ่มต้น ซึ่งอาจแตกต่างกันไปตามโมเดล
ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าตัวเลือกที่มีหลายรายการ
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Write a story about a magic backpack."}
]
}],
"safetySettings": [
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
}
],
"generationConfig": {
"stopSequences": [
"Title"
],
"temperature": 1.0,
"maxOutputTokens": 800,
"topP": 0.8,
"topK": 10
}
}' 2> /dev/null | grep "text"
stopSequences
ระบุชุดลำดับอักขระ (สูงสุด 5 ชุด) ที่จะหยุดการสร้างเอาต์พุต หากระบุไว้ API จะหยุดเมื่อ stop_sequence
ปรากฏขึ้นครั้งแรก ลำดับการหยุดจะไม่รวมอยู่ในคําตอบ
temperature
ควบคุมความสุ่มของเอาต์พุต ใช้ค่าที่สูงขึ้นเพื่อให้คำตอบมีความสร้างสรรค์มากขึ้น และใช้ค่าที่ต่ำลงเพื่อให้คำตอบมีความแน่นอนมากขึ้น ค่าจะอยู่ในช่วง [0.0, 2.0]
maxOutputTokens
กําหนดจํานวนโทเค็นสูงสุดที่จะรวมไว้ในผู้สมัคร
topP
เปลี่ยนวิธีที่โมเดลเลือกโทเค็นสำหรับเอาต์พุต ระบบจะเลือกโทเค็นจากค่าที่มีความน่าจะเป็นมากที่สุดไปจนถึงน้อยที่สุดจนกว่าผลรวมของความน่าจะเป็นจะเท่ากับค่า topP
ค่าเริ่มต้นของ topP
คือ 0.95
topK
เปลี่ยนวิธีที่โมเดลเลือกโทเค็นสำหรับเอาต์พุต topK
เท่ากับ 1 หมายความว่าโทเค็นที่เลือกมีแนวโน้มมากที่สุดในบรรทัดคำทั้งหมดของโมเดล ส่วน topK
เท่ากับ 3 หมายความว่าระบบจะเลือกโทเค็นถัดไปจาก 3 รายการที่มีแนวโน้มมากที่สุดโดยใช้อุณหภูมิ ระบบจะกรองโทเค็นเพิ่มเติมตาม topP
โดยเลือกโทเค็นสุดท้ายโดยใช้การสุ่มตัวอย่างอุณหภูมิ
เพิ่มวิธีการของระบบ
คำสั่งของระบบช่วยให้คุณควบคุมลักษณะการทํางานของโมเดลตามความต้องการและกรณีการใช้งานที่เฉพาะเจาะจง
การให้คําแนะนําระบบโมเดลเป็นการให้บริบทเพิ่มเติมแก่โมเดลเพื่อให้เข้าใจงาน สร้างคําตอบที่กําหนดเองมากขึ้น และปฏิบัติตามหลักเกณฑ์ที่เฉพาะเจาะจงตลอดการโต้ตอบของผู้ใช้กับโมเดล นอกจากนี้ คุณยังระบุลักษณะการทำงานระดับผลิตภัณฑ์ได้ด้วยการตั้งค่าวิธีการของระบบแยกจากพรอมต์ที่ผู้ใช้ปลายทางระบุ
คุณตั้งค่าคำสั่งของระบบได้เมื่อเริ่มต้นโมเดล ดังนี้
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
"parts":
{ "text": "You are a cat. Your name is Neko."}},
"contents": {
"parts": {
"text": "Hello there"}}}'
ดูตัวอย่างการใช้งานวิธีการของระบบแบบอินเทอร์แอกทีฟจากต้นทางถึงปลายทางได้ที่วิธีการของระบบใน Colab
ขั้นตอนถัดไป
เมื่อได้สำรวจข้อมูลเบื้องต้นเกี่ยวกับ Gemini API แล้ว คุณอาจลองทำสิ่งต่อไปนี้
- การทำความเข้าใจภาพ: ดูวิธีใช้การทำความเข้าใจภาพแบบเนทีฟของ Gemini เพื่อประมวลผลรูปภาพและวิดีโอ
- การทำความเข้าใจเสียง: ดูวิธีใช้การทำความเข้าใจเสียงในตัวของ Gemini เพื่อประมวลผลไฟล์เสียง