Frox-nano / Model /tools /image_analysis.py
Hritik045678's picture
Initial commit: Frox Morph Nano 1 (XL) Space
bd97ee9
Raw
History Blame Contribute Delete
1.27 kB
"""
Frox AI — Image Analysis Tool
Deliberately thin: this just calls MorphInferenceEngine.understand_image(),
which runs Morph's own vision encoder + LLM (see
multimodal/vision/encoder.py and inference/engine/morph_engine.py).
No external vision API — "image analysis" here means Morph looking at
the image itself, not a wrapper around someone else's vision model.
"""
from __future__ import annotations
from tools.registry import tool, ToolContext
@tool(
name="image_analysis",
description="Analyze an image and answer a question about it",
timeout=30.0,
)
def image_analysis(ctx: ToolContext, image_path: str, question: str = "Describe this image.") -> dict:
"""
Args:
image_path: Path to the image file on disk.
question: What to ask about the image.
Plain `def`, not `async def`: engine.understand_image() is a
synchronous, GPU-bound call — thread-offloaded by the registry
rather than blocking the event loop for the duration of inference.
"""
if ctx.engine is None:
raise RuntimeError("No engine configured in ToolContext (needed for vision)")
answer = ctx.engine.understand_image(image_path, question)
return {"image_path": image_path, "question": question, "answer": answer}