Gemini 2.0 (wersja eksperymentalna)

Gemini 2.0 Flash jest teraz dostępny jako eksperymentalna wersja wstępna w interfejsie Gemini Developer API i Google AI Studio. Model wprowadza nowe funkcje i ulepszone podstawowe możliwości:

  • Interfejs multimodalny Live API: ten nowy interfejs API ułatwia tworzenie aplikacji do strumieniowego przesyłania obrazu i dźwięku w czasie rzeczywistym.
  • Szybkość i wydajność: model Gemini 2.0 znacznie skraca czas do pierwszego tokena (TTFT) w porównaniu z modelem 1.5 Flash.
  • Jakość: wyższa skuteczność w większości testów porównawczych niż w przypadku Gemini 1.5 Pro.
  • Udoskonalone możliwości agenta: Gemini 2.0 ulepsza zrozumienie multimodalne, kodowanie, wykonywanie złożonych instrukcji i wywoływanie funkcji.
  • Nowe tryby: Gemini 2.0 wprowadza natywne generowanie obrazów i możliwości kontrolowanego odczytywania tekstu.

Aby ułatwić pracę deweloperom, udostępniamy też nowy pakiet SDK. Szczegółowe informacje techniczne dotyczące Gemini 2.0 znajdziesz w artykule Modele Gemini.

Pakiet SDK Google Gen AI (eksperymentalny)

Nowy pakiet Google Gen AI SDK zapewnia zintegrowany interfejs Gemini 2.0 za pomocą interfejsu Gemini Developer API i interfejsu Gemini API w Vertex AI. Z kilkoma wyjątkami kod działający na jednej platformie będzie działać na obu. Oznacza to, że możesz utworzyć prototyp aplikacji za pomocą interfejsu API dla deweloperów, a potem przenieść aplikację do Vertex AI bez konieczności przepisywania kodu.

Pakiet SDK generatywnej AI obsługuje też modele Gemini 1.5.

Nowy pakiet SDK jest dostępny w językach Python i Go, a wkrótce udostępnimy go też w językach Java i JavaScript.

Możesz zacząć używać pakietu SDK w sposób pokazany poniżej.

  1. Zainstaluj nowy pakiet SDK: pip install google-genai
  2. Następnie zaimportuj bibliotekę, zainicjuj klienta i wygeneruj treści:
from google import genai

client = genai.Client(
    api_key="YOUR_API_KEY"
)
response = client.models.generate_content(
    model='gemini-2.0-flash-exp', contents='How does AI work?'
)
print(response.text)

(Opcjonalnie) Ustawianie zmiennych środowiskowych

Możesz też zainicjować klienta za pomocą zmiennych środowiskowych. Najpierw ustaw odpowiednie wartości i wyeksportuj zmienne:

# Replace `YOUR_API_KEY` with your API key.
export GOOGLE_API_KEY=YOUR_API_KEY

Następnie możesz zainicjować klienta bez żadnych argumentów:

client = genai.Client()

Deweloperzy Pythona mogą też skorzystać z notatnika Pierwsze krokiksiążce kucharskiej.

Interfejs API Multimodal Live

Interfejs API multimodalny na żywo umożliwia dwukierunkowe interakcje głosowe i wideo z Gemini o niskim opóźnieniu. Dzięki interfejsowi API Multimodal Live możesz zapewnić użytkownikom naturalne, przypominające ludzkie rozmowy głosowe oraz możliwość przerywania odpowiedzi modelu za pomocą poleceń głosowych. Model może przetwarzać dane wejściowe w postaci tekstu, dźwięku i obrazu oraz generować dane wyjściowe w postaci tekstu i dźwięku.

Interfejs API multimodalnego w czasie rzeczywistym jest dostępny w interfejsie Gemini API jako metoda BidiGenerateContent i oparty jest na WebSockets.

from google import genai

