Gemini API สามารถสร้างเอาต์พุตข้อความได้เมื่อมีการป้อนข้อความ รูปภาพ วิดีโอ และเสียงเป็นอินพุต
คู่มือนี้จะแสดงวิธีสร้างข้อความโดยใช้เมธอด generateContent
และ streamGenerateContent
หากต้องการดูข้อมูลเกี่ยวกับความสามารถในการทำงานกับภาพและเสียงของ Gemini ให้ดูคู่มือภาพและเสียง
ก่อนเริ่มต้น: ตั้งค่าโปรเจ็กต์และคีย์ API
คุณต้องตั้งค่าโปรเจ็กต์และกำหนดค่าคีย์ API ก่อนเรียกใช้ Gemini API
สร้างข้อความจากอินพุตที่เป็นข้อความเท่านั้น
วิธีที่ง่ายที่สุดในการสร้างข้อความโดยใช้ Gemini API คือการให้อินพุตแบบข้อความเท่านั้นรายการเดียวแก่โมเดล ดังที่แสดงในตัวอย่างต่อไปนี้
import google.generativeai as genai
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)
ในกรณีนี้ พรอมต์ ("เขียนเรื่องราวเกี่ยวกับกระเป๋าเป้วิเศษ") จะไม่มีตัวอย่างเอาต์พุต วิธีการของระบบ หรือข้อมูลการจัดรูปแบบ การถ่ายภาพแบบไม่มีตัวอย่าง สําหรับบางกรณีการใช้งาน พรอมต์แบบคำเดียวหรือแบบไม่กี่คำอาจให้ผลลัพธ์ที่สอดคล้องกับความคาดหวังของผู้ใช้มากกว่า ในบางกรณี คุณอาจต้องระบุคำสั่งของระบบเพื่อช่วยให้โมเดลเข้าใจงานหรือทำตามหลักเกณฑ์ที่เฉพาะเจาะจง
สร้างข้อความจากอินพุตข้อความและรูปภาพ
Gemini API รองรับอินพุตแบบหลายรูปแบบที่รวมข้อความเข้ากับไฟล์สื่อ ตัวอย่างต่อไปนี้แสดงวิธีสร้างข้อความจากอินพุตข้อความและรูปภาพ
import google.generativeai as genai
import PIL.Image
model = genai.GenerativeModel("gemini-1.5-flash")
organ = PIL.Image.open(media / "organ.jpg")
response = model.generate_content(["Tell me about this instrument", organ])
print(response.text)
เช่นเดียวกับพรอมต์แบบข้อความเท่านั้น พรอมต์แบบหลายสื่ออาจใช้แนวทางและการปรับแต่งที่หลากหลาย คุณอาจต้องเพิ่มขั้นตอนในพรอมต์หรืออธิบายวิธีการให้ชัดเจนยิ่งขึ้น ทั้งนี้ขึ้นอยู่กับผลลัพธ์จากตัวอย่างนี้ ดูข้อมูลเพิ่มเติมได้ที่กลยุทธ์การแจ้งให้ส่งไฟล์
สร้างสตรีมข้อความ
โดยค่าเริ่มต้น โมเดลจะแสดงคำตอบหลังจากดำเนินการสร้างข้อความทั้งหมดเสร็จสมบูรณ์ คุณสามารถโต้ตอบได้เร็วขึ้นโดยไม่ต้องรอผลลัพธ์ทั้งหมด และใช้การสตรีมเพื่อจัดการผลลัพธ์บางส่วนแทน
ตัวอย่างต่อไปนี้แสดงวิธีใช้การสตรีมโดยใช้เมธอด streamGenerateContent
เพื่อสร้างข้อความจากพรอมต์การป้อนข้อความเท่านั้น
import google.generativeai as genai
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
print(chunk.text)
print("_" * 80)
สร้างแชทแบบอินเทอร์แอกทีฟ
คุณสามารถใช้ Gemini API เพื่อสร้างประสบการณ์การแชทแบบอินเทอร์แอกทีฟให้แก่ผู้ใช้ การใช้ฟีเจอร์แชทของ API ช่วยให้คุณรวบรวมคำถามและคำตอบได้หลายรอบ ซึ่งช่วยให้ผู้ใช้ค่อยๆ หาคำตอบหรือรับความช่วยเหลือเกี่ยวกับปัญหาแบบหลายส่วนได้ ฟีเจอร์นี้เหมาะสําหรับแอปพลิเคชันที่ต้องการสื่อสารอย่างต่อเนื่อง เช่น แชทบ็อต ติวเตอร์แบบอินเทอร์แอกทีฟ หรือผู้ช่วยฝ่ายสนับสนุนลูกค้า
ตัวอย่างโค้ดต่อไปนี้แสดงการใช้งานแชทพื้นฐาน
import google.generativeai as genai
model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
history=[
{"role": "user", "parts": "Hello"},
{"role": "model", "parts": "Great to meet you. What would you like to know?"},
]
)
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)
เปิดใช้การสตรีมแชท
นอกจากนี้ คุณยังใช้การสตรีมร่วมกับแชทได้ด้วย ดังที่แสดงในตัวอย่างต่อไปนี้
import google.generativeai as genai
model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
history=[
{"role": "user", "parts": "Hello"},
{"role": "model", "parts": "Great to meet you. What would you like to know?"},
]
)
response = chat.send_message("I have 2 dogs in my house.", stream=True)
for chunk in response:
print(chunk.text)
print("_" * 80)
response = chat.send_message("How many paws are in my house?", stream=True)
for chunk in response:
print(chunk.text)
print("_" * 80)
print(chat.history)
กำหนดค่าการสร้างข้อความ
พรอมต์ทุกรายการที่คุณส่งไปยังโมเดลจะมีพารามิเตอร์ที่ควบคุมวิธีที่โมเดลสร้างคำตอบ คุณใช้ GenerationConfig
เพื่อกําหนดค่าพารามิเตอร์เหล่านี้ได้ หากคุณไม่ได้กําหนดค่าพารามิเตอร์ โมเดลจะใช้ตัวเลือกเริ่มต้น ซึ่งอาจแตกต่างกันไปตามโมเดล
ตัวอย่างต่อไปนี้แสดงวิธีกำหนดค่าตัวเลือกที่มีหลายรายการ
import google.generativeai as genai
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
"Tell me a story about a magic backpack.",
generation_config=genai.types.GenerationConfig(
# Only one candidate for now.
candidate_count=1,
stop_sequences=["x"],
max_output_tokens=20,
temperature=1.0,
),
)
print(response.text)
candidateCount
ระบุจํานวนคําตอบที่สร้างขึ้นซึ่งจะแสดง
ปัจจุบันค่านี้ตั้งได้เพียง 1 เท่านั้น หากไม่ได้ตั้งค่า ค่าเริ่มต้นจะเป็น 1
stopSequences
ระบุชุดลำดับอักขระ (สูงสุด 5 ชุด) ที่จะหยุดการสร้างเอาต์พุต หากระบุไว้ API จะหยุดเมื่อ stop_sequence
ปรากฏขึ้นครั้งแรก ลำดับการหยุดจะไม่รวมอยู่ในคําตอบ
maxOutputTokens
กําหนดจํานวนโทเค็นสูงสุดที่จะรวมไว้ในผู้สมัคร
temperature
ควบคุมความสุ่มของเอาต์พุต ใช้ค่าที่สูงขึ้นเพื่อให้คำตอบมีความสร้างสรรค์มากขึ้น และใช้ค่าที่ต่ำลงเพื่อให้คำตอบมีความแน่นอนมากขึ้น ค่าจะอยู่ในช่วง [0.0, 2.0]
นอกจากนี้ คุณยังกำหนดค่าการเรียกใช้ generateContent
แต่ละรายการได้ดังนี้
response = model.generate_content(
'Write a story about a magic backpack.',
generation_config = genai.GenerationConfig(
max_output_tokens=1000,
temperature=0.1,
)
)
ค่าที่ตั้งไว้ในการเรียกแต่ละรายการจะลบล้างค่าในคอนสตรัคเตอร์ของโมเดล
ขั้นตอนถัดไป
เมื่อได้สำรวจข้อมูลเบื้องต้นเกี่ยวกับ Gemini API แล้ว คุณอาจลองทำสิ่งต่อไปนี้
- การทำความเข้าใจภาพ: ดูวิธีใช้การทำความเข้าใจภาพในตัวของ Gemini เพื่อประมวลผลรูปภาพและวิดีโอ
- คำสั่งของระบบ: คำสั่งของระบบช่วยให้คุณควบคุมลักษณะการทํางานของโมเดลตามความต้องการและกรณีการใช้งานที่เฉพาะเจาะจง
- การทำความเข้าใจเสียง: ดูวิธีใช้การทำความเข้าใจเสียงในตัวของ Gemini เพื่อประมวลผลไฟล์เสียง