face-shape / app.py
benfunke98's picture
added token
93832f6 verified
from fastapi import FastAPI, UploadFile, File
from transformers import pipeline
from transformers import AutoTokenizer
import transformers
from fastai.vision.all import *
from PIL import Image
import os
import io
import json
access_token = os.getenv("HF_TOKEN")
# NOTE - we configure docs_url to serve the interactive Docs at the root path
# of the app. This way, we can use the docs as a landing page for the app on Spaces.
app = FastAPI(docs_url="/")
@app.post("/face-analyse")
async def face_analyse(file: UploadFile = File(...)):
# Read the uploaded file content
request_object_content = await file.read()
try:
# Attempt to open the image
img = Image.open(io.BytesIO(request_object_content))
except Exception as e:
return {"error": "Failed to open the image file. Make sure it is a valid image file."}
# Check if img is None or not
if img is None:
return {"error": "Failed to open the image file."}
try:
# Resize the image to 300x300 pixels
img = img.resize((300, 300))
except Exception as e:
return {"error": "Failed to resize the image."}
try:
# Assuming 'learn' is your image classifier model
pred, idx, probs = learn.predict(img)
except Exception as e:
return {"error": "Failed to make predictions."}
# Assuming categories is a list of category labels
return dict(zip(categories, map(float, probs)))
# Initialisiere das Modell und den Tokenizer
model = "meta-llama/CodeLlama-7b-hf"
tokenizer = AutoTokenizer.from_pretrained(model, token=access_token)
llama_pipeline = pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto",
)
@app.get("/generate_json")
def generate_code(text: str):
"""
Using the Code Llama pipeline from `transformers`, generate code
from the given input text. The model used is `meta-llama/CodeLlama-7b-hf`.
"""
try:
sequences = llama_pipeline(
text,
do_sample=True,
top_k=10,
temperature=0.1,
top_p=0.95,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200,
)
generated_text = sequences[0]["generated_text"]
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
return {"generated_text": generated_text}
# Beispielaufruf mit curl:
# curl -X 'GET' \
# 'http://localhost:8000/generate_code?text=import%20socket%0A%0Adef%20ping_exponential_backoff(host%3A%20str)%3A' \
# -H 'accept: application/json'