client = genai.Client(http_options={'api_version': 'v1alpha'})
model_id = "gemini-2.0-flash-exp"
config = {"response_modalities": ["TEXT"]}

async with client.aio.live.connect(model=model_id, config=config) as session:
    message = "Hello? Gemini, are you there?"
    print("> ", message, "\n")
    await session.send(message, end_of_turn=True)

    async for response in session.receive():
        print(response.text)

Najważniejsze funkcje:

  • Multimodalność: model może widzieć, słyszeć i mówić.
  • Interakcja w czasie rzeczywistym z minimalnym opóźnieniem: zapewnia szybkie odpowiedzi.
  • Pamięć sesji: model zachowuje pamięć o wszystkich interakcjach w ramach jednej sesji, przywołując wcześniej usłyszane lub wyświetlone informacje.
  • Obsługa wywoływania funkcji, wykonywania kodu i wyszukiwania jako narzędzia: umożliwia integrację z zewnętrznymi usługami i źródłami danych.
  • Automatyczne wykrywanie aktywności głosowej (VAD): model może dokładnie rozpoznać, kiedy użytkownik zaczyna i przestaje mówić. Umożliwia to naturalne interakcje konwersacyjne i umożliwia użytkownikom przerwanie działania modelu w dowolnym momencie.

Język:

  • Tylko w języku angielskim

Ograniczenia:

  • Zarówno wejścia audio, jak i wyjścia audio negatywnie wpływają na zdolność modelu do korzystania z wywołania funkcji.

Więcej informacji o możliwościach i ograniczeniach interfejsu API znajdziesz w przewodniku po interfejsie API Multimodal Live API.

Interfejs API Multimodal Live możesz wypróbować w Google AI Studio. Aby rozpocząć tworzenie, możesz skorzystać z konsoli internetowej (napisanej w React). Deweloperzy Pythona mogą skorzystać z podstawowego kodu (notatnikapliku.py). Najłatwiej jest zacząć od notebooka, ale interfejs API na żywo działa najlepiej, gdy jest uruchamiany z poziomu terminala.

Wyszukiwanie jako narzędzie

Dzięki użyciu funkcji Grounding w wyszukiwarce Google możesz zwiększyć dokładność i aktualność odpowiedzi modelu. Począwszy od Gemini 2.0 wyszukiwarka Google jest dostępna jako narzędzie. Oznacza to, że model może decydować, kiedy korzystać z wyszukiwarki Google. Poniższy przykład pokazuje, jak skonfigurować wyszukiwarkę jako narzędzie.

from google import genai
from google.genai.types import Tool, GenerateContentConfig, GoogleSearch

client = genai.Client()
model_id = "gemini-2.0-flash-exp"

google_search_tool = Tool(
    google_search = GoogleSearch()
)

response = client.models.generate_content(
    model=model_id,
    contents="When is the next total solar eclipse in the United States?",
    config=GenerateContentConfig(
        tools=[google_search_tool],
        response_modalities=["TEXT"],
    )
)

for each in response.candidates[0].content.parts:
    print(each.text)
# Example response:
# The next total solar eclipse visible in the contiguous United States will be on ...

# To get grounding metadata as web content.
print(response.candidates[0].grounding_metadata.search_entry_point.rendered_content)

Funkcja wyszukiwania jako narzędzia umożliwia też wyszukiwanie wieloetapowe i zapytania wielonarzędziowe (np. połączenie funkcji Grounding z wyszukiwarką Google i wykonywanie kodu).

Wyszukiwarka jako narzędzie umożliwia tworzenie złożonych promptów i przepływów pracy, które wymagają planowania, rozumowania i myślenia:

  • tworzenie podstawy, aby zwiększyć trafność i aktualność odpowiedzi
  • Pobieranie artefaktów z internetu w celu przeprowadzenia dalszej analizy
  • znajdowanie odpowiednich obrazów, filmów lub innych multimediów, które pomogą w rozwiązywaniu zadań dotyczących rozumowania multimodalnego lub generowania treści;
  • kodowanie, rozwiązywanie problemów technicznych i inne specjalistyczne zadania;
  • znajdować informacje dotyczące poszczególnych regionów lub pomagać w dokładnym tłumaczeniu treści;
  • znajdowanie odpowiednich witryn do dalszego przeglądania;

