การสร้างข้อความ

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 แล้ว คุณอาจลองทำสิ่งต่อไปนี้