Sakana: Fugu Ultra v2
Fugu Ultra v2 daripada Sakana AI menyelaraskan kumpulan model pakar untuk penaakulan kompleks, penyelidikan dan pembangunan perisian. Edisi ini menekankan kerja berterusan dengan bahan visual dan berstruktur serta hasil akhir yang dihimpunkan daripada sumbangan ejen.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionssakana/fugu-ultra-v2 - Ailoot Ultra · Anthropic Messages
POST /v1/messagessakana/fugu-ultra-v2
Tentang model
Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.
Fugu Ultra v2 ialah edisi berfokus prestasi bagi sistem penyelarasan model terlatih Sakana AI. Sistem ini menyelaraskan model pakar untuk penaakulan berbilang langkah yang kompleks, penyelidikan dan kerja perisian tindanan penuh. Pengeluar secara khusus menekankan penaakulan berterusan terhadap bahan visual dan berstruktur dalam edisi ini. Edisi ini berbeza daripada Fugu Max dan keluaran Fugu Ultra terdahulu.
Sistem ini menggunakan penyelaras terlatih untuk memilih, mewakilkan, mengesahkan dan mensintesis kerja dalam kumpulan pakar. Permintaan boleh melibatkan beberapa sumbangan yang saling melengkapi sebelum jawapan akhir dihimpunkan. Penyelarasan ini ialah keupayaan model pengeluar; aplikasi masih membekalkan tugasan, bahan berkaitan dan sebarang pemerhatian luaran yang diperlukan aliran kerjanya.
Pengeluar menetapkan keseluruhan kumpulan ejen untuk pilihan Ultra, manakala penyelaras memilih cara menggunakannya bagi tugasan. Ini berbeza daripada andaian bahawa pengguna boleh mengkonfigurasikan setiap model yang mengambil bahagian secara individu. Sakana juga membezakan penekanan Ultra pada kedalaman jawapan daripada fokus Max pada gabungan yang cekap. Penyelarasan yang lebih mendalam boleh mengambil masa respons lebih lama, seperti yang dijelaskan dalam perbandingan pengeluar.
Untuk tugasan visual atau analisis data, bekalkan carta, jadual atau pemerhatian yang berkaitan dan takrifkan soalan yang perlu diselesaikan. Minta dapatan, bukti yang menyokongnya dan tafsiran perantaraan yang diperlukan untuk menilainya. Artifak yang berguna boleh menggabungkan kesimpulan ringkas dengan catatan data berstruktur, bukannya membiarkan analisis sebagai beberapa pemerhatian yang tidak berhubung.
Untuk kerja perisian, kenal pasti tingkah laku yang dijangka, sumber berkaitan dan hasil semakan semasa. Minta cadangan perubahan yang berfokus bersama syarat yang dapat menentukan sama ada perubahan itu berfungsi. Dalam aliran kerja yang disambungkan, pulangkan hasil pelaksanaan sebenar supaya langkah seterusnya dapat menangani kegagalan yang jelas atau mengekalkan perubahan yang berjaya. Ini membentuk tugasan berasaskan bukti dan artifak selesai, bukannya permintaan terbuka untuk menambah baik kod.
Untuk siasatan penyelidikan, takrifkan skop dan struktur laporan akhir. Laporan boleh memisahkan dapatan yang telah dipastikan, tafsiran yang bersaing dan kebergantungan yang belum diselesaikan. Keluaran v2 Sakana menyatakan tarikh akhir maklumat latihan pada 28 Ogos 2026; bukti luaran yang dibekalkan atau diambil untuk tugasan berasingan daripada sejarah latihan itu. Pastikan perbezaan ini jelas apabila bertanya tentang maklumat yang berubah dari semasa ke semasa.
Tugas praktikal
Tugas praktikal
Contoh teknikal dalam bahasa Inggeris
Compare competing explanations against data
Analyze this supplied table: week 1, 100 visits and 10 signups; week 2, 200 visits and 12 signups. Team hypothesis A says conversion improved; hypothesis B says traffic grew while conversion fell. Calculate the relevant rates, compare both interpretations and list one missing fact needed to investigate the cause.Hasil yang dijangka
Rate calculations, an evidence-based comparison of the hypotheses and one causal-information gap.Semak hasil
Check that signup counts and conversion rates are kept distinct and that no causal explanation is presented as established.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions sakana/fugu-ultra-v2
sakana/fugu-ultra-v2Pengenalan
Fugu Ultra v2 daripada Sakana AI menyelaraskan kumpulan model pakar untuk penaakulan kompleks, penyelidikan dan pembangunan perisian. Edisi ini menekankan kerja berterusan dengan bahan visual dan berstruktur serta hasil akhir yang dihimpunkan daripada sumbangan ejen.
- Input yang diterima
- Teks
- Hasil
- Teks
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Input
text- Output
text- Format output
- json atau SSE
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had sakana/fugu-ultra-v2 | Lalai— |
Medanmessages | Jenismessage[] | KeperluanDiperlukan | Nilai & had Item minimum: 1 | Lalai— |
Medanmessages[].role | Jenisstring | KeperluanDiperlukan | Nilai & had Contoh: system, user, assistant, tool, function Syarat: Peranan ini diwakili secara eksplisit oleh jenis keserasian dalam kod sumber; set peranan model yang tepat kekal khusus untuk setiap model. Bergantung pada model | Lalai— |
Medanmessages[].content | Jenisstring|content_part[]|null | KeperluanPilihan | Nilai & had | Lalai— |
Medanmessages[].tool_calls | Jenistool_call[] | KeperluanPilihan | Nilai & had | Lalai— |
Medanmessages[].tool_call_id | Jenisstring | KeperluanPilihan | Nilai & had Terpakai apabila: role=tool; gunakan ID sebenar yang dipulangkan | Lalai— |
Medanmessages[].name | Jenisstring | KeperluanPilihan | Nilai & had | Lalai— |
Medanmessages[].reasoning_content | Jenisstring | KeperluanPilihan | Nilai & had Terpakai apabila: Hantar semula penaakulan sebenar yang dipulangkan apabila model ini menggunakannya | Lalai— |
Medanmessages[].reasoning_details | Jenisobject|array | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanmax_tokens | Jenisinteger | KeperluanPilihan | Nilai & had Minimum: 1 Bergantung pada model | Lalai— |
Medanmax_completion_tokens | Jenisinteger | KeperluanPilihan | Nilai & had Minimum: 1 Bergantung pada model | Lalai— |
Medanstream | Jenisboolean | KeperluanPilihan | Nilai & had | Lalaifalse |
Medanstream_options.include_usage | Jenisboolean | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantemperature | Jenisnumber | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantop_p | Jenisnumber | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanstop | Jenisstring|string[] | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantools | Jenisfunction_tool[] | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medantools[].type | Jenisstring | KeperluanPilihan | Nilai & had function Bergantung pada model | Lalai— |
Medantools[].function.name | Jenisstring | KeperluanDiperlukan | Nilai & had Terpakai apabila: alat fungsi dibekalkan | Lalai— |
Medantools[].function.description | Jenisstring | KeperluanPilihan | Nilai & had | Lalai— |
Medantools[].function.parameters | JenisJSON_schema | KeperluanPilihan | Nilai & had | Lalai— |
Medantool_choice | Jenisstring|object | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanparallel_tool_calls | Jenisboolean | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanresponse_format | Jenisobject | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanreasoning_effort | Jenisstring | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanreasoning | Jenisobject | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanservice_tier | Jenisstring | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medaninstructions | Jenisstring | KeperluanPilihan | Nilai & had Medan keserasian | Lalai— |
Medanfunctions | Jenisfunction[] | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanfunction_call | Jenisstring|object | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanprompt_cache_options | Jenisobject | KeperluanPilihan | Nilai & had Bergantung pada model | Lalai— |
Medanmodalities | Jenisstring[] | KeperluanPilihan | Nilai & had text | Lalai— |
Medanprovider | Jenisobject | KeperluanPilihan | Nilai & had Syarat: provider.options ditolak pada laluan teks Ultra ini | Lalai— |
Medancache_control.ttl | Jenisstring | KeperluanPilihan | Nilai & had Syarat: 1h ditolak pada lokasi cache prompt yang digunakan | Lalai— |
Gabungan bahan input
Teks · Teks UTF8
messages[].content
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, messages |
Parametermaterial_types | Kontraktext |
Parametermessages | Kontraktatasusunan mesej dengan struktur role/content |
Parameterfile_material | Kontrakdokumen UTF-8 sebenar dimasukkan sebagai teks literal; ID fail tidak diandaikan |
Parameteroptional_controls | Kontrakstream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
Parametercontrol_scope | Kontrakkhusus model; alat fungsi pengguna berbeza daripada alat yang dihoskan |
Parameteroutput_modalities | Kontraktext |
Parameterhosted_operations | Kontrakfalse |
Parametermultimodal_input_binding | Kontraknull |
Kitar hayat: synchronous_or_streamed
Hantar ID model yang tepat bersama messages.
Panjang konteks bukan had output.
Fail teks boleh membekalkan teks literal; input imej/audio/objek fail memerlukan pengikatan tepat.
Pelan harga
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Kadar standard Apabila mod pantas dipilih
- Mod flex
- Kadar standard Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
- Usaha penaakulan · high
- Kadar standard Apabila usaha penaakulan ditetapkan kepada high
- Usaha penaakulan · max
- Kadar standard Apabila usaha penaakulan ditetapkan kepada max
- Usaha penaakulan · xhigh
- Kadar standard Apabila usaha penaakulan ditetapkan kepada xhigh
Kadar Ailoot
Harga mengikut konfigurasi
Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.
| Konfigurasi | Jadual kadar | Token konteks, melebihi | Token konteks, sehingga dan termasuk | Caj |
|---|---|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Token konteks, melebihi— | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.01 / 1K token Output · Token output $0.06 / 1K token Input · Bacaan cache $0.001 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
| KonfigurasiTahap panjang permintaan 1 | Jadual kadar— | Token konteks, melebihi0 | Token konteks, sehingga dan termasuk272,000 | Caj Input · Token input $0.01 / 1K token Output · Token output $0.06 / 1K token Input · Bacaan cache $0.001 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
| KonfigurasiTahap panjang permintaan 2 | Jadual kadar— | Token konteks, melebihi272,000 | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.02 / 1K token Output · Token output $0.09 / 1K token Input · Bacaan cache $0.002 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
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": "sakana/fugu-ultra-v2", "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='sakana/fugu-ultra-v2',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='sakana/fugu-ultra-v2',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")
Terima dan simpan hasil
Ailoot Ultra · OpenAI Chat
json atau SSE
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.
Kekalkan setiap pilihan jawapan bersama kandungan, panggilan alat dan penaakulannya. Dalam SSE, gabungkan delta mengikut indeks pilihan jawapan/alat dan kekalkan sebab penamatan akhir serta data penggunaan.
Jika respons asal perlu disemak
Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.
Medan respons
| Medan | Jenis |
|---|---|
Medanchoices[].index | Jenisinteger |
Medanchoices[].message.content | Jenisstring|null |
Medanchoices[].message.tool_calls | Jenistool_call[] |
Medanchoices[].message.reasoning_content | Jenisstring |
Medanchoices[].message.reasoning_details | Jenisobject|array |
Medanchoices[].finish_reason | Jenisstring|null |
Medanusage | Jenisobject |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
Alias
Alias model
Ailoot Ultra sakana/fugu-ultra-v2
Alias laluan kaedah
Gunakan laluan kaedah yang dipaparkan di atas.
ID pemanggil berkaitan
Ailoot Ultra · Anthropic Messages POST /v1/messages sakana/fugu-ultra-v2
sakana/fugu-ultra-v2Pengenalan
Fugu Ultra v2 daripada Sakana AI menyelaraskan kumpulan model pakar untuk penaakulan kompleks, penyelidikan dan pembangunan perisian. Edisi ini menekankan kerja berterusan dengan bahan visual dan berstruktur serta hasil akhir yang dihimpunkan daripada sumbangan ejen.
- Input yang diterima
- Teks
- Hasil
- json · sse
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · Anthropic Messages POST /v1/messages
- Input
text- Output
json,sse- Format output
- JSON atau SSE
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had sakana/fugu-ultra-v2 | Lalai— |
Medanmessages | Jenismessage[] | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanmessages[].role | Jenisstring | KeperluanDiperlukan | Nilai & had user, assistant | Lalai— |
Medanmessages[].content | Jenisstring | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanmax_tokens | Jenisinteger | KeperluanDiperlukan | Nilai & had | Lalai— |
Medanstream | Jenisboolean | KeperluanPilihan | Nilai & had | Lalaifalse |
Gabungan bahan input
Teks · Teks UTF-8
rentetan messages[].content
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, messages, max_tokens |
Parameteroptional_controls | Kontrakstream |
Parametermaterial_types | Kontraktext |
Parametertext_file_material | KontrakBaca dokumen UTF-8 sebenar dan letakkan teksnya dalam rentetan input atau kandungan mesej yang ditunjukkan. |
Kitar hayat: synchronous_or_streamed
Pelan harga
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Kadar standard Apabila mod pantas dipilih
- Mod flex
- Kadar standard Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Kadar standard Apabila usaha penaakulan maksimum menggunakan pelarasan default
- Usaha penaakulan · high
- Kadar standard Apabila usaha penaakulan ditetapkan kepada high
- Usaha penaakulan · max
- Kadar standard Apabila usaha penaakulan ditetapkan kepada max
- Usaha penaakulan · xhigh
- Kadar standard Apabila usaha penaakulan ditetapkan kepada xhigh
Kadar Ailoot
Harga mengikut konfigurasi
Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.
| Konfigurasi | Jadual kadar | Token konteks, melebihi | Token konteks, sehingga dan termasuk | Caj |
|---|---|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Token konteks, melebihi— | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.01 / 1K token Output · Token output $0.06 / 1K token Input · Bacaan cache $0.001 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
| KonfigurasiTahap panjang permintaan 1 | Jadual kadar— | Token konteks, melebihi0 | Token konteks, sehingga dan termasuk272,000 | Caj Input · Token input $0.01 / 1K token Output · Token output $0.06 / 1K token Input · Bacaan cache $0.001 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
| KonfigurasiTahap panjang permintaan 2 | Jadual kadar— | Token konteks, melebihi272,000 | Token konteks, sehingga dan termasukTiada had atas | Caj Input · Token input $0.02 / 1K token Output · Token output $0.09 / 1K token Input · Bacaan cache $0.002 / 1K token Input · Penulisan cache — / 1K token Input · Penulisan cache, 1 jam — / 1K token |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Contoh permintaan
Ailoot Ultra · Anthropic Messages
{
"model": "sakana/fugu-ultra-v2",
"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': 'sakana/fugu-ultra-v2', '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': 'sakana/fugu-ultra-v2', '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))
Terima dan simpan hasil
Ailoot Ultra · Anthropic Messages
JSON atau SSE
Simpan semua hasil yang selesai
Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.
Kekalkan semua blok kandungan, tandatangan penaakulan dan ID penggunaan alat sebenar. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan output.
Jika respons asal perlu disemak
Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.
Medan respons
| Medan | Jenis |
|---|---|
Medanid | Jenisstring |
Medanmodel | Jenisstring |
Medancontent[] | Jenistext|thinking|tool_use|other content block |
Medanstop_reason | Jenisstring|null |
Medanusage | Jenisobject |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
Alias
Alias model
Ailoot Ultra sakana/fugu-ultra-v2
Alias laluan kaedah
Gunakan laluan kaedah yang dipaparkan di atas.
ID pemanggil berkaitan
FAQ · Sakana: Fugu Ultra v2
- Apakah input dan hasil yang tersedia?
POST /v1/chat/completions·sakana/fugu-ultra-v2:text→textPOST /v1/messages·sakana/fugu-ultra-v2:text→json,sse- Apakah medan yang digunakan oleh permintaan?
POST /v1/chat/completions·sakana/fugu-ultra-v2:model,messages,stream,modalities,providerPOST /v1/messages·sakana/fugu-ultra-v2:model,messages,max_tokens,stream- Apakah had yang terpakai?
POST /v1/chat/completions·sakana/fugu-ultra-v2:messages.min_items:1