修复因新建分支导致上下文中的current img混乱,采用tool直接返回图片公开url地址(原因 1.保证图片时效性,2.保证图片能够进入上下文-deep agents的main-agent与sub-agent有上下文隔离机制,且task消息类型只支持str)
This commit is contained in:
@@ -113,6 +113,74 @@ def load_minio_file_to_state(oss_client, bucket: str, object_name: str, display_
|
||||
raise ValueError(f"MinIO 下載失敗: {err}")
|
||||
|
||||
|
||||
from urllib.parse import urlparse
|
||||
|
||||
|
||||
def check_and_extract_minio_image(url: str) -> dict[str, str]:
|
||||
"""
|
||||
校验URL + 提取MinIO图片路径(支持预签名地址)
|
||||
返回格式: {"state": bool, "message": str, "data": str}
|
||||
"""
|
||||
# 1. 空值判断
|
||||
if not url or not isinstance(url, str):
|
||||
return {
|
||||
"state": False,
|
||||
"message": "URL cannot be empty or invalid format",
|
||||
"data": ""
|
||||
}
|
||||
|
||||
# 2. 解析URL
|
||||
try:
|
||||
parsed = urlparse(url)
|
||||
if not (parsed.scheme and parsed.netloc):
|
||||
return {
|
||||
"state": False,
|
||||
"message": "Invalid URL format",
|
||||
"data": ""
|
||||
}
|
||||
except Exception:
|
||||
return {
|
||||
"state": False,
|
||||
"message": "Failed to parse URL",
|
||||
"data": ""
|
||||
}
|
||||
|
||||
# 3. 域名判断
|
||||
allowed_domains = {"www.minio-api.aida.com.hk", "minio-api.aida.com.hk"}
|
||||
if parsed.netloc not in allowed_domains:
|
||||
return {
|
||||
"state": False,
|
||||
"message": f"Invalid domain: {parsed.netloc}",
|
||||
"data": ""
|
||||
}
|
||||
|
||||
# 4. Get file path (ignore query parameters for presigned URL)
|
||||
file_path = parsed.path.strip()
|
||||
if not file_path:
|
||||
return {
|
||||
"state": False,
|
||||
"message": "No file path found in URL",
|
||||
"data": ""
|
||||
}
|
||||
|
||||
# 5. Check if it's an image
|
||||
image_exts = (".png", ".jpg", ".jpeg", ".gif", ".bmp", ".webp", ".tiff")
|
||||
if not file_path.lower().endswith(image_exts):
|
||||
return {
|
||||
"state": False,
|
||||
"message": "Not a valid image file",
|
||||
"data": ""
|
||||
}
|
||||
|
||||
# 6. Extract final path
|
||||
result_path = file_path.lstrip("/")
|
||||
return {
|
||||
"state": True,
|
||||
"message": "Success, path extracted",
|
||||
"data": result_path
|
||||
}
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
url = 'fida-test/furniture/sketches/1b82b2db-8019-4796-b2cc-11fb24c7799d.png'
|
||||
read_type = "2"
|
||||
|
||||
Reference in New Issue
Block a user