ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

使用 Swarms Agent 构建多模态视觉智能体:Nano Banana Jarvis Agent 实战指南

2026/9/17 8:15:12 拓冰建站 浏览量
使用 Swarms Agent 构建多模态视觉智能体:Nano Banana Jarvis Agent 实战指南 使用 Swarms Agent 构建多模态视觉智能体Nano Banana Jarvis Agent 实战指南【免费下载链接】swarmsThe Enterprise-Grade Multi-Agent Orchestration Framework. Website: https://swarms.ai项目地址: https://gitcode.com/GitHub_Trending/swar/swarms导读本文基于仓库中 nano_banana_jarvis_agent 示例目录讲解如何在 Swarms 框架下用Agent封装视觉语言模型VLM实现图像理解、图像标注与图像生成三类多模态能力。读完本文你将掌握Agent.run()传入图像的核心用法、关键初始化参数动态温度、动态上下文窗口、循环控制的底层行为并能够举一反三构建自己的看图说话AR 标注文生图智能体。示例目录总览examples/guides/nano_banana_jarvis_agent/目录结构如下路径说明jarvis_agent.py主实现基于位置的 AR 体验生成 / 图像标注 Agentimg_gen_nano_banana.py图像生成示例由文本提示词生成写实图像annotated_images/存放运行示例后得到的图像标注结果building.jpg、hk.jpg、image.jpg、miami.jpg示例输入图片供视觉任务使用整个示例聚焦于一个核心命题用同一套Agent抽象同时驾驭看图与生图两种能力。README 中明确说明该示例用于演示 vision 与 multimodal 能力包括图像分析image analysis、图像生成image generation与视觉理解visual understanding下文将逐一展开。一、主实现Jarvis 图像标注 Agentjarvis_agent.py 是目录的核心示例完整代码如下from swarms import Agent SYSTEM_PROMPT ( You are a location-based AR experience generator. Highlight points of interest in this image and annotate relevant information about it. Return the image only. ) # Agent for AR annotation agent Agent( agent_nameTactical-Strategist-Agent, agent_descriptionAgent specialized in tactical strategy, scenario analysis, and actionable recommendations for complex situations., model_namegemini/gemini-2.5-flash-image-preview, dynamic_temperature_enabledTrue, max_loops1, dynamic_context_windowTrue, ) out agent.run( taskf{SYSTEM_PROMPT} \n\n Annotate all the tallest buildings in the image, imghk.jpg, )1.1 系统提示词设计把角色写进任务这里没有使用system_prompt参数而是将角色定义直接拼进taskYou are a location-based AR experience generator. Highlight points of interest in this image and annotate relevant information about it. Return the image only.这种写法的用意是让模型始终以AR 体验生成器的身份对图像作答并约束输出形态Return the image only.。配合运行时的具体指令Annotate all the tallest buildings in the image就构成了一个完整的给城市天际线照片做地标标注任务。示例图片 hk.jpg788×380 横向照片正是为这类图片中最高建筑标注场景准备的输入。1.2 模型选择图像输入 图像输出的 Gemini 模型示例选用gemini/gemini-2.5-flash-image-preview作为model_name。这个模型同时具备读取图片与输出图片的能力因此能承担本文两类任务。需要说明的是模型名以gemini/前缀标识经由 LiteLLM 统一接入仓库中Agent底层即通过LiteLLM与LLMManager驱动模型见 swarms/structs/agent.py 的 imports。若你本地可用的图像模型不同可以直接替换model_name字符串示例代码中也注释了Replace with your preferred image generation model if available。1.3 关键初始化参数逐个拆解对照 swarms/structs/agent.py 的Agent.__init__签名第 311 行起示例中四个参数的含义如下agent_name/agent_descriptionAgent 的身份标识与职责描述。初始化时self.id generate_id(agent)生成唯一 IDagent_name默认swarm-worker-01。在仓库内部agent_description还会参与系统提示词的自动拼装见build_agent_system_prompt与agent_roles机制。dynamic_temperature_enabledTrue开启动态温度。源码中Agent.run的主循环里每个循环都会检查该开关并调用self.dynamic_temperature()swarms/structs/agent.py其实现为self.llm_manager.randomize_temperature()——即在 0.01.0 之间随机重置 LLM 温度用于增加多轮输出的探索性避免生成结果过于保守或雷同。max_loops1限制推理循环次数为 1即单次任务→模型→输出适合标注、生成这类一次性任务。若设为autoAgent.run会转入自主循环模式_run_autonomous_loop计划→子任务→总结详见源码第 3346 行。dynamic_context_windowTrue启用动态上下文窗口。初始化后该值被存入self.dynamic_context_window并在构建 LLM 参数时传递给底层封装源码第 1010 行dynamic_context_windowself.dynamic_context_window用于按需估算与调整上下文长度降低超长多模态输入带来的截断风险。1.4Agent.run()的图像输入机制示例通过agent.run(task..., imghk.jpg)传入单张图片。从源码看run()的完整签名是swarms/structs/agent.pydef run( self, task: Optional[Union[str, Any]] None, img: Optional[str] None, imgs: Optional[List[str]] None, correct_answer: Optional[str] None, streaming_callback: Optional[Callable[[str], None]] None, n: int 1, *args, **kwargs, ) - Anyimg参数的 docstring 明确指出支持四种输入形态本地文件路径如示例中的hk.jpgURL如https://example.com/image.pngData URI如data:image/jpeg;base64,...原始 Base64 字符串可直接把图片读成 base64 传入。若需要一次分析多张图使用imgs[a.png, b.png]传入列表run()内部在_run()中会把图像输入交给底层 LLM 调用源码第 1459 行将imgimg传入 llm_kwargs。在进入主循环前_run()还会调用check_model_supports_utilities(imgimg)源码第 1352 行校验当前模型是否支持视觉能力。二、图像生成Nano Banana 文生图 Agentimg_gen_nano_banana.py 展示如何用同一个Agent类完成文字→图像from swarms import Agent IMAGE_GEN_SYSTEM_PROMPT ( You are an advanced image generation agent. Given a textual description, generate a high-quality, photorealistic image that matches the prompt. Return only the generated image. ) image_gen_agent Agent( agent_nameImage-Generation-Agent, agent_descriptionAgent specialized in generating high-quality, photorealistic images from textual prompts., model_namegemini/gemini-2.5-flash-image-preview, # Replace with your preferred image generation model if available dynamic_temperature_enabledTrue, max_loops1, dynamic_context_windowTrue, ) image_gen_out image_gen_agent.run( taskf{IMAGE_GEN_SYSTEM_PROMPT} \n\n Generate a photorealistic image of a futuristic city skyline at sunset., ) print(Image Generation Output:) print(image_gen_out)2.1 与标注 Agent 的异同两者结构完全同构区别只在提示词与任务维度Jarvis 标注 AgentNano Banana 生成 Agent输入图像imghk.jpg纯文本提示词输出标注后的图像生成的写实图像提示词关键词Highlight points of interest / annotategenerate a high-quality, photorealistic image输出约束Return the image only.Return only the generated image.这说明 Swarms 的Agent是模型无关的统一抽象只要底层模型经由model_name LiteLLM支持对应能力同一个 Agent 既能当眼睛也能当画笔无需更换类或框架。2.2 为什么提示词里要强调输出形态示例在两个提示词中分别追加了Return the image only.与Return only the generated image.。对图像输出型模型而言这一句是关键的输出模态约束——它可以抑制模型既出图又附一大段文字解释的倾向让 Agent 的输出保持干净、可直接消费。这也是多模态 Agent 工程中把格式约束写进提示词这一最佳实践的直观体现。三、配套素材与标注结果目录提供了四张不同题材的输入图片方便你快速替换测试hk.jpg香港城市天际线788×380对应示例中标注最高建筑的任务miami.jpg迈阿密城市景观2000×920 宽幅building.jpg单体建筑257×589 竖构图image.jpg通用示例图。此外annotated_images/ 目录存放了运行标注 Agent 后产出的带标注结果图多张 1472×704 横向截屏与竖版图。它们与本文图像标注主题直接相关可作为你运行示例后对比输出形态的参照物。四、运行前置条件与实操步骤4.1 环境准备安装 Swarms从仓库根目录安装依赖例如pip install -r requirements.txt也可参考 pyproject.toml 的工程配置与 scripts/setup.sh配置模型密钥Agent底层经由 LiteLLM 调用gemini/*模型因此需要配置对应提供商的 API Key 环境变量Gemini 系列通常对应GEMINI_API_KEY若替换为其他图像模型请按该提供商要求配置密钥确认网络可达多模态图像调用会向远端模型服务上传图片需保证环境可访问模型 API。4.2 运行示例在仓库根目录下执行python examples/guides/nano_banana_jarvis_agent/jarvis_agent.py python examples/guides/nano_banana_jarvis_agent/img_gen_nano_banana.py前者对hk.jpg执行地标标注输出保存在out变量中后者生成落日下的未来城市天际线图像并打印到终端。4.3 排查要点check_model_supports_utilities失败说明当前model_name不被识别为支持视觉的模型请更换为图像多模态模型输出与预期不符优先检查提示词中的输出约束是否完整Return the image only.需要多图输入把imghk.jpg改为imgs[a.jpg, b.jpg]。五、从示例走向生产可扩展的方向结合仓库内Agent的能力矩阵swarms/structs/agent.py 类 docstring 第 147-277 行这套多模态 Agent 可以按需增强多图批量imgs[...]一次喂多张图可用于对比标注、多视角分析Base64 直传图片存于数据库或远端时可读为 base64 直接传给img无需落盘模型回退配置fallback_models[...]主模型失败时自动切换run()异常处理会调用_handle_fallback_execution流式输出run_stream(task, img...)可按 token 逐字输出适合 AR 应用中的渐进式标注反馈自主循环将max_loops设为auto让 Agent 自主规划读图→分析→再生成的复合流程可组合视觉与工具调用仓库同时提供 MCP、工具注册等扩展见 swarms/tools 与 examples/mcp。结语Nano Banana Jarvis Agent 示例以极简的两段代码展示了 Swarms 多模态 Agent 的两个侧面理解图像AR 标注与生成图像文生图。其背后是Agent类统一的运行入口run()、灵活的img/imgs输入设计以及动态温度、动态上下文窗口等工程化参数。理解这份示例就掌握了用 Swarms 快速搭建视觉 × LLM应用的完整方法论——无论是 AR 导航标注、图片智能审核还是创意图像生成都可以从这份模板直接起步。【免费下载链接】swarmsThe Enterprise-Grade Multi-Agent Orchestration Framework. Website: https://swarms.ai项目地址: https://gitcode.com/GitHub_Trending/swar/swarms创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考