| import gradio as gr |
| from dataclasses import asdict |
| from transformers import Tool, ReactCodeAgent |
| from transformers.agents import stream_to_gradio, HfApiEngine |
|
|
| |
| image_generation_tool = Tool.from_space( |
| 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") |
| |
| 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)) |
| 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() |