-
-
Notifications
You must be signed in to change notification settings - Fork 3k
zh providers image formats
build_main_agent 在图片描述和 Agent 初始化前处理初始图片,包括普通附件、引用图片及插件 ProviderRequest 中的图片,直接调用构建函数也适用。请求 Hook 执行后,流水线只检查新增的图片引用;已有引用复用处理结果,不再次检查文件。
- 原始图片文件超过 64 MiB 时,在读取内容和解码像素前跳过;原因与保留的原图路径会保存到历史。另向模型提供临时建议:使用可用的文件读取工具,或请用户重发较小的图片,这段建议不保存到历史。小于等于 64 MiB 的图片正常处理。
- 模型使用的单张图片文件严格小于 512 KiB(524,288 字节)。限制针对 Base64 编码前的图片文件,不是整个请求体。
- 在管理面板的配置文件页面搜索输入图片最大边长,对应
provider_settings.image_compress_options.max_size,默认 1280 像素。初始图片保持宽高比,小图不会放大;为满足文件体积限制,必要时会进一步缩小。Hook 新增图片同样按配置限制最长边、处理格式和动图,并应用 64 MiB 输入上限和严格小于 512 KiB 的输出限制。 - 方向正常、像素尺寸及文件体积均合规的 JPEG/PNG 保留原始字节。其余静图修正方向后编码为 JPEG;含透明度的图片输出 PNG,即使需要进一步缩小也保留透明通道。
- GIF、动画 WebP、APNG 等动图均匀选取最多 9 帧,包含首尾动画帧,生成白底 3×3 拼图。不足 9 帧的格子留白,APNG 的独立封面不参与采样。
- 重新编码时移除不必要的元数据;与输出色彩空间兼容、且不影响体积达标的色彩配置保留。
CUA 会话中的用户输入图片也遵守这些限制;截图及其他工具返回的图片继续使用各自的处理逻辑。
| 原配置项 | 现在的行为 |
|---|---|
启用图片压缩(image_compress_enabled) |
已移除,当前输入图片始终处理。 |
压缩质量(image_compress_options.quality) |
已移除,自动控制输出体积。 |
最大边长(image_compress_options.max_size) |
更名为“输入图片最大边长”,同时遵守严格小于 512 KiB 的文件体积限制。 |
旧配置文件中遗留的启用开关和 JPEG 质量值不再影响图片处理。
图片处理阶段统一生成普通的 Image N 文本说明,包含原图路径,并标明是否来自引用消息。序号按 Hook 和过滤之后的图片顺序生成:额外图片内容块在前,image_urls 在后。请求实体和消息模型不新增附件元数据。引用来源和成功生成描述的图片由对应处理步骤直接传递,不解析提示文本推断状态;Hook 后只更新本次流程自己生成的提示对象,保留插件传入的文本。跳过的图片只保留原因和原图路径,不占图片序号;动图会标明已转换为九宫格。交给图片描述模型处理的图片标为已转文字描述,不占主请求的图片序号。
image_urls 及图片内容块直接复用合规的本地 JPEG/PNG 文件,不创建工作副本;需要转换的图片才使用处理后的预览文件。提供给模型、供工具读取文件的附件说明仍然指向原始图片路径,不会替换为预览路径。原始文件和事件中的图片组件均不被覆盖。
模型预览文件归当前事件所有,事件完成、失败或取消后清理,不再保留跨请求图片转换缓存。同一请求中重复出现的图片引用复用同一份预览,请求 Hook 前后的准备过程也会去重。
成功本地化的附件原图,包括引用图片,不随事件结束删除。临时目录中的原图仍受 temp_dir_max_size 容量清理约束,不属于永久存储。请求收集失败时,尚未成功接管的源文件仍按事件临时文件清理。
对话历史会在预览文件删除前保存模型使用的图片内容,采用 Base64 data URI;旧历史不会重新处理。无法读取的图片会跳过,不影响其他文字和正常图片;取消、资源耗尽及程序错误不会被当作坏图忽略。
第三方 Agent 后端、绕过主 Agent 构建函数直接调用 provider,以及工具返回的图片,不属于本次输入图片处理范围。
- 首页
- 文档入口
- Top Level
- community events
- deploy
- dev
- others
- platform
- 接入 OneBot v11 协议实现
- 接入钉钉 DingTalk
- 接入 Discord
- 接入 Kook
- 接入飞书
- 接入 LINE
- 接入 Matrix
- 接入 Mattermost
- 接入 Misskey 平台
- 接入 QQ 官方机器人平台
- 通过 QQ官方机器人 接入 QQ (Webhook)
- 通过 QQ官方机器人 接入 QQ (Websockets)
- 接入 Satori 协议
- 接入 server-satori (基于 Koishi)
- 接入 Slack
- 接入消息平台
- 接入 Telegram
- 接入 VoceChat
- AstrBot 接入企业微信
- 接入企业微信智能机器人平台
- AstrBot 接入微信公众平台
- 接入个人微信
- providers
- use
- Home
- Docs Entry
- Top Level
- config
- deploy
- Deploy AstrBot on 1Panel
- Deploy AstrBot on BT Panel
- Deploy AstrBot on CasaOS
- Deploy AstrBot from Source Code
- Community-Provided Deployment Methods
- Deploy via Compshare
- Deploy with AstrBot Desktop Client
- Deploy AstrBot with Docker
- Deploy AstrBot with Kubernetes
- Deploy AstrBot with AstrBot Launcher
- Other Deployments
- Package Manager Deployment (uv)
- Installation via System Package Manager
- Preface
- dev
- AstrBot Configuration File
- API Scope–Endpoint Reference
- AstrBot HTTP API
- AstrBot Plugin Market JSON Specification
- Developing a Platform Adapter
- plugin
- AI
- Text to Image
- Handling Message Events
- Plugin Configuration
- Plugin Internationalization
- Plugin Views
- Sending Messages
- Session Control
- Minimal Example
- Plugin Storage
- AstrBot Plugin Development Guide 🌠
- Publishing Plugins to the Plugin Marketplace
- ospp
- others
- platform
- Connect OneBot v11 Protocol Implementations
- Connect to DingTalk
- Connecting to Discord
- Connect to KOOK
- Connecting to Lark
- Connecting to LINE
- Connecting to Matrix
- Connecting to Mattermost
- Connecting to Misskey Platform
- Connect QQ Official Bot
- Connect QQ via QQ Official Bot (Webhook)
- Connect QQ via QQ Official Bot (Websockets)
- Connect to Satori Protocol
- Connect server-satori (Koishi)
- Connecting to Slack
- Messaging Platforms
- Connecting to Telegram
- Connect to VoceChat
- Connect AstrBot to WeCom
- Connect to WeCom AI Bot Platform
- Connect AstrBot to WeChat Official Account Platform
- Connect Personal WeChat
- providers
- Connect 302.AI
- Agent Runners
- Built-in Agent Runner
- Connect to Coze
- Connect to Alibaba Cloud Bailian Application
- Connect to DeerFlow
- Connect to Dify
- Connect AIHubMix
- coze
- dashscope
- dify
- Model input images
- Large Language Model Providers
- Connect MiraRouter
- NewAPI
- Connect PPIO Cloud
- Connect LM Studio to Use DeepSeek-R1 and Other Models
- Integrating Ollama
- Connect ShengSuanYun
- Connecting to SiliconFlow
- Connecting Model Services
- Connecting to TokenPony
- use
- Agent Runner
- Agent Sandbox Environment ⛵️
- astrbot sandbox
- CLI Commands
- Docker-based Code Interpreter
- Built-in Commands
- Computer Use
- Context Compression
- Custom Rules
- Function Calling
- AstrBot Knowledge Base
- MCP
- AstrBot Star
- Proactive Capabilities
- Anthropic Skills
- Agent Handoff and SubAgent
- Unified Webhook Mode
- Web Search
- WebUI