使用 Gemini API 產生文字

Gemini API 可在輸入內容時,提供文字、圖片、影片和音訊來生成文字輸出內容。

本指南說明如何使用 generateContentstreamGenerateContent 方法產生文字。如要瞭解如何使用 Gemini 的視覺和音訊功能,請參閱「視覺」和「音訊」指南。

事前準備:設定專案和 API 金鑰

在呼叫 Gemini API 之前,您必須設定專案並設定 API 金鑰。

從純文字輸入來生成文字

使用 Gemini API 產生文字最簡單的方法,就是為模型提供單一純文字輸入內容,如以下範例所示:

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)

在本例中,提示訊息 (「請寫一個關於魔法背包的故事」) 不含任何輸出範例、系統操作說明或格式設定資訊。這是一種零樣本方法。在某些用途中,單拍少拍提示可能會產生更符合使用者期待的輸出內容。在某些情況下,您可能還需要提供系統操作說明,協助模型瞭解任務或遵循特定規範。

使用文字和圖片輸入內容來生成文字

Gemini API 支援結合文字和媒體檔案的多模態輸入內容。以下範例說明如何透過輸入文字和圖片來生成文字:

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 方法實作串流,從純文字輸入提示產生文字。

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 的即時通訊功能,您可以收集多輪問題和回應,讓使用者逐步取得答案,或針對多重問題尋求協助。這項功能非常適合需要持續溝通的應用程式,例如聊天機器人、互動式教師或客戶服務助理。

以下程式碼範例顯示基本即時通訊實作方式:

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)

啟用聊天串流功能

你也可以透過聊天室使用直播功能,如以下範例所示:

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 設定這些參數。如果您未設定參數,模型會使用預設選項,這些選項可能因模型而異。

以下範例說明如何設定多個可用選項。

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 的原生音訊理解功能處理音訊檔案。