File size: 2,627 Bytes
697d9eb
6bfd727
93832f6
 
32a5890
79ca19a
fc9d8f9
a941852
 
8504d0e
53f5b81
a941852
8504d0e
 
 
 
6e17f3a
 
cc2e0bf
3d560b0
cc2e0bf
 
 
 
 
 
 
 
 
 
b13c647
 
 
 
 
 
cc2e0bf
 
 
 
 
 
 
 
307add3
 
f8bd053
 
93832f6
f8bd053
 
 
 
 
 
 
 
 
a941852
f8bd053
 
a941852
f8bd053
 
 
 
 
 
 
 
 
 
 
a941852
f8bd053
 
 
a941852
f8bd053
a941852
f8bd053
 
 
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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'