agent-l / test_run.py
zhou777's picture
Add files using upload-large-folder tool
cf0614b verified
Raw
History Blame Contribute Delete
2.53 kB
from __future__ import annotations
import asyncio
import logging
import os
from pathlib import Path
from agents.cognitive_annotator import CognitiveAnnotatorAgent
PROJECT_ROOT = Path(__file__).resolve().parent
IMAGE_DIR = PROJECT_ROOT / "clearn_base_data"
OUTPUT_PATH = PROJECT_ROOT / "test_sft_data.jsonl"
IMAGE_SUFFIXES = {".jpg", ".jpeg", ".png", ".bmp", ".webp"}
QWEN_API_KEY = os.getenv("QWEN_API_KEY")
QWEN_BASE_URL = os.getenv("QWEN_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1")
QWEN_MODEL = os.getenv("QWEN_MODEL", "qwen3.5-plus")
async def main() -> None:
"""运行 CognitiveAnnotatorAgent 的最小异步测试。"""
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
)
if not QWEN_API_KEY:
raise ValueError("未读取到 QWEN_API_KEY,请先设置环境变量后再运行测试脚本。")
if not IMAGE_DIR.exists():
raise FileNotFoundError(f"图片目录不存在: {IMAGE_DIR}")
image_paths = sorted(
str(path)
for path in IMAGE_DIR.iterdir()
if path.is_file() and path.suffix.lower() in IMAGE_SUFFIXES
)[:3]
if not image_paths:
raise FileNotFoundError(f"目录中未找到可用图片: {IMAGE_DIR}")
print(f"本次测试图片目录: {IMAGE_DIR}")
print(f"本次测试输出文件: {OUTPUT_PATH}")
print(f"Qwen Base URL: {QWEN_BASE_URL}")
print(f"Qwen Model: {QWEN_MODEL}")
print("本次仅测试前 3 张图片:")
for image_path in image_paths:
print(f"- {image_path}")
agent = CognitiveAnnotatorAgent(
config={
"api_key": QWEN_API_KEY,
"base_url": QWEN_BASE_URL,
"model": QWEN_MODEL,
"max_concurrency": 3,
"max_retries": 3,
"request_timeout": 120,
"output_path": str(OUTPUT_PATH),
}
)
try:
result = await agent.annotate_images_async(image_paths)
finally:
await agent.aclose()
print("\nAgent 返回结果:")
print(result)
if OUTPUT_PATH.exists():
print(f"\nJSONL 文件已生成: {OUTPUT_PATH}")
with OUTPUT_PATH.open("r", encoding="utf-8") as file:
for index, line in enumerate(file):
if index >= 3:
break
print(line.rstrip())
else:
print("\n未检测到输出 JSONL 文件,请检查日志与 API 配置。")
if __name__ == "__main__":
asyncio.run(main())