Generowanie tekstu za pomocą interfejsu Gemini API

Gemini API może generować dane wyjściowe w postaci tekstu, gdy jako dane wejściowe zostaną mu przekazane tekst, obrazy, filmy i dźwięk.

Z tego przewodnika dowiesz się, jak generować 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:

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)

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 tekstu i obrazu

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

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)

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 tekstowego

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.

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)

Tworzenie interaktywnego czatu

Za pomocą interfejsu Gemini API możesz tworzyć interaktywne czaty dla użytkowników. Korzystając z funkcji czatu interfejsu API, możesz zbierać pytania i odpowiedzi w wielu etapach, co pozwala użytkownikom stopniowo uzyskiwać odpowiedzi lub uzyskać pomoc w przypadku problemów wielowątkowych. 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:

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)

Włączanie strumieniowego przesyłania czatu

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

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)

Konfigurowanie generowania tekstu

Każdy prompt wysyłany do modelu zawiera parametry, które określają, jak model wygeneruje odpowiedzi. Aby skonfigurować te parametry, możesz użyć 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.

W tym przykładzie pokazujemy, jak skonfigurować kilka dostępnych opcji.

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 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 określa maksymalną liczbę tokenów, które mają być uwzględnione w kandydacie.

temperature określa losowość danych wyjściowych. Jeśli chcesz uzyskać więcej kreatywnych odpowiedzi, użyj wyższych wartości, a jeśli bardziej ścisłych – niższych. 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 korzystać z 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.