vladd19 commited on
Commit
bd2724d
·
verified ·
1 Parent(s): a91915f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -15
app.py CHANGED
@@ -10,19 +10,21 @@ from tools.final_answer import FinalAnswerTool
10
  from Gradio_UI import GradioUI
11
 
12
  # Below is an example of a tool that does nothing. Amaze us with your creativity !
 
 
13
  @tool
14
  def generate_image(
15
  prompt: str,
16
  negative_prompt: str = "blurry, text, watermark, low quality",
17
  width: int = 1024,
18
  height: int = 1024
19
- ) -> Image.Image:
20
  """
21
  Генерирует изображение по текстовому описанию.
22
 
23
  Пример:
24
  >>> generate_image("cute kitten on a blanket")
25
- <PIL.Image.Image>
26
 
27
  Args:
28
  prompt: Что нарисовать (подробно, на английском лучше).
@@ -31,14 +33,13 @@ def generate_image(
31
  height: Высота в пикселях (кратно 8, макс 1024).
32
 
33
  Returns:
34
- PIL.Image.Image: Сгенерированное изображение.
35
  """
36
  from huggingface_hub import InferenceClient
37
  from PIL import Image
38
  import io
39
- import os, sys
40
 
41
- # 🔍 Отладка
42
  print(f"🔍 generate_image: prompt='{prompt[:50]}...', size={width}x{height}", file=sys.stderr)
43
 
44
  client = InferenceClient(token=os.getenv("HF_TOKEN"))
@@ -54,22 +55,21 @@ def generate_image(
54
  guidance_scale=3.5
55
  )
56
 
57
- # 🔑 Конвертация в PIL.Image
58
  if isinstance(result, Image.Image):
59
  image = result
60
- elif isinstance(result, bytes):
61
- image = Image.open(io.BytesIO(result))
62
- elif hasattr(result, 'image') and isinstance(result.image, Image.Image):
63
- image = result.image # Распаковка AgentImage
64
  else:
65
- # Попытка обработать как поток байтов
66
  image = Image.open(io.BytesIO(result))
67
 
68
- print(f"✅ generate_image: изображение успешно сгенерировано!", file=sys.stderr)
 
 
 
 
 
69
 
70
- # 🔑 ВОЗВРАЩАЕМ САМ ОБЪЕКТ PIL.Image!
71
- # GradioUI сам поймет, что это картинка, и правильно отобразит её в чате
72
- return image
73
 
74
  except Exception as e:
75
  print(f"❌ generate_image exception: {e}", file=sys.stderr)
 
10
  from Gradio_UI import GradioUI
11
 
12
  # Below is an example of a tool that does nothing. Amaze us with your creativity !
13
+ from smolagents.agent_types import AgentImage # 🔑 Импортируем AgentImage
14
+
15
  @tool
16
  def generate_image(
17
  prompt: str,
18
  negative_prompt: str = "blurry, text, watermark, low quality",
19
  width: int = 1024,
20
  height: int = 1024
21
+ ) -> AgentImage: # 🔑 Указываем тип возвращаемого значения AgentImage
22
  """
23
  Генерирует изображение по текстовому описанию.
24
 
25
  Пример:
26
  >>> generate_image("cute kitten on a blanket")
27
+ <AgentImage>
28
 
29
  Args:
30
  prompt: Что нарисовать (подробно, на английском лучше).
 
33
  height: Высота в пикселях (кратно 8, макс 1024).
34
 
35
  Returns:
36
+ AgentImage: Сгенерированное изображение.
37
  """
38
  from huggingface_hub import InferenceClient
39
  from PIL import Image
40
  import io
41
+ import os, tempfile, sys
42
 
 
43
  print(f"🔍 generate_image: prompt='{prompt[:50]}...', size={width}x{height}", file=sys.stderr)
44
 
45
  client = InferenceClient(token=os.getenv("HF_TOKEN"))
 
55
  guidance_scale=3.5
56
  )
57
 
58
+ # Получаем PIL объект
59
  if isinstance(result, Image.Image):
60
  image = result
 
 
 
 
61
  else:
 
62
  image = Image.open(io.BytesIO(result))
63
 
64
+ # 🔑 Возвращаем сохранение во временный файл
65
+ with tempfile.NamedTemporaryFile(suffix=".png", delete=False) as tmp:
66
+ image.save(tmp.name, format="PNG")
67
+ file_path = tmp.name
68
+
69
+ print(f"✅ generate_image: сохранено в {file_path}", file=sys.stderr)
70
 
71
+ # 🔑 Возвращаем AgentImage, передав ему путь к сохраненному файлу!
72
+ return AgentImage(file_path)
 
73
 
74
  except Exception as e:
75
  print(f"❌ generate_image exception: {e}", file=sys.stderr)