generateContent, batchEmbedContents, Imagen predict). Przełącz się na
endpoint kompatybilny z OpenAI, gdy potrzebujesz zachowania zgodności, którego natywny
adapter jeszcze nie implementuje (przede wszystkim zdalnych wartości image_url).
Konfiguracja
config.yaml:
USE_GOOGLE_GEMINI_NATIVE_API jest nadal respektowane jako przestarzały globalny przełącznik,
gdy GEMINI_API_MODE dla danego providera nie jest ustawione. Wybieraj GEMINI_API_MODE.Bazowe URL-e
GoModel utrzymuje osobne wewnętrzne adresy bazowe dla natywnego Gemini i API kompatybilnego z OpenAI:- natywny czat/modele:
https://generativelanguage.googleapis.com/v1beta - kompatybilny z OpenAI:
https://generativelanguage.googleapis.com/v1beta/openai
GEMINI_BASE_URL je nadpisuje. Gdy wartość kończy się na /openai, GoModel
używa jej dla klienta kompatybilnego z OpenAI i wyznacza natywny adres bazowy przez
usunięcie /openai. Pliki i batche zawsze korzystają z interfejsu
kompatybilnego z OpenAI; czat, embeddingi i obrazy zależą od trybu API.
Embeddingi
W trybie natywnym embeddingi są obsługiwane przezmodels/{model}:batchEmbedContents.
dimensions mapuje się na outputDimensionality, a encoding_format: "base64" jest
respektowane. Gemini nie raportuje użycia tokenów dla embeddingów w żadnym z interfejsów API, więc
odpowiedzi z embeddingami zawierają zerowe liczby tokenów, a wiersz użycia jest oznaczany
zastrzeżeniem dotyczącym obliczenia kosztu.
Generowanie i edycja obrazów
W trybie natywnym endpointy obrazów kompatybilne z OpenAI działają z modelami obrazowymi Gemini (gemini-2.5-flash-image, …, przez
generateContent). Google wycofał Imagen z API AI Studio w sierpniu
2026; Imagen jest nadal dostępny w Vertex AI. Edycja obrazów
wymaga trybu natywnego i modelu obrazowego Gemini; maski nie są obsługiwane. Szczegóły
mapowania parametrów i cen znajdziesz w uwagach o providerze w Images API.
Reasoning effort
W trybie natywnymreasoning_effort (lub reasoning.effort) jest tłumaczone na
thinkingConfig Gemini:
W Gemini 3 nie da się wyłączyć thinkingu, a modele Pro oraz 3.7 i 3.8
Flash odrzucają
minimal, więc GoModel wysyła najniższy poziom akceptowany przez te modele,
zamiast zwracać błąd 400 od Google. Jawne
extra_body.google.thinking_config jest zawsze przekazywane bez zmian.
Parametry samplingu w Gemini 3
Przewodniki migracji Google do Gemini 3 zalecają usunięcietemperature, top_p i
top_k z każdego requestu, bo modele są dostrojone pod swoje wartości domyślne,
i wymieniają candidate_count jako nieobsługiwane w Gemini 3.x. W trybie natywnym GoModel
pomija więc te cztery pola dla Gemini 3 i nowszych (gemini-3-*,
gemini-3.5-*, gemini-3.8-*, …), a nadal przekazuje je dla Gemini 2.5,
Gemmy i innych modeli. Nie dotyczy to max_tokens, stop, kar (penalties), response_format ani
ustawień thinkingu.
Thought signatures
Gemini 3 dołącza zaszyfrowanethoughtSignature do emitowanych wywołań funkcji
i odrzuca kolejny request (HTTP 400, “Function call is missing a
thought_signature”), gdy to wywołanie wraca w historii bez sygnatury. W
trybie natywnym GoModel udostępnia sygnaturę tak samo jak własny endpoint Google
kompatybilny z OpenAI, więc klient, który odsyła wiadomości asystenta
bez zmian, nadal działa:
extra_content pojawia się w streamowanych deltach tool_calls, w
elementach output function_call w Responses API, w blokach tool_use w Anthropic Messages API
oraz (dla tur wyłącznie tekstowych) w samej wiadomości asystenta.
Odsyłaj je dosłownie; tylko pierwsze wywołanie w równoległej grupie ma
sygnaturę. Inni providerzy nigdy jej nie widzą; wspólną konwencję opisuje strona
Extra content, bloki thinking i thought signatures. Akceptowane jest też płaskie thought_signature (lub
thoughtSignature) w wywołaniu narzędzia lub w jego obiekcie function,
więc klienci zbudowani pod inne gatewaye nadal działają.
Gdy historia Gemini 3 zawiera wywołanie funkcji bez żadnej sygnatury (rozmowa
zaczęła się na innym modelu lub klient pominął to pole),
GoModel wysyła udokumentowany przez Google placeholder skip_thought_signature_validator,
zamiast zwracać błąd 400. Ciągłość reasoningu jest dla
tej tury ograniczona, więc lepiej odsyłać prawdziwą sygnaturę.
Obrazy na wejściu
W przypadku obrazów hostowanych pod URL-em w trybie natywnym własne przykłady Google najpierw pobierają URL,
a następnie wysyłają bajty do
generateContent.
Wideo na wejściu
data: staje się osadzoną częścią wideo (domyślnie
video/mp4, gdy data URL nie deklaruje typu mediów), a URI YouTube, Files API
i Cloud Storage są wysyłane jako referencja do pliku, którą Gemini rozwiązuje samodzielnie. Każdy
inny zdalny URL https://... jest odrzucany, a nie pomijany – najpierw prześlij plik
przez Gemini Files API.
Wiadomości i narzędzia
W trybie natywnym pola czatu OpenAI mapują się nagenerateContent w następujący sposób:
Gemini akceptuje
allowedFunctionNames tylko z ANY lub VALIDATED, dlatego
podzbiór auto staje się VALIDATED: model nadal może odpowiedzieć tekstem,
ale każde wykonane przez niego wywołanie jest ograniczone do wymienionych narzędzi. VALIDATED dotyczy
całego requestu, więc jedno narzędzie strict sprawia, że każde zadeklarowane narzędzie
jest walidowane względem schematu.
Gemini nie pozwala ograniczyć tury do jednego wywołania funkcji, a wskazanie pojedynczego
narzędzia nie pomaga: Gemini może wywołać tę samą funkcję więcej niż raz w jednej turze.
Gdy parallel_tool_calls: false (lub disable_parallel_tool_use z Anthropic)
ma znaczenie, obsłuż lub odrzuć dodatkowe wywołania w swoim kliencie.
Wybór allowed_tools z pustą listą tools jest odrzucany z kodem 400, tak jak
robi to OpenAI.
Jeszcze niezintegrowane
- Automatyczne pobieranie zdalnych wartości
image_urlw trybie natywnym. - Przesyłanie zdalnych obrazów lub wideo przez Gemini Files API przed requestem czatu.