MrDonStuff commited on
Commit
0aba7e2
·
verified ·
1 Parent(s): 99cf388

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -57
app.py CHANGED
@@ -1,71 +1,57 @@
1
- from flask import Flask, request, jsonify, send_from_directory
2
- import requests
3
- import io
4
- import random
5
- import os
6
- from PIL import Image
7
- from datetime import datetime
8
 
9
  app = Flask(__name__)
 
10
 
11
- API_URL = "https://api-inference.huggingface.co/models/openskyml/dalle-3-xl"
12
- API_TOKEN = os.getenv("HF_READ_TOKEN") # it is free
13
- headers = {"Authorization": f"Bearer {API_TOKEN}"}
14
 
15
- TEMP_DIR = "temp"
 
 
 
 
 
 
 
16
 
 
 
 
 
 
 
 
 
17
 
18
- def query(prompt, is_negative=False, steps=1, cfg_scale=6, seed=None):
19
- payload = {
20
- "inputs": prompt,
21
- "is_negative": is_negative,
22
- "steps": steps,
23
- "cfg_scale": cfg_scale,
24
- "seed": seed if seed is not None else random.randint(-1, 2147483647)
25
- }
26
 
27
- image_bytes = requests.post(API_URL, headers=headers, json=payload).content
28
- image = Image.open(io.BytesIO(image_bytes))
29
- return image
30
 
31
-
32
- def save_image(image, prompt):
33
- timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
34
- filename = f"{prompt}-{random.randint(1, 100000)}-{timestamp}.png"
35
- filepath = os.path.join(TEMP_DIR, filename)
36
- image.save(filepath, format='PNG')
37
- return filename
38
 
39
 
40
  @app.route("/generate", methods=["POST"])
41
- def generate():
42
- try:
43
- data = request.get_json()
44
- prompt = data["prompt"]
45
- negative_prompt = data.get("negative_prompt", "")
46
- is_negative = True if negative_prompt else False
47
-
48
- image = query(prompt, is_negative=is_negative)
49
- filename = save_image(image, prompt)
50
-
51
- response = {
52
- "success": True,
53
- "image_filename": filename
54
- }
55
- except Exception as e:
56
- response = {
57
- "success": False,
58
- "error": str(e)
59
- }
60
-
61
- return jsonify(response)
62
-
63
-
64
- @app.route("/temp/<filename>")
65
- def show_image(filename):
66
- return send_from_directory(TEMP_DIR, filename)
67
-
68
-
69
  if __name__ == "__main__":
70
  if not os.path.exists(TEMP_DIR):
71
  os.makedirs(TEMP_DIR)
 
1
+ from flask import Flask, request, jsonify
2
+ from huggingface_hub import InferenceClient
 
 
 
 
 
3
 
4
  app = Flask(__name__)
5
+ app.config["DEBUG"] = True # Enable for debugging
6
 
7
+ # Load model client
8
+ client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
 
9
 
10
+ # Function for text generation with enhanced prompt formatting
11
+ def generate(
12
+ prompt, history, system_prompt, temperature=0.9, max_new_tokens=256, top_p=0.95, repetition_penalty=1.0
13
+ ):
14
+ temperature = float(temperature)
15
+ if temperature < 1e-2:
16
+ temperature = 1e-2
17
+ top_p = float(top_p)
18
 
19
+ generate_kwargs = dict(
20
+ temperature=temperature,
21
+ max_new_tokens=max_new_tokens,
22
+ top_p=top_p,
23
+ repetition_penalty=repetition_penalty,
24
+ do_sample=True,
25
+ seed=42,
26
+ )
27
 
28
+ # Enhanced prompt formatting for better context
29
+ formatted_prompt = f"{system_prompt}\n" + ''.join(f"{user_prompt} ||| {bot_response}\n" for user_prompt, bot_response in history) + f"\n{prompt}"
 
 
 
 
 
 
30
 
31
+ stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
32
+ output = ""
 
33
 
34
+ for response in stream:
35
+ output += response.token.text
36
+ return output
 
 
 
 
37
 
38
 
39
  @app.route("/generate", methods=["POST"])
40
+ def generate_text():
41
+ data = request.json
42
+ prompt = data.get("prompt")
43
+ history = data.get("history", [])
44
+ system_prompt = data.get("system_prompt")
45
+ temperature = data.get("temperature", 0.9)
46
+ max_new_tokens = data.get("max_new_tokens", 256)
47
+ top_p = data.get("top_p", 0.95)
48
+ repetition_penalty = data.get("repetition_penalty", 1.0)
49
+
50
+ response = generate(
51
+ prompt, history, system_prompt, temperature, max_new_tokens, top_p, repetition_penalty
52
+ )
53
+
54
+ return jsonify({"response": response})
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  if __name__ == "__main__":
56
  if not os.path.exists(TEMP_DIR):
57
  os.makedirs(TEMP_DIR)