modellen

Google: Gemini 3.1 Pro Preview Custom Tools

Markdown · JSON

Google: Gemini 3.1 Pro Preview Custom Tools

Gemini 3.1 Pro Preview Custom Tools is een afzonderlijke agentgerichte variant die door toepassingen gedefinieerde hulpmiddelen naast terminalopdrachten prioriteit geeft. Gebruik het wanneer acties zoals bestanden lezen of code doorzoeken een taak met meerdere stappen moeten sturen, waarbij de toepassing elk hulpmiddel uitvoert en het resultaat teruggeeft.

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

Gemini 3.1 Pro Preview Custom Tools is Googles gespecialiseerde variant voor agentwerkstromen die terminalopdrachten met aangepaste hulpmiddelen combineren. Het onderscheidende gedrag is voorrang geven aan door de toepassing gedefinieerde hulpmiddelen, waarbij de fabrikant view_file en search_code als voorbeelden geeft. Het is een afzonderlijk benoemde variant van Gemini 3.1 Pro Preview, geen ander label voor elke Pro-aanvraag. Een bruikbare taak vertrouwt op het juiste hulpmiddel om bewijs te verkrijgen voordat het uiteindelijke tekstresultaat wordt voorbereid.

De Pro Preview-lijn accepteert tekst, beelden, video, audio en PDF en geeft tekst terug. De maker vermeldt voor die lijn een invoerlimiet van 1.048.576 tokens en een uitvoerlimiet van 65.536 tokens. Een repositoryonderzoek kan bronbestanden, schriftelijke eisen en een interfaceschermafbeelding combineren; een documentwerkstroom kan pagina’s en vragen combineren. Label de bronnen en definieer het eindresultaat zodat het grote invoerbudget een specifieke taak ondersteunt in plaats van een ongerichte archiefdump.

Definieer voor een softwareagent het doel, de beschikbare hulpmiddelen en de afbakening van de gevraagde wijziging. Een aangepast zoekhulpmiddel kan overeenkomende bestandslocaties teruggeven, terwijl een hulpmiddel om bestanden te lezen de exacte relevante inhoud levert. Specificeer de geaccepteerde argumenten en teruggegeven velden. De toepassing voert een geaccepteerde aanroep uit en geeft het resultaat door aan het model, dat op basis van wat werkelijk is gebeurd de volgende stap kan kiezen. Een teruggegeven pad is bewijs van een zoekresultaat, geen bewijs dat het bestand is gewijzigd of een test is uitgevoerd.

De Custom Tools-variant is bedoeld voor gevallen waarin die gespecialiseerde acties voorrang moeten krijgen boven het gebruik van een algemene bash-opdracht. Een agent kan bijvoorbeeld eerst de implementatie van een benoemd gedrag zoeken, de bijbehorende bestanden lezen, die met de eis van de gebruiker vergelijken en daarna een afgebakende wijziging voorstellen. Definieer welke interfaces en welk gedrag intact moeten blijven en vraag om een eindlijst van voorgestelde wijzigingen met de gebruikte broninformatie. Geef het werkelijke resultaat van een gecontroleerde testrunner terug als die beschikbaar is voordat u om een conclusie over de wijziging vraagt.

De 3.1 Pro-documentatie van de maker omvat denken, gestructureerde uitvoer en functieaanroepen, naast code-uitvoering, zoekgrounding, Google Maps-grounding, URL-context en caching. De vermelding van zoeken in bestanden is expliciet beperkt tot Google AI Studio. De beschikbaarheid van hulpmiddelen maakt dus deel uit van de gekozen producentinterface en toepassingsconfiguratie. De bijzondere voorkeur van de variant voor aangepaste hulpmiddelen levert die hulpmiddelen niet zelf en voert geen externe bewerking uit. Bewaar voor elke voltooide toepassingsactie een record van de functienaam, gevalideerde argumenten en het resultaat.

