Spaces:
Sleeping
Sleeping
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 方法:健康檢查 | |
def health_check(): | |
return {"status": "ok", "message": "API is running"} | |
# ✅ POST 方法:斷詞 | |
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} | |