image / agents /image_agent.py
Muthuraja18's picture
Update agents/image_agent.py (#18)
ecee5fc
Raw
History Blame
2.56 kB
from tools.generate import generate_image
from tools.edit import edit_image
from tools.analyze import analyze_image
from tools.upload import save_uploads
class ImageAgent:
def __init__(self, router, memory, planner):
self.router = router
self.memory = memory
self.planner = planner
# --------------------------
# Upload Files
# --------------------------
def upload(self, files):
uploaded = save_uploads(files)
self.memory.uploaded_files = uploaded
# Automatically choose first uploaded image
for file in uploaded:
if file["type"] and file["type"].startswith("image/"):
self.memory.last_used_image = file["path"]
break
return uploaded
# --------------------------
# Analyze Image
# --------------------------
def auto_analyze(self):
image = self.memory.last_used_image
if not image:
return None
analysis = analyze_image(image)
self.memory.analysis = analysis
self.memory.image_context = analysis
return analysis
# --------------------------
# Main Agent
# --------------------------
def run(self, user_input):
task = self.router.route(user_input)
steps = self.planner.plan(task)
result = None
image = self.memory.last_used_image
# Automatically analyze uploaded image once
if image and self.memory.image_context is None:
self.auto_analyze()
analysis = self.memory.image_context
context = ""
if analysis:
context = f"""
Image Description:
{analysis["description"]}
Objects:
{", ".join(analysis.get("objects", []))}
Style:
{analysis.get("style", "")}
Lighting:
{analysis.get("lighting", "")}
OCR:
{analysis.get("text", "")}
"""
prompt = f"""
{context}
User Request:
{user_input}
"""
for step in steps:
if step == "generate":
result = generate_image(prompt)
elif step == "edit":
result = edit_image(
image_path=image,
prompt=prompt
)
# Remember edited image
if result:
self.memory.last_used_image = result
elif step == "analyze":
result = self.auto_analyze()
return result