Aby rozpocząć, wypróbuj notatnik narzędzia wyszukiwania.

Ulepszone narzędzia

Gemini 2.0 wprowadza ulepszenia funkcji wywoływania i narzędzi, które zapewniają lepszą obsługę agentów.

Wywoływanie funkcji kompozytowych

Gemini 2.0 obsługuje nową funkcję wywołania funkcji: kompozycję wywołania funkcji. Wywoływanie funkcji kompozytowych umożliwia interfejsowi Gemini API automatyczne wywoływanie wielu funkcji zdefiniowanych przez użytkownika w procesie generowania odpowiedzi. Na przykład, aby odpowiedzieć na prompt "Get the temperature in my current location", interfejs Gemini API może wywołać zarówno funkcję get_current_location(), jak i funkcję get_weather(), która przyjmuje lokalizację jako parametr.

Wywoływanie funkcji kompozytowej z wykonywaniem kodu wymaga dwukierunkowego przesyłania strumieniowego i jest obsługiwane tylko przez nowy interfejs API Multimodal Live. Oto przykład pokazujący, jak można używać wywołania funkcji kompozytowej, wykonywania kodu i interfejsu Multimodal Live API:

turn_on_the_lights_schema = {'name': 'turn_on_the_lights'}
turn_off_the_lights_schema = {'name': 'turn_off_the_lights'}

prompt = """
  Hey, can you write run some python code to turn on the lights, wait 10s and then turn off the lights?
  """

tools = [
    {'code_execution': {}},
    {'function_declarations': [turn_on_the_lights_schema, turn_off_the_lights_schema]}
]

await run(prompt, tools=tools, modality="AUDIO")

Deweloperzy Pythona mogą wypróbować to w notatniku dotyczącym korzystania z interfejsu API na żywo.

Użycie narzędzia wielofunkcyjnego

Dzięki Gemini 2.0 możesz włączyć wiele narzędzi jednocześnie, a model sam zdecyduje, kiedy je użyć. Oto przykład, w którym w ramach jednego zapytania korzystającego z interfejsu Multimodal Live API włączono 2 narzędzia: Grounding z wyszukiwarką Google i wykonanie kodu.

prompt = """
  Hey, I need you to do three things for me.

  1. Turn on the lights.
  2. Then compute the largest prime palindrome under 100000.
  3. Then use Google Search to look up information about the largest earthquake in California the week of Dec 5 2024.

  Thanks!
  """

tools = [
    {'google_search': {}},
    {'code_execution': {}},
    {'function_declarations': [turn_on_the_lights_schema, turn_off_the_lights_schema]}
]

await run(prompt, tools=tools, modality="AUDIO")

Deweloperzy Pythona mogą wypróbować to w notatniku dotyczącym korzystania z interfejsu API na żywo.

Wykrywanie ramki ograniczającej

W ramach tego eksperymentalnego wdrożenia udostępniamy deweloperom potężne narzędzie do wykrywania i lokalizowania obiektów na zdjęciach i w filmach. Dzięki dokładnemu identyfikowaniu i oznaczaniu obiektów za pomocą ramek ograniczających deweloperzy mogą tworzyć szeroką gamę aplikacji i ulepszać działanie swoich projektów.

Najważniejsze zalety:

  • Prosta: bez względu na Twoją wiedzę z zakresu widzenia komputerowego możesz łatwo zintegrować funkcje wykrywania obiektów w swoich aplikacjach.
  • Możliwość dostosowania: generowanie ramek ograniczających na podstawie niestandardowych instrukcji (np. „Chcę zobaczyć ramki ograniczające wszystkich zielonych obiektów na tym obrazie”) bez konieczności trenowania niestandardowego modelu.

