Generowanie tekstu za pomocą interfejsu Gemini API

Interfejs Gemini API może generować tekstowe dane wyjściowe, gdy jako dane wejściowe podasz tekst, obrazy, filmy i dźwięk.

Z tego przewodnika dowiesz się, jak wygenerować tekst za pomocą metod generateContent i streamGenerateContent. Więcej informacji o możliwościach Gemini w zakresie przetwarzania obrazu i dźwięku znajdziesz w instrukcjach dotyczących obrazudźwięku.

Zanim zaczniesz: skonfiguruj projekt i klucz interfejsu API

Zanim wywołasz interfejs Gemini API, musisz skonfigurować projekt i klucz interfejsu API.

Generowanie tekstu na podstawie danych wejściowych zawierających tylko tekst

Najprostszym sposobem generowania tekstu za pomocą interfejsu Gemini API jest przekazanie modelowi pojedynczego tekstu wejściowego, jak w tym przykładzie:

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

W tym przypadku prompt („Napisz opowiadanie o magicznym plecaku”) nie zawiera żadnych przykładów danych wyjściowych, instrukcji dotyczących systemu ani informacji o formatowaniu. Jest to podejście zero-shot. W niektórych przypadkach prompt jednokrotny lub kilkukrotny może generować wyniki lepiej dopasowane do oczekiwań użytkowników. W niektórych przypadkach warto też podać instrukcje systemu, aby pomóc modelowi zrozumieć zadanie lub przestrzegać określonych wytycznych.

Generowanie tekstu na podstawie danych wejściowych z tekstem i obrazem

Interfejs Gemini API obsługuje dane multimodalne, które łączą tekst z plikami multimedialnymi. Poniższy przykład pokazuje, jak wygenerować tekst na podstawie tekstu i obrazu:

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)

Podobnie jak w przypadku promptów tekstowych, prompty multimodalne mogą wykorzystywać różne podejścia i ulepszenia. W zależności od wyniku uzyskanego w tym przykładzie możesz dodać do promptu instrukcje lub bardziej szczegółowo opisać czynności. Więcej informacji znajdziesz w artykule Strategie dotyczące wyświetlania promptów.

Generowanie strumienia tekstu

Domyślnie model zwraca odpowiedź po zakończeniu całego procesu generowania tekstu. Możesz uzyskać szybsze interakcje, nie czekając na cały wynik, a zamiast tego używając strumieniowego przesyłania częściowych wyników.

Poniższy przykład pokazuje, jak zaimplementować strumieniowanie za pomocą metody streamGenerateContent do generowania tekstu z promptu tekstowego.

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)

Tworzenie interaktywnego czatu

Za pomocą interfejsu Gemini API możesz tworzyć interaktywne czaty dla użytkowników. Funkcja czatu w interfejsie API umożliwia zebranie wielu rund pytań i odpowiedzi, dzięki czemu użytkownicy mogą stopniowo szukać odpowiedzi lub uzyskać pomoc w rozwiązaniu wieloczęściowych problemów. Ta funkcja jest idealna do aplikacji, które wymagają ciągłej komunikacji, takich jak czatboty, interaktywne programy nauczania czy asystenci obsługi klienta.

Ten przykładowy kod pokazuje podstawową implementację czatu:

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)

Włączanie strumieniowego przesyłania czatu

Możesz też prowadzić transmisję strumieniową z czatem, jak w tym przykładzie:

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)

Konfigurowanie generowania tekstu

Każdy prompt wysyłany do modelu zawiera parametry, które określają, jak model wygeneruje odpowiedzi. Parametry te możesz skonfigurować za pomocą GenerationConfig. Jeśli nie skonfigurujesz parametrów, model użyje opcji domyślnych, które mogą się różnić w zależności od modelu.

Z przykładu poniżej dowiesz się, jak skonfigurować kilka dostępnych opcji.

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 określa liczbę wygenerowanych odpowiedzi do zwrócenia. Obecnie wartość ta może być ustawiona tylko na 1. Jeśli nie jest ustawiona, przyjmuje domyślnie wartość 1.

stopSequences określa zbiór sekwencji znaków (do 5), które powodują zatrzymanie generowania danych wyjściowych. Jeśli zostanie to określone, interfejs API zatrzyma się przy pierwszym wystąpieniu stop_sequence. Sekwencja zatrzymania nie będzie częścią odpowiedzi.

maxOutputTokens ustawia maksymalną liczbę tokenów do uwzględnienia w kandydacie.

temperature określa losowość wyników. Wyższe wartości odpowiadają większej liczbie odpowiedzi kreacji, a niższe – bardziej deterministyczne. Wartości mogą się mieścić w zakresie [0,0, 2,0].

Możesz też skonfigurować poszczególne wywołania generateContent:

response = model.generate_content(
    'Write a story about a magic backpack.',
    generation_config = genai.GenerationConfig(
        max_output_tokens=1000,
        temperature=0.1,
    )
)

Wartości ustawione w przypadku poszczególnych wywołań zastępują wartości w konstruktorze modelu.

Co dalej?

Teraz, gdy znasz już podstawy interfejsu Gemini API, możesz spróbować:

  • Interpretacja obrazu: dowiedz się, jak używać natywnej interpretacji obrazu w Gemini do przetwarzania obrazów i filmów.
  • Instrukcje systemowe: instrukcje systemowe pozwalają kierować działaniem modelu na podstawie konkretnych potrzeb i przypadków użycia.
  • Rozumienie mowy: dowiedz się, jak używać natywnej funkcji Gemini do przetwarzania plików audio.