Spaces:
Sleeping
Sleeping
import os | |
import gradio as gr | |
from transformers import HfEngine, Tool,CodeAgent,load_tool | |
from gradio_tools import StableDiffusionPromptGeneratorTool | |
from streaming import stream_to_gradio | |
from huggingface_hub import login | |
# turn caching off | |
#client.headers["x-use-cache"] = "0" | |
#login | |
login(os.getenv("HUGGINGFACEHUB_API_TOKEN")) | |
#define llm engine | |
llm_engine = HfEngine("meta-llama/Meta-Llama-3.1-70B-Instruct") | |
#load tools | |
image_gen_tool = load_tool("huggingface-tools/text-to-image") | |
gradio_pg_tool = StableDiffusionPromptGeneratorTool() | |
pg_tool = Tool.from_gradio(gradio_pg_tool) | |
#create agent | |
agent = CodeAgent( | |
tools=[pg_tool,image_gen_tool], | |
llm_engine=llm_engine, | |
additional_authorized_imports=[], | |
max_iterations=10, | |
) | |
#base prompt | |
base_prompt = """Improve the following prompt and generate an image. | |
Prompt:""" | |
#Main function to interact with streaming | |
def interact_with_agent(add_prompt): | |
prompt = base_prompt | |
if add_prompt and len(add_prompt) > 0: | |
prompt += add_prompt | |
else: | |
prompt="There is no prompt made. Reply exactly with:'***ERROR: Please input a prompt.***'" | |
messages = [gr.ChatMessage(role="assistant", content="⏳ _Generating image..._")] | |
yield messages | |
for msg in stream_to_gradio(agent, prompt): | |
messages.append(msg) | |
yield messages + [ | |
gr.ChatMessage(role="assistant", content="⏳ _Still processing..._") | |
] | |
yield messages | |
#Gradio blocks and markdowns | |
with gr.Blocks( | |
theme=gr.themes.Soft( | |
primary_hue=gr.themes.colors.blue, | |
secondary_hue=gr.themes.colors.yellow, | |
) | |
) as demo: | |
gr.Markdown("""# Image Generator (CodeAgent) 🖼️ | |
**Runwayml/stable-diffusion-v1-5 w/Gradio prompt generator tool.** | |
""") | |
chatbot = gr.Chatbot( | |
label="ImageBot", | |
type="messages", | |
avatar_images=( | |
None, | |
"https://em-content.zobj.net/source/twitter/53/robot-face_1f916.png" | |
), | |
) | |
text_input = gr.Textbox( | |
label="What image would you like to generate?" | |
) | |
submit = gr.Button("Run", variant="primary") | |
submit.click(interact_with_agent, [text_input], [chatbot]) | |
if __name__ == "__main__": | |
demo.launch() |