Skip to content

Commit ce07acf

Browse files
committed
Merge branch 'feature/tool-retrieval' of https://github.com/qchapp/imaging-plaza-ai-agent into feature/tool-retrieval
2 parents a5c8266 + e98c671 commit ce07acf

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

src/ai_agent/agent/agent.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,23 +250,29 @@ def run_agent(
250250
base_url: str | None = None,
251251
top_k: int | None = None,
252252
num_choices: int | None = None,
253+
image_metadata: str | None = None,
253254
) -> AgentToolSelection:
254255
"""
255256
Execute the agent for a user task and at least one image path.
256257
257258
- derive canonical original_formats (tiff / dicom / nifti / ...)
258-
- build a compact image metadata summary
259+
- build a compact image metadata summary (or use pre-computed one)
259260
- pass both to the LLM as hidden context
260261
- store image_paths/original_formats in deps so retrieval tools can use them
261262
- optionally allow runtime model/base_url/top_k/num_choices overrides
263+
264+
Args:
265+
image_metadata: Optional pre-computed metadata string. If provided,
266+
avoids redundant metadata extraction.
262267
"""
263268
if not image_paths:
264269
raise ValueError("run_agent requires at least one image path")
265270

266271
tool_logs: List[ToolRunLog] = []
267272

268273
# ---- 1) Derive image-based metadata and format hints --------------------
269-
meta_str = summarize_image_metadata(image_paths) or ""
274+
# Use pre-computed metadata if available, otherwise compute it
275+
meta_str = image_metadata if image_metadata is not None else (summarize_image_metadata(image_paths) or "")
270276
fmt_str = detect_ext_token(image_paths) or ""
271277
original_formats = [t.lower() for t in fmt_str.split()] if fmt_str else []
272278

src/ai_agent/ui/handlers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ def respond(
199199
base_url_override = model_config.get("base_url") # Can be None for OpenAI
200200
log.info(f"Model config: {model} -> name={model_name}, base_url={base_url_override}")
201201

202+
# Only pass pre-computed metadata if it corresponds to current file_paths
203+
# (avoids using stale metadata from previous requests)
204+
current_metadata = state.last_image_meta if file_paths else None
205+
202206
try:
203207
agent_result = run_agent(
204208
clean_message,
@@ -209,6 +213,7 @@ def respond(
209213
base_url=base_url_override if model else None, # Only override if model selected
210214
top_k=top_k,
211215
num_choices=num_choices,
216+
image_metadata=current_metadata, # Pass pre-computed metadata to avoid redundant I/O
212217
)
213218
except ValueError as e:
214219
# Configuration error (missing API key, etc.)

0 commit comments

Comments
 (0)