mallit

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 on erillinen agenttikäyttöön painottuva versio, joka antaa etusijan sovelluksen määrittämille työkaluille päätteen komentojen rinnalla. Käytä sitä, kun tiedostojen lukemisen tai koodihaun kaltaisten toimien tulee ohjata monivaiheista tehtävää ja sovellus suorittaa jokaisen työkalutoimen ja palauttaa sen tuloksen.

Tietoa mallista

Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.

Gemini 3.1 Pro Preview Custom Tools on Googlen erikoistunut malliversio agenttityönkulkuihin, joissa yhdistetään päätekomentoja ja omia työkaluja. Sen erityispiirre on, että se antaa etusijan sovelluksen määrittämille työkaluille. Valmistaja antaa esimerkeiksi view_file- ja search_code-työkalut. Se on Gemini 3.1 Pro Preview -mallin erillinen, nimetty versio, ei kaikkien Pro-pyyntöjen toinen nimitys. Hyödyllinen tehtävän suoritus perustuu siihen, että näyttö hankitaan oikealla työkalulla ennen lopullisen tekstimuotoisen tuloksen laatimista.

Pro Preview -mallisarja ottaa vastaan tekstiä, kuvia, videota, ääntä ja PDF-tiedostoja ja palauttaa tekstiä. Valmistaja ilmoittaa mallisarjan syötteen enimmäispituudeksi 1 048 576 tokenia ja tulosteen enimmäispituudeksi 65 536 tokenia. Koodivaraston tutkimuksessa voidaan yhdistää lähdetiedostoja, kirjallisia vaatimuksia ja käyttöliittymän kuvakaappaus. Dokumenttityönkulussa voidaan yhdistää sivuja ja kysymyksiä. Nimeä lähteet ja määritä lopullinen tuotos, jotta suuri syötebudjetti tukee tiettyä tehtävää sen sijaan, että syötteeksi annettaisiin kohdentamaton arkistokooste.

Määritä ohjelmistoagentille tavoite, käytettävissä olevat työkalut ja pyydetyn muutoksen laajuus. Oma hakutyökalu voi palauttaa hakuun osuvien tiedostojen sijainnit, kun taas tiedostonlukutyökalu antaa olennaisen sisällön sellaisenaan. Määritä työkalujen hyväksymät argumentit ja palauttamat kentät. Sovellus suorittaa hyväksytyn kutsun ja välittää tuloksen takaisin mallille, joka voi valita seuraavan vaiheen sen perusteella, mitä todella tapahtui. Palautettu polku on näyttöä hakutuloksesta, mutta se ei todista, että tiedostoa olisi muutettu tai testi suoritettu.

Custom Tools -versio on tarkoitettu tilanteisiin, joissa tällaisia erikoistuneita toimintoja tulee suosia yleisen bash-komennon käyttämisen sijaan. Agentti voi esimerkiksi ensin etsiä nimetyn toiminnon toteutuksen, lukea siihen liittyvät tiedostot, verrata niitä käyttäjän vaatimukseen ja ehdottaa sitten rajattua muutosta. Määritä, mitkä rajapinnat ja mikä toiminta on säilytettävä ennallaan, ja pyydä lopuksi luettelo ehdotetuista muutoksista sekä käytetyt lähdetiedot. Jos käytettävissä on hallittu työkalu testien suorittamiseen, palauta sen todellinen tulos ennen kuin pyydät muutosta koskevaa johtopäätöstä.

Valmistajan 3.1 Pro -dokumentaatiossa kuvataan päättely, rakenteiset tulosteet ja funktiokutsut sekä koodin suorittaminen, hakutuloksiin perustuva lähteistys, Google Maps -tietoihin perustuva lähteistys, URL-konteksti ja välimuistin käyttö. Tiedostohaun maininta on nimenomaisesti rajattu Google AI Studioon. Työkalujen saatavuus riippuu siten valitusta mallin tarjoajan rajapinnasta ja sovelluksen kokoonpanosta. Version erityinen taipumus suosia omia työkaluja ei itsessään tuo näitä työkaluja käyttöön eikä suorita ulkoista toimenpidettä. Pidä kirjaa jokaisen loppuun suoritetun sovellustoiminnon funktion nimestä, validoiduista argumenteista ja tuloksesta.

