File size: 1,778 Bytes
202867c
 
ca2c26d
 
202867c
ca2c26d
 
 
 
 
202867c
ca2c26d
 
 
202867c
ca2c26d
 
202867c
 
ca2c26d
 
 
202867c
 
4065212
ca2c26d
202867c
 
 
 
 
 
 
ca2c26d
 
 
 
202867c
ca2c26d
202867c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# from fastapi.staticfiles import StaticFiles
# from fastapi.responses import FileResponse
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import GPT2Tokenizer, GPT2LMHeadModel
from langchain.prompts import PromptTemplate

app = FastAPI()

tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')


class TextRequest(BaseModel):
    question: str


def preprocess_text(question: str):
    return question.lower()


def classify_text(question: str):
    prompt_template = PromptTemplate(template="Answer the following question and classify it: {question}",
                                     input_variables=["question"])
    format_prompt = prompt_template.format(question=question)
    encoded_input = tokenizer(format_prompt, return_tensors='pt')
    # Run the model
    output = model.generate(**encoded_input)  # Use generate method for text generation
    # Decode the model output to text
    decoded_output = tokenizer.decode(output[0])
    response_text = decoded_output.split('\n\n')
    answer=response_text[1]
    return {"answer": answer}


@app.post("/classify")
async def classify_text_endpoint(request: TextRequest):
    preprocessed_text = preprocess_text(request.question)
    response = classify_text(preprocessed_text)
    return response


# 
# 
# @app.get("/infer_t5")
# def t5(input):
#     preprocessed_text = preprocess_text(request.text)
#     response = classify_text(preprocessed_text)
#     output = pipe_flan(input)
#     return {"output": output[0]["generated_text"]}
# 
# app.mount("/", StaticFiles(directory="static", html=True), name="static")
# 
# @app.get("/")
# def index() -> FileResponse:
#   return FileResponse(path="/app/static/index.html", media_type="text/html")