base_url。示例使用 gpt-5.6-sol,Astra 套餐改為 gpt-astra。
Chat Completions
curl https://gpt.teamsoclo.site/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"messages": [
{"role": "system", "content": "你是一個樂於助人的助手。"},
{"role": "user", "content": "解釋 JavaScript 中的閉包"}
]
}'
from openai import OpenAI
client = OpenAI(
api_key="sk-xxx",
base_url="https://gpt.teamsoclo.site/v1",
)
resp = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[
{"role": "system", "content": "你是一個樂於助人的助手。"},
{"role": "user", "content": "解釋 JavaScript 中的閉包"},
],
)
print(resp.choices[0].message.content)
print(resp.usage)
import OpenAI from "openai"
const client = new OpenAI({
apiKey: "sk-xxx",
baseURL: "https://gpt.teamsoclo.site/v1",
})
const resp = await client.chat.completions.create({
model: "gpt-5.6-sol",
messages: [
{ role: "system", content: "你是一個樂於助人的助手。" },
{ role: "user", content: "解釋 JavaScript 中的閉包" },
],
})
console.log(resp.choices[0].message.content)
console.log(resp.usage)
base_url 必須包含 /v1,且不能以 / 結尾。庫會自動拼接 /chat/completions。id 為 chatcmpl-...,usage 含 prompt_tokens、completion_tokens 與 completion_tokens_details.reasoning_tokens。額度按 usage.total_tokens 精確扣除。
Responses API
Codex 與新版 SDK 使用此協議。推理引數位於reasoning.effort。
curl https://gpt.teamsoclo.site/v1/responses \
-H "Authorization: Bearer sk-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"input": "寫一個判斷質數的 Python 函式",
"reasoning": {"effort": "medium"}
}'
resp = client.responses.create(
model="gpt-5.6-sol",
input="寫一個判斷質數的 Python 函式",
reasoning={"effort": "medium"},
)
print(resp.output_text)
推理強度
Chat Completions 使用reasoning_effort(low、medium、high)。不設定時閘道器使用 high。簡單任務設為 low 可省 Token:
resp = client.chat.completions.create(
model="gpt-5.6-sol",
reasoning_effort="low",
messages=[{"role": "user", "content": "翻譯成英文:早上好"}],
)
reasoning_effort 僅用於 Chat Completions。Responses API 請用 reasoning: {"effort": ...};向 /v1/responses 傳送 reasoning_effort 會被拒絕為 “Unsupported parameter”。流式輸出
stream = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{"role": "user", "content": "寫一段關於秋天的短文"}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage:
print("\n", chunk.usage)
curl https://gpt.teamsoclo.site/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"messages": [{"role": "user", "content": "寫一段關於秋天的短文"}],
"stream": true,
"stream_options": {"include_usage": true}
}'
遇到難題時模型可能思考較久才輸出第一個 Token。開啟
stream: true 可避免連線被中斷。stream_options.include_usage 讓最後一個資料塊攜帶 usage,便於自行核對額度。傳送圖片(視覺)
圖片放在content 陣列中,可用公開 URL,或本地檔案的 base64。
resp = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "這張圖報了什麼錯?"},
{"type": "image_url", "image_url": {"url": "https://example.com/screenshot.png"}},
],
}],
)
print(resp.choices[0].message.content)
import base64
with open("screenshot.png", "rb") as f:
b64 = base64.b64encode(f.read()).decode()
resp = client.chat.completions.create(
model="gpt-5.6-sol",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "這張圖報了什麼錯?"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
],
}],
)
print(resp.choices[0].message.content)
圖片按尺寸計費。裁剪到需要的部分,不要傳送整張 4K 截圖。
透過 API 檢視模型與額度
# 該 Key 可呼叫的模型
curl https://gpt.teamsoclo.site/v1/models -H "Authorization: Bearer sk-xxx"
# 額度(OpenAI 舊版介面)
curl https://gpt.teamsoclo.site/v1/dashboard/billing/subscription -H "Authorization: Bearer sk-xxx"
curl https://gpt.teamsoclo.site/v1/dashboard/billing/usage -H "Authorization: Bearer sk-xxx"
subscription 在 hard_limit_usd 返回總額度;usage 在 total_usage 返回已用量,單位為美分(比較前先除以 100)。不想自己算就用 檢查頁。