Google: Gemini 3.5 Flash
Gemini 3.5 Flash łączy rozumienie multimodalne z rozumowaniem do programowania i wieloetapowych zadań agentów. Przyjmuje tekst, obrazy, wideo, audio i PDF, a generuje tekst, z obsługą Structured Outputs, narzędziami i limitem wejścia 1,048,576 tokenów w udokumentowanym profilu.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgemini-3.5-flash-thinking - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgemini-3.5-flash-thinking
O modelu
Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.
Gemini 3.5 Flash to profil multimodalnego modelu Flash firmy Google do długotrwałego programowania i pracy agentowej. Udokumentowane wejścia to tekst, obrazy, wideo, audio i PDF, z wyjściem tekstowym. Model koncentruje się na programowaniu iteracyjnym, badaniu alternatywnych rozwiązań oraz dłuższych sekwencjach instrukcji i użycia narzędzi. Edycja 3.5 zapewnia udokumentowane ustawienia myślenia, wejścia multimodalne i przepływy pracy z narzędziami.
Zadanie programistyczne może łączyć pisemne wymaganie, odpowiednie pliki źródłowe i zrzut ekranu zamierzonego wyniku. Podaj zaobserwowane zachowanie, oczekiwane zachowanie i ograniczenia, które muszą pozostać nienaruszone. Przykładowy opis brzmi: „Porównaj zrzut ekranu z tekstem komponentu, wskaż niezgodność w przepływie formularza i zaproponuj jedną konkretną poprawkę. Wyjaśnij, które szczegóły źródła uzasadniają zmianę”. W zadaniu dokumentowym dostarcz odpowiednie strony i poproś o porównanie z jawnymi wymaganiami, z odwołaniem do źródeł dla każdego ustalenia.
Edycja dokumentuje poziomy myślenia minimal, low, medium i high. Medium jest ustawieniem domyślnym, zmienionym z domyślnego high w Gemini 3 Flash Preview. Minimal pasuje do prostych odpowiedzi i nieskomplikowanych decyzji dotyczących narzędzi, bez gwarancji całkowitego wyłączenia rozumowania; low jest przeznaczone do zadań wymagających mniej kroków; high zapewnia głębsze rozumowanie do trudnej matematyki, programowania i problemów agentowych. Google zaleca thinking_level do sterowania wysiłkiem i zachowanie domyślnych ustawień próbkowania zamiast prób wymuszania rozumowania przez zmianę temperature, top-p lub top-k.
Charakterystycznym zachowaniem jest zachowywanie kontekstu rozumowania w zadaniu wieloturowym. Przepływ Interactions Google przenosi ten kontekst automatycznie; przepływ GenerateContent wymaga pełnej, niezmodyfikowanej historii rozmowy, w tym sygnatur myśli. Wspiera to kontynuowane zlecenie debugowania lub refaktoryzacji, w którym wcześniejsze rozumowanie wpływa na następny etap. Zachowuj rzeczywistą strukturę rozmowy, zamiast przekształcać każde kolejne polecenie w niezwiązany prompt, i utrzymuj jasny żądany rezultat końcowy w miarę postępu pracy.
Udokumentowany zestaw narzędzi obejmuje Google Search, ugruntowanie przez Google Maps, File Search, Code Execution, URL Context i standardowe Function Calling, a łączone użycie narzędzi i Computer Use oznaczono jako możliwość preview. Structured Outputs mogą dostarczać zdefiniowany rekord danych. Nadaj funkcjom jasny cel i definicję parametrów: model wybiera funkcję, a połączona aplikacja wykonuje operację i zwraca wynik. Google wymaga, aby wyniki funkcji pasowały do poprzedzających wywołań według tożsamości, nazwy i liczby; wyniki multimodalne należą do odpowiedzi funkcji.
Dokładna tabela modeli API podaje maksymalne wejście 1,048,576 tokenów i maksymalne wyjście 65,536 tokenów. Historia rozmowy i dostarczone media składają się na budżet wejścia. Dla tego profilu udokumentowano buforowanie i przetwarzanie wsadowe, z dodatkowymi opcjami Flex i Priority w tabeli Google. Te limity i możliwości opisują edycję producenta; nie wymagają wypełnienia odpowiedzią całego okna wyjściowego ani użycia każdego narzędzia w zadaniu.
Ten profil generuje tekst zamiast obrazów lub audio i nie używa Live API. Jego przewodnik deweloperski wyklucza też segmentację obrazów. Przy pytaniu wizualnym poproś o opis, ekstrakcję lub interpretację dostarczonego materiału; przy nagraniu mowy poproś o wynik tekstowy. Gdy odpowiedź zależy od nowszych informacji, udokumentowany przepływ ugruntowania przez wyszukiwanie może dodać źródła wykraczające poza wiedzę treningową. Określ, czy potrzebne są informacje zewnętrzne i jakie dowody ma zachować odpowiedź końcowa.
Dla przydatnego dłuższego zlecenia zdefiniuj wynik końcowy i kryterium ukończenia przed pierwszym krokiem. Zadanie analizy pomocy technicznej może wymagać tabeli zaobserwowanych problemów, potwierdzających fragmentów i proponowanej odpowiedzi; zadanie programistyczne może wymagać konkretnej zmiany i odpowiedniego wyniku walidacji. Dołącz istotny kontekst źródłowy, określ dozwolone działania narzędzi i poproś o jawną odpowiedź końcową oddzielającą ukończoną pracę od pytań nadal wymagających informacji. Przekształca to długotrwały przepływ pracy modelu w konkretny rezultat tekstowy, kod lub strukturę danych.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions gemini-3.5-flash-thinking
gemini-3.5-flash-thinkingStart
Gemini 3.5 Flash łączy rozumienie multimodalne z rozumowaniem do programowania i wieloetapowych zadań agentów. Przyjmuje tekst, obrazy, wideo, audio i PDF, a generuje tekst, z obsługą Structured Outputs, narzędziami i limitem wejścia 1,048,576 tokenów w udokumentowanym profilu.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- Tekst
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Wejście
text- Wyjście
text- Format wyjściowy
- json lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity gemini-3.5-flash-thinking | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity Minimalna liczba elementów: 1 | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity Zależy od modelu | Domyślnie— |
Polemessages[].content | Typstring | WymaganieOpcjonalne | Wartości i limity Obowiązuje, gdy: Rozmowa tekstowa | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Kombinacje materiałów wejściowych
Tekst · tekst UTF8
messages[].content
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages |
Parametrmaterial_types | Kontrakttext |
Parametrmessages | Kontrakttablica wiadomości o strukturze role/content |
Parametrfile_material | Kontraktrzeczywisty dokument UTF-8 wstawiony jako dosłowny tekst; bez wywnioskowanego ID pliku |
Parametroptional_controls | Kontraktstream |
Parametrcontrol_scope | KontraktRozmowa tekstowa; stream jest wartością logiczną i domyślnie wynosi false. |
Parametroutput_modalities | Kontrakttext |
Parametrhosted_operations | Kontraktfalse |
Parametrmultimodal_input_binding | Kontraktnull |
Aliasy metody: /chat/completions
Cykl życia: synchronous_or_streamed
Wyślij dokładne ID modelu wraz z messages.
Długość kontekstu nie jest limitem wyjścia.
Plik tekstowy może dostarczyć dosłowny tekst; wejścia obrazowe/dźwiękowe/obiekty plików wymagają dokładnego powiązania.
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
- Wycena jawnej pamięci podręcznej
- Niewłączone Gdy zażądano jawnej pamięci podręcznej
Stawki Ailoot
Ceny według konfiguracji
| Konfiguracja | Tabela stawek | Opłata |
|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Opłata Wejście · Tokeny wejściowe $0.003 / 1K tokenów Wyjście · Tokeny wyjściowe $0.018 / 1K tokenów Wejście · Odczyt cache $0 / 1K tokenów Wejście · Zapis do cache $0 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"gemini-3.5-flash-thinking","messages":[{"role":"user","content":"hello"}],"stream":false}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os
if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="gemini-3.5-flash-thinking", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path
def save_result(data, stem="result"):
# Keep every field, including usage, IDs, reasoning and tool requests.
Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
def save_blob(encoded, suffix, label):
raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
file = Path(stem + "-" + label + "." + ext)
file.write_bytes(raw)
print("Saved", file)
for index, block in enumerate(data.get("content") or []):
print("Content", index, json.dumps(block, ensure_ascii=False))
for choice in data.get("choices") or []:
print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
for index, item in enumerate(data.get("output") or []):
print("Output", index, json.dumps(item, ensure_ascii=False))
if item.get("type") == "image_generation_call" and item.get("result"):
save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
for ci, candidate in enumerate(data.get("candidates") or []):
for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
blob = part.get("inlineData") or part.get("inline_data")
if blob and blob.get("data"):
mime = blob.get("mimeType") or blob.get("mime_type")
suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))
save_result(result.to_dict(mode="json"))
Odbieranie i zapisywanie wyników
Ailoot Ultra · OpenAI Chat
json lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj każdy wariant i jego treść/wywołania narzędzi/rozumowanie. W SSE składaj przyrosty według indeksu wariantu/narzędzia, zachowując końcowy powód zakończenia i dane użycia.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Polechoices[].index | Typinteger |
Polechoices[].message.content | Typstring|null |
Polechoices[].message.tool_calls | Typtool_call[] |
Polechoices[].message.reasoning_content | Typstring |
Polechoices[].message.reasoning_details | Typobject|array |
Polechoices[].finish_reason | Typstring|null |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra gemini-3.5-flash-thinking
Aliasy ścieżek metod
/chat/completions
Powiązane ID modeli
Ailoot Ultra · Anthropic Messages POST /v1/messages gemini-3.5-flash-thinking
gemini-3.5-flash-thinkingStart
Gemini 3.5 Flash łączy rozumienie multimodalne z rozumowaniem do programowania i wieloetapowych zadań agentów. Przyjmuje tekst, obrazy, wideo, audio i PDF, a generuje tekst, z obsługą Structured Outputs, narzędziami i limitem wejścia 1,048,576 tokenów w udokumentowanym profilu.
- Akceptowane dane wejściowe
- Tekst
- Wyniki
- json · sse
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Wejście
text- Wyjście
json,sse- Format wyjściowy
- JSON lub SSE
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity gemini-3.5-flash-thinking | Domyślnie— |
Polemessages | Typmessage[] | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemessages[].role | Typstring | WymaganieWymagane | Wartości i limity user, assistant | Domyślnie— |
Polemessages[].content | Typstring | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polemax_tokens | Typinteger | WymaganieWymagane | Wartości i limity | Domyślnie— |
Polestream | Typboolean | WymaganieOpcjonalne | Wartości i limity | Domyślniefalse |
Kombinacje materiałów wejściowych
Tekst · tekst UTF-8
ciąg messages[].content
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, messages, max_tokens |
Parametroptional_controls | Kontraktstream |
Parametrmaterial_types | Kontrakttext |
Parametrtext_file_material | KontraktOdczytaj rzeczywisty dokument UTF-8 i umieść jego tekst we wskazanym polu input lub w ciągu treści wiadomości. |
Cykl życia: synchronous_or_streamed
Cennik
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
- Wycena jawnej pamięci podręcznej
- Niewłączone Gdy zażądano jawnej pamięci podręcznej
Stawki Ailoot
Ceny według konfiguracji
| Konfiguracja | Tabela stawek | Opłata |
|---|---|---|
| KonfiguracjaPodstawowe stawki za tokeny | Tabela stawekStawka podstawowa | Opłata Wejście · Tokeny wejściowe $0.003 / 1K tokenów Wyjście · Tokeny wyjściowe $0.018 / 1K tokenów Wejście · Odczyt cache $0 / 1K tokenów Wejście · Zapis do cache $0 / 1K tokenów Wejście · Zapis do cache, 1 godz. — / 1K tokenów |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Przykładowe żądania
Ailoot Ultra · Anthropic Messages
{
"model": "gemini-3.5-flash-thinking",
"max_tokens": 128,
"messages": [
{
"role": "user",
"content": "Summarize the incident report."
}
],
"stream": false
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3.5-flash-thinking', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
-H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path
source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('Choose a document containing text')
payload = {'model': 'gemini-3.5-flash-thinking', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError
api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
with urlopen(request, timeout=120) as response:
raw = response.read()
Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
Path('result.json').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path
result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
Odbieranie i zapisywanie wyników
Ailoot Ultra · Anthropic Messages
JSON lub SSE
Zachowaj wszystkie ukończone wyniki
Zachowaj każdą kompletną zwróconą odpowiedź, plik i część treści.
Zachowaj wszystkie bloki treści, sygnatury myślenia i rzeczywiste ID użycia narzędzi. Złóż wszystkie przyrosty bloków SSE; pierwszy blok tekstowy nie jest pełnym wyjściem.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Zachowaj ID i nagłówki żądań/odpowiedzi. Nie udostępniono ogólnego URL pobierania zadania tekstowego.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Poleid | Typstring |
Polemodel | Typstring |
Polecontent[] | Typtext|thinking|tool_use|other content block |
Polestop_reason | Typstring|null |
Poleusage | Typobject |
Błędy i dalsze kroki
| Odpowiedź | Warunek | Następny krok |
|---|---|---|
Odpowiedź400 · invalid_request_error | WarunekNieprawidłowe wymagane pola, sposób reprezentacji materiału lub wartość parametru | Następny krokPopraw wskazane pola przed nowym żądaniem utworzenia. |
Aliasy
Aliasy modelu
Ailoot Ultra gemini-3.5-flash-thinking
Aliasy ścieżek metod
/chat/completions
Powiązane ID modeli
FAQ · Google: Gemini 3.5 Flash
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/chat/completions·gemini-3.5-flash-thinking:text→textPOST /v1/messages·gemini-3.5-flash-thinking:text→json,sse- Jakich pól używa żądanie?
POST /v1/chat/completions·gemini-3.5-flash-thinking:model,messages,streamPOST /v1/messages·gemini-3.5-flash-thinking:model,messages,max_tokens,stream- Jakie limity obowiązują?
POST /v1/chat/completions·gemini-3.5-flash-thinking:messages.min_items:1