Gemini 3 -oppaassa kuvataan 3.1 Pro -mallin päättelytasot low, medium ja high, joista high on oletus. Ne ovat suhteellisia analyysibudjetteja, eivät täsmällisiä takeita tokenimäärästä. Valitse taso tehtävän mukaan ja anna suorat ohjeet monimutkaisten kehoterituaalien sijaan. Jos tarvitaan rakenteinen tuloste, määritä kentät, tyypit ja puuttuvien arvojen käsittelysäännöt. Toteutusraportin lopullinen tietue voi yksilöidä tutkitut tiedostot, vaaditun toiminnan, ehdotetun muutoksen ja jäljellä olevat kysymykset. Tarkista, että jokainen merkintä perustuu todellisiin työkalutuloksiin tai lähteistä saatuihin tietoihin.

Useita keskusteluvuoroja käsittelevien agenttien on säilytettävä keskustelu ja tarvittava päättelykonteksti. Valmistajan opas selittää päättelyallekirjoitukset ja erottaa hallinnoidun tilallisen keskusteluhistorian manuaalisesti hallinnoidusta tilattomasta keskusteluhistoriasta. Noudata valitun rajapinnan dokumentoitua käsittelytapaa etenkin jatkaessasi työkalutuloksen jälkeen. Kun käytät laajaa lähdeaineistoa, sijoita täsmällinen kysymys kontekstin jälkeen ja sido pyydetty vastaus tähän kysymykseen. Opas suosittelee myös lämpötilan oletusarvoa 1,0 sen sijaan, että käyttäisit muualta siirrettyä matalaa lämpötila-asetusta, joka voi aiheuttaa silmukoita monimutkaisissa tehtävissä.

Valmistaja varoittaa, että laatu voi vaihdella käyttötapauksissa, jotka eivät hyödy omista työkaluista. Tämä rajaa valintaa olennaisesti: käytä tätä profiilia työkalukeskeisessä agentissa sen sijaan, että olettaisit sen parantavan yleisesti jokaiseen erilliseen kehotteeseen saatavaa tulosta. Tekstituloste voi olla suunnitelma, koodiehdotus, selitys tai rakenteinen tulos. Kuva- tai äänisyötteet eivät tee versiosta mediageneraattoria. Tarkista koodiehdotukset, varmista laskelmien oikeellisuus ja erota vahvistetut toimenpiteet ehdotuksista. Säilytä Custom Tools -mallin täsmälliset tunnistetiedot tehtävän, työkalumäärittelyjen ja palautetun näytön yhteydessä, jotta myöhemmällä jatkolla on konkreettinen perusta.

Käytännön tehtävä

Käytännön tehtävä

Tekninen esimerkki englanniksi

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.

Odotettu tulos

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

Tarkista tulos

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

Aloitus

Gemini 3.1 Pro Preview Custom Tools on erillinen agenttikäyttöön painottuva versio, joka antaa etusijan sovelluksen määrittämille työkaluille päätteen komentojen rinnalla. Käytä sitä, kun tiedostojen lukemisen tai koodihaun kaltaisten toimien tulee ohjata monivaiheista tehtävää ja sovellus suorittaa jokaisen työkalutoimen ja palauttaa sen tuloksen.

