快速開始
下載 Markdown ↓準備帳戶、金鑰與模型 ID,送出第一個請求。
1. 準備帳戶#
在平台註冊或登入,按畫面完成電子郵件或手機驗證,並確認錢包可用餘額。手機註冊、簡訊登入及付款方式依目前設定開放。
2. 建立 API 金鑰#
在金鑰管理建立應用程式專用金鑰,設定群組、模型範圍、有效期與額度,並儲存於伺服器環境變數。
3. 選擇模型與環境變數#
從模型廣場選擇可用的文字對話模型。以下為 Linux、macOS 或 WSL 的 Bash 語法,請替換占位值。
export XINGSUAN_API_KEY='YOUR_API_KEY'
export XINGSUAN_MODEL='YOUR_MODEL_ID'Windows PowerShell 請使用下列寫法,再執行 Python 或 Node.js 範例。Bash 反斜線換行指令不可直接貼入 PowerShell。
$env:XINGSUAN_API_KEY = 'YOUR_API_KEY'
$env:XINGSUAN_MODEL = 'YOUR_MODEL_ID'4. 查詢可用模型#
此 Bash 指令僅查詢模型,不會提交生成請求。
curl 'https://api.xsopc.com/v1/models' \
-H "Authorization: Bearer $XINGSUAN_API_KEY"5. 呼叫文字模型#
此 Bash 指令會提交一次模型請求,成功呼叫依適用價格計費。
curl 'https://api.xsopc.com/v1/chat/completions' \
-H "Authorization: Bearer $XINGSUAN_API_KEY" \
-H 'Content-Type: application/json' \
--data-binary @- <<JSON
{
"model": "$XINGSUAN_MODEL",
"messages": [
{
"role": "user",
"content": "Hello"
}
]
}
JSON典型回應包含 choices 與 usage,實際文字及 token 數量會不同。
{
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 12,
"completion_tokens": 4,
"total_tokens": 16
}
}Python 範例#
先設定環境變數。使用 Python 3 標準函式庫,無須另外安裝 SDK。
import json
import os
import urllib.request
body = {
"model": os.environ["XINGSUAN_MODEL"],
"messages": [{"role": "user", "content": "Hello"}],
}
request = urllib.request.Request(
"https://api.xsopc.com/v1/chat/completions",
data=json.dumps(body).encode("utf-8"),
headers={
"Authorization": "Bearer " + os.environ["XINGSUAN_API_KEY"],
"Content-Type": "application/json",
},
)
with urllib.request.urlopen(request, timeout=120) as response:
result = json.load(response)
print(result["choices"][0]["message"]["content"])JavaScript 範例#
使用內建 fetch 的 Node.js,儲存為 demo.mjs 後執行 node demo.mjs。請在伺服器執行,不要將金鑰放進瀏覽器程式碼。
const response = await fetch('https://api.xsopc.com/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.XINGSUAN_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: process.env.XINGSUAN_MODEL,
messages: [{ role: 'user', content: 'Hello' }],
}),
signal: AbortSignal.timeout(120_000),
})
if (!response.ok) throw new Error(`HTTP ${response.status}`)
const data = await response.json()
console.log(data.choices[0].message.content)