【免费下载链接】rocketride-serverHigh-performance AI pipeline engine with a C core and 50 Python-extensible nodes. Build, debug, and scale LLM workflows with 13 model providers, 8 vector databases, and agent orchestration, all from your IDE. Includes VS Code extension, TypeScript/Python SDKs, and Docker deployment.项目地址https://gitcode.com/gh_mirrors/ro/rocketride-server点击查看免费下载RocketRide 的llm_vision_gemini节点是一个连接 Google Gemini 多模态模型的 filter 型组件用于在 pipeline 中对流入的图片执行描述、OCR、视觉理解与场景分析并以纯文本形式输出结果。读完本文你将理解该节点的双 lane 数据流设计、五个 Gemini 视觉模型 Profile 的选型依据、全部配置字段的语义以及其 30 秒硬超时、自动重试、双 lane 结果缓存等关键容错机制的源码级实现原理从而能在 RocketRide 中搭建可靠的批量图像/视频帧分析流水线。节点定位与整体职责llm_vision_gemini在 RocketRide 节点体系中注册为filter 节点register: filter协议前缀为image_vision_gemini节点类别为image由 Python 实现入口包路径为nodes.llm_vision_gemini。这些注册信息定义在 services.json 中{ title: Gemini Vision, protocol: image_vision_gemini://, classType: [image], capabilities: [invoke], register: filter, node: python, path: nodes.llm_vision_gemini, prefix: image_vision_gemini, lanes: { image: [text], documents: [documents] } }作为 filter 节点它的职责是“消费图片、产出文本”把图片交给 Gemini 视觉模型推理将模型的文字分析结果写回管道。它基于google-genaiSDK版本要求1.14.0见 requirements.txt实现每次推理调用都运行在独立的客户端与 worker 线程中并带有30 秒硬超时同时对瞬时错误超时、连接失败、5xx 响应执行一次指数退避的自动重试。若未配置分析提示词节点会退回默认提示词Describe this image in detail.。该节点典型用于高吞吐的场景例如接在帧抓取frame grabber之后对视频的每一帧做连续分析。得益于大多数 Profile 支持 100 万 token 的上下文窗口它可以顺序处理大量图片唯一例外是 Gemini 3.1 Flash Image Preview其上下文上限为 131,072 token。Lane 数据流设计节点提供两条输入 lane分别覆盖“单张流式图片”和“图片文档流”两种数据形态输入 Lane输出 Lane行为imagetext分析单张流式图片输出模型的文本响应documentsdocuments分析Image类型的文档输出携带原始元数据的文本分析imagelane走 RocketRide 的 AVI 图片协议BEGIN/WRITE/END分段写入适合上游是逐帧输出单张图片的来源。实现见 IInstance.py 的writeImage方法BEGIN时重置缓冲区与缓存WRITE阶段追加图像字节END阶段将累计的原始图片数据 base64 编码为data:mime;base64,...数据 URL构造Question后调用模型并把答案写到text输出。documentslane适合上游是文档流如视频抽帧得到的 frame 序列的场景。writeDocuments逐文档处理把Image文档的page_content当作 base64 编码的 PNG 数据交给模型分析后用一个Text文档替换原Image文档并通过rename_ext(doc.metadata, txt)保留原始元数据帧号、时间戳等。原始的Image文档不会向下游流动方法末尾调用preventDefault()类型不是Image或内容为空的文档会被跳过并记录警告。两条 lane 的关键细节是双 lane 缓存复用当同一帧同时触发了image和documents两条 lane 时节点只会调用一次 Gemini第二个 lane 直接复用缓存的答案避免同一张图片被计费两次。IInstance.py 中用_cached_answer与_cache_from_image两个字段区分缓存的写入来源防止多文档批次中上一帧的答案“串”到下一帧if self._cached_answer is not None and self._cache_from_image: # writeImage already called Gemini for this frame — reuse the result. answer_text self._cached_answer self._cached_answer None self._cache_from_image False模型 Profile 与选型节点通过image_vision_gemini.profile配置项选择模型默认值为Gemini 2.5 Flash - Fast Vision (1M tokens)gemini-2_5-flash。Profile 由 services.json 中的preconfig.profiles统一定义每个 Profile 会填充模型标识model与上下文上限modelTotalTokens两个字段Profile模型标识上下文 tokensgemini-2_5-flash默认models/gemini-2.5-flash1,048,576gemini-2_5-promodels/gemini-2.5-pro1,048,576gemini-2_5-flash-litemodels/gemini-2.5-flash-lite1,048,576gemini-3_1-pro-previewmodels/gemini-3.1-pro-preview1,048,576gemini-3_1-flash-image-previewmodels/gemini-3.1-flash-image-preview131,072选型建议源自节点 READMEFlash Lite最快、最便宜适合速度优先于细节的高吞吐帧处理流水线Flash速度与质量均衡大多数视觉任务的推荐默认Pro分析质量最高在精度关键、延迟可接受的场景使用3.1 Pro Preview / Flash Image Preview最新一代预览模型能力更强但预览阶段可能存在不稳定因素。services.json中还定义了tile展示规则Model: ${parameters.image_vision_gemini.profile}即节点在画布上的磁贴会直接显示当前所选 Profile便于在复杂管道中快速区分多个视觉节点。配置项与 Schema节点的用户可配置字段由nodes:docs-generate自动生成到 README 的 Schema 段如下字段类型说明默认值image_vision_gemini.apikeystringGoogle AI API key安全字段界面使用 ApiKeyWidget 控件空image_vision_gemini.profilestringVision Model选择要使用的 Gemini 视觉模型gemini-2_5-flashmodelstringGemini Vision 模型标识由 Profile 自动填充空modelTotalTokensnumber最大上下文长度tokens由 Profile 自动填充空vision.promptstringAnalysis Prompt描述希望从图片中分析或提取的内容空vision.systemPromptstringSystem Instructions定义模型在图像分析中的角色与行为空两个提示词字段的分工值得注意System Instructionsvision.systemPrompt定义模型的角色节点会把它作为 Gemini 请求的system_instruction随每次请求发送。源码中对应 gemini_vision.py 的逻辑仅当该值非空时才会写入generate_config[system_instruction]Analysis Promptvision.prompt每张图片要执行的具体任务。为空时节点使用默认值Describe this image in detail.。从 gemini_vision.py 的Chat.__init__可以看到两者的读取还带有向后兼容的回退链config.get(vision.systemPrompt) or config.get(systemPrompt)和config.get(vision.prompt) or config.get(prompt)旧配置里的通用字段也能被识别。源码级实现剖析推理调用链与 30 秒硬超时节点的核心推理类是 gemini_vision.py 中的Chat它继承自 packages/ai/src/ai/common/chat.py 体系下的ChatBase。一次chat()调用的处理顺序为提取图像数据从question.context中找到以data:image/或data:application/开头的 data URL若问题文本非空则优先使用question.questions[0].text作为提示词解析 data URL在重试循环之外一次性完成header/b64_data拆分、MIME 提取与 base64 解码格式错误会直接抛出Malformed image data URL异常避免重试浪费构造请求用Part.from_bytes(dataimage_bytes, mime_typemime_type)与Part.from_text(textprompt_text)组成一条roleuser的Content请求体在重试间完全一致带超时的执行每次尝试都在一个 daemon 线程_invoke中执行generate_content主线程t.join(timeout30)等待超时即抛出TimeoutError重试决策仅对_shouldRetry判定为可重试的异常重试一次退避时间delay 1.0 * 2**attempt首次重试前等待 1 秒连续两次超时不再重试即一次挂死的请求最多消耗两次 30 秒等待。每次尝试都新建一个genai.Client源码注释给出了原因# Fresh client per call — isolates the httpx session so concurrent # calls from multiple threads dont share a non-thread-safe connection client genai.Client(api_keyself._api_key)也就是说隔离 httpx 会话是为了让多线程并发调用之间不共享非线程安全的连接池这是该节点能够安全支撑高并发帧处理的前提。错误映射把原始异常翻译成可读信息Chat._format_user_error将 Gemini API 的原始错误按关键词映射为用户友好的中文排查线索英文文案覆盖以下类别错误类别匹配关键词映射后的提示认证失败unauthorized、invalid api key、authentication、api_key提示检查 Google AI API key限流rate limit、too many requests、429、quota提示稍后再试计费/额度billing、insufficient、credits提示检查账户额度与计费状态非法输入invalid input、bad request、400提示检查图片格式与提示词模型不可用model not found、unavailable、not supported提示换用其他模型超时timeout、timed out提示重试安全过滤content policy、safety、blocked提示图片被安全过滤器拦截服务端错误internal server error、500/502/503/504提示服务暂时不可用可重试的异常集合_shouldRetry为timeout、timed out、connection、500、502、503、504、internal server error、service unavailable。这与 README 中“超时、连接失败、5xx 响应自动重试一次”的描述一致。帧级容错单帧失败不中断管道两条 lane 的处理逻辑都遵循“失败即跳过”原则imagelane 上推理失败时仅记录Gemini Vision: inference failed for image frame: ...警告documentslane 上则以文档的metadata.chunkId定位失败帧无元数据时记为unknown警告后continue处理下一份文档。空帧/空内容文档同样只产生警告如skipping empty image frame、skipping document with unexpected type一帧坏图不会让整个流水线停摆——这是把它放进批量视频帧分析场景时最重要的可靠性保证。全局初始化与保存时的 API 探测节点的IGlobal层IGlobal.py承担两件事运行时初始化beginGlobal在非 CONFIG 模式下加载依赖、实例化Chat并读取maxConcurrent配置默认 5控制并发endGlobal负责清理。保存时配置校验validateConfig用固定探针提示词Hi对选中的模型发起一次最小化generate_content调用。如果 key 为空则直接跳过交给 UI 提示填写若抛出Unauthorized、NotFound、TooManyRequests、ServiceUnavailable等异常则解析错误体中的 status/message/code 并以warning形式暴露给用户无效 key、模型不存在、配额超限等。值得注意的是一个特判若返回INVALID_ARGUMENT且消息包含response modalities探测直接放行不报警——这类错误与视觉探测场景无关。认证与 API Key 校验在 Google AI Studio 的 API key 页面见 README 认证一节获取的 key 可用于开发用途并覆盖上文全部模型。节点对 key 做两层防御启动期格式校验Chat.__init__中以sk-开头的 key 会被立即拒绝错误信息明确指出“这看起来是一个 OpenAI key”避免用户把 OpenAI 凭据误填到 Gemini 节点key 缺失时同样报错并指向申请地址保存期真实探测如上文validateConfig所述用一次最小 API 调用把 key 无效、模型缺失、配额耗尽等问题在保存配置时提前暴露为警告而不是等到流水线运行时才失败。适用场景与限制结合源码与文档该节点的能力边界可以归纳为输入形态documentslane 上的图片文档内容按 base64 PNG 处理imagelane 支持任意mimeType来自 AVI 协议头输出形态始终是模型文本——图片描述、OCR 文本、视觉理解结论或场景说明documentslane 输出保留帧号、时间戳等元数据并发与成本每次推理独立客户端 独立线程 30 秒硬超时双 lane 场景下同一帧只计费一次maxConcurrent默认 5限制预览模型gemini-3_1-*能力更强但处于 preview 阶段稳定性不保证gemini-3_1-flash-image-preview的上下文窗口仅 131,072 token批量长视频帧分析时应优先选择 1M 窗口的 Profile重复超时不做第三次尝试极端情况下一次失败最多占用 60 秒2 × 30s等待。相关文件索引文件作用nodes/src/nodes/llm_vision_gemini/README.md节点官方文档本文主体来源nodes/src/nodes/llm_vision_gemini/services.json节点注册、lane、Profile 与字段 Schema 定义nodes/src/nodes/llm_vision_gemini/gemini_vision.pyChat推理类请求构造、超时、重试、错误映射nodes/src/nodes/llm_vision_gemini/IInstance.py双 lane 数据处理、AVI 协议、缓存复用、帧级容错nodes/src/nodes/llm_vision_gemini/IGlobal.py全局初始化、maxConcurrent、保存时 API 探测nodes/src/nodes/llm_vision_gemini/requirements.txt依赖声明google-genai1.14.0packages/ai/src/ai/common/llm_base.py该节点继承的LLMBase公共基类赞分享【免费下载链接】rocketride-serverHigh-performance AI pipeline engine with a C core and 50 Python-extensible nodes. Build, debug, and scale LLM workflows with 13 model providers, 8 vector databases, and agent orchestration, all from your IDE. Includes VS Code extension, TypeScript/Python SDKs, and Docker deployment.项目地址https://gitcode.com/gh_mirrors/ro/rocketride-server点击查看免费下载相关推荐ModelsGenesis与nnU-Net集成指南肝脏肿瘤分割排名第一的秘密ModelsGenesis与nnU Net集成指南肝脏肿瘤分割排名第一的秘密 ModelsGenesis是医学影像分析领域最早的基础模型之一荣获MICCRocketRide llm_perplexity 节点深度解析把 Perplexity Sonar 搜索增强大模型接入 AI 流水线RocketRide llm_perplexity 节点深度解析把 Perplexity Sonar 搜索增强大模型接入 AI 流水线 本文基于 RocketRocketRide llm_openai_api 节点实战把任意 OpenAI 兼容端点接入 AI 流水线附源码级配置与容错解析RocketRide llm_openai_api 节点实战把任意 OpenAI 兼容端点接入 AI 流水线附源码级配置与容错解析 本篇以 RocketRi上一篇MMPose 3D Body Keypoint 数据集实战指南Human3.6M、CMU Panoptic 与 Campus/Shelf 的准备与使用下一篇DeviceUtil社区贡献指南如何为设备列表添加新设备支持创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
英语词汇日常打卡:构建高效记忆体系的实用技巧 “单词记了忘,忘了再记,记了又忘……”这是很多学生和家长在英语学习过程中面临的痛点。今天,我想和大家分享一些关于英语词汇日常打卡的实用技巧,帮助大家构建一个高效的英语词汇记忆体系。
一、记忆技巧:巧用记忆法&… · 2026/9/25 4:37:50
NoFuserEx实战:还原ConfuserEx混淆的.NET程序集 简介:这是一款面向.NET程序的反混淆工具包,主要服务于逆向工程、恶意代码分析与安全研究场景,可帮助使用者剥离常见混淆层,定位核心逻辑与关键代码路径。压缩包内共10个文件,整体仅1.76MB,exe主程序负责入口… · 2026/9/25 4:37:50
短时记忆训练:让孩子轻松掌握学习技巧 在孩子的学习过程中,短时记忆能力的重要性不言而喻。它不仅关系到孩子对知识的掌握程度,更影响着他们的学习兴趣和自信心。那么,如何进行有效的短时记忆训练呢?以下是一些实用的方法和建议。
1. 创造有趣的学习环境
孩子们天生对新… · 2026/9/25 4:37:50
Atlas 300V 24G推理加速卡部署YOLO全攻略,手把手绕过踩坑 后台经常有朋友私信我第一句话就问:“Atlas 300V 24G是运算加速卡吗?能不能跑YOLO?”第二句话往往是:“网上说atlas部署yolo很麻烦,是真的吗?”这两个问题我当年刚拿到这张卡时也反复琢磨过。先说结论&… · 2026/9/25 6:49:16
精益与六西格玛:核心差异与协同应用指南 1. 精益与六西格玛的本质差异在制造业和服务业的质量管理实践中,精益(Lean)和六西格玛(Six Sigma)是两种最常被提及的方法论。虽然它们经常被并列讨论,但两者的核心目标和实施路径存在根本性差异。精益起源… · 2026/9/25 6:49:16
C盘又满了?一文教你修改Windows默认安装路径,彻底告别空间告急 C盘又红了,这句话几乎是我每次帮忙解决电脑问题时的开场白。Win10用户最容易遇到的一种情况是:系统盘明明分了128G甚至256G,软件却老是被默认装进C:\Program Files,Windows商店应用也默认往C盘塞,桌面文件、下载文件、… · 2026/9/25 6:49:16
EndNote完全指南:安装、Word插件、文献库管理与高频故障排查 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:49:16
Go语言for-range与switch深度解析与避坑指南 1. 项目概述作为一名长期奋战在Go语言一线的开发者,我见过太多同事在for-range和switch这两个看似简单的语法结构上栽跟头。这些坑往往在代码评审时才会被发现,有时甚至会导致线上事故。今天我们就来彻底剖析这两个语法结构的核心机制,让你在… · 2026/9/25 6:49:10
希格斯场:从上帝粒子到质量起源,粒子物理标准模型的核心枢纽 在对撞机数据和理论物理之间摸爬滚打多年之后,每次被问到“你觉得希格斯场到底是什么”,我都会停一下。因为这个问题看着基础,但真要把它说透,牵扯到的不仅仅是那个著名的“上帝粒子”,更是一整套现代物理学看待世界的… · 2026/9/25 6:49:10
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37