testckipapi / app.py
howard9963's picture
Upload app.py
b059d32 verified
import os
cache_dir = os.path.join(os.getcwd(), ".cache")
try:
os.makedirs(cache_dir, exist_ok=True)
except PermissionError:
cache_dir = "/tmp/.cache"
os.makedirs(cache_dir, exist_ok=True)
os.environ['TRANSFORMERS_CACHE'] = cache_dir
os.environ['HF_HOME'] = cache_dir
from fastapi import FastAPI, Header, HTTPException, Body
from transformers import AutoTokenizer
# 從環境變數讀取 secret
EXPECTED_API_KEY = os.environ.get("apikey")
# 初始化 tokenizer
tokenizer = AutoTokenizer.from_pretrained("ckiplab/bert-base-chinese-ws")
app = FastAPI(title="CKIP Word Segmentation API")
# ✅ GET 方法:健康檢查
@app.get("/check")
def health_check():
return {"status": "ok", "message": "API is running"}
# ✅ POST 方法:斷詞
@app.post("/tokenize")
async def tokenize(
text: str = Body(..., embed=True),
x_api_key: str = Header(None)
):
# 驗證 API Key 設定是否存在
if not EXPECTED_API_KEY:
raise HTTPException(status_code=500, detail="Server missing API_KEY config")
# 驗證 API Key 值是否正確
if x_api_key != EXPECTED_API_KEY:
raise HTTPException(status_code=401, detail="Invalid API Key")
tokens = tokenizer.tokenize(text)
return {"tokens": tokens}