Google: Gemini 3.1 Pro Preview Custom Tools
Gemini 3.1 Pro Preview Custom Tools är en separat agentinriktad variant som prioriterar applikationsdefinierade verktyg tillsammans med terminalkommandon. Använd den när åtgärder som att läsa filer eller söka i kod ska driva en uppgift i flera steg, där applikationen utför varje verktygsåtgärd och returnerar resultatet.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsgoogle/gemini-3.1-pro-preview-customtools - Ailoot Ultra · Anthropic Messages
POST /v1/messagesgoogle/gemini-3.1-pro-preview-customtools
Om modellen
Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.
Gemini 3.1 Pro Preview Custom Tools är Googles specialiserade variant för agentflöden som blandar terminalkommandon med anpassade verktyg. Dess utmärkande beteende är att prioritera applikationsdefinierade verktyg, där tillverkaren anger view_file och search_code som exempel. Den är en separat namngiven variant av Gemini 3.1 Pro Preview, inte en annan etikett för varje Pro-förfrågan. En användbar uppgift förlitar sig på rätt verktyg för att få fram underlag innan det slutliga textresultatet förbereds.
Pro Preview-serien tar emot text, bilder, video, ljud och PDF och returnerar text. Tillverkaren anger en indatagräns på 1,048,576 token och en utdatagräns på 65,536 token för serien. En undersökning av ett kodarkiv kan kombinera källfiler, skriftliga krav och en skärmbild av gränssnittet; ett dokumentflöde kan kombinera sidor och frågor. Märk källorna och definiera den slutliga artefakten så att den stora indatabudgeten stödjer en specifik uppgift snarare än en ofokuserad arkivdump.
För en programvaruagent ska du definiera målet, tillgängliga verktyg och omfattningen av den begärda ändringen. Ett anpassat sökverktyg kan returnera matchande filplatser, medan ett filläsningsverktyg tillhandahåller det exakta relevanta innehållet. Specificera deras godkända argument och returnerade fält. Applikationen utför ett accepterat anrop och skickar tillbaka resultatet till modellen, som kan välja nästa steg utifrån vad som faktiskt hände. En returnerad sökväg är belägg för ett sökresultat, inte bevis på att filen ändrades eller att ett test kördes.
Custom Tools-varianten är avsedd för fall där dessa specialiserade åtgärder ska prioriteras framför ett generellt bash-kommando. En agent kan till exempel först söka efter implementationen av ett namngivet beteende, läsa de tillhörande filerna, jämföra dem med användarens krav och sedan föreslå en avgränsad ändring. Definiera vilka gränssnitt och beteenden som måste behållas och begär en slutlig lista över föreslagna ändringar med den källinformation som användes. Om en kontrollerad testkörare är tillgänglig ska dess faktiska resultat returneras innan en slutsats om ändringen begärs.
Tillverkarens dokumentation för 3.1 Pro omfattar tänkande, strukturerad utdata och funktionsanrop tillsammans med kodexekvering, sökförankring, Google Maps-förankring, URL-kontext och cachelagring. Listningen för filsökning är uttryckligen avgränsad till Google AI Studio. Verktygens tillgänglighet är därför en del av det valda tillverkargränssnittet och applikationens konfiguration. Variantens särskilda preferens för anpassade verktyg tillhandahåller inte i sig verktygen och utför inte någon extern åtgärd. Bevara en post med funktionsnamn, validerade argument och resultat för varje slutförd applikationsåtgärd.
Gemini 3-guiden beskriver tänkandenivåerna low, medium och high för 3.1 Pro, med high som standard. De är relativa utrymmen för analys snarare än strikta tokengarantier. Välj nivå efter uppgiften och ge direkta instruktioner i stället för omfattande promptningsritualer. Om strukturerad utdata krävs ska du definiera fält, typer och regler för saknade värden. För en implementationsrapport kan den slutliga posten identifiera undersökta filer, föreskrivet beteende, föreslagen ändring och återstående frågor. Kontrollera att varje post följer av de faktiska verktygs- eller källresultaten.
Agenter som arbetar över flera samtalsturer måste behålla samtalet och den nödvändiga resonemangskontexten. Tillverkarens guide förklarar thought signatures och skiljer hanterad tillståndsbevarande historik från manuellt hanterad tillståndslös historik. Använd den dokumenterade hanteringen i det valda gränssnittet, särskilt när du fortsätter efter ett verktygsresultat. För långt källmaterial ska den specifika frågan placeras efter kontexten och det begärda svaret knytas till den. Guiden rekommenderar också standardvärdet 1.0 för temperature i stället för att överföra en låg temperaturinställning som kan orsaka loopar vid komplexa uppgifter.
Tillverkaren varnar för att kvaliteten kan variera i användningsfall som inte har nytta av anpassade verktyg. Det är en betydelsefull urvalsgräns: använd profilen för en verktygscentrerad agent i stället för att anta en generell förbättring för varje fristående prompt. Textutdata kan vara en plan, ett kodförslag, en förklaring eller ett strukturerat resultat; bild- eller ljudindata gör inte varianten till en mediegenerator. Granska föreslagen kod, verifiera beräkningar och skilj bekräftade åtgärder från förslag. Behåll den exakta Custom Tools-modellidentiteten tillsammans med uppgiften, verktygsdefinitionerna och returnerade belägg så att en senare fortsättning har en konkret grund.
Praktisk uppgift
Praktisk uppgift
Tekniskt exempel på engelska
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.Förväntat resultat
A file-linked proposed edit and an explicitly unexecuted validation step.Kontrollera resultatet
The answer must not claim that settings.py was changed or a test passed.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtoolsStart
Gemini 3.1 Pro Preview Custom Tools är en separat agentinriktad variant som prioriterar applikationsdefinierade verktyg tillsammans med terminalkommandon. Använd den när åtgärder som att läsa filer eller söka i kod ska driva en uppgift i flera steg, där applikationen utför varje verktygsåtgärd och returnerar resultatet.
- Godkända indata
- Text
- Resultat
- Text
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Indatatyper
text- Utdatatyper
text- Utdataformat
- json eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser google/gemini-3.1-pro-preview-customtools | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser Minsta antal objekt: 1 | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser Exempel: system, user, assistant, tool, function Villkor: Dessa roller representeras uttryckligen av källkodens kompatibilitetstyper; den exakta rolluppsättningen är fortfarande modellspecifik. Beror på modellen | Standard— |
Fältmessages[].content | Typstring|content_part[]|null | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].tool_calls | Typtool_call[] | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].tool_call_id | Typstring | KravValfritt | Värden & gränser Gäller när: role=tool; använd det faktiska returnerade ID:t | Standard— |
Fältmessages[].name | Typstring | KravValfritt | Värden & gränser | Standard— |
Fältmessages[].reasoning_content | Typstring | KravValfritt | Värden & gränser Gäller när: Skicka tillbaka det faktiska returnerade resonemanget när modellen använder det | Standard— |
Fältmessages[].reasoning_details | Typobject|array | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältmax_tokens | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Beror på modellen | Standard— |
Fältmax_completion_tokens | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Beror på modellen | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Fältstream_options.include_usage | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttemperature | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttop_p | Typnumber | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältstop | Typstring|string[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools | Typfunction_tool[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fälttools[].type | Typstring | KravValfritt | Värden & gränser function Beror på modellen | Standard— |
Fälttools[].function.name | Typstring | KravObligatoriskt | Värden & gränser Gäller när: verktyg av typen funktion har tillhandahållits | Standard— |
Fälttools[].function.description | Typstring | KravValfritt | Värden & gränser | Standard— |
Fälttools[].function.parameters | TypJSON_schema | KravValfritt | Värden & gränser | Standard— |
Fälttool_choice | Typstring|object | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältparallel_tool_calls | Typboolean | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältresponse_format | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning_effort | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältreasoning | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältservice_tier | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältinstructions | Typstring | KravValfritt | Värden & gränser Kompatibilitetsfält | Standard— |
Fältfunctions | Typfunction[] | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältfunction_call | Typstring|object | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältprompt_cache_options | Typobject | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältmodalities | Typstring[] | KravValfritt | Värden & gränser text | Standard— |
Fältprovider | Typobject | KravValfritt | Värden & gränser Villkor: provider.options avvisas på denna Ultra-textrutt | Standard— |
Fältcache_control.ttl | Typstring | KravValfritt | Värden & gränser Villkor: 1h avvisas på de faktiska platserna för promptcache | Standard— |
Kombinationer av indatamaterial
Text · UTF8-text
messages[].content
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalmodel, messages |
Parametermaterial_types | Avtaltext |
Parametermessages | Avtalmeddelandearray med strukturen role/content |
Parameterfile_material | Avtaldet faktiska UTF-8-dokumentet infogat som bokstavlig text; inget fil-ID härleds |
Parameteroptional_controls | Avtalstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametercontrol_scope | Avtalmodellspecifikt; användarens funktionsverktyg skiljer sig från värdbaserade verktyg |
Parameteroutput_modalities | Avtaltext |
Parameterhosted_operations | Avtalfalse |
Parametermultimodal_input_binding | Avtalnull |
Livscykel: synchronous_or_streamed
Skicka det exakta modell-ID:t tillsammans med messages.
Kontextlängden är inte en utdatagräns.
En textfil kan tillhandahålla bokstavlig text; bild-/ljud-/filobjektsindata kräver exakt bindning.
Priser
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Standardpris När snabbt läge är valt
- Flex-läge
- Standardpris När läget flex är valt
- Högsta resonemangsnivå
- Standardpris När den högsta resonemangsnivån använder standardjusteringen (default)
- Resonemangsnivå · hög
- Standardpris När resonemangsnivån är hög
- Resonemangsnivå · låg
- Standardpris När resonemangsnivån är låg
- Resonemangsnivå · medelhög
- Standardpris När resonemangsnivån är medelhög
- Prissättning för explicit cache
- Inte aktiverat När explicit cache begärs
- Resonemangsutdata
- Resonemang använder det angivna priset för delmängden inom den sammanlagda utdatan; räkna inte dessa token två gånger. När utdatan innehåller resonemangstoken
Ailoot-priser
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.004 / 1K token Utdata · Utdatatoken $0.024 / 1K token Indata · Cacheläsning $0.0004 / 1K token Indata · Skrivning till cache $0.00075 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token Utdata · Utdatatoken för resonemang $0.024 / 1K token |
| KonfigurationNivå 1 för förfrågans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med200 000 | Avgift Indata · Indatatoken $0.004 / 1K token Utdata · Utdatatoken $0.024 / 1K token Indata · Cacheläsning $0.0004 / 1K token Indata · Skrivning till cache $0.00075 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 2 för förfrågans längd | Prislista— | Kontexttoken, fler än200 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.008 / 1K token Utdata · Utdatatoken $0.036 / 1K token Indata · Cacheläsning $0.0008 / 1K token Indata · Skrivning till cache $0.00075 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
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": "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")
Ta emot och spara resultat
Ailoot Ultra · OpenAI Chat
json eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll varje svarsalternativ och dess innehåll/verktygsanrop/resonemang. Sätt i SSE samman deltauppdateringar efter svarsalternativets/verktygets index och behåll den slutliga avslutsorsaken och användningsuppgifterna.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältchoices[].index | Typinteger |
Fältchoices[].message.content | Typstring|null |
Fältchoices[].message.tool_calls | Typtool_call[] |
Fältchoices[].message.reasoning_content | Typstring |
Fältchoices[].message.reasoning_details | Typobject|array |
Fältchoices[].finish_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot Ultra google/gemini-3.1-pro-preview-customtools
Alias för metodsökvägar
Använd metodsökvägarna som visas ovan.
Relaterade anropar-ID:n
Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtools
google/gemini-3.1-pro-preview-customtoolsStart
Gemini 3.1 Pro Preview Custom Tools är en separat agentinriktad variant som prioriterar applikationsdefinierade verktyg tillsammans med terminalkommandon. Använd den när åtgärder som att läsa filer eller söka i kod ska driva en uppgift i flera steg, där applikationen utför varje verktygsåtgärd och returnerar resultatet.
- Godkända indata
- Text
- Resultat
- json · sse
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Indatatyper
text- Utdatatyper
json,sse- Utdataformat
- JSON eller SSE
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser google/gemini-3.1-pro-preview-customtools | Standard— |
Fältmessages | Typmessage[] | KravObligatoriskt | Värden & gränser | Standard— |
Fältmessages[].role | Typstring | KravObligatoriskt | Värden & gränser user, assistant | Standard— |
Fältmessages[].content | Typstring | KravObligatoriskt | Värden & gränser | Standard— |
Fältmax_tokens | Typinteger | KravObligatoriskt | Värden & gränser | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Kombinationer av indatamaterial
Text · UTF-8-text
sträng i messages[].content
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalmodel, messages, max_tokens |
Parameteroptional_controls | Avtalstream |
Parametermaterial_types | Avtaltext |
Parametertext_file_material | AvtalLäs det faktiska UTF-8-dokumentet och placera texten i det angivna input-fältet eller i strängen för meddelandets innehåll. |
Livscykel: synchronous_or_streamed
Priser
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Standardpris När snabbt läge är valt
- Flex-läge
- Standardpris När läget flex är valt
- Högsta resonemangsnivå
- Standardpris När den högsta resonemangsnivån använder standardjusteringen (default)
- Resonemangsnivå · hög
- Standardpris När resonemangsnivån är hög
- Resonemangsnivå · låg
- Standardpris När resonemangsnivån är låg
- Resonemangsnivå · medelhög
- Standardpris När resonemangsnivån är medelhög
- Prissättning för explicit cache
- Inte aktiverat När explicit cache begärs
- Resonemangsutdata
- Resonemang använder det angivna priset för delmängden inom den sammanlagda utdatan; räkna inte dessa token två gånger. När utdatan innehåller resonemangstoken
Ailoot-priser
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Kontexttoken, fler än | Kontexttoken, upp till och med | Avgift |
|---|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Kontexttoken, fler än— | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.004 / 1K token Utdata · Utdatatoken $0.024 / 1K token Indata · Cacheläsning $0.0004 / 1K token Indata · Skrivning till cache $0.00075 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token Utdata · Utdatatoken för resonemang $0.024 / 1K token |
| KonfigurationNivå 1 för förfrågans längd | Prislista— | Kontexttoken, fler än0 | Kontexttoken, upp till och med200 000 | Avgift Indata · Indatatoken $0.004 / 1K token Utdata · Utdatatoken $0.024 / 1K token Indata · Cacheläsning $0.0004 / 1K token Indata · Skrivning till cache $0.00075 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
| KonfigurationNivå 2 för förfrågans längd | Prislista— | Kontexttoken, fler än200 000 | Kontexttoken, upp till och medIngen övre gräns | Avgift Indata · Indatatoken $0.008 / 1K token Utdata · Utdatatoken $0.036 / 1K token Indata · Cacheläsning $0.0008 / 1K token Indata · Skrivning till cache $0.00075 / 1K token Indata · Skrivning till cache, 1 tim — / 1K token |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · Anthropic Messages
{
"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))
Ta emot och spara resultat
Ailoot Ultra · Anthropic Messages
JSON eller SSE
Behåll alla färdiga resultat
Behåll varje fullständigt returnerat svar, fil och innehållsdel.
Behåll alla innehållsblock, resonemangssignaturer och faktiska ID:n för verktygsanvändning. Sätt samman alla SSE-deltauppdateringar för blocken; ett första textblock är inte hela utdata.
Om det ursprungliga svaret behöver kontrolleras
Behåll begärans/svarets ID:n och huvuden. Ingen generell URL för hämtning av textjobb tillhandahålls.
Svarsfält
| Fält | Typ |
|---|---|
Fältid | Typstring |
Fältmodel | Typstring |
Fältcontent[] | Typtext|thinking|tool_use|other content block |
Fältstop_reason | Typstring|null |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Alias
Modellalias
Ailoot Ultra google/gemini-3.1-pro-preview-customtools
Alias för metodsökvägar
Använd metodsökvägarna som visas ovan.
Relaterade anropar-ID:n
FAQ · Google: Gemini 3.1 Pro Preview Custom Tools
- Vilka indata och resultat finns?
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- Vilka fält använder begäran?
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- Vilka gränser gäller?
POST /v1/chat/completions·google/gemini-3.1-pro-preview-customtools:messages.min_items:1