| from fastapi import FastAPI |
| from pydantic import BaseModel |
| from transformers import pipeline |
|
|
| |
| class Query(BaseModel): |
| query: str |
|
|
| |
| app = FastAPI() |
|
|
| |
| gpt2_model = "gpt2" |
| codebert_model = "microsoft/codebert-base" |
|
|
| |
| gpt2_generator = pipeline("text-generation", model=gpt2_model) |
| codebert_generator = pipeline("fill-mask", model=codebert_model) |
|
|
| |
| def is_coding_query(user_input: str) -> bool: |
| coding_keywords = ['code', 'debug', 'test', 'error', 'compile', 'script', 'function', 'class', 'python', 'java', 'javascript'] |
| return any(keyword in user_input.lower() for keyword in coding_keywords) |
|
|
| |
| @app.get("/") |
| def read_root(): |
| return {"message": "FastAPI on Hugging Face Spaces"} |
|
|
| |
| @app.get("/predict/") |
| async def predict(query: str): |
| |
| if is_coding_query(query): |
| |
| print("Using CodeBERT for code-related query...") |
| masked_query = f"{query} <mask>" |
| response = codebert_generator(masked_query) |
| generated_text = response[0]['sequence'] if response else "Sorry, unable to generate code." |
| else: |
| |
| print("Using GPT-2 for general query...") |
| response = gpt2_generator(query, max_length=1024) |
| generated_text = response[0]["generated_text"] |
|
|
| return {"response": generated_text} |
|
|
| |
| @app.post("/predict/") |
| async def predict_post(query: Query): |
| |
| if is_coding_query(query.query): |
| |
| print("Using CodeBERT for code-related query...") |
| masked_query = f"{query.query} <mask>" |
| response = codebert_generator(masked_query) |
| generated_text = response[0]['sequence'] if response else "Sorry, unable to generate code." |
| else: |
| |
| print("Using GPT-2 for general query...") |
| response = gpt2_generator(query.query, max_length=1024) |
| generated_text = response[0]["generated_text"] |
|
|
| return {"response": generated_text} |
|
|
| |
| if __name__ == "__main__": |
| import uvicorn |
| uvicorn.run(app, host="0.0.0.0", port=7860) |