Dacho688 commited on
Commit
05b252a
·
unverified ·
1 Parent(s): 89e3f53

Add files via upload

Browse files
ImgageGenerator/README.md.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Image Generator
3
+ emoji: 🤔📊
4
+ colorFrom: yellow
5
+ colorTo: red
6
+ sdk: gradio
7
+ sdk_version: 4.38.1
8
+ app_file: app.py
9
+ pinned: false
10
+ license: apache-2.0
11
+ short_description: Image generator agent.
12
+ ---
13
+
14
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
ImgageGenerator/app.py ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Created on Thu Aug 1 19:04:11 2024
4
+
5
+ @author: rkram
6
+ """
7
+
8
+ import os
9
+ import gradio as gr
10
+ from transformers import HfEngine, Tool,CodeAgent,load_tool
11
+ from gradio_tools import StableDiffusionPromptGeneratorTool
12
+ from streaming import stream_to_gradio
13
+ from huggingface_hub import login
14
+
15
+ # turn caching off
16
+ #client.headers["x-use-cache"] = "0"
17
+
18
+ #login
19
+ login(os.getenv("HUGGINGFACEHUB_API_TOKEN"))
20
+ #define llm engine
21
+ llm_engine = HfEngine("meta-llama/Meta-Llama-3.1-70B-Instruct")
22
+ #load tools
23
+ image_gen_tool = load_tool("huggingface-tools/text-to-image")
24
+ gradio_pg_tool = StableDiffusionPromptGeneratorTool()
25
+ pg_tool = Tool.from_gradio(gradio_pg_tool)
26
+ #create agent
27
+ agent = CodeAgent(
28
+ tools=[pg_tool,image_gen_tool],
29
+ llm_engine=llm_engine,
30
+ additional_authorized_imports=[],
31
+ max_iterations=10,
32
+ )
33
+ #base prompt
34
+ base_prompt = """Improve the following prompt and generate an image.
35
+ Prompt:"""
36
+ #Main function to interact with streaming
37
+ def interact_with_agent(add_prompt):
38
+ prompt = base_prompt
39
+ if add_prompt and len(add_prompt) > 0:
40
+ prompt += add_prompt
41
+ else:
42
+ prompt="There is no prompt made. Reply exactly with:'***ERROR: Please input a prompt.***'"
43
+
44
+ messages = [gr.ChatMessage(role="assistant", content="⏳ _Generating image..._")]
45
+ yield messages
46
+
47
+ for msg in stream_to_gradio(agent, prompt):
48
+ messages.append(msg)
49
+ yield messages + [
50
+ gr.ChatMessage(role="assistant", content="⏳ _Still processing..._")
51
+ ]
52
+ yield messages
53
+
54
+ #Gradio blocks and markdowns
55
+ with gr.Blocks(
56
+ theme=gr.themes.Soft(
57
+ primary_hue=gr.themes.colors.blue,
58
+ secondary_hue=gr.themes.colors.yellow,
59
+ )
60
+ ) as demo:
61
+ gr.Markdown("""# Image Generator""")
62
+ chatbot = gr.Chatbot(
63
+ label="ImageBot",
64
+ type="messages",
65
+ avatar_images=(
66
+ None,
67
+ "https://em-content.zobj.net/source/twitter/53/robot-face_1f916.png"
68
+ ),
69
+ )
70
+ text_input = gr.Textbox(
71
+ label="What image would you like to generate?"
72
+ )
73
+ submit = gr.Button("Run", variant="primary")
74
+
75
+ # gr.Examples(
76
+ # examples=[["./example/titanic.csv", example_notes]],
77
+ # inputs=[file_input, text_input],
78
+ # cache_examples=False,
79
+ # label='Click anywhere below to try this example.'
80
+ # )
81
+
82
+ submit.click(interact_with_agent, [text_input], [chatbot])
83
+
84
+ if __name__ == "__main__":
85
+ demo.launch()
ImgageGenerator/requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ git+https://github.com/huggingface/transformers.git#egg=transformers[agents]
2
+ matplotlib
3
+ seaborn
4
+ scikit-learn
5
+ scipy
ImgageGenerator/streaming.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers.agents.agent_types import AgentAudio, AgentImage, AgentText, AgentType
2
+ from transformers.agents import ReactAgent,CodeAgent
3
+ import spaces
4
+
5
+
6
+ @spaces.GPU
7
+ def stream_to_gradio(agent: CodeAgent, task: str, **kwargs):
8
+ """Runs an agent with the given task and streams the messages from the agent as gradio ChatMessages."""
9
+
10
+ try:
11
+ from gradio import ChatMessage
12
+ except ImportError:
13
+ raise ImportError("Gradio should be installed in order to launch a gradio demo.")
14
+
15
+ class Output:
16
+ output: AgentType | str = None
17
+
18
+ Output.output = agent.run(task,**kwargs)
19
+ if isinstance(Output.output, AgentText):
20
+ yield ChatMessage(role="assistant", content=f"{Output.output}")
21
+ elif isinstance(Output.output, AgentImage):
22
+ yield ChatMessage(
23
+ role="assistant",
24
+ content={"path": Output.output.to_string(), "mime_type": "image/png"},
25
+ )
26
+ elif isinstance(Output.output, AgentAudio):
27
+ yield ChatMessage(
28
+ role="assistant",
29
+ content={"path": Output.output.to_string(), "mime_type": "audio/wav"},
30
+ )
31
+ else:
32
+ yield ChatMessage(role="assistant", content=Output.output)