Rooni commited on
Commit
14673f3
·
1 Parent(s): c052240

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -49
app.py CHANGED
@@ -8,6 +8,11 @@ from deep_translator import GoogleTranslator
8
  import json
9
  from langdetect import detect
10
 
 
 
 
 
 
11
  api_base = os.getenv("API_BASE")
12
  mmodels = {
13
  "1": "openskyml/dalle-3-xl",
@@ -31,64 +36,75 @@ mmodels = {
31
  "Arcane": "nitrosocke/Arcane-Diffusion"
32
  }
33
  def query(prompt, is_negative=False, model="1", gpt=True, steps=30, cfg_scale=7, sampler="DPM++ 2M Karras", seed=-1, strength=0.7, width=1024, height=1024):
 
34
  if prompt == "" or prompt == None:
35
  raise gr.Error("🙏 Опиши пожалуйста как должно выглядеть изображение")
36
  return None
37
 
38
  key = random.randint(0, 999)
39
-
40
  if gpt:
41
- payload = {
42
- "model": "gpt-4-vision-preview",
43
- "messages": [
44
- {
45
- "role": "user",
46
- "content": "В этом чате тебе будут присылать prompt для нейросетей генераторов изображений. А ты должен будешь пожалуйста улучшить этот prompt. Если во входном сообщении будет что то NSFW, то придумай свой prompt, а не улучшай этот. Твоя задача только улучшить его и всё. Отвечай чисто (ТОЛЬКО улучшеный prompt, без лишнего). Prompt пиши ТОЛЬКО на английском языке пожалуйста.",
47
- },
48
- {
49
- "role": "user",
50
- "content": prompt,
51
- }
52
- ],
53
- "max_tokens": 4095,
54
- }
55
-
56
-
57
- # API ключ для OpenAI
58
- api_key_oi = os.getenv("API_KEY_OPENAI")
59
-
60
- # Заголовки для запроса
61
- headers = {
62
- 'Authorization': f'Bearer {api_key_oi}',
63
- 'Content-Type': 'application/json',
64
- }
65
-
66
- # URL для запроса к API OpenAI
67
- url = "https://api.openai.com/v1/chat/completions"
68
-
69
- # Отправляем запрос в OpenAI
70
- response = requests.post(url, headers=headers, json=payload)
71
-
72
- # Проверяем ответ и возвращаем результат
73
- if response.status_code == 200:
74
- response_json = response.json()
75
- try:
76
- # Пытаемся извлечь текст из ответа
77
- prompt = response_json["choices"][0]["message"]["content"]
78
- print(f'Генерация {key} gpt: {prompt}')
79
- except Exception as e:
80
- print(f"Error processing the image response: {e}")
81
- raise gr.Info("🙄 Помогатор куда-то отошёл. Придётся без него...")
 
 
 
 
 
 
82
  else:
83
- # Если произошла ошибка, возвращаем сообщение об ошибке
84
- print(f"Error: {response.status_code} - {response.text}")
 
85
  API_TOKEN = random.choice([os.getenv("HF_READ_TOKEN"), os.getenv("HF_READ_TOKEN_2"), os.getenv("HF_READ_TOKEN_3"), os.getenv("HF_READ_TOKEN_4"), os.getenv("HF_READ_TOKEN_5")]) # it is free
86
  headers = {"Authorization": f"Bearer {API_TOKEN}"}
87
- language = detect(is_negative)
88
-
89
- if language != 'en':
90
- is_negative = GoogleTranslator(source=language, target='en').translate(is_negative)
91
- print(f'\033[1mГенерация {key} перевод negative:\033[0m {is_negative}')
 
 
 
 
92
 
93
  prompt = f"{prompt} | ultra detail, ultra elaboration, ultra quality, perfect."
94
  print(f'\033[1mГенерация {key}:\033[0m {prompt}')
 
8
  import json
9
  from langdetect import detect
10
 
11
+ last_prompt = None
12
+ last_negative_prompt = None
13
+ last_translation = None
14
+ last_image_description = None
15
+
16
  api_base = os.getenv("API_BASE")
17
  mmodels = {
18
  "1": "openskyml/dalle-3-xl",
 
36
  "Arcane": "nitrosocke/Arcane-Diffusion"
37
  }
38
  def query(prompt, is_negative=False, model="1", gpt=True, steps=30, cfg_scale=7, sampler="DPM++ 2M Karras", seed=-1, strength=0.7, width=1024, height=1024):
39
+ global last_prompt, last_negative_prompt, last_translation, last_image_description
40
  if prompt == "" or prompt == None:
41
  raise gr.Error("🙏 Опиши пожалуйста как должно выглядеть изображение")
42
  return None
43
 
44
  key = random.randint(0, 999)
 
45
  if gpt:
46
+ if prompt != last_prompt:
47
+ last_prompt = prompt
48
+ payload = {
49
+ "model": "gpt-4-vision-preview",
50
+ "messages": [
51
+ {
52
+ "role": "user",
53
+ "content": "В этом чате тебе будут присылать prompt для нейросетей генераторов изображений. А ты должен будешь пожалуйста улучшить этот prompt. Если во входном сообщении будет что то NSFW, то придумай свой prompt, а не улучшай этот. Твоя задача только улучшить его и всё. Отвечай чисто (ТОЛЬКО улучшеный prompt, без лишнего). Prompt пиши ТОЛЬКО на английском языке пожалуйста.",
54
+ },
55
+ {
56
+ "role": "user",
57
+ "content": prompt,
58
+ }
59
+ ],
60
+ "max_tokens": 4095,
61
+ }
62
+
63
+
64
+ # API ключ для OpenAI
65
+ api_key_oi = os.getenv("API_KEY_OPENAI")
66
+
67
+ # Заголовки для запроса
68
+ headers = {
69
+ 'Authorization': f'Bearer {api_key_oi}',
70
+ 'Content-Type': 'application/json',
71
+ }
72
+
73
+ # URL для запроса к API OpenAI
74
+ url = "https://api.openai.com/v1/chat/completions"
75
+
76
+ # Отправляем запрос в OpenAI
77
+ response = requests.post(url, headers=headers, json=payload)
78
+
79
+ # Проверяем ответ и возвращаем результат
80
+ if response.status_code == 200:
81
+ response_json = response.json()
82
+ try:
83
+ # Пытаемся извлечь текст из ответа
84
+ prompt = response_json["choices"][0]["message"]["content"]
85
+ print(f'Генерация {key} gpt: {prompt}')
86
+ except Exception as e:
87
+ print(f"Error processing the image response: {e}")
88
+ raise gr.Info("🙄 Помогатор куда-то отошёл. Придётся без него...")
89
+ else:
90
+ # Если произошла ошибка, возвращаем сообщение об ошибке
91
+ print(f"Error: {response.status_code} - {response.text}")
92
+ last_image_description = prompt
93
  else:
94
+ prompt = last_image_description
95
+ print(f"Используем предыдущее описание изображения: {prompt}")
96
+
97
  API_TOKEN = random.choice([os.getenv("HF_READ_TOKEN"), os.getenv("HF_READ_TOKEN_2"), os.getenv("HF_READ_TOKEN_3"), os.getenv("HF_READ_TOKEN_4"), os.getenv("HF_READ_TOKEN_5")]) # it is free
98
  headers = {"Authorization": f"Bearer {API_TOKEN}"}
99
+ if is_negative != last_negative_prompt:
100
+ last_negative_prompt = is_negative
101
+ language = detect(is_negative)
102
+
103
+ if language != 'en':
104
+ last_translation = GoogleTranslator(source=language, target='en').translate(is_negative)
105
+ print(f'\033[1mГенерация {key} перевод negative:\033[0m {last_translation}')
106
+ else:
107
+ print(f"Используем предыдущий перевод для negative prompt: {last_translation}")
108
 
109
  prompt = f"{prompt} | ultra detail, ultra elaboration, ultra quality, perfect."
110
  print(f'\033[1mГенерация {key}:\033[0m {prompt}')