Hyväksytyt syötteet
Teksti
Tulokset
Teksti

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
Syötetyypit
text
Tulostyypit
text
Tulosteen muoto
json tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
google/gemini-3.1-pro-preview-customtools
Oletus—
KenttämessagesTyyppimessage[]VaatimusPakollinenArvot & rajat
Kohteiden vähimmäismäärä: 1
Oletus—
Kenttämessages[].roleTyyppistringVaatimusPakollinenArvot & rajat
Esimerkit: system, user, assistant, tool, function
Ehdot: Nämä roolit esitetään nimenomaisesti lähdekoodin yhteensopivuustyypeissä; mallin täsmällinen roolijoukko pysyy mallikohtaisena.
Riippuu mallista
Oletus—
Kenttämessages[].contentTyyppistring|content_part[]|nullVaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].tool_callsTyyppitool_call[]VaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].tool_call_idTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: role=tool; käytä todella palautettua ID:tä
Oletus—
Kenttämessages[].nameTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttämessages[].reasoning_contentTyyppistringVaatimusValinnainenArvot & rajat
Sovelletaan, kun: Palauta todella saatu päättely takaisin mallille, kun kyseinen malli käyttää sitä
Oletus—
Kenttämessages[].reasoning_detailsTyyppiobject|arrayVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttämax_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
Kenttämax_completion_tokensTyyppiintegerVaatimusValinnainenArvot & rajat
Vähimmäismäärä: 1
Riippuu mallista
Oletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
Kenttästream_options.include_usageTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätemperatureTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätop_pTyyppinumberVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttästopTyyppistring|string[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttätoolsTyyppifunction_tool[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttätools[].typeTyyppistringVaatimusValinnainenArvot & rajat
function
Riippuu mallista
Oletus—
Kenttätools[].function.nameTyyppistringVaatimusPakollinenArvot & rajat
Sovelletaan, kun: funktiotyökalu annettu
Oletus—
Kenttätools[].function.descriptionTyyppistringVaatimusValinnainenArvot & rajatOletus—
Kenttätools[].function.parametersTyyppiJSON_schemaVaatimusValinnainenArvot & rajatOletus—
Kenttätool_choiceTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäparallel_tool_callsTyyppibooleanVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäresponse_formatTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäreasoning_effortTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäreasoningTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäservice_tierTyyppistringVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttäinstructionsTyyppistringVaatimusValinnainenArvot & rajat
Yhteensopivuuskenttä
Oletus—
KenttäfunctionsTyyppifunction[]VaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäfunction_callTyyppistring|objectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
Kenttäprompt_cache_optionsTyyppiobjectVaatimusValinnainenArvot & rajat
Riippuu mallista
Oletus—
KenttämodalitiesTyyppistring[]VaatimusValinnainenArvot & rajat
text
Oletus—
KenttäproviderTyyppiobjectVaatimusValinnainenArvot & rajat
Ehdot: provider.options hylätään tällä Ultran tekstireitillä
Oletus—
Kenttäcache_control.ttlTyyppistringVaatimusValinnainenArvot & rajat
Ehdot: 1h hylätään varsinaisissa kehotevälimuistin kohdissa
Oletus—
Syöteaineistojen yhdistelmät

Teksti · UTF8-teksti

messages[].content

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametricontent_typeSopimusapplication/json
ParametrirequiredSopimusmodel, messages
Parametrimaterial_typesSopimustext
ParametrimessagesSopimusviestitaulukko role/content-rakenteella
Parametrifile_materialSopimusvarsinainen UTF-8-asiakirja lisätään sellaisenaan tekstinä; tiedoston ID:tä ei päätellä
Parametrioptional_controlsSopimusstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parametricontrol_scopeSopimusmallikohtainen; käyttäjän funktiotyökalut eroavat palvelun isännöimistä työkaluista
Parametrioutput_modalitiesSopimustext
Parametrihosted_operationsSopimusfalse
Parametrimultimodal_input_bindingSopimusnull

Elinkaari: synchronous_or_streamed

Lähetä mallin täsmällinen ID yhdessä messages-kentän kanssa.

Kontekstin pituus ei ole tuloksen yläraja.

Tekstitiedosto voi antaa tekstiä sellaisenaan; kuva-, ääni- ja tiedosto-objektisyötteet tarvitsevat täsmällisen sidonnan.

Hinnoittelu

Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.

Nopea tila
Vakiohinta Kun nopea tila on valittu
Flex-tila
Vakiohinta Kun flex-tila on valittu
Päättelyn enimmäisteho
Vakiohinta Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä
Päättelyn teho · suuri
Vakiohinta Kun päättelyn teho on suuri
Päättelyn teho · pieni
Vakiohinta Kun päättelyn teho on pieni
Päättelyn teho · keskitaso
Vakiohinta Kun päättelyn teho on keskitasoa
Eksplisiittisen välimuistin hinnoittelu
Ei käytössä Kun eksplisiittistä välimuistia pyydetään
Päättelytulos
Päättelyyn sovelletaan lueteltua osajoukon hintaa kokonaistuloksen sisällä; älä lisää näitä tokeneita kahdesti. Kun tulos sisältää päättelytokeneita

Ailoot-hinnat

Hinnat asetusten mukaan

Kohdista kukin veloitus näytettyihin ehtoihin. Käytä yhtä hintaa kutakin vaihtoehtoisten asetusten ryhmää kohden.

AsetuksetHinnastoKontekstin tokenit, enemmän kuinKontekstin tokenit, enintään raja-arvo mukaan lukienVeloitus
AsetuksetTokenien perushinnatHinnastoPerushintaKontekstin tokenit, enemmän kuin—Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaaVeloitus
Syöte · Syötetokenit $0.004 / 1K tokenia
Tuloste · Tulostokenit $0.024 / 1K tokenia
Syöte · Välimuistin luku $0.0004 / 1K tokenia
Syöte · Välimuistiin kirjoitus $0.00075 / 1K tokenia
Syöte · Välimuistiin kirjoitus, 1 tunti — / 1K tokenia
Tuloste · Päättelyn tulostokenit $0.024 / 1K tokenia
AsetuksetPyynnön pituusluokka 1Hinnasto—Kontekstin tokenit, enemmän kuin0Kontekstin tokenit, enintään raja-arvo mukaan lukien200 000Veloitus
Syöte · Syötetokenit $0.004 / 1K tokenia
Tuloste · Tulostokenit $0.024 / 1K tokenia
Syöte · Välimuistin luku $0.0004 / 1K tokenia
Syöte · Välimuistiin kirjoitus $0.00075 / 1K tokenia
Syöte · Välimuistiin kirjoitus, 1 tunti — / 1K tokenia
AsetuksetPyynnön pituusluokka 2Hinnasto—Kontekstin tokenit, enemmän kuin200 000Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaaVeloitus
Syöte · Syötetokenit $0.008 / 1K tokenia
Tuloste · Tulostokenit $0.036 / 1K tokenia
Syöte · Välimuistin luku $0.0008 / 1K tokenia
Syöte · Välimuistiin kirjoitus $0.00075 / 1K tokenia
Syöte · Välimuistiin kirjoitus, 1 tunti — / 1K tokenia

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Esimerkkipyynnöt

Ailoot Ultra · OpenAI Chat

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

Vastaanota ja tallenna tulokset

Ailoot Ultra · OpenAI Chat

json tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä jokainen vastausvaihtoehto sisältöineen, työkalukutsuineen ja päättelyineen. Kokoa SSE:ssä muutokset vastausvaihtoehdon ja työkalun indeksin mukaan ja säilytä lopullinen päättymissyy sekä käyttötiedot.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
Kenttächoices[].indexTyyppiinteger
Kenttächoices[].message.contentTyyppistring|null
Kenttächoices[].message.tool_callsTyyppitool_call[]
Kenttächoices[].message.reasoning_contentTyyppistring
Kenttächoices[].message.reasoning_detailsTyyppiobject|array
Kenttächoices[].finish_reasonTyyppistring|null
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

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

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

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

Aloitus

Gemini 3.1 Pro Preview Custom Tools on erillinen agenttikäyttöön painottuva versio, joka antaa etusijan sovelluksen määrittämille työkaluille päätteen komentojen rinnalla. Käytä sitä, kun tiedostojen lukemisen tai koodihaun kaltaisten toimien tulee ohjata monivaiheista tehtävää ja sovellus suorittaa jokaisen työkalutoimen ja palauttaa sen tuloksen.

Hyväksytyt syötteet
Teksti
Tulokset
json · sse

Saatavilla Ailootissa · syötteet & menetelmät

Ailoot Ultra · Anthropic Messages POST /v1/messages
Syötetyypit
text
Tulostyypit
json, sse
Tulosteen muoto
JSON tai SSE
KenttäTyyppiVaatimusArvot & rajatOletus
KenttämodelTyyppistringVaatimusPakollinenArvot & rajat
google/gemini-3.1-pro-preview-customtools
Oletus—
KenttämessagesTyyppimessage[]VaatimusPakollinenArvot & rajatOletus—
Kenttämessages[].roleTyyppistringVaatimusPakollinenArvot & rajat
user, assistant
Oletus—
Kenttämessages[].contentTyyppistringVaatimusPakollinenArvot & rajatOletus—
Kenttämax_tokensTyyppiintegerVaatimusPakollinenArvot & rajatOletus—
KenttästreamTyyppibooleanVaatimusValinnainenArvot & rajatOletusfalse
Syöteaineistojen yhdistelmät

Teksti · UTF-8-teksti

messages[].content-merkkijono

Menetelmän parametrit ja elinkaari
ParametriSopimus
Parametricontent_typeSopimusapplication/json
ParametrirequiredSopimusmodel, messages, max_tokens
Parametrioptional_controlsSopimusstream
Parametrimaterial_typesSopimustext
Parametritext_file_materialSopimusLue varsinainen UTF-8-asiakirja ja sijoita sen teksti ilmoitettuun syöte- tai viestisisällön merkkijonoon.

Elinkaari: synchronous_or_streamed

Hinnoittelu

Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.

Nopea tila
Vakiohinta Kun nopea tila on valittu
Flex-tila
Vakiohinta Kun flex-tila on valittu
Päättelyn enimmäisteho
Vakiohinta Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä
Päättelyn teho · suuri
Vakiohinta Kun päättelyn teho on suuri
Päättelyn teho · pieni
Vakiohinta Kun päättelyn teho on pieni
Päättelyn teho · keskitaso
Vakiohinta Kun päättelyn teho on keskitasoa
Eksplisiittisen välimuistin hinnoittelu
Ei käytössä Kun eksplisiittistä välimuistia pyydetään
Päättelytulos
Päättelyyn sovelletaan lueteltua osajoukon hintaa kokonaistuloksen sisällä; älä lisää näitä tokeneita kahdesti. Kun tulos sisältää päättelytokeneita

Ailoot-hinnat

Hinnat asetusten mukaan

Kohdista kukin veloitus näytettyihin ehtoihin. Käytä yhtä hintaa kutakin vaihtoehtoisten asetusten ryhmää kohden.

AsetuksetHinnastoKontekstin tokenit, enemmän kuinKontekstin tokenit, enintään raja-arvo mukaan lukienVeloitus
AsetuksetTokenien perushinnatHinnastoPerushintaKontekstin tokenit, enemmän kuin—Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaaVeloitus
Syöte · Syötetokenit $0.004 / 1K tokenia
Tuloste · Tulostokenit $0.024 / 1K tokenia
Syöte · Välimuistin luku $0.0004 / 1K tokenia
Syöte · Välimuistiin kirjoitus $0.00075 / 1K tokenia
Syöte · Välimuistiin kirjoitus, 1 tunti — / 1K tokenia
Tuloste · Päättelyn tulostokenit $0.024 / 1K tokenia
AsetuksetPyynnön pituusluokka 1Hinnasto—Kontekstin tokenit, enemmän kuin0Kontekstin tokenit, enintään raja-arvo mukaan lukien200 000Veloitus
Syöte · Syötetokenit $0.004 / 1K tokenia
Tuloste · Tulostokenit $0.024 / 1K tokenia
Syöte · Välimuistin luku $0.0004 / 1K tokenia
Syöte · Välimuistiin kirjoitus $0.00075 / 1K tokenia
Syöte · Välimuistiin kirjoitus, 1 tunti — / 1K tokenia
AsetuksetPyynnön pituusluokka 2Hinnasto—Kontekstin tokenit, enemmän kuin200 000Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaaVeloitus
Syöte · Syötetokenit $0.008 / 1K tokenia
Tuloste · Tulostokenit $0.036 / 1K tokenia
Syöte · Välimuistin luku $0.0008 / 1K tokenia
Syöte · Välimuistiin kirjoitus $0.00075 / 1K tokenia
Syöte · Välimuistiin kirjoitus, 1 tunti — / 1K tokenia

Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. Varauksen ja lopullisen veloituksen toiminta →

Esimerkkipyynnöt

Ailoot Ultra · Anthropic Messages

Täydellinen minimaalinen JSON-runkocurl · käytä omaa UTF-8-dokumenttiasiPython · tallenna koko tulos
{
  "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))

Vastaanota ja tallenna tulokset

Ailoot Ultra · Anthropic Messages

JSON tai SSE

Säilytä kaikki valmistuneet tulokset

Säilytä jokainen kokonainen palautettu vastaus, tiedosto ja sisällön osa.

Säilytä kaikki sisältölohkot, päättelyallekirjoitukset ja todelliset työkalukäytön ID:t. Kokoa kaikki SSE-lohkomuutokset; ensimmäinen tekstilohko ei ole koko tulos.

Jos alkuperäinen vastaus on tarkistettava

Säilytä pyyntöjen/vastausten ID:t ja otsakkeet. Yleistä tekstityön haku-URL:ää ei anneta.

Vastauksen kentät
KenttäTyyppi
KenttäidTyyppistring
KenttämodelTyyppistring
Kenttäcontent[]Tyyppitext|thinking|tool_use|other content block
Kenttästop_reasonTyyppistring|null
KenttäusageTyyppiobject
Virheet ja seuraavat vaiheet
VastausEhtoSeuraava vaihe
Vastaus400 · invalid_request_errorEhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvoSeuraava vaiheKorjaa ilmoitetut kentät ennen uutta luontipyyntöä.

Aliakset

Mallin aliakset

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

Menetelmäpolkujen aliakset

Käytä yllä näytettyjä menetelmäpolkuja.

Liittyvät kutsujan ID:t

google/gemini-3.1-pro-preview-customtools

FAQ · Google: Gemini 3.1 Pro Preview Custom Tools
Mitä syötteitä ja tuloksia on saatavilla?

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

Mitä kenttiä pyyntö käyttää?

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

Mitä rajoja sovelletaan?

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

Lisätietoja

Yhdistä Ailoot Claude Codeen, OpenCodeen, Hermesiin tai omaan sovellukseesi.

Yritys ja sen projektisalkku

Yritys ja sen projektisalkku: miljoonia asiakkaita; kuukausittainen myynti miljardiluokassa.

Osta tokenit alennuksella.

Tilausalennus säännölliseen käyttöön. Kampanjakoodit — jopa 50% tokeniostoista.

Tilaus
Valitse alennushintainen paketti säännöllisiä pyyntöjäsi varten.
Kampanjakoodi jopa 50%
Syötä koodi oston yhteydessä. Hinta lasketaan uudelleen voimassa olevan kampanjan mukaan.
Kulut historiassa
Malli, tokenit ja summa tallennetaan jokaiselle pyynnölle.

Valitse tilaus · Katso mallihinnat

Yhdistä API tuotteeseen, jonka myyt.

SaaS, sovellukset ja botit Ailootin palveluehtojen ja lisenssisopimuksen mukaisesti. Pyydä edelleenmyyntiin jälleenmyyjälisenssi.

Kaupallinen sovellus
Lisää tekstin, kuvien, videoiden ja äänen luonti palvelusi maksullisiin ominaisuuksiin.
Jälleenmyyjälisenssi
Lähetä projektikuvaus ja pääsyn toteutustapa. Pyydä kirjalliset käyttö- ja jälleenmyyntiehdot.
Asiakirjat verkkosivustolla
Palveluehdot, lisenssisopimus ja tietojenkäsittelykäytäntö ovat saatavilla ennen yhdistämistä.

Pyydä jälleenmyyjälisenssi · Palveluehdot ja lisenssisopimus