Google: Gemini 3.1 Pro Preview Custom Tools
Gemini 3.1 Pro Preview Custom Tools – atskiras agentams skirtas variantas, teikiantis pirmenybę programos apibrėžtiems įrankiams kartu su terminalo komandomis. Naudokite jį, kai kelių etapų užduotį turi lemti tokie veiksmai kaip failų skaitymas ar kodo paieška, o programa vykdo kiekvieną įrankį ir grąžina jo rezultatą.
- Ailoot Ultra · OpenAI pokalbis
POST /v1/chat/completionsgoogle/gemini-3.1-pro-preview-customtools - Ailoot Ultra · Anthropic pranešimai
POST /v1/messagesgoogle/gemini-3.1-pro-preview-customtools
Apie modelį
Šis aprašas apima modelio galimybes. Pasirinktam metodui Ailoot prieinamos įvestys, išvestys ir parinktys nurodytos toliau.
Gemini 3.1 Pro Preview Custom Tools – Google specializuotas variantas agentų darbo eigoms, kuriose terminalo komandos derinamos su pasirinktiniais įrankiais. Išskirtinė jo elgsena – pirmenybė programos apibrėžtiems įrankiams; gamintojas kaip pavyzdžius pateikia view_file ir search_code. Tai atskiras pavadintas Gemini 3.1 Pro Preview variantas, o ne kitokia visų Pro užklausų etiketė. Naudingoje užduotyje tinkamu įrankiu surenkami įrodymai prieš rengiant galutinį tekstinį rezultatą.
Pro Preview linija priima tekstą, vaizdus, vaizdo įrašus, garsą ir PDF bei grąžina tekstą. Gamintojas šiai linijai nurodo 1,048,576 žetonų įvesties ir 65,536 žetonų išvesties ribas. Saugyklos tyrime galima sujungti šaltinio failus, rašytinius reikalavimus ir sąsajos ekrano kopiją; dokumentų darbo eigoje – puslapius ir klausimus. Pažymėkite šaltinius ir apibrėžkite galutinį artefaktą, kad didelis įvesties biudžetas padėtų konkrečiai užduočiai, o ne virstų netikslingu archyvo iškrovimu.
Programiniam agentui apibrėžkite tikslą, prieinamus įrankius ir prašomo pakeitimo apimtį. Pasirinktinis paieškos įrankis gali grąžinti atitinkančių failų vietas, o failo skaitymo įrankis – tikslų reikalingą turinį. Nurodykite priimamus jų argumentus ir grąžinamus laukus. Programa įvykdo priimtą iškvietimą ir perduoda rezultatą modeliui, kuris pagal tai, kas iš tikrųjų įvyko, gali pasirinkti kitą žingsnį. Grąžintas kelias patvirtina paieškos rezultatą, tačiau neįrodo, kad failas buvo pakeistas ar paleistas testas.
Custom Tools variantas skirtas atvejams, kai šie specializuoti veiksmai turi būti svarbesni už bendrosios paskirties bash komandą. Pavyzdžiui, agentas pirmiausia gali rasti įvardytos elgsenos įgyvendinimą, perskaityti susijusius failus, palyginti juos su naudotojo reikalavimu ir tuomet pasiūlyti ribotos apimties pakeitimą. Apibrėžkite, kurios sąsajos ir elgsena turi išlikti nepakitusios, ir paprašykite galutinio siūlomų pakeitimų sąrašo su naudota šaltinio informacija. Jei prieinamas kontroliuojamas testų vykdiklis, prieš prašydami išvados apie pakeitimą grąžinkite tikrą jo rezultatą.
Gamintojo 3.1 Pro dokumentacijoje nurodyti samprotavimas, struktūrizuota išvestis ir funkcijų iškvietimas, taip pat kodo vykdymas, atsakymų pagrindimas paieška, pagrindimas Google Maps duomenimis, URL kontekstas ir podėlis. Failų paieška aiškiai apribota Google AI Studio. Todėl įrankių prieinamumas priklauso nuo pasirinktos gamintojo sąsajos ir programos konfigūracijos. Ypatinga šio varianto pirmenybė pasirinktiniams įrankiams savaime nesuteikia šių įrankių ir neatlieka išorinio veiksmo. Kiekvienam užbaigtam programos veiksmui išsaugokite funkcijos pavadinimą, patikrintus argumentus ir rezultatą.
Gemini 3 vadove 3.1 Pro aprašyti low, medium ir high samprotavimo lygiai; numatytasis – high. Tai santykiniai analizės biudžetai, o ne griežtos žetonų garantijos. Lygį rinkitės pagal užduotį ir teikite tiesiogines instrukcijas, užuot naudoję sudėtingus užklausų ritualus. Jei reikia struktūrizuotos išvesties, apibrėžkite laukus, tipus ir trūkstamų reikšmių taisykles. Įgyvendinimo ataskaitos galutinis įrašas galėtų nurodyti nagrinėtus failus, reikalingą elgseną, siūlomą pakeitimą ir likusius klausimus. Patikrinkite, kad kiekvienas įrašas būtų pagrįstas tikrais įrankių ar šaltinių rezultatais.
Kelių ėjimų agentai turi išsaugoti pokalbį ir reikalingą samprotavimo kontekstą. Gamintojo vadove paaiškinami samprotavimo parašai ir atskiriama valdoma būseninė istorija nuo rankiniu būdu valdomos istorijos be būsenos. Pasirinktoje sąsajoje naudokite dokumentuotą tvarkymą, ypač tęsdami po įrankio rezultato. Ilgos šaltinio medžiagos atveju konkretų klausimą pateikite po konteksto ir su juo susiekite prašomą atsakymą. Vadove taip pat rekomenduojama numatytoji temperature reikšmė 1.0, o ne iš kitur perimtas mažos temperatūros nustatymas, dėl kurio sudėtingose užduotyse gali kilti ciklų.
Gamintojas įspėja, kad naudojimo atvejais, kuriems pasirinktiniai įrankiai nenaudingi, kokybė gali svyruoti. Tai svarbi pasirinkimo riba: šį profilį naudokite į įrankius orientuotam agentui, o ne manykite, kad jis bendrai pagerina kiekvieną atskirą užklausą. Tekstinė išvestis gali būti planas, kodo pasiūlymas, paaiškinimas ar struktūrizuotas rezultatas; vaizdo ar garso įvestys nepaverčia šio varianto medijos generatoriumi. Peržiūrėkite siūlomą kodą, patikrinkite skaičiavimus ir atskirkite patvirtintus veiksmus nuo pasiūlymų. Kartu su užduotimi, įrankių apibrėžimais ir grąžintais įrodymais išsaugokite tikslų Custom Tools modelio pavadinimą, kad vėlesnis tęsinys turėtų konkretų pagrindą.
Praktinė užduotis
Praktinė užduotis
Techninis pavyzdys anglų kalba
Interpret custom-tool evidence
Use this supplied tool transcript. search_code returned settings.py:12 and view_file returned: 'RETRY_LIMIT = 3'. No edit or test result is present. Requirement: increase the retry limit to five. Return the examined file, the exact proposed edit and the remaining check. Distinguish the retrieved value from actions that have not occurred.Laukiamas rezultatas
A file-linked proposed edit and an explicitly unexecuted validation step.Rezultato patikra
The answer must not claim that settings.py was changed or a test passed.Ailoot Ultra · OpenAI pokalbis POST /v1/chat/completions google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtoolsPradžia
Gemini 3.1 Pro Preview Custom Tools – atskiras agentams skirtas variantas, teikiantis pirmenybę programos apibrėžtiems įrankiams kartu su terminalo komandomis. Naudokite jį, kai kelių etapų užduotį turi lemti tokie veiksmai kaip failų skaitymas ar kodo paieška, o programa vykdo kiekvieną įrankį ir grąžina jo rezultatą.
- Leidžiamos įvestys
- Tekstas
- Rezultatai
- Tekstas
Prieinama Ailoot · įvestys ir metodai
Ailoot Ultra · OpenAI pokalbis POST /v1/chat/completions
- Įvestis
text- Išvestis
text- Išvesties formatas
- json arba SSE
| Laukas | Tipas | Reikalavimas | Reikšmės ir ribos | Numatyta |
|---|---|---|---|---|
Laukasmodel | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos google/gemini-3.1-pro-preview-customtools | Numatyta— |
Laukasmessages | Tipasmessage[] | ReikalavimasPrivaloma | Reikšmės ir ribos Mažiausias elementų skaičius: 1 | Numatyta— |
Laukasmessages[].role | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos Pavyzdžiai: system, user, assistant, tool, function Sąlygos: Šie vaidmenys aiškiai išreikšti šaltinio kodo suderinamumo tipuose; tikslus vaidmenų rinkinys priklauso nuo konkretaus modelio. Priklauso nuo modelio | Numatyta— |
Laukasmessages[].content | Tipasstring|content_part[]|null | ReikalavimasNeprivaloma | Reikšmės ir ribos | Numatyta— |
Laukasmessages[].tool_calls | Tipastool_call[] | ReikalavimasNeprivaloma | Reikšmės ir ribos | Numatyta— |
Laukasmessages[].tool_call_id | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Taikoma, kai: role=tool; naudokite tikrąjį grąžintą ID | Numatyta— |
Laukasmessages[].name | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos | Numatyta— |
Laukasmessages[].reasoning_content | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Taikoma, kai: Grąžinkite tikrąjį gautą samprotavimą ten, kur šis modelis jį naudoja | Numatyta— |
Laukasmessages[].reasoning_details | Tipasobject|array | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasmax_tokens | Tipasinteger | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausia reikšmė: 1 Priklauso nuo modelio | Numatyta— |
Laukasmax_completion_tokens | Tipasinteger | ReikalavimasNeprivaloma | Reikšmės ir ribos Mažiausia reikšmė: 1 Priklauso nuo modelio | Numatyta— |
Laukasstream | Tipasboolean | ReikalavimasNeprivaloma | Reikšmės ir ribos | Numatytafalse |
Laukasstream_options.include_usage | Tipasboolean | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukastemperature | Tipasnumber | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukastop_p | Tipasnumber | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasstop | Tipasstring|string[] | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukastools | Tipasfunction_tool[] | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukastools[].type | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos function Priklauso nuo modelio | Numatyta— |
Laukastools[].function.name | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos Taikoma, kai: pateiktas funkcijos tipo įrankis | Numatyta— |
Laukastools[].function.description | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos | Numatyta— |
Laukastools[].function.parameters | TipasJSON_schema | ReikalavimasNeprivaloma | Reikšmės ir ribos | Numatyta— |
Laukastool_choice | Tipasstring|object | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasparallel_tool_calls | Tipasboolean | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasresponse_format | Tipasobject | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasreasoning_effort | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasreasoning | Tipasobject | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasservice_tier | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasinstructions | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Suderinamumo laukas | Numatyta— |
Laukasfunctions | Tipasfunction[] | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasfunction_call | Tipasstring|object | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasprompt_cache_options | Tipasobject | ReikalavimasNeprivaloma | Reikšmės ir ribos Priklauso nuo modelio | Numatyta— |
Laukasmodalities | Tipasstring[] | ReikalavimasNeprivaloma | Reikšmės ir ribos text | Numatyta— |
Laukasprovider | Tipasobject | ReikalavimasNeprivaloma | Reikšmės ir ribos Sąlygos: provider.options šiame Ultra teksto maršrute atmetamas | Numatyta— |
Laukascache_control.ttl | Tipasstring | ReikalavimasNeprivaloma | Reikšmės ir ribos Sąlygos: 1h atmetamas tikrosiose užklausų podėlio vietose | Numatyta— |
Įvesties medžiagos deriniai
Tekstas · UTF8 tekstas
messages[].content
Metodo parametrai ir gyvavimo ciklas
| Parametras | Specifikacija |
|---|---|
Parametrascontent_type | Specifikacijaapplication/json |
Parametrasrequired | Specifikacijamodel, messages |
Parametrasmaterial_types | Specifikacijatext |
Parametrasmessages | Specifikacijapranešimų masyvas su role/content struktūra |
Parametrasfile_material | Specifikacijatikrasis UTF-8 dokumentas įterptas kaip pažodinis tekstas; failo ID nenumanomas |
Parametrasoptional_controls | Specifikacijastream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametrascontrol_scope | Specifikacijapriklauso nuo modelio; naudotojo funkcijų įrankiai skiriasi nuo priglobtų įrankių |
Parametrasoutput_modalities | Specifikacijatext |
Parametrashosted_operations | Specifikacijafalse |
Parametrasmultimodal_input_binding | Specifikacijanull |
Gyvavimo ciklas: synchronous_or_streamed
Siųskite tikslų modelio ID kartu su messages.
Konteksto ilgis nėra išvesties limitas.
Teksto failas gali pateikti pažodinį tekstą; vaizdų / garso / failų objektų įvestims reikia tikslaus susiejimo.
Planai
Tarifų informacija neprideda užklausos parinkčių. Palaikomi parametrai nurodyti prie pasirinkto metodo.
- Spartusis režimas
- Standartinis įkainis Pasirinkus spartųjį režimą
- Flex režimas
- Standartinis įkainis Pasirinkus flex režimą
- Didžiausios samprotavimo pastangos
- Standartinis įkainis Kai didžiausioms samprotavimo pastangoms taikomas numatytasis koregavimas (default)
- Samprotavimo pastangos · high
- Standartinis įkainis Kai samprotavimo pastangų lygis yra high
- Samprotavimo pastangos · low
- Standartinis įkainis Kai samprotavimo pastangų lygis yra low
- Samprotavimo pastangos · medium
- Standartinis įkainis Kai samprotavimo pastangų lygis yra medium
- Išreikštinio podėlio kainodara
- Neįjungta Kai prašoma išreikštinio podėlio
- Samprotavimo išvestis
- Samprotavimui taikomas nurodytas poaibio tarifas bendros išvesties viduje; nepridėkite tų žetonų du kartus. Kai išvestyje yra samprotavimo žetonų
Ailoot įkainiai
Kainos pagal konfigūraciją
Kiekvieną mokestį susiekite su nurodytomis sąlygomis. Kiekvienam alternatyvių konfigūracijų rinkiniui taikykite vieną įkainį.
| Konfigūracija | Įkainių lentelė | Konteksto tokenų daugiau nei | Konteksto tokenų iki imtinai | Mokestis |
|---|---|---|---|---|
| KonfigūracijaBaziniai žetonų įkainiai | Įkainių lentelėBazinis įkainis | Konteksto tokenų daugiau nei— | Konteksto tokenų iki imtinaiBe viršutinės ribos | Mokestis Įvestis · Įvesties tokenai $0.004 / 1K tokenų Išvestis · Išvesties tokenai $0.024 / 1K tokenų Įvestis · Talpyklos skaitymas $0.0004 / 1K tokenų Įvestis · Rašymas į talpyklą $0.00075 / 1K tokenų Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų Išvestis · Samprotavimo išvesties žetonai $0.024 / 1K tokenų |
| KonfigūracijaUžklausos ilgio pakopa 1 | Įkainių lentelė— | Konteksto tokenų daugiau nei0 | Konteksto tokenų iki imtinai200 000 | Mokestis Įvestis · Įvesties tokenai $0.004 / 1K tokenų Išvestis · Išvesties tokenai $0.024 / 1K tokenų Įvestis · Talpyklos skaitymas $0.0004 / 1K tokenų Įvestis · Rašymas į talpyklą $0.00075 / 1K tokenų Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų |
| KonfigūracijaUžklausos ilgio pakopa 2 | Įkainių lentelė— | Konteksto tokenų daugiau nei200 000 | Konteksto tokenų iki imtinaiBe viršutinės ribos | Mokestis Įvestis · Įvesties tokenai $0.008 / 1K tokenų Išvestis · Išvesties tokenai $0.036 / 1K tokenų Įvestis · Talpyklos skaitymas $0.0008 / 1K tokenų Įvestis · Rašymas į talpyklą $0.00075 / 1K tokenų Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų |
Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →
Užklausų pavyzdžiai
Ailoot Ultra · OpenAI pokalbis
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "google/gemini-3.1-pro-preview-customtools", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')
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='google/gemini-3.1-pro-preview-customtools',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
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"))
from openai import OpenAI
import os
from pathlib import Path
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)
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))
with client.chat.completions.stream(model='google/gemini-3.1-pro-preview-customtools',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
for event in stream:
payload=event.to_dict(mode="json")
log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
print(json.dumps(payload,ensure_ascii=False))
final=stream.get_final_completion()
save_result(final.to_dict(mode="json"),"stream-result")
Gauti ir išsaugoti rezultatus
Ailoot Ultra · OpenAI pokalbis
json arba SSE
Išsaugoti visus baigtus rezultatus
Išsaugokite kiekvieną visą grąžintą atsakymą, failą ir turinio dalį.
Išsaugokite kiekvieną variantą ir jo turinį / įrankių iškvietimus / samprotavimą. SSE prieaugius surinkite pagal varianto / įrankio indeksą; išsaugokite galutinę užbaigimo priežastį ir naudojimo duomenis.
Jei reikia patikrinti pradinį atsakymą
Išsaugokite užklausų / atsakymų ID ir antraštes. Bendras teksto užduoties gavimo URL nepateikiamas.
Atsakymo laukai
| Laukas | Tipas |
|---|---|
Laukaschoices[].index | Tipasinteger |
Laukaschoices[].message.content | Tipasstring|null |
Laukaschoices[].message.tool_calls | Tipastool_call[] |
Laukaschoices[].message.reasoning_content | Tipasstring |
Laukaschoices[].message.reasoning_details | Tipasobject|array |
Laukaschoices[].finish_reason | Tipasstring|null |
Laukasusage | Tipasobject |
Klaidos ir tolesni veiksmai
| Atsakymas | Sąlyga | Kitas žingsnis |
|---|---|---|
Atsakymas400 · invalid_request_error | SąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmė | Kitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus. |
Pseudonimai
Modelių pseudonimai
Ailoot Ultra google/gemini-3.1-pro-preview-customtools
Metodų kelių pseudonimai
Naudokite aukščiau nurodytus metodų kelius.
Susiję ID iškvietimui
Ailoot Ultra · Anthropic pranešimai POST /v1/messages google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtoolsPradžia
Gemini 3.1 Pro Preview Custom Tools – atskiras agentams skirtas variantas, teikiantis pirmenybę programos apibrėžtiems įrankiams kartu su terminalo komandomis. Naudokite jį, kai kelių etapų užduotį turi lemti tokie veiksmai kaip failų skaitymas ar kodo paieška, o programa vykdo kiekvieną įrankį ir grąžina jo rezultatą.
- Leidžiamos įvestys
- Tekstas
- Rezultatai
- json · sse
Prieinama Ailoot · įvestys ir metodai
Ailoot Ultra · Anthropic pranešimai POST /v1/messages
- Įvestis
text- Išvestis
json,sse- Išvesties formatas
- JSON arba SSE
| Laukas | Tipas | Reikalavimas | Reikšmės ir ribos | Numatyta |
|---|---|---|---|---|
Laukasmodel | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos google/gemini-3.1-pro-preview-customtools | Numatyta— |
Laukasmessages | Tipasmessage[] | ReikalavimasPrivaloma | Reikšmės ir ribos | Numatyta— |
Laukasmessages[].role | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos user, assistant | Numatyta— |
Laukasmessages[].content | Tipasstring | ReikalavimasPrivaloma | Reikšmės ir ribos | Numatyta— |
Laukasmax_tokens | Tipasinteger | ReikalavimasPrivaloma | Reikšmės ir ribos | Numatyta— |
Laukasstream | Tipasboolean | ReikalavimasNeprivaloma | Reikšmės ir ribos | Numatytafalse |
Įvesties medžiagos deriniai
Tekstas · UTF-8 tekstas
messages[].content eilutė
Metodo parametrai ir gyvavimo ciklas
| Parametras | Specifikacija |
|---|---|
Parametrascontent_type | Specifikacijaapplication/json |
Parametrasrequired | Specifikacijamodel, messages, max_tokens |
Parametrasoptional_controls | Specifikacijastream |
Parametrasmaterial_types | Specifikacijatext |
Parametrastext_file_material | SpecifikacijaPerskaitykite tikrąjį UTF-8 dokumentą ir įterpkite jo tekstą į nurodytą input lauką arba pranešimo turinio eilutę. |
Gyvavimo ciklas: synchronous_or_streamed
Planai
Tarifų informacija neprideda užklausos parinkčių. Palaikomi parametrai nurodyti prie pasirinkto metodo.
- Spartusis režimas
- Standartinis įkainis Pasirinkus spartųjį režimą
- Flex režimas
- Standartinis įkainis Pasirinkus flex režimą
- Didžiausios samprotavimo pastangos
- Standartinis įkainis Kai didžiausioms samprotavimo pastangoms taikomas numatytasis koregavimas (default)
- Samprotavimo pastangos · high
- Standartinis įkainis Kai samprotavimo pastangų lygis yra high
- Samprotavimo pastangos · low
- Standartinis įkainis Kai samprotavimo pastangų lygis yra low
- Samprotavimo pastangos · medium
- Standartinis įkainis Kai samprotavimo pastangų lygis yra medium
- Išreikštinio podėlio kainodara
- Neįjungta Kai prašoma išreikštinio podėlio
- Samprotavimo išvestis
- Samprotavimui taikomas nurodytas poaibio tarifas bendros išvesties viduje; nepridėkite tų žetonų du kartus. Kai išvestyje yra samprotavimo žetonų
Ailoot įkainiai
Kainos pagal konfigūraciją
Kiekvieną mokestį susiekite su nurodytomis sąlygomis. Kiekvienam alternatyvių konfigūracijų rinkiniui taikykite vieną įkainį.
| Konfigūracija | Įkainių lentelė | Konteksto tokenų daugiau nei | Konteksto tokenų iki imtinai | Mokestis |
|---|---|---|---|---|
| KonfigūracijaBaziniai žetonų įkainiai | Įkainių lentelėBazinis įkainis | Konteksto tokenų daugiau nei— | Konteksto tokenų iki imtinaiBe viršutinės ribos | Mokestis Įvestis · Įvesties tokenai $0.004 / 1K tokenų Išvestis · Išvesties tokenai $0.024 / 1K tokenų Įvestis · Talpyklos skaitymas $0.0004 / 1K tokenų Įvestis · Rašymas į talpyklą $0.00075 / 1K tokenų Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų Išvestis · Samprotavimo išvesties žetonai $0.024 / 1K tokenų |
| KonfigūracijaUžklausos ilgio pakopa 1 | Įkainių lentelė— | Konteksto tokenų daugiau nei0 | Konteksto tokenų iki imtinai200 000 | Mokestis Įvestis · Įvesties tokenai $0.004 / 1K tokenų Išvestis · Išvesties tokenai $0.024 / 1K tokenų Įvestis · Talpyklos skaitymas $0.0004 / 1K tokenų Įvestis · Rašymas į talpyklą $0.00075 / 1K tokenų Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų |
| KonfigūracijaUžklausos ilgio pakopa 2 | Įkainių lentelė— | Konteksto tokenų daugiau nei200 000 | Konteksto tokenų iki imtinaiBe viršutinės ribos | Mokestis Įvestis · Įvesties tokenai $0.008 / 1K tokenų Išvestis · Išvesties tokenai $0.036 / 1K tokenų Įvestis · Talpyklos skaitymas $0.0008 / 1K tokenų Įvestis · Rašymas į talpyklą $0.00075 / 1K tokenų Įvestis · Rašymas į talpyklą, 1 val — / 1K tokenų |
Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →
Užklausų pavyzdžiai
Ailoot Ultra · Anthropic pranešimai
{
"model": "google/gemini-3.1-pro-preview-customtools",
"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': 'google/gemini-3.1-pro-preview-customtools', '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': 'google/gemini-3.1-pro-preview-customtools', '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))
Gauti ir išsaugoti rezultatus
Ailoot Ultra · Anthropic pranešimai
JSON arba SSE
Išsaugoti visus baigtus rezultatus
Išsaugokite kiekvieną visą grąžintą atsakymą, failą ir turinio dalį.
Išsaugokite visus turinio blokus, mąstymo parašus ir tikruosius įrankių naudojimo ID. Surinkite visus SSE blokų prieaugius; pirmasis teksto blokas nėra visa išvestis.
Jei reikia patikrinti pradinį atsakymą
Išsaugokite užklausų / atsakymų ID ir antraštes. Bendras teksto užduoties gavimo URL nepateikiamas.
Atsakymo laukai
| Laukas | Tipas |
|---|---|
Laukasid | Tipasstring |
Laukasmodel | Tipasstring |
Laukascontent[] | Tipastext|thinking|tool_use|other content block |
Laukasstop_reason | Tipasstring|null |
Laukasusage | Tipasobject |
Klaidos ir tolesni veiksmai
| Atsakymas | Sąlyga | Kitas žingsnis |
|---|---|---|
Atsakymas400 · invalid_request_error | SąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmė | Kitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus. |
Pseudonimai
Modelių pseudonimai
Ailoot Ultra google/gemini-3.1-pro-preview-customtools
Metodų kelių pseudonimai
Naudokite aukščiau nurodytus metodų kelius.
Susiję ID iškvietimui
FAQ · Google: Gemini 3.1 Pro Preview Custom Tools
- Kokios įvestys ir rezultatai prieinami?
POST /v1/chat/completions·google/gemini-3.1-pro-preview-customtools:text→textPOST /v1/messages·google/gemini-3.1-pro-preview-customtools:text→json,sse- Kokius laukus naudoja užklausa?
POST /v1/chat/completions·google/gemini-3.1-pro-preview-customtools:model,messages,stream,modalities,providerPOST /v1/messages·google/gemini-3.1-pro-preview-customtools:model,messages,max_tokens,stream- Kokie apribojimai taikomi?
POST /v1/chat/completions·google/gemini-3.1-pro-preview-customtools:messages.min_items:1