Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions applications/ColossalChat/start_code_verifier.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
import os
import secrets
from typing import List, Optional

from coati.distributed.reward.code_reward.utils import check_correctness # Assuming utils.py is in the same directory
from fastapi import FastAPI, HTTPException
from fastapi import Depends, FastAPI, HTTPException, Security
from fastapi.security import APIKeyHeader
from pydantic import BaseModel

app = FastAPI()

API_KEY = os.environ.get("CODE_VERIFIER_API_KEY", "")
API_KEY_HEADER = APIKeyHeader(name="X-API-Key", auto_error=True)


def verify_api_key(api_key: str = Security(API_KEY_HEADER)):
if not API_KEY:
raise HTTPException(status_code=500, detail="Server API key not configured")
if not secrets.compare_digest(api_key, API_KEY):
raise HTTPException(status_code=403, detail="Invalid API key")
return api_key


class CheckCorrectnessRequest(BaseModel):
in_outs: Optional[dict]
Expand All @@ -21,7 +35,7 @@ class CheckCorrectnessResponse(BaseModel):


@app.post("/check_correctness", response_model=CheckCorrectnessResponse)
def check_correctness_api(request: CheckCorrectnessRequest):
def check_correctness_api(request: CheckCorrectnessRequest, _: str = Depends(verify_api_key)):
try:
result, metadata = check_correctness(
in_outs=request.in_outs,
Expand Down