De Gemini 3-handleiding beschrijft de denkniveaus low, medium en high voor 3.1 Pro, met high als standaard. Dit zijn relatieve analyseruimtes, geen strikte tokengaranties. Kies het niveau op basis van de taak en geef directe instructies in plaats van ingewikkelde promptrituelen. Als gestructureerde uitvoer vereist is, definieer dan de velden, typen en regels voor ontbrekende waarden. Het eindrecord voor een implementatieverslag kan de onderzochte bestanden, het vereiste gedrag, de voorgestelde wijziging en de resterende vragen benoemen. Controleer of elk item uit de werkelijke hulpmiddel- of bronresultaten volgt.

Agenten met meerdere beurten moeten het gesprek en de vereiste redeneercontext behouden. De handleiding van de maker legt gedachtehandtekeningen uit en onderscheidt beheerde toestandhoudende geschiedenis van handmatig beheerde stateloze geschiedenis. Gebruik de gedocumenteerde werkwijze in de geselecteerde interface, vooral wanneer u na een hulpmiddelresultaat verdergaat. Plaats bij lang bronmateriaal de specifieke vraag na de context en koppel het gevraagde antwoord daaraan. De handleiding beveelt ook de standaard temperature van 1.0 aan in plaats van een instelling met lage temperatuur over te nemen die bij complexe taken lussen kan veroorzaken.

De fabrikant waarschuwt dat de kwaliteit kan schommelen in toepassingen die niet van aangepaste hulpmiddelen profiteren. Dit is een betekenisvolle selectiegrens: gebruik dit profiel voor een hulpmiddelgerichte agent in plaats van een algemene verbetering voor elke afzonderlijke prompt aan te nemen. De tekstuitvoer kan een plan, codevoorstel, uitleg of gestructureerd resultaat zijn; beeld- of audio-invoer maakt de variant geen mediagenerator. Inspecteer voorgestelde code, controleer berekeningen en onderscheid bevestigde bewerkingen van suggesties. Behoud de exacte Custom Tools-modelidentiteit bij de taak, hulpmiddeldefinities en teruggegeven bewijs zodat een latere voortzetting een concrete basis heeft.

Praktische taak

Praktische taak

Technisch voorbeeld in het Engels

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.

Verwacht resultaat

A file-linked proposed edit and an explicitly unexecuted validation step.

Resultaat controleren

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 /google/gemini-3.1-pro-preview-customtools

Aan de slag

Gemini 3.1 Pro Preview Custom Tools is een afzonderlijke agentgerichte variant die door toepassingen gedefinieerde hulpmiddelen naast terminalopdrachten prioriteit geeft. Gebruik het wanneer acties zoals bestanden lezen of code doorzoeken een taak met meerdere stappen moeten sturen, waarbij de toepassing elk hulpmiddel uitvoert en het resultaat teruggeeft.

Toegestane invoer
Tekst
Resultaten
Tekst

