资讯动态

如何三步跑通一个实时换装的虚拟试衣智能体:Vision Agents + Decart Lucy 实战

发布时间:2026/10/16 5:51:49 来源:尧图企业网站定制
如何三步跑通一个实时换装的虚拟试衣智能体Vision Agents Decart Lucy 实战【免费下载链接】Vision-AgentsOpen Vision Agents by Stream. Build voice and vision agents quickly with any model or video provider. Uses Streams edge network for ultra-low latency.项目地址: https://gitcode.com/GitHub_Trending/vi/Vision-Agents你只需要对着摄像头说一句给我换一套超级英雄服装几秒后画面里的人就披上了披风耳边还传来一句俏皮的确认。这是 Vision Agents 开源仓库里的虚拟试衣智能体示例用语音驱动靠 Decart Lucy 实时模型逐帧重绘你的摄像头画面换装、播报一气呵成。整套东西跑在开源框架 Vision Agents 上示例代码只有 100 来行核心逻辑集中在 plugins/decart/example/decart_example.py。下面先让它转起来再拆开看里面发生了什么。 三十秒先跑起来装依赖、配 Key、一条命令整个示例只依赖五家的 API Key缺一个都跑不起来。第 1 步装依赖。把仓库拉到本地进示例目录用 uv 同步依赖要求 Python 3.10 及以上git clone https://gitcode.com/GitHub_Trending/vi/Vision-Agents cd Vision-Agents/plugins/decart/example uv sync第 2 步配 Key。在示例目录建一个.env文件六行写齐OPENAI_API_KEYyour_openai_key DECART_API_KEYyour_decart_key ELEVENLABS_API_KEYyour_11labs_key DEEPGRAM_API_KEYyour_deepgram_key STREAM_API_KEYyour_stream_key STREAM_API_SECRETyour_stream_secret代码顶部有一行load_dotenv()会自动加载它。五把钥匙分工明确OpenAI 管理解意图、Decart 管重绘视频、ElevenLabs 管说话、Deepgram 管听话、Stream 管音视频传输。第 3 步一条命令启动uv run decart_example.py run跑起来后它会依次做四件事创建一个视频通话、在浏览器里打开演示界面、智能体加入通话、先开口说一句问候源码里是Hello! Tell me what you can do.然后进入待命状态等你的换装指令。如果你不想跑示例、只打算在自己的项目里用这个插件两条命令也能装uv add vision-agents[decart]或者直接uv add vision-agents-plugins-decart。插件内部锁定decart0.0.34,0.0.36官方 SDK通过 WebSocket 与 Decart Realtime API 通信。 一次换装指令走过的六道关卡对着屏幕说给我换一套超级英雄服装之后这句话要穿过五个组件才会变成你看到的效果。你开口Deepgram 听见。deepgram.STT()把语音转成文字。STT 就是 Speech-to-Text语音转文本。GPT-5 做选择题。openai.LLM(modelgpt-5)读到转换请求后要在两个注册函数里挑一个预设服装走change_costume(name)列表之外的自由描述走change_outfit(description, image_url)。这个让 LLM 挑函数调用的机制叫 tool-calling是整个示例的意图中枢。Lucy 重绘。decart.RestylingProcessor(modellucy_2_rt)把你摄像头的视频帧经 WebSocket 发给 DecartLucy 实时模型按 prompt有参考图时连同参考图一起逐帧重画。新画面回到通话。重绘后的帧被写进DecartVideoTrack再作为新视频轨发布回通话你看到的换装后的人就是这条轨。ElevenLabs 开口确认。elevenlabs.TTS(voice_idN2lVS1w4EtoT3dr4eOWO)用 TTSText-to-Speech文本转语音把换好了念出来。instructions 里允许 LLM 嵌入[sigh]、[excited]、[pause]、[rushed]、[tired]这类音频标签所以那句确认可以带情绪。Stream edge 全程打底。getstream.Edge()承载整条音视频链路低延迟靠它。入口逻辑就一行Runner(AgentLauncher(create_agentcreate_agent, join_calljoin_call)).cli()组装智能体、起 CLI、加通话全在这条链上。 改造清单换成你自己的服装库、开场造型和音色示例给你的是jacket和superhero两套演示服装真正上手第一件事就是换成自己的。服装库COSTUMES 就是你的菜单示例里的服装表长这样每个条目必须有promptimage可选COSTUMES: dict[str, dict[str, Optional[str]]] { jacket: { prompt: A person wearing a jacket, image: https://images.unsplash.com/photo-1591047139829-d91aecb6caea, }, superhero: { prompt: A person wearing a superhero costume, image: https://images.unsplash.com/photo-1766062854584-77e3d2467e54, }, }在你自己的项目里照抄这个结构、换成自己的条目即可。image接受五种输入形式bytes、本地文件路径如./costumes/superhero.png、http(s) URL、data:URI、原始 base64 字符串。image为None时仅凭 prompt 驱动风格化。智能体组装部分也就十几行服装表和组件在这里接起来processor decart.RestylingProcessor(modellucy_2_rt) llm openai.LLM(modelgpt-5) agent Agent( edgegetstream.Edge(), agent_userUser(nameVirtual Wardrobe, idagent), instructionsYou are a playful virtual wardrobe assistant..., llmllm, ttselevenlabs.TTS(voice_idN2lVS1w4EtoT3dr4eOWO), sttdeepgram.STT(), processors[processor], )开场造型第一帧就穿好想让用户进通话时人就已经穿着造型给处理器传两个参数initial_promptA person wearing a superhero costume和initial_image./costumes/superhero.png或 bytes / URL / data URI / 原始 base64。initial_image会在首次连接时随ModelState一并下发给 Decart所以第一帧就是重绘后的画面。音色一个 voice_id 的事改elevenlabs.TTS(voice_id...)里的voice_id声音就换了别的不用动。RestylingProcessor的完整构造参数精简如下参数默认值一句话用途api_key环境变量DECART_API_KEY缺省会抛ValueErrormodellucy_2_rtDecart 实时模型名initial_promptCyberpunk city初始风格提示词initial_imageNone初始参考图五选一输入形式enhanceTrue是否增强提示词mirrorTrue前置摄像头镜像width/height1280/720输出分辨率模型偏好值update_state和update_prompt也都接受可选的enhance参数调用时临时覆盖实例默认值。 深挖两个机制原子换装与断线重连其余组件STT、TTS、edge都是标准插件用法不展开。真正值得看的是处理器内部的两个设计源码在 plugins/decart/vision_agents/plugins/decart/decart_restyling_processor.py。原子换装 update_state幕布落下才动手change_costume和change_outfit最后都落在processor.update_state(prompt..., image...)上。它对应 JS SDK 的realtimeClient.set({ prompt, enhance, image })prompt 与参考图在一次原子更新中同时下发输出视频不会出现换到一半的中间态。打个比方这像舞台换景——幕布落下时才动手灯亮起时已经是新造型。行为契约有四条都写死在代码里prompt和image至少给一个否则抛ValueError(At least one of prompt or image must be provided)未连接时调用是无操作no-op只打一条 debug 日志Cannot update state: not connected to Decartenhance未显式传时回落到实例的enhance属性默认True下发成功后同步记录到initial_prompt/initial_image方便状态追踪。update_prompt(prompt_text)只是update_state(promptprompt_text, enhanceenhance)的快捷方式自由换装里没带参考图 URL那条路径走的就是它。断线之后重连还是放弃看错误分类为什么断线后有时自己恢复、有时彻底停摆答案在_should_reconnect函数里。它像航班客服区分延误和取消延误连接类错误可以自动改签取消认证类错误改签没用。具体判定WebSocket 关闭websockets.ConnectionClosedError直接重连SDK 错误信息里含connection、disconnect、timeout的也重连像 invalid api key 这种认证错误不重连——key 错了拨一百次也是白拨。兜底逻辑是一个_processing_loop每 1 秒检查一次连接状态丢了就重连。参与者离开时stop_processing()断开并清理close()统一取消帧接收、处理、重连三个后台任务。顺带一提RestylingProcessor继承自VideoProcessorPublisher基类定义见 agents-core/vision_agents/core/processors/base_processor.py这个基类的职责一句话既处理入向视频轨又把处理后的视频轨发布回通话。重绘帧的落地由DecartVideoTrack完成用VideoLatestNQueue(maxlen2)只留最新两帧尺寸不符就resize_frame到配置的 1280×720没新帧时回退到一块深色占位帧保证输出轨永远有帧可读。 排障手册从报错原文倒查原因真跑起来的问题大多对得上下面这张表。症状大概率原因检查动作启动即崩ValueError: Decart API key is required. Set DECART_API_KEY environment variable or pass api_key parameter.环境变量和api_key参数都没给确认.env里有DECART_API_KEY或构造时显式传api_keyValueError: At least one of prompt or image must be providedupdate_state两个参数都传了空至少传一个断线后画面定格旧帧一直不恢复错误不属于重连判定范围如认证错误_should_reconnect返回False看日志里的错误原文含 connection / disconnect / timeout 会自动重连认证类报错只会干等断线后程序不崩只是没新画面DecartVideoTrack在无新帧时回退占位帧/最近帧看_processing_loop1 秒一查是否打出重连日志换装没反应返回Unknown costume ...LLM 传了COSTUMES之外的名字函数会回Unknown costume {name}. Available: {, .join(COSTUMES)}对照你的服装表改 instructions 里的列表仓库里的测试文件把上面这些行为都固化成了契约plugins/decart/tests/test_decart_restyling.py 覆盖process_video触发连接、防重复建连、update_state的原子更新与 no-op、初始参考图传递、连接生命周期与错误分类重连plugins/decart/tests/test_decart_video_track.py 覆盖输出轨的尺寸、帧入队、超尺寸缩放、占位帧回退。排查行为疑问时翻对应测试名比翻源码快。 同一个框架还能搭别的智能体一句话总结语音指令进、Lucy 逐帧重绘、语音确认出——这条闭环装进 Vision Agents 的 Agent / Runner / 插件体系里就是一个能落地的虚拟试衣智能体换个服装表和音色就是自己的产品。框架是通用的示例之间只是组件拼法不同。想对照阅读的话examples/02_golf_coach_example 展示了实时姿态跟踪加语音教练examples/05_security_camera_example 展示了自定义视觉模型的安防监控Decart 插件自身的通用用法比如只用update_prompt做动态风格切换可以翻 plugins/decart/README.md。【免费下载链接】Vision-AgentsOpen Vision Agents by Stream. Build voice and vision agents quickly with any model or video provider. Uses Streams edge network for ultra-low latency.项目地址: https://gitcode.com/GitHub_Trending/vi/Vision-Agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