face-shape / app.py
benfunke98's picture
added token
93832f6 verified
raw
history blame contribute delete
2.63 kB
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'