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.
- 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
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/gemini-3.1-pro-preview-customtoolsAloitus
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ä | Tyyppi | Vaatimus | Arvot & rajat | Oletus |
|---|---|---|---|---|
Kenttämodel | Tyyppistring | VaatimusPakollinen | Arvot & rajat google/gemini-3.1-pro-preview-customtools | Oletus— |
Kenttämessages | Tyyppimessage[] | VaatimusPakollinen | Arvot & rajat Kohteiden vähimmäismäärä: 1 | Oletus— |
Kenttämessages[].role | Tyyppistring | VaatimusPakollinen | Arvot & 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[].content | Tyyppistring|content_part[]|null | VaatimusValinnainen | Arvot & rajat | Oletus— |
Kenttämessages[].tool_calls | Tyyppitool_call[] | VaatimusValinnainen | Arvot & rajat | Oletus— |
Kenttämessages[].tool_call_id | Tyyppistring | VaatimusValinnainen | Arvot & rajat Sovelletaan, kun: role=tool; käytä todella palautettua ID:tä | Oletus— |
Kenttämessages[].name | Tyyppistring | VaatimusValinnainen | Arvot & rajat | Oletus— |
Kenttämessages[].reasoning_content | Tyyppistring | VaatimusValinnainen | Arvot & rajat Sovelletaan, kun: Palauta todella saatu päättely takaisin mallille, kun kyseinen malli käyttää sitä | Oletus— |
Kenttämessages[].reasoning_details | Tyyppiobject|array | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttämax_tokens | Tyyppiinteger | VaatimusValinnainen | Arvot & rajat Vähimmäismäärä: 1 Riippuu mallista | Oletus— |
Kenttämax_completion_tokens | Tyyppiinteger | VaatimusValinnainen | Arvot & rajat Vähimmäismäärä: 1 Riippuu mallista | Oletus— |
Kenttästream | Tyyppiboolean | VaatimusValinnainen | Arvot & rajat | Oletusfalse |
Kenttästream_options.include_usage | Tyyppiboolean | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttätemperature | Tyyppinumber | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttätop_p | Tyyppinumber | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttästop | Tyyppistring|string[] | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttätools | Tyyppifunction_tool[] | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttätools[].type | Tyyppistring | VaatimusValinnainen | Arvot & rajat function Riippuu mallista | Oletus— |
Kenttätools[].function.name | Tyyppistring | VaatimusPakollinen | Arvot & rajat Sovelletaan, kun: funktiotyökalu annettu | Oletus— |
Kenttätools[].function.description | Tyyppistring | VaatimusValinnainen | Arvot & rajat | Oletus— |
Kenttätools[].function.parameters | TyyppiJSON_schema | VaatimusValinnainen | Arvot & rajat | Oletus— |
Kenttätool_choice | Tyyppistring|object | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäparallel_tool_calls | Tyyppiboolean | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäresponse_format | Tyyppiobject | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäreasoning_effort | Tyyppistring | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäreasoning | Tyyppiobject | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäservice_tier | Tyyppistring | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäinstructions | Tyyppistring | VaatimusValinnainen | Arvot & rajat Yhteensopivuuskenttä | Oletus— |
Kenttäfunctions | Tyyppifunction[] | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäfunction_call | Tyyppistring|object | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttäprompt_cache_options | Tyyppiobject | VaatimusValinnainen | Arvot & rajat Riippuu mallista | Oletus— |
Kenttämodalities | Tyyppistring[] | VaatimusValinnainen | Arvot & rajat text | Oletus— |
Kenttäprovider | Tyyppiobject | VaatimusValinnainen | Arvot & rajat Ehdot: provider.options hylätään tällä Ultran tekstireitillä | Oletus— |
Kenttäcache_control.ttl | Tyyppistring | VaatimusValinnainen | Arvot & 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
| Parametri | Sopimus |
|---|---|
Parametricontent_type | Sopimusapplication/json |
Parametrirequired | Sopimusmodel, messages |
Parametrimaterial_types | Sopimustext |
Parametrimessages | Sopimusviestitaulukko role/content-rakenteella |
Parametrifile_material | Sopimusvarsinainen UTF-8-asiakirja lisätään sellaisenaan tekstinä; tiedoston ID:tä ei päätellä |
Parametrioptional_controls | Sopimusstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametricontrol_scope | Sopimusmallikohtainen; käyttäjän funktiotyökalut eroavat palvelun isännöimistä työkaluista |
Parametrioutput_modalities | Sopimustext |
Parametrihosted_operations | Sopimusfalse |
Parametrimultimodal_input_binding | Sopimusnull |
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.
| Asetukset | Hinnasto | Kontekstin tokenit, enemmän kuin | Kontekstin tokenit, enintään raja-arvo mukaan lukien | Veloitus |
|---|---|---|---|---|
| AsetuksetTokenien perushinnat | HinnastoPerushinta | Kontekstin tokenit, enemmän kuin— | Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaa | Veloitus 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 1 | Hinnasto— | Kontekstin tokenit, enemmän kuin0 | Kontekstin tokenit, enintään raja-arvo mukaan lukien200 000 | Veloitus 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 2 | Hinnasto— | Kontekstin tokenit, enemmän kuin200 000 | Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaa | Veloitus 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
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[].index | Tyyppiinteger |
Kenttächoices[].message.content | Tyyppistring|null |
Kenttächoices[].message.tool_calls | Tyyppitool_call[] |
Kenttächoices[].message.reasoning_content | Tyyppistring |
Kenttächoices[].message.reasoning_details | Tyyppiobject|array |
Kenttächoices[].finish_reason | Tyyppistring|null |
Kenttäusage | Tyyppiobject |
Virheet ja seuraavat vaiheet
| Vastaus | Ehto | Seuraava vaihe |
|---|---|---|
Vastaus400 · invalid_request_error | EhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo | Seuraava 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
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-customtoolsAloitus
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ä | Tyyppi | Vaatimus | Arvot & rajat | Oletus |
|---|---|---|---|---|
Kenttämodel | Tyyppistring | VaatimusPakollinen | Arvot & rajat google/gemini-3.1-pro-preview-customtools | Oletus— |
Kenttämessages | Tyyppimessage[] | VaatimusPakollinen | Arvot & rajat | Oletus— |
Kenttämessages[].role | Tyyppistring | VaatimusPakollinen | Arvot & rajat user, assistant | Oletus— |
Kenttämessages[].content | Tyyppistring | VaatimusPakollinen | Arvot & rajat | Oletus— |
Kenttämax_tokens | Tyyppiinteger | VaatimusPakollinen | Arvot & rajat | Oletus— |
Kenttästream | Tyyppiboolean | VaatimusValinnainen | Arvot & rajat | Oletusfalse |
Syöteaineistojen yhdistelmät
Teksti · UTF-8-teksti
messages[].content-merkkijono
Menetelmän parametrit ja elinkaari
| Parametri | Sopimus |
|---|---|
Parametricontent_type | Sopimusapplication/json |
Parametrirequired | Sopimusmodel, messages, max_tokens |
Parametrioptional_controls | Sopimusstream |
Parametrimaterial_types | Sopimustext |
Parametritext_file_material | SopimusLue 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.
| Asetukset | Hinnasto | Kontekstin tokenit, enemmän kuin | Kontekstin tokenit, enintään raja-arvo mukaan lukien | Veloitus |
|---|---|---|---|---|
| AsetuksetTokenien perushinnat | HinnastoPerushinta | Kontekstin tokenit, enemmän kuin— | Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaa | Veloitus 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 1 | Hinnasto— | Kontekstin tokenit, enemmän kuin0 | Kontekstin tokenit, enintään raja-arvo mukaan lukien200 000 | Veloitus 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 2 | Hinnasto— | Kontekstin tokenit, enemmän kuin200 000 | Kontekstin tokenit, enintään raja-arvo mukaan lukienEi ylärajaa | Veloitus 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
{
"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äid | Tyyppistring |
Kenttämodel | Tyyppistring |
Kenttäcontent[] | Tyyppitext|thinking|tool_use|other content block |
Kenttästop_reason | Tyyppistring|null |
Kenttäusage | Tyyppiobject |
Virheet ja seuraavat vaiheet
| Vastaus | Ehto | Seuraava vaihe |
|---|---|---|
Vastaus400 · invalid_request_error | EhtoVirheelliset pakolliset kentät, aineiston esitysmuoto tai parametrin arvo | Seuraava 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
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→textPOST /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,providerPOST /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