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} | |