ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VisionAgent 实战指南:用自然语言提示词自动生成可运行的视觉 AI 代码

VisionAgent 实战指南:用自然语言提示词自动生成可运行的视觉 AI 代码 VisionAgent 实战指南用自然语言提示词自动生成可运行的视觉 AI 代码【免费下载链接】vision-agentThis tool has been deprecated. Use Agentic Document Extraction instead.项目地址: https://gitcode.com/GitHub_Trending/vi/vision-agentVisionAgent 是 LandingAI 出品的视觉 AI 驾驶员Visual AI pilot类 Agent 工具给它一段自然语言提示词和一张图片它会自动挑选合适的视觉模型并输出可直接运行的代码让开发者几分钟内就能构建出具备视觉能力的应用。本文以仓库根目录 README.md 为骨架结合 vision_agent 包内源码完整讲解 API Key 准备、安装、快速上手、Agent 生成代码的底层流程、视觉工具的独立调用以及如何切换 Anthropic / Google / OpenAI 等不同 LLM 提供方。注意根据当前仓库的元数据信息该工具已被标记为弃用deprecated官方建议改用 Agentic Document Extraction 方案。不过其提示词 → 规划 → 生成代码 → 自动测试的 Agent 架构、视觉工具的组织方式与多 LLM 切换机制仍然具备很高的参考与学习价值本文内容均以当前仓库实际代码与文档为准。VisionAgent 是什么一次提示词换取一段可运行代码VisionAgent 的核心工作流可以概括为Prompt with an image/video → Get runnable vision code → Build Visual AI App in minutes。用户不再需要手动挑选检测、分割、跟踪模型也不需要手工拼装推理管线只需把任务例如统计图中人数描述这张图片连同图片一起交给 AgentVisionAgent 就会生成一份针对代码生成任务的计划开启 verbose 输出时计划的编号步骤会显示在终端基于计划生成代码和对应的测试用例用测试用例实际运行生成的代码如果测试失败Agent 会反复迭代直到测试通过为止。这一流程并非黑盒在 vision_agent/agent/vision_agent_coder_v2.py 中有完整实现VisionAgentCoderV2内部依次串联了planner规划器、coder代码生成器、tester测试生成器和debugger调试器四个角色下文源码视角一节会详细展开。前置准备三类 API Key 缺一不可获取 VisionAgent API Key最重要的一步是在 LandingAI 的 VisionAgent 平台创建账号并获取 API Key它是访问 VisionAgent 服务模型托管、工具调用等的身份凭证。为什么还需要 Anthropic 与 Google 的 API KeyVisionAgent 使用 Anthropic 和 Google 的模型来响应提示词并生成代码。当你运行 VisionAgent 时应用需要调用你的 API Key 来访问这些模型这样做的目的在于你的项目不会受到 LandingAI 账号自带限流rate limits的约束避免大量用户同时挤占 LandingAI 的公共限流额度。Anthropic 与 Google 各自有独立的限流策略和付费层级具体可参考其官方文档与定价。版本说明在 VisionAgent v1.0.2 及更早版本中VisionAgent 由 Anthropic Claude-3.5 和 OpenAI o1 驱动。如果你使用的是这些早期版本则需要获取 OpenAI API Key 并设置为环境变量。获取 Anthropic API Key 的步骤在 Anthropic Console 注册账号进入 Console 的 API Keys 页面生成一个 API Key。获取 Google API Key 的步骤在 Google AI Studio 注册账号进入 AI Studio 的 Get API Key 页面生成一个 API Key。在 vision_agent/lmm/lmm.py 中可以印证AnthropicLMM通过anthropic.Anthropic客户端调用 Claude 系列模型GoogleLMM通过 Google GenAI 客户端调用 Gemini 系列模型默认从环境变量GOOGLE_API_KEY读取 KeyOpenAILMM则通过OpenAI客户端调用 GPT 系列模型。这三类 LMM 均实现了统一的抽象基类LMMgenerate/chat/__call__三个抽象方法这也是后文切换 LLM 提供方能够一键生效的根本原因。安装 VisionAgent推荐使用 uv一种高速 Python 包管理器uv add vision-agent也可以使用 pippip install vision-agent仓库根目录同时提供了 pyproject.toml、poetry.lock 与 uv.lock说明该项目同时支持 poetry 与 uv 两种依赖管理方式。快速上手让 VisionAgent 替你写视觉代码完整操作步骤获取 Anthropic、Google 和 VisionAgent 三个 API Key将三个 API Key 设置为环境变量安装 VisionAgent新建一个名为quickstart的文件夹找一张想要分析的图片保存到quickstart文件夹把下面的示例脚本复制为source.py并保存到quickstart文件夹运行source.pyVisionAgent 会生成一个名为generated_code.py的文件把生成好的代码保存在其中。设置环境变量不同操作系统设置环境变量的方式不同Linux/macOS 下的 bash 写法如下export VISION_AGENT_API_KEYyour-api-key export ANTHROPIC_API_KEYyour-api-key export GOOGLE_API_KEYyour-api-key示例脚本提示 VisionAgent# 从 VisionAgent 包导入所需类 from vision_agent.agent import VisionAgentCoderV2 from vision_agent.models import AgentMessage # 开启 verbose 输出便于观察 Agent 的规划与迭代过程 agent VisionAgentCoderV2(verboseTrue) # 传入你的提示词content与图片文件media code_context agent.generate_code( [ AgentMessage( roleuser, contentDescribe the image, media[friends.jpg] ) ] ) # 将输出写入文件 with open(generated_code.py, w) as f: f.write(code_context.code \n code_context.test)这段脚本用到了两个关键对象它们在 vision_agent/models/agent_types.py 中有明确定义AgentMessageAgentic 系统中流转的消息载体role可以是user、assistant、observation、interaction、planner、coder等类型content是文本内容media是可选的图片/视频路径列表CodeContextgenerate_code的返回值包含四个字段——code最终生成的代码、test生成的测试用例、success代码是否通过测试、test_result测试运行的执行结果。此外generate_code还可能在交互式Human-in-the-loop场景下返回InteractionContext或在规划阶段出错时返回ErrorContext例如模型输出了不合规格式的消息。从 vision_agent_coder_v2.py 的实现看VisionAgentCoderV2.__call__会对这三种返回类型分别处理最终统一输出可用的代码字符串。源码视角一次代码生成任务在内部发生了什么如果你好奇提示词到代码的完整旅程可以从VisionAgentCoderV2.generate_code见 vision_agent/agent/vision_agent_coder_v2.py追到以下调用链规划Planningself.planner.generate_plan(...)调用VisionAgentPlannerV2生成PlanContext包含整体计划plan、分步指令instructions和规划期间的代码片段code工具检索Tool Retrievalretrieve_tools使用工具推荐器Sim语义检索模型对计划中的每一条指令做top_k检索取出最相关的工具文档拼接到提示词中写代码Write Codewrite_code将工具文档、用户请求和格式化后的计划填入CODE提示词模板交给coder模型再从响应中解析出code标签内的 Python 代码写测试Write Testwrite_test基于工具工具类文档、用户请求和已生成的代码让tester模型生成测试用例执行与调试Test Debugtest_code通过CodeInterpreter在隔离沙箱中运行默认导入 代码 测试若执行失败或没有日志输出则进入最多3 次的调试循环debug_code把执行结果取最近 50 行与调试历史打包给debugger模型让其返回思路thoughts 修复后的代码 修复后的测试然后重新执行直到通过或达到迭代上限。这个生成 → 测试 → 失败 → 修复的闭环正是 README 中如果测试失败VisionAgent 会迭代代码生成过程直到测试通过这句话的源码级落地也解释了为什么verboseTrue时终端会依次打印计划、代码、测试和执行结果。实战示例统计图片中的易拉罐README 提供了一个完整可运行的 Jupyter Notebook——examples/notebooks/counting_cans.ipynb演示如何使用 VisionAgent 统计一张图片中易拉罐的数量。它是理解提示词驱动视觉任务的最佳入门材料核心思路是让 Agent 自动选择合适的检测/计数工具组合来完成数数这一需要细粒度识别的任务。此外README 还提到仓库自带一个本地 Web 应用位于 examples/chat其运行方式Python 后端 React 前端的启动、端口修改、Human-in-the-loop 模式等记录在 examples/chat/README.md 中适合在图形界面里体验完整的 Agent 对话与结果可视化。直接调用 VisionAgent 的视觉工具除了通过提示词驱动 AgentVisionAgent 库还内置了一批独立工具tools——它们是完成特定任务的独立模型或函数位于 vision_agent/tools 目录统一通过vision_agent.toolsAPI 暴露。当你提示 VisionAgent 时它会从这批工具中挑选一个或多个来完成任务。例如提示数一数图片里有几只狗VisionAgent 可能先用florence2_object_detection检测出所有狗再用countgd_object_detection统计检测到的狗的数量。安装库之后你完全可以在自己的脚本里直接调用这些工具例如写视频目标跟踪脚本时直接调用owlv2_sam2_video_tracking也就是说视觉工具可以脱离 Agent 独立使用。图片工具示例统计图片中的人数# 导入 VisionAgent Tools 库导入 Matplotlib 用于可视化结果 import vision_agent.tools as T import matplotlib.pyplot as plt # 加载图片 image T.load_image(people.png) # 调用计数函数指定要统计的对象是 person人 dets T.countgd_object_detection(person, image) # 在图片上叠加 countgd 检测出的边界框 viz T.overlay_bounding_boxes(image, dets) # 把可视化结果保存到文件 T.save_image(viz, people_detected.png) # 显示可视化结果 plt.imshow(viz) plt.show()从 vision_agent/tools/tools.py 的源码countgd_object_detection第 966 行起可以看到更多实现细节该函数签名是countgd_object_detection(prompt: str, image: np.ndarray, box_threshold: float 0.23)返回一组包含score、label、bbox的字典列表其中bbox是归一化坐标(xmin, ymin, xmax, ymax)支持用逗号分隔多个物体类别名例如flower, carbox_threshold是检测置信度阈值默认 0.23内部还会对候选框做 IoU 阈值为 0.80 的 NMS 去重配套的可视化与文件函数包括load_image读图、overlay_bounding_boxes叠加边界框、save_image存图等。视频工具示例在视频中跟踪并统计人数# 导入 VisionAgent Tools 库 import vision_agent.tools as T # 抽取视频帧及其时间戳 frames_and_ts T.extract_frames_and_timestamps(people.mp4) # 从 frames_and_ts 列表中取出帧 frames [f[frame] for f in frames_and_ts] # 调用目标跟踪函数指定要跟踪 person人 tracks T.countgd_sam2_video_tracking(person, frames) # 在帧上叠加分割掩码并保存为视频 viz T.overlay_segmentation_masks(frames, tracks) T.save_video(viz, people_detected.mp4)对应的源码要点如下countgd_sam2_video_trackingtools.py 第 1077 行起的签名为(prompt, frames, box_threshold0.23, chunk_length25)返回每个帧对应一个实体列表的嵌套结构每个实体包含label、bbox和mask二值分割掩码label会以0: person这样的 ID 前缀标识每个独立目标从而避免重复计数同类的还有owlv2_sam2_video_tracking第 537 行起区别在于使用 OWLv2 作为检测器其默认box_threshold为 0.10chunk_length表示每隔多少帧重新运行一次检测器以发现新目标默认 25extract_frames_and_timestamps第 2950 行起默认按fps5抽帧返回[{frame: np.ndarray, timestamp: 秒}, ...]列表并且支持三种输入本地视频文件路径、普通 HTTP(S) 视频 URL、以及 YouTube 链接后者通过 yt-dlp 自动下载。切换 LLM 提供方从 Claude 换到 GPT-4o 等模型VisionAgent 默认使用Anthropic Claude 3.7 Sonnet模型名claude-3-7-sonnet-20250219和Gemini Flash 2.0 Experimentalgemini-2.0-flash-exp来响应提示词并生成代码。README 说明这两个模型在当时提供方的免费层级有限流内可用且表现最佳。如果你只想使用其中某一个模型或希望换用其他模型组合可以修改 vision_agent/configs/config.py 中的配置同时必须把对应提供方的 API Key 设置为环境变量。方式一直接覆盖配置文件如果想只使用 Anthropic 模型可以直接用仓库预置的完整 Anthropic 配置替换默认配置cp vision_agent/configs/anthropic_config.py vision_agent/configs/config.py仓库的 vision_agent/configs 目录下预置了三份配置config.py默认配置全部角色使用AnthropicLMMclaude-3-7-sonnet-20250219仅vqa视觉问答角色默认使用GoogleLMMgemini-2.0-flash-expanthropic_config.py纯 Anthropic 配置注意其中suggester角色仍使用OpenAILMMo1模型openai_config.py全 OpenAI 配置主力模型为gpt-4o-2024-11-20并附带image_detail: low参数。Config是一个 PydanticBaseModel见 config.py为每个 Agent 角色都定义了一个 LMM 类型字段和一份 kwargs 字典并通过create_agent()、create_planner()、create_coder()、create_tester()、create_debugger()等一系列工厂方法实例化对应模型。这些角色包括agent对话 Agent、planner规划器、summarizer总结器、critic评审器、coder代码生成器、tester测试生成器、debugger调试器、tool_tester/tool_chooser工具测试与选择、od_judge检测结果裁判、suggester建议模块和vqa视觉问答。不同角色的temperature也有差异大部分角色为 0.0追求确定性输出而summarizer、tool_chooser、suggester为 1.0追求多样性与创造性。方式二手动修改某个角色的模型也可以直接在config.py中手动填写模型细节。例如想把规划器planner从 Anthropic 换成 OpenAI将下面这段代码planner: Type[LMM] Field(defaultAnthropicLMM) planner_kwargs: dict Field( default_factorylambda: { model_name: claude-3-7-sonnet-20250219, temperature: 0.0, image_size: 768, } )替换为planner: Type[LMM] Field(defaultOpenAILMM) planner_kwargs: dict Field( default_factorylambda: { model_name: gpt-4o-2024-11-20, temperature: 0.0, image_size: 768, image_detail: low, } )注意 OpenAI 配置中多出的image_detail参数它控制送入模型的图片分辨率档位可取值通常为low/high等low能降低 token 消耗与延迟。这一参数在 vision_agent/lmm/lmm.py 的OpenAILMM中被读取并透传给图片消息。深入阅读指引官方文档仓库自带docs/index.md 及其 docs/api 下的 Agent、配置、LMM、模型、模拟器与工具等 API 说明Agent 层实现vision_agent/agent含 v2/v3 两代 Planner 与 Coder 实现、提示词模板工具层实现与可视化函数vision_agent/tools/tools.py数据模型消息、计划、代码上下文等vision_agent/models/agent_types.pyLMM 抽象与各提供方实现vision_agent/lmm/lmm.py单元与集成测试可参考其了解工具与 Agent 的预期行为tests/unit 与 tests/integ。综上VisionAgent 把选模型、写代码、跑测试、修 bug这条原本高度依赖人工经验的链路自动化同时通过统一的Config与LMM抽象保持了对多家 LLM 提供方的可插拔性其规划 → 工具检索 → 编码 → 测试 → 调试的 Agent 流水线设计对任何想要构建视觉代码生成系统的开发者都有直接的借鉴意义。【免费下载链接】vision-agentThis tool has been deprecated. Use Agentic Document Extraction instead.项目地址: https://gitcode.com/GitHub_Trending/vi/vision-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表