Beschikbaar in Ailoot · invoer en methoden

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Invoertypen
text
Uitvoertypen
text
Uitvoerformaat
json of SSE
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
google/gemini-3.1-pro-preview-customtools
Standaard—
VeldmessagesTypemessage[]VereisteVereistWaarden en limieten
Minimumaantal items: 1
Standaard—
Veldmessages[].roleTypestringVereisteVereistWaarden en limieten
Voorbeelden: system, user, assistant, tool, function
Voorwaarden: Deze rollen worden expliciet weergegeven door compatibiliteitstypen in de broncode; de exacte rollenverzameling van het model blijft modelspecifiek.
Afhankelijk van het model
Standaard—
Veldmessages[].contentTypestring|content_part[]|nullVereisteOptioneelWaarden en limietenStandaard—
Veldmessages[].tool_callsTypetool_call[]VereisteOptioneelWaarden en limietenStandaard—
Veldmessages[].tool_call_idTypestringVereisteOptioneelWaarden en limieten
Geldt wanneer: role=tool; gebruik het werkelijk teruggegeven ID
Standaard—
Veldmessages[].nameTypestringVereisteOptioneelWaarden en limietenStandaard—
Veldmessages[].reasoning_contentTypestringVereisteOptioneelWaarden en limieten
Geldt wanneer: Stuur de werkelijk teruggegeven redeneringen terug wanneer dit model ze gebruikt
Standaard—
Veldmessages[].reasoning_detailsTypeobject|arrayVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldmax_tokensTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Afhankelijk van het model
Standaard—
Veldmax_completion_tokensTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Afhankelijk van het model
Standaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
Veldstream_options.include_usageTypebooleanVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldtemperatureTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldtop_pTypenumberVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldstopTypestring|string[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldtoolsTypefunction_tool[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldtools[].typeTypestringVereisteOptioneelWaarden en limieten
function
Afhankelijk van het model
Standaard—
Veldtools[].function.nameTypestringVereisteVereistWaarden en limieten
Geldt wanneer: functietool opgegeven
Standaard—
Veldtools[].function.descriptionTypestringVereisteOptioneelWaarden en limietenStandaard—
Veldtools[].function.parametersTypeJSON_schemaVereisteOptioneelWaarden en limietenStandaard—
Veldtool_choiceTypestring|objectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldparallel_tool_callsTypebooleanVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldresponse_formatTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldreasoning_effortTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldreasoningTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldservice_tierTypestringVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldinstructionsTypestringVereisteOptioneelWaarden en limieten
Compatibiliteitsveld
Standaard—
VeldfunctionsTypefunction[]VereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldfunction_callTypestring|objectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
Veldprompt_cache_optionsTypeobjectVereisteOptioneelWaarden en limieten
Afhankelijk van het model
Standaard—
VeldmodalitiesTypestring[]VereisteOptioneelWaarden en limieten
text
Standaard—
VeldproviderTypeobjectVereisteOptioneelWaarden en limieten
Voorwaarden: provider.options wordt op deze Ultra-tekstroute geweigerd
Standaard—
Veldcache_control.ttlTypestringVereisteOptioneelWaarden en limieten
Voorwaarden: 1h wordt op de daadwerkelijke locaties voor promptcaching geweigerd
Standaard—
Combinaties van invoermaterialen

Tekst · UTF8-tekst

messages[].content

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, messages
Parametermaterial_typesContracttext
ParametermessagesContractberichtenarray met de structuur role/content
Parameterfile_materialContractwerkelijk UTF-8-document ingevoegd als letterlijke tekst; er wordt geen bestands-ID afgeleid
Parameteroptional_controlsContractstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametercontrol_scopeContractmodelspecifiek; functietools van de gebruiker verschillen van gehoste tools
Parameteroutput_modalitiesContracttext
Parameterhosted_operationsContractfalse
Parametermultimodal_input_bindingContractnull

Levenscyclus: synchronous_or_streamed

Stuur het exacte model-ID mee met messages.

Contextlengte is geen uitvoerlimiet.

Een tekstbestand kan letterlijke tekst aanleveren; beeld-, audio- en bestandsobjectinvoer vereisen een exacte koppeling.

Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus
Standaardtarief Wanneer de snelle modus is geselecteerd
Flexmodus
Standaardtarief Wanneer de modus flex is geselecteerd
Maximale redeneerinspanning
Standaardtarief Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt
Redeneerinspanning · high
Standaardtarief Wanneer de redeneerinspanning op high staat
Redeneerinspanning · low
Standaardtarief Wanneer de redeneerinspanning op low staat
Redeneerinspanning · medium
Standaardtarief Wanneer de redeneerinspanning op medium staat
Tarieven voor expliciete caching
Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Redeneeruitvoer
Redeneren gebruikt het vermelde deeltarief binnen de totale uitvoer; tel die tokens niet dubbel. Wanneer de uitvoer redeneertokens bevat

Ailoot-tarieven

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieBasistarieven voor tokensTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.004 / 1K tokens
Uitvoer · Uitvoertokens $0.024 / 1K tokens
Invoer · Cache lezen $0.0004 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.024 / 1K tokens
ConfiguratieNiveau 1 voor aanvraaglengteTariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.004 / 1K tokens
Uitvoer · Uitvoertokens $0.024 / 1K tokens
Invoer · Cache lezen $0.0004 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieNiveau 2 voor aanvraaglengteTariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.008 / 1K tokens
Uitvoer · Uitvoertokens $0.036 / 1K tokens
Invoer · Cache lezen $0.0008 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Voorbeeldverzoeken

Ailoot Ultra · OpenAI Chat

curlPython SDKPython-stream
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")

Resultaten ophalen en opslaan

Ailoot Ultra · OpenAI Chat

json of SSE

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar elke keuze en de bijbehorende inhoud, toolaanroepen en redeneringen. Voeg in SSE delta’s samen per keuze-/toolindex en bewaar de uiteindelijke reden van beëindiging en de verbruiksgegevens.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
Veldchoices[].indexTypeinteger
Veldchoices[].message.contentTypestring|null
Veldchoices[].message.tool_callsTypetool_call[]
Veldchoices[].message.reasoning_contentTypestring
Veldchoices[].message.reasoning_detailsTypeobject|array
Veldchoices[].finish_reasonTypestring|null
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot Ultra google/gemini-3.1-pro-preview-customtools

Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

Gerelateerde aanroeper-ID’s

google/gemini-3.1-pro-preview-customtools

Ailoot Ultra · Anthropic Messages POST /v1/messages google/gemini-3.1-pro-preview-customtools

google/gemini-3.1-pro-preview-customtools

Google /google/gemini-3.1-pro-preview-customtools

Aan de slag

Gemini 3.1 Pro Preview Custom Tools is een afzonderlijke agentgerichte variant die door toepassingen gedefinieerde hulpmiddelen naast terminalopdrachten prioriteit geeft. Gebruik het wanneer acties zoals bestanden lezen of code doorzoeken een taak met meerdere stappen moeten sturen, waarbij de toepassing elk hulpmiddel uitvoert en het resultaat teruggeeft.

Toegestane invoer
Tekst
Resultaten
json · sse

Beschikbaar in Ailoot · invoer en methoden

Ailoot Ultra · Anthropic Messages POST /v1/messages
Invoertypen
text
Uitvoertypen
json, sse
Uitvoerformaat
JSON of SSE
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
google/gemini-3.1-pro-preview-customtools
Standaard—
VeldmessagesTypemessage[]VereisteVereistWaarden en limietenStandaard—
Veldmessages[].roleTypestringVereisteVereistWaarden en limieten
user, assistant
Standaard—
Veldmessages[].contentTypestringVereisteVereistWaarden en limietenStandaard—
Veldmax_tokensTypeintegerVereisteVereistWaarden en limietenStandaard—
VeldstreamTypebooleanVereisteOptioneelWaarden en limietenStandaardfalse
Combinaties van invoermaterialen

Tekst · UTF-8-tekst

messages[].content als tekenreeks

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, messages, max_tokens
Parameteroptional_controlsContractstream
Parametermaterial_typesContracttext
Parametertext_file_materialContractLees het werkelijke UTF-8-document en plaats de tekst ervan in de aangegeven invoer of in de inhoudstekenreeks van een bericht.

Levenscyclus: synchronous_or_streamed

Tarieven

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus
Standaardtarief Wanneer de snelle modus is geselecteerd
Flexmodus
Standaardtarief Wanneer de modus flex is geselecteerd
Maximale redeneerinspanning
Standaardtarief Wanneer bij maximale redeneerinspanning de default-aanpassing wordt gebruikt
Redeneerinspanning · high
Standaardtarief Wanneer de redeneerinspanning op high staat
Redeneerinspanning · low
Standaardtarief Wanneer de redeneerinspanning op low staat
Redeneerinspanning · medium
Standaardtarief Wanneer de redeneerinspanning op medium staat
Tarieven voor expliciete caching
Niet ingeschakeld Wanneer expliciete caching wordt aangevraagd
Redeneeruitvoer
Redeneren gebruikt het vermelde deeltarief binnen de totale uitvoer; tel die tokens niet dubbel. Wanneer de uitvoer redeneertokens bevat

Ailoot-tarieven

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelContexttokens, meer danContexttokens, tot en metKosten
ConfiguratieBasistarieven voor tokensTariefstaffelBasistariefContexttokens, meer dan—Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.004 / 1K tokens
Uitvoer · Uitvoertokens $0.024 / 1K tokens
Invoer · Cache lezen $0.0004 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
Uitvoer · Uitvoertokens voor redeneren $0.024 / 1K tokens
ConfiguratieNiveau 1 voor aanvraaglengteTariefstaffel—Contexttokens, meer dan0Contexttokens, tot en met200.000Kosten
Invoer · Invoertokens $0.004 / 1K tokens
Uitvoer · Uitvoertokens $0.024 / 1K tokens
Invoer · Cache lezen $0.0004 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens
ConfiguratieNiveau 2 voor aanvraaglengteTariefstaffel—Contexttokens, meer dan200.000Contexttokens, tot en metGeen bovengrensKosten
Invoer · Invoertokens $0.008 / 1K tokens
Uitvoer · Uitvoertokens $0.036 / 1K tokens
Invoer · Cache lezen $0.0008 / 1K tokens
Invoer · Cache schrijven $0.00075 / 1K tokens
Invoer · Cache schrijven, 1 uur — / 1K tokens

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Voorbeeldverzoeken

Ailoot Ultra · Anthropic Messages

Volledige minimale JSON-bodycurl · gebruik je UTF-8-documentPython · sla het volledige resultaat op
{
  "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))

Resultaten ophalen en opslaan

Ailoot Ultra · Anthropic Messages

JSON of SSE

Alle voltooide resultaten bewaren

Bewaar elk volledig teruggegeven antwoord, bestand en inhoudsonderdeel.

Bewaar alle inhoudsblokken, handtekeningen van redeneringen en werkelijke toolgebruik-ID’s. Voeg alle SSE-blokdelta’s samen; het eerste tekstblok is niet de volledige uitvoer.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar aanvraag-/antwoord-ID’s en headers. Er wordt geen algemene URL meegeleverd om teksttaken op te halen.

Antwoordvelden
VeldType
VeldidTypestring
VeldmodelTypestring
Veldcontent[]Typetext|thinking|tool_use|other content block
Veldstop_reasonTypestring|null
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.

Aliasnamen

Modelaliasnamen

Ailoot Ultra google/gemini-3.1-pro-preview-customtools

Aliasnamen voor methodepaden

Gebruik de hierboven getoonde methodepaden.

Gerelateerde aanroeper-ID’s

google/gemini-3.1-pro-preview-customtools

FAQ · Google: Gemini 3.1 Pro Preview Custom Tools
Welke invoer en resultaten zijn beschikbaar?

POST /v1/chat/completions · google/gemini-3.1-pro-preview-customtools: text → text

POST /v1/messages · google/gemini-3.1-pro-preview-customtools: text → json, sse

Welke velden gebruikt het verzoek?

POST /v1/chat/completions · google/gemini-3.1-pro-preview-customtools: model, messages, stream, modalities, provider

POST /v1/messages · google/gemini-3.1-pro-preview-customtools: model, messages, max_tokens, stream

Welke limieten gelden?

POST /v1/chat/completions · google/gemini-3.1-pro-preview-customtools: messages.min_items: 1

Meer details

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement
Kies een abonnement met korting voor je terugkerende verzoeken.
Promotiecode tot 50%
Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.
Kosten in de geschiedenis
Model, tokens en bedrag worden per verzoek bewaard.

Kies een abonnement · Bekijk modelprijzen

Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie
Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.
Resellerlicentie
Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.
Documenten op de site
Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

Vraag een resellerlicentie aan · Aanbodvoorwaarden en licentieovereenkomst