Pre-submission Checklist / 提交前检查
Problem Statement / 问题描述
在处理 OpenAI 兼容的图像编辑/变体请求(multipart/form-data)时,AxonHub 目前存在两个实际限制:
- 对于multipart/form-data传入的请求体,默认执行
json.Marshal(body)会出错,导致“请求页面”查看请求体时只能显示invalid text错误;
- 单张图像上传大小固定限制为 4MB,没有对应的环境变量方便修改;
Proposed Solution / 期望方案
- 希望修改
image_inbound.go和request.go,增加对multipart/form-data格式的处理,在“请求”页面能够正确看到请求体;
- 希望将
image_inbound.go的const maxImageFileSize变量改为从环境变量中加载值;
Alternatives Considered / 备选方案
我本地修改了代码,主要修改了 internal\server\biz\request.go 和 llm\transformer\openai\image_inbound.go 这两个文件。
- 上传图片的默认大小我这里是直接修改了
maxImageFileSize 变量:
- 对于multipart/form-data格式的请求体问题,我在image_inbound.go中增加了这个函数:
// buildMultipartJSONBody builds a JSON representation of a multipart/form-data request
// suitable for logging. Binary image/mask data is replaced with a human-readable
// metadata string (content-type + size) to avoid storing raw binary in the database.
func buildMultipartJSONBody(fields map[string]string, images []multipartFile, mask *multipartFile) ([]byte, error) {
body := make(map[string]any, len(fields)+2)
for k, v := range fields {
if v != "" {
body[k] = v
}
}
switch len(images) {
case 1:
body["image"] = fmt.Sprintf("[%s, %d bytes]", images[0].ContentType, len(images[0].Data))
case 0:
// no image
default:
descs := make([]string, len(images))
for i, img := range images {
descs[i] = fmt.Sprintf("[%s, %d bytes]", img.ContentType, len(img.Data))
}
body["image"] = descs
}
if mask != nil {
body["mask"] = fmt.Sprintf("[%s, %d bytes]", mask.ContentType, len(mask.Data))
}
return json.Marshal(body)
}
然后分别在 transformEditRequest方法和transformVariationRequest中添加了如下代码:
// Build JSONBody for logging: replace binary image data with metadata descriptions.
if jsonBody, err := buildMultipartJSONBody(formData.Fields, formData.Images, formData.Mask); err == nil {
httpReq.JSONBody = jsonBody
}
- 然后,我首先修改了
request.go ,作用是判断httpRequest是否携带上一步得到的JSONBody:
Feature Category / 功能分类
API Compatibility / API 兼容性
Additional Context / 其他补充信息
No response
Pre-submission Checklist / 提交前检查
Problem Statement / 问题描述
在处理 OpenAI 兼容的图像编辑/变体请求(multipart/form-data)时,AxonHub 目前存在两个实际限制:
json.Marshal(body)会出错,导致“请求页面”查看请求体时只能显示invalid text错误;Proposed Solution / 期望方案
image_inbound.go和request.go,增加对multipart/form-data格式的处理,在“请求”页面能够正确看到请求体;image_inbound.go的const maxImageFileSize变量改为从环境变量中加载值;Alternatives Considered / 备选方案
我本地修改了代码,主要修改了
internal\server\biz\request.go和llm\transformer\openai\image_inbound.go这两个文件。maxImageFileSize变量:然后分别在 transformEditRequest方法和transformVariationRequest中添加了如下代码:
request.go,作用是判断httpRequest是否携带上一步得到的JSONBody:Feature Category / 功能分类
API Compatibility / API 兼容性
Additional Context / 其他补充信息
No response