SenseNova-V6-Turbo
SenseNova V6 Turbo 是 SenseTime 的輕量影像與文字對話設定。它為聚焦視覺問題及文件任務傳回文字,並保留來源影像與問題供檢查結果。
- Ailoot Ultra · OpenAI Chat · SenseNova-V6-Turbo
POST /v1/chat/completionsSenseNova-V6-Turbo - Ailoot Ultra · Anthropic Messages
POST /v1/messagesSenseNova-V6-Turbo - Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionssensetime/sensenova-v6-turbo - Ailoot Ultra · Anthropic Messages
POST /v1/messagessensetime/sensenova-v6-turbo
關於模型
此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項,依所選方法列於下方。
SenseNova V6 Turbo 是 SenseTime 用於影像與文字對話的輕量多模態設定。開發商設定表指定文字輸出,而較廣泛的 V6 系列結合視覺及語言理解,用於推理與分析。Turbo 與通用 Pro 版本,以及複雜思考的 Reasoner 各為不同設定。聚焦的影像與文字任務可選擇此輕量設定。
界定聚焦的影像/文字任務
提供相關圖片或段落,並說明答案應確立什麼。視覺輔助問題可指出要解讀的物件或標籤;文件問題可要求依可見數值進行比較。影像清晰度應足以支援任務,涉及多頁時也請保留來源識別碼。
以實際用途定義預期結果:簡短解釋、一組擷取值、比較,或有提供素材依據的回覆。圖表任務請指定重要數列、單位與期間。請對照原始影像檢查這些細節,不要將流暢描述當作每個數值都已正確讀取的證據。
連結語言與視覺證據
開發商的 V6 公告描述具備推理、數學及分析優勢的融合多模態模型系列。請以文字指令釐清可見元素之間的關係。比較兩張文件影像時,可以詢問哪個已敘明條件改變,以及哪個區域支持該發現。請將推論後果與來源中實際存在的值分開。
範圍明確的任務適合輕量設定:挑選會改變答案的素材,並說明完成標準。若缺少某個值或圖片模糊,請保留該不確定性,不要強行補成完整記錄。輸出仍是可對照所提供證據檢查的文字成果。
清楚保留 Turbo 設定範圍
開發商分別列出 Pro、Turbo 與 Reasoner,其中 Reasoner 為複雜思考任務提供推理過程及最終答案。較廣泛 V6 系列的長影片及 Omni 互動示範,並未確立 Turbo 影像/文字介面的每個欄位或限制。後續系列版本各有自身媒體及推理控制。
請保留所選 Turbo 設定、來源素材及完整答案供追問使用。有用的交接內容可以包含問題、來源影像,以及附支持證據的解釋或擷取記錄。將結果帶入其他文件或流程前,請檢查重要名稱、數字及視覺關係。這能使輕量多模態任務保持具體,也讓下一次修正對應實際素材。
實用任務
實用任務
英文技術範例
Explain a chart transcription
Use this transcribed chart: returns per 100 orders, Week 1 = 2, Week 2 = 5, Week 3 = unknown. Write a short explanation for an operations colleague, state the recorded change and identify the missing comparison. Do not call the values total returns or infer why Week 2 increased.預期結果
A brief explanation with the Week 1-to-2 change, correct per-100-order units and an explicit Week 3 gap.檢查結果
Check that the rate denominator is retained and no Week 3 trend or cause is invented.Ailoot Ultra · OpenAI Chat · SenseNova-V6-Turbo POST /v1/chat/completions SenseNova-V6-Turbo
SenseNova-V6-TurboSenseNova-V6-Turbosensetime/sensenova-v6-turbo
入門
SenseNova V6 Turbo 是 SenseTime 的輕量影像與文字對話設定。它為聚焦視覺問題及文件任務傳回文字,並保留來源影像與問題供檢查結果。
- 接受的輸入
- 文字
- 結果
- 文字
Ailoot 可用 · 輸入與方法
Ailoot Ultra · OpenAI Chat · SenseNova-V6-Turbo POST /v1/chat/completions
- 輸入
text- 輸出
text- 輸出格式
- json 或 SSE
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 SenseNova-V6-Turbo | 預設值— |
欄位messages | 類型message[] | 要求必填 | 值與限制 項目數下限: 1 | 預設值— |
欄位messages[].role | 類型string | 要求必填 | 值與限制 範例:system, user, assistant, tool, function 條件: 支援的角色集合取決於所選模型。 依模型而定 | 預設值— |
欄位messages[].content | 類型string|content_part[]|null | 要求選填 | 值與限制 | 預設值— |
欄位messages[].tool_calls | 類型tool_call[] | 要求選填 | 值與限制 | 預設值— |
欄位messages[].tool_call_id | 類型string | 要求選填 | 值與限制 適用條件: role=tool;使用實際回傳的 ID | 預設值— |
欄位messages[].name | 類型string | 要求選填 | 值與限制 | 預設值— |
欄位messages[].reasoning_content | 類型string | 要求選填 | 值與限制 適用條件: 此模型使用推理內容時,將實際回傳的推理內容帶回後續請求 | 預設值— |
欄位messages[].reasoning_details | 類型object|array | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位max_tokens | 類型integer | 要求選填 | 值與限制 最小值: 1 依模型而定 | 預設值— |
欄位max_completion_tokens | 類型integer | 要求選填 | 值與限制 最小值: 1 依模型而定 | 預設值— |
欄位stream | 類型boolean | 要求選填 | 值與限制 | 預設值false |
欄位stream_options.include_usage | 類型boolean | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位temperature | 類型number | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位top_p | 類型number | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位stop | 類型string|string[] | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位tools | 類型function_tool[] | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位tools[].type | 類型string | 要求選填 | 值與限制 function 依模型而定 | 預設值— |
欄位tools[].function.name | 類型string | 要求必填 | 值與限制 適用條件: 已提供函式工具 | 預設值— |
欄位tools[].function.description | 類型string | 要求選填 | 值與限制 | 預設值— |
欄位tools[].function.parameters | 類型JSON_schema | 要求選填 | 值與限制 | 預設值— |
欄位tool_choice | 類型string|object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位parallel_tool_calls | 類型boolean | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位response_format | 類型object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位reasoning_effort | 類型string | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位reasoning | 類型object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位service_tier | 類型string | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位instructions | 類型string | 要求選填 | 值與限制 相容性欄位 | 預設值— |
欄位functions | 類型function[] | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位function_call | 類型string|object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位prompt_cache_options | 類型object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位modalities | 類型string[] | 要求選填 | 值與限制 text | 預設值— |
欄位provider | 類型object | 要求選填 | 值與限制 條件: 此 Ultra 文字路由拒絕 provider.options | 預設值— |
欄位cache_control.ttl | 類型string | 要求選填 | 值與限制 條件: 實際提示詞快取位置拒絕 1h | 預設值— |
輸入素材組合
文字 · UTF8 文字
messages[].content
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格model, messages |
參數material_types | 規格text |
參數messages | 規格具有 role/content 結構的訊息陣列 |
參數file_material | 規格請讀取實際的 UTF-8 文件,並將其文字插入 messages[].content。 |
參數optional_controls | 規格stream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
參數control_scope | 規格依模型而定;使用者函式工具與託管工具不同 |
參數output_modalities | 規格text |
參數hosted_operations | 規格false |
參數multimodal_input_binding | 規格null |
生命週期: synchronous_or_streamed
將確切模型 ID 與 messages 一併送出。
上下文長度不是輸出上限。
文字檔案可提供原文文字;圖片/音訊/檔案物件輸入需要精確綁定。
方案
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
Ailoot 費率
各設定的價格
| 設定 | 費率表 | 費用 |
|---|---|---|
| 設定詞元基本費率 | 費率表基本費率 | 費用 輸入 · 輸入 Token $0.00055 / 1K Token 輸出 · 輸出 Token $0.00143 / 1K Token 輸入 · 讀取快取 $0 / 1K Token 輸入 · 寫入快取 $0 / 1K Token 輸入 · 寫入快取,1 小時 — / 1K Token |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
Ailoot Ultra · OpenAI Chat · SenseNova-V6-Turbo
{
"model": "SenseNova-V6-Turbo",
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
}set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source document}"
export AILOOT_TEXT_FILE AILOOT_STREAM
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path
material_path = Path(os.environ['AILOOT_TEXT_FILE'])
if not material_path.is_file():
raise SystemExit('Choose your actual UTF-8 document')
text = material_path.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('The document must contain text')
stream = os.environ.get('AILOOT_STREAM', '0') == '1'
payload = {'model': 'SenseNova-V6-Turbo', 'messages': [{'role': 'user', 'content': 'Hello!'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting passages.\n\n' + text
payload['stream'] = stream
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/chat/completions \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result-body.bin
python3 - <<'PY_RESULT'
import json, os
from pathlib import Path
raw = Path('result-body.bin').read_bytes()
if os.environ.get('AILOOT_STREAM', '0') == '1':
Path('result.sse').write_bytes(raw)
print(raw.decode('utf-8'))
else:
Path('result.json').write_bytes(raw)
result = json.loads(raw)
print(json.dumps(result, ensure_ascii=False, indent=2))
for choice in result.get('choices', []):
print('Choice', choice.get('index'), json.dumps(choice, ensure_ascii=False))
PY_RESULT
import json, os
from pathlib import Path
material_path = Path(os.environ['AILOOT_TEXT_FILE'])
if not material_path.is_file():
raise SystemExit('Choose your actual UTF-8 document')
text = material_path.read_text(encoding='utf-8')
if not text.strip():
raise SystemExit('The document must contain text')
stream = os.environ.get('AILOOT_STREAM', '0') == '1'
payload = {'model': 'SenseNova-V6-Turbo', 'messages': [{'role': 'user', 'content': 'Hello!'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting passages.\n\n' + text
payload['stream'] = stream
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')
request = Request('https://api.ailoot.ai/v1/chat/completions', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers={'Authorization': 'Bearer ' + api_key, 'Content-Type': 'application/json'}, 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-body.bin').write_bytes(error.read())
Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
raise
Path('result-body.bin').write_bytes(raw)
import json, os
from pathlib import Path
raw = Path('result-body.bin').read_bytes()
if os.environ.get('AILOOT_STREAM', '0') == '1':
Path('result.sse').write_bytes(raw)
print(raw.decode('utf-8'))
else:
Path('result.json').write_bytes(raw)
result = json.loads(raw)
print(json.dumps(result, ensure_ascii=False, indent=2))
for choice in result.get('choices', []):
print('Choice', choice.get('index'), json.dumps(choice, ensure_ascii=False))
import { readFileSync, writeFileSync } from 'node:fs';
const apiKey = process.env.AILOOT_API_KEY;
if (!apiKey?.trim()) throw new Error('Set AILOOT_API_KEY');
if (!process.env.AILOOT_TEXT_FILE) throw new Error('Choose your actual UTF-8 document');
const text = readFileSync(process.env.AILOOT_TEXT_FILE, 'utf8');
if (!text.trim()) throw new Error('The document must contain text');
const stream = process.env.AILOOT_STREAM === '1';
const payload = {"model": "SenseNova-V6-Turbo", "messages": [{"role": "user", "content": "Hello!"}]};
payload.messages[0].content = 'Summarize this material and quote supporting passages.\n\n' + text;
payload.stream = stream;
const response = await fetch('https://api.ailoot.ai/v1/chat/completions', { method: 'POST', headers: { 'Authorization': 'Bearer ' + apiKey, 'Content-Type': 'application/json' }, body: JSON.stringify(payload) });
const raw = Buffer.from(await response.arrayBuffer());
writeFileSync('result-body.bin', raw);
writeFileSync('response-headers.txt', [...response.headers].map(([key, value]) => key + ': ' + value).join('\n'));
if (!response.ok) throw new Error('HTTP ' + response.status + '; original response saved in result-body.bin');
if (stream) {
writeFileSync('result.sse', raw);
process.stdout.write(raw);
} else {
writeFileSync('result.json', raw);
const result = JSON.parse(raw.toString('utf8'));
console.log(JSON.stringify(result, null, 2));
for (const choice of result.choices ?? []) console.log('Choice', choice.index, JSON.stringify(choice));
}
接收並儲存結果
Ailoot Ultra · OpenAI Chat · SenseNova-V6-Turbo
json 或 SSE
保留所有已完成的結果
請保留所有完整傳回的回應、檔案與內容區塊。
保留每個候選項及其內容/工具呼叫/推理。SSE 中依候選項/工具索引組合增量,保留最終完成原因與用量。
需要檢查原始回應時
保留請求/回應 ID 與標頭。未提供通用的文字工作擷取 URL。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位choices[].index | 類型integer |
欄位choices[].message.content | 類型string|null |
欄位choices[].message.tool_calls | 類型tool_call[] |
欄位choices[].message.reasoning_content | 類型string |
欄位choices[].message.reasoning_details | 類型object|array |
欄位choices[].finish_reason | 類型string|null |
欄位usage | 類型object |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
別名
模型別名
Ailoot Ultra SenseNova-V6-Turbo, sensetime/sensenova-v6-turbo
方法路徑別名
請使用上方列出的 API 方法路徑。
相關呼叫用 ID
Ailoot Ultra · Anthropic Messages POST /v1/messages SenseNova-V6-Turbo
SenseNova-V6-TurboSenseNova-V6-Turbosensetime/sensenova-v6-turbo
入門
SenseNova V6 Turbo 是 SenseTime 的輕量影像與文字對話設定。它為聚焦視覺問題及文件任務傳回文字,並保留來源影像與問題供檢查結果。
- 接受的輸入
- 文字
- 結果
- json · sse
Ailoot 可用 · 輸入與方法
Ailoot Ultra · Anthropic Messages POST /v1/messages
- 輸入
text- 輸出
json,sse- 輸出格式
- JSON 或 SSE
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 SenseNova-V6-Turbo | 預設值— |
欄位messages | 類型message[] | 要求必填 | 值與限制 | 預設值— |
欄位messages[].role | 類型string | 要求必填 | 值與限制 user, assistant | 預設值— |
欄位messages[].content | 類型string | 要求必填 | 值與限制 | 預設值— |
欄位max_tokens | 類型integer | 要求必填 | 值與限制 | 預設值— |
欄位stream | 類型boolean | 要求選填 | 值與限制 | 預設值false |
輸入素材組合
文字 · UTF-8 文字
messages[].content 字串
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格model, messages, max_tokens |
參數optional_controls | 規格stream |
參數material_types | 規格text |
參數text_file_material | 規格讀取實際 UTF-8 文件,將文字放入指定的 input 或訊息內容字串。 |
生命週期: synchronous_or_streamed
方案
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
Ailoot 費率
各設定的價格
| 設定 | 費率表 | 費用 |
|---|---|---|
| 設定詞元基本費率 | 費率表基本費率 | 費用 輸入 · 輸入 Token $0.00055 / 1K Token 輸出 · 輸出 Token $0.00143 / 1K Token 輸入 · 讀取快取 $0 / 1K Token 輸入 · 寫入快取 $0 / 1K Token 輸入 · 寫入快取,1 小時 — / 1K Token |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
Ailoot Ultra · Anthropic Messages
{
"model": "SenseNova-V6-Turbo",
"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': 'SenseNova-V6-Turbo', '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': 'SenseNova-V6-Turbo', '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))
接收並儲存結果
Ailoot Ultra · Anthropic Messages
JSON 或 SSE
保留所有已完成的結果
請保留所有完整傳回的回應、檔案與內容區塊。
保留所有內容區塊、思考簽章與實際工具使用 ID。組合所有 SSE 區塊增量;第一個文字區塊不是完整輸出。
需要檢查原始回應時
保留請求/回應 ID 與標頭。未提供通用的文字工作擷取 URL。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位id | 類型string |
欄位model | 類型string |
欄位content[] | 類型text|thinking|tool_use|other content block |
欄位stop_reason | 類型string|null |
欄位usage | 類型object |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
別名
模型別名
Ailoot Ultra SenseNova-V6-Turbo, sensetime/sensenova-v6-turbo
方法路徑別名
請使用上方列出的 API 方法路徑。
相關呼叫用 ID
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions sensetime/sensenova-v6-turbo
sensetime/sensenova-v6-turboSenseNova-V6-Turbosensetime/sensenova-v6-turbo
入門
SenseNova V6 Turbo 是 SenseTime 的輕量影像與文字對話設定。它為聚焦視覺問題及文件任務傳回文字,並保留來源影像與問題供檢查結果。
- 接受的輸入
- 文字
- 結果
- 文字
Ailoot 可用 · 輸入與方法
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- 輸入
text- 輸出
text- 輸出格式
- json 或 SSE
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 sensetime/sensenova-v6-turbo | 預設值— |
欄位messages | 類型message[] | 要求必填 | 值與限制 項目數下限: 1 | 預設值— |
欄位messages[].role | 類型string | 要求必填 | 值與限制 範例:system, user, assistant, tool, function 條件: 這些角色由 原始碼中的相容型別明確表示;確切角色集合仍依模型而定。 依模型而定 | 預設值— |
欄位messages[].content | 類型string|content_part[]|null | 要求選填 | 值與限制 | 預設值— |
欄位messages[].tool_calls | 類型tool_call[] | 要求選填 | 值與限制 | 預設值— |
欄位messages[].tool_call_id | 類型string | 要求選填 | 值與限制 適用條件: role=tool;使用實際回傳的 ID | 預設值— |
欄位messages[].name | 類型string | 要求選填 | 值與限制 | 預設值— |
欄位messages[].reasoning_content | 類型string | 要求選填 | 值與限制 適用條件: 此模型使用推理內容時,將實際回傳的推理內容帶回後續請求 | 預設值— |
欄位messages[].reasoning_details | 類型object|array | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位max_tokens | 類型integer | 要求選填 | 值與限制 最小值: 1 依模型而定 | 預設值— |
欄位max_completion_tokens | 類型integer | 要求選填 | 值與限制 最小值: 1 依模型而定 | 預設值— |
欄位stream | 類型boolean | 要求選填 | 值與限制 | 預設值false |
欄位stream_options.include_usage | 類型boolean | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位temperature | 類型number | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位top_p | 類型number | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位stop | 類型string|string[] | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位tools | 類型function_tool[] | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位tools[].type | 類型string | 要求選填 | 值與限制 function 依模型而定 | 預設值— |
欄位tools[].function.name | 類型string | 要求必填 | 值與限制 適用條件: 已提供函式工具 | 預設值— |
欄位tools[].function.description | 類型string | 要求選填 | 值與限制 | 預設值— |
欄位tools[].function.parameters | 類型JSON_schema | 要求選填 | 值與限制 | 預設值— |
欄位tool_choice | 類型string|object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位parallel_tool_calls | 類型boolean | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位response_format | 類型object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位reasoning_effort | 類型string | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位reasoning | 類型object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位service_tier | 類型string | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位instructions | 類型string | 要求選填 | 值與限制 相容性欄位 | 預設值— |
欄位functions | 類型function[] | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位function_call | 類型string|object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位prompt_cache_options | 類型object | 要求選填 | 值與限制 依模型而定 | 預設值— |
欄位modalities | 類型string[] | 要求選填 | 值與限制 text | 預設值— |
欄位provider | 類型object | 要求選填 | 值與限制 條件: 此 Ultra 文字路由拒絕 provider.options | 預設值— |
欄位cache_control.ttl | 類型string | 要求選填 | 值與限制 條件: 實際提示詞快取位置拒絕 1h | 預設值— |
輸入素材組合
文字 · UTF8 文字
messages[].content
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格model, messages |
參數material_types | 規格text |
參數messages | 規格具有 role/content 結構的訊息陣列 |
參數file_material | 規格實際 UTF-8 文件以原文文字插入;不推定檔案 ID |
參數optional_controls | 規格stream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
參數control_scope | 規格依模型而定;使用者函式工具與託管工具不同 |
參數output_modalities | 規格text |
參數hosted_operations | 規格false |
參數multimodal_input_binding | 規格null |
生命週期: synchronous_or_streamed
將確切模型 ID 與 messages 一併送出。
上下文長度不是輸出上限。
文字檔案可提供原文文字;圖片/音訊/檔案物件輸入需要精確綁定。
方案
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
Ailoot 費率
各設定的價格
| 設定 | 費率表 | 費用 |
|---|---|---|
| 設定詞元基本費率 | 費率表基本費率 | 費用 輸入 · 輸入 Token $0.00055 / 1K Token 輸出 · 輸出 Token $0.00143 / 1K Token 輸入 · 讀取快取 $0 / 1K Token 輸入 · 寫入快取 $0 / 1K Token 輸入 · 寫入快取,1 小時 — / 1K Token |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
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": "sensetime/sensenova-v6-turbo", "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='sensetime/sensenova-v6-turbo',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='sensetime/sensenova-v6-turbo',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")
接收並儲存結果
Ailoot Ultra · OpenAI Chat
json 或 SSE
保留所有已完成的結果
請保留所有完整傳回的回應、檔案與內容區塊。
保留每個候選項及其內容/工具呼叫/推理。SSE 中依候選項/工具索引組合增量,保留最終完成原因與用量。
需要檢查原始回應時
保留請求/回應 ID 與標頭。未提供通用的文字工作擷取 URL。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位choices[].index | 類型integer |
欄位choices[].message.content | 類型string|null |
欄位choices[].message.tool_calls | 類型tool_call[] |
欄位choices[].message.reasoning_content | 類型string |
欄位choices[].message.reasoning_details | 類型object|array |
欄位choices[].finish_reason | 類型string|null |
欄位usage | 類型object |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
別名
模型別名
Ailoot Ultra SenseNova-V6-Turbo, sensetime/sensenova-v6-turbo
方法路徑別名
請使用上方列出的 API 方法路徑。
相關呼叫用 ID
Ailoot Ultra · Anthropic Messages POST /v1/messages sensetime/sensenova-v6-turbo
sensetime/sensenova-v6-turboSenseNova-V6-Turbosensetime/sensenova-v6-turbo
入門
SenseNova V6 Turbo 是 SenseTime 的輕量影像與文字對話設定。它為聚焦視覺問題及文件任務傳回文字,並保留來源影像與問題供檢查結果。
- 接受的輸入
- 文字
- 結果
- json · sse
Ailoot 可用 · 輸入與方法
Ailoot Ultra · Anthropic Messages POST /v1/messages
- 輸入
text- 輸出
json,sse- 輸出格式
- JSON 或 SSE
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 sensetime/sensenova-v6-turbo | 預設值— |
欄位messages | 類型message[] | 要求必填 | 值與限制 | 預設值— |
欄位messages[].role | 類型string | 要求必填 | 值與限制 user, assistant | 預設值— |
欄位messages[].content | 類型string | 要求必填 | 值與限制 | 預設值— |
欄位max_tokens | 類型integer | 要求必填 | 值與限制 | 預設值— |
欄位stream | 類型boolean | 要求選填 | 值與限制 | 預設值false |
輸入素材組合
文字 · UTF-8 文字
messages[].content 字串
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格model, messages, max_tokens |
參數optional_controls | 規格stream |
參數material_types | 規格text |
參數text_file_material | 規格讀取實際 UTF-8 文件,將文字放入指定的 input 或訊息內容字串。 |
生命週期: synchronous_or_streamed
方案
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
Ailoot 費率
各設定的價格
| 設定 | 費率表 | 費用 |
|---|---|---|
| 設定詞元基本費率 | 費率表基本費率 | 費用 輸入 · 輸入 Token $0.00055 / 1K Token 輸出 · 輸出 Token $0.00143 / 1K Token 輸入 · 讀取快取 $0 / 1K Token 輸入 · 寫入快取 $0 / 1K Token 輸入 · 寫入快取,1 小時 — / 1K Token |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
Ailoot Ultra · Anthropic Messages
{
"model": "sensetime/sensenova-v6-turbo",
"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': 'sensetime/sensenova-v6-turbo', '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': 'sensetime/sensenova-v6-turbo', '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))
接收並儲存結果
Ailoot Ultra · Anthropic Messages
JSON 或 SSE
保留所有已完成的結果
請保留所有完整傳回的回應、檔案與內容區塊。
保留所有內容區塊、思考簽章與實際工具使用 ID。組合所有 SSE 區塊增量;第一個文字區塊不是完整輸出。
需要檢查原始回應時
保留請求/回應 ID 與標頭。未提供通用的文字工作擷取 URL。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位id | 類型string |
欄位model | 類型string |
欄位content[] | 類型text|thinking|tool_use|other content block |
欄位stop_reason | 類型string|null |
欄位usage | 類型object |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
別名
模型別名
Ailoot Ultra SenseNova-V6-Turbo, sensetime/sensenova-v6-turbo
方法路徑別名
請使用上方列出的 API 方法路徑。
相關呼叫用 ID
FAQ · SenseNova-V6-Turbo
- 可以使用哪些輸入與結果?
POST /v1/chat/completions·SenseNova-V6-Turbo:text→textPOST /v1/messages·SenseNova-V6-Turbo:text→json,ssePOST /v1/chat/completions·sensetime/sensenova-v6-turbo:text→textPOST /v1/messages·sensetime/sensenova-v6-turbo:text→json,sse- 請求使用哪些欄位?
POST /v1/chat/completions·SenseNova-V6-Turbo:model,messages,stream,modalities,providerPOST /v1/messages·SenseNova-V6-Turbo:model,messages,max_tokens,streamPOST /v1/chat/completions·sensetime/sensenova-v6-turbo:model,messages,stream,modalities,providerPOST /v1/messages·sensetime/sensenova-v6-turbo:model,messages,max_tokens,stream- 適用哪些限制?
POST /v1/chat/completions·SenseNova-V6-Turbo:messages.min_items:1POST /v1/chat/completions·sensetime/sensenova-v6-turbo:messages.min_items:1