Szczegóły techniczne:

  • Wejście: prompt i powiązane obrazy lub klatki wideo.
  • Wyjście: ramki ograniczające w formacie [y_min, x_min, y_max, x_max]. Górny lewy róg to punkt początkowy. Osie xy są odpowiednio poziome i pionowe. Wartości współrzędnych są normalizowane do zakresu 0–1000 w przypadku każdego obrazu.
  • Wizualizacja: użytkownicy AI Studio zobaczą ramki ograniczające narysowane w interfejsie. Użytkownicy Vertex AI powinni wizualizować swoje ramki za pomocą niestandardowego kodu wizualizacji.

Deweloperzy Pythona mogą skorzystać z notatnika z 2D spatial understanding lub eksperymentalnego notatnika z wskazaniem 3D.

generowanie mowy (wcześniejszy dostęp/lista dozwolonych),

Gemini 2.0 obsługuje nową funkcję generowania multimodalnego: zamianę tekstu na mowę. Dzięki funkcji konwersji tekstu na mowę możesz poprosić model o wygenerowanie wysokiej jakości dźwięku, który brzmi jak ludzki głos (say "hi everyone"). Możesz też dodatkowo dostosować wynik, kierując głos.

generowanie obrazów (wcześniejszy dostęp/lista dozwolonych),

Gemini 2.0 umożliwia generowanie tekstu z wbudowanymi obrazami. Dzięki temu możesz używać Gemini do konwersacyjnego edytowania obrazów lub generowania multimodalnych wyników (np. wpisu na blogu z tekstem i obrazami w jednym tekście). Wcześniej wymagało to połączenia wielu modeli.

Generowanie obrazów jest dostępne jako prywatna wersja eksperymentalna. Obsługuje te tryby i funkcje:

  • Tekst na obrazie
    • Przykład promptu: „Wygeneruj obraz wieży Eiffla z fajerwerkami w tle”.
  • Tekst na obraz(obrazy) i tekst (przeplatany)
    • Przykład promptu: „Wygeneruj ilustrowany przepis na paellę”.
  • Obrazy i tekst na obrazy i tekst (przeplatane)
    • Przykład promptu: (z obrazem umeblowanego pokoju) „Jakie inne kolory sof pasowałyby do mojego pokoju? Czy możesz zaktualizować obraz?”
  • Edytowanie obrazu (tekst i obraz na obraz)
    • Przykładowy prompt: „Edytuj to zdjęcie, aby wyglądało jak rysunek”
    • Przykładowy prompt: [obraz kota] + [obraz poduszki] + „Wyhaftuj na tej poduszce krzyżykiem mojego kota”.
  • Edytowanie obrazu w wielu krokach (czat)
    • Przykładowe prompty: [prześlij zdjęcie niebieskiego samochodu]. „Zamień ten samochód na kabriolet”. „Zamień teraz kolor na żółty”.
  • Dodawanie znaku wodnego (synthID)

Ograniczenia:

  • Generowanie obrazów przedstawiających ludzi i edytowanie przesłanych zdjęć takich obrazów jest niedozwolone.
  • Aby uzyskać najlepszą skuteczność, używaj tych języków: EN, es-MX, ja-JP, zh-CN, hi-IN.
  • Generowanie obrazów nie obsługuje danych wejściowych audio ani wideo.
  • Generowanie obrazu może nie zostać uruchomione, jeśli:
    • Model może generować tylko tekst. Spróbuj wyraźnie poprosić o wygenerowanie obrazu (np. „wygeneruj obraz”, „prześlij obrazy”, „zaktualizuj obraz”).
    • Model może przestać generować dane w połowie procesu. Spróbuj ponownie lub wybierz inny prompt.