為程式開發者設計,提供 API 整合的詳細技術說明。
API 金鑰是您存取本服務的唯一憑證。請妥善保管,切勿與他人分享。
我們的 API 與 OpenAI API 格式相容,您可以輕易地將現有專案轉移至本服務。所有請求都需要在 HTTP Header 中包含您的 API 金鑰。
API Base URL: 請先登入以查看 API Base URL
API_BASE_URL 與 API_KEY 設為環境變數,避免金鑰出現在程式碼庫或終端歷史中。 export API_BASE_URL="https://llm.thu.edu.tw/v1"
export API_KEY="YOUR_API_KEY"
在終端執行上述指令後,重新打開您的工具或終端即可生效。
$env:API_BASE_URL = "https://llm.thu.edu.tw/v1"
$env:API_KEY = "YOUR_API_KEY"
若要永久設定,可在系統環境變數中新增對應鍵值。
您可以使用 cURL 在終端機中快速測試 API。
curl https://llm.thu.edu.tw/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "GPT-OSS:120B",
"messages": [
{
"role": "system",
"content": "你是一個來自東海大學的有用助理。"
},
{
"role": "user",
"content": "請介紹東海大學的路思義教堂。"
}
]
}'
在您的 Python 專案中,我們推薦使用 requests 函式庫來進行 API 呼叫。
import os
import requests
import json
# 建議將 API 金鑰儲存在環境變數中
API_KEY = "YOUR_API_KEY"
API_BASE_URL = "https://llm.thu.edu.tw/v1"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}",
}
data = {
"model": "GPT-OSS:120B",
"messages": [
{"role": "system", "content": "你是一個來自東海大學的有用助理。"},
{"role": "user", "content": "請介紹東海大學的路思義教堂。"}
]
}
response = requests.post(f"{API_BASE_URL}/chat/completions", headers=headers, data=json.dumps(data))
if response.status_code == 200:
print(response.json()['choices'][0]['message']['content'])
else:
print(f"請求失敗,狀態碼: {response.status_code}")
print(response.text)
PHP 範例使用 cURL 擴充套件發送 POST 請求。
<?php
$apiKey = "YOUR_API_KEY";
$apiBaseUrl = "https://llm.thu.edu.tw/v1";
$payload = [
"model" => "GPT-OSS:120B",
"messages" => [
["role" => "system", "content" => "你是一個來自東海大學的有用助理。"],
["role" => "user", "content" => "請介紹東海大學的路思義教堂。"],
],
];
$ch = curl_init("{$apiBaseUrl}/chat/completions");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey,
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$data = json_decode($response, true);
echo $data['choices'][0]['message']['content'];
} else {
echo "請求失敗,狀態碼: {$httpCode}\n";
echo $response;
}
?>
Node.js 範例(Node 18+ 提供原生 fetch)。
const API_KEY = 'YOUR_API_KEY';
const API_BASE_URL = 'https://llm.thu.edu.tw/v1';
async function run() {
const payload = {
model: 'GPT-OSS:120B',
messages: [
{ role: 'system', content: '你是一個來自東海大學的有用助理。' },
{ role: 'user', content: '請介紹東海大學的路思義教堂。' },
],
};
const res = await fetch(`${API_BASE_URL}/chat/completions`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${API_KEY}`,
},
body: JSON.stringify(payload),
});
if (!res.ok) {
console.error('請求失敗,狀態碼:', res.status);
console.error(await res.text());
return;
}
const data = await res.json();
console.log(data.choices[0].message.content);
}
run().catch(console.error);
請記得將 YOUR_API_KEY 替換成您自己的金鑰。
https://llm.thu.edu.tw/v1,路徑使用 /chat/completions 或 /embeddings。GPT-OSS:120B、BGE-M3)。檢索增強生成 (Retrieval-Augmented Generation, RAG) 是一種結合資訊檢索與大型語言模型的技術,可以讓模型回答特定領域知識庫的問題。
以下是一個簡易的流程,示範如何使用我們的嵌入模型 (BGE-M3) 和語言模型 (GPT-OSS) 來達成此目標。
首先,將您的文件(例如:PDF、TXT)切分成小段落,並使用 BGE-M3 模型將每個段落轉換為語意向量(embeddings)。
def get_embeddings(texts, model="BGE-M3"):
response = requests.post(
f"{API_BASE_URL}/embeddings",
headers=headers,
data=json.dumps({
"input": texts,
"model": model
})
)
if response.status_code == 200:
return [item['embedding'] for item in response.json()['data']]
else:
# 錯誤處理
return None
# 假設這是您的知識庫文件段落
knowledge_chunks = [
"路思義教堂是一座位於臺灣臺中市西屯區東海大學的基督新教禮拜堂...",
"教堂為著名美國華裔建築師貝聿銘與台灣建築師陳其寬之作...",
"教堂的結構材料採用鋼筋混凝土,建築形式是仿造中國古代的琉璃瓦..."
]
# 取得向量
knowledge_vectors = get_embeddings(knowledge_chunks)
# 在實際應用中,您會將這些向量與原文段落儲存在向量資料庫中 (e.g., ChromaDB, FAISS)
當使用者提出問題時,先將問題同樣轉換為向量,然後在您的向量資料庫中搜尋最相似的文件段落。
user_question = "誰設計了路思義教堂?"
question_vector = get_embeddings([user_question])[0]
# ... 此處為在向量資料庫中搜尋的邏輯 ...
# 假設我們找到了最相關的段落
relevant_context = "教堂為著名美國華裔建築師貝聿銘與台灣建築師陳其寬之作..."
最後,將使用者的原始問題和檢索到的相關段落一起提供給大型語言模型,讓它生成一個精確的答案。
prompt = f"""
根據以下提供的資料,請回答使用者的問題。
資料:
"{relevant_context}"
使用者的問題:
"{user_question}"
答案:
"""
final_data = {
"model": "GPT-OSS:120B",
"messages": [
{"role": "user", "content": prompt}
]
}
response = requests.post(f"{API_BASE_URL}/chat/completions", headers=headers, data=json.dumps(final_data))
print(response.json()['choices'][0]['message']['content'])
# 預期輸出: 路思義教堂是由美國華裔建築師貝聿銘與台灣建築師陳其寬共同設計的。