import gradio as gr from dataclasses import asdict from transformers import Tool, ReactCodeAgent # type: ignore from transformers.agents import stream_to_gradio, HfApiEngine # type: ignore # Import tool from Hub image_generation_tool = Tool.from_space( # type: ignore space_id="black-forest-labs/FLUX.1-schnell", name="image_generator", description="Generates an image following your prompt. Returns a PIL Image.", api_name="/infer", ) llm_engine = HfApiEngine("Qwen/Qwen2.5-Coder-32B-Instruct") # Initialize the agent with both tools and engine agent = ReactCodeAgent(tools=[image_generation_tool], llm_engine=llm_engine) def interact_with_agent(prompt, history): messages = [] yield messages for msg in stream_to_gradio(agent, prompt): messages.append(asdict(msg)) # type: ignore yield messages yield messages demo = gr.ChatInterface( interact_with_agent, chatbot= gr.Chatbot( label="Agent", type="messages", avatar_images=( None, "https://em-content.zobj.net/source/twitter/53/robot-face_1f916.png", ), ), examples=[ ["Generate an image of an astronaut riding an alligator"], ["I am writing a children's book for my daughter. Can you help me with some illustrations?"], ], type="messages", ) if __name__ == "__main__": demo.launch()