Unable to call API payload containing alwayson_scripts

用户在 Ubuntu 24.10 系统、RTX 2070 环境下,使用 Python 的 requests 库向 Stable Diffusion WebUI Forge (lllyasviel/stable-diffusion-webui-forge) 的 http://127.0.0.1:786

Unable to call API payload containing alwayson_scripts

Unable to call API payload containing alwayson_scripts

快速结论:此问题通常发生在调用 Stable Diffusion WebUI Forge 的 /sdapi/v1/txt2img API 时,alwayson_scripts 中包含的扩展脚本参数列表长度超出预期。优先排查 alwayson_scripts 中各扩展的数组长度是否与 Forge API 期望一致。

问题场景

用户在 Ubuntu 24.10 系统、RTX 2070 环境下,使用 Python 的 requests 库向 Stable Diffusion WebUI Forge (lllyasviel/stable-diffusion-webui-forge) 的 http://127.0.0.1:7860/sdapi/v1/txt2img 端点发送 POST 请求。当请求 payload 中包含 alwayson_scripts 键时,服务器返回 HTTP 500 错误,并报错 list assignment index out of range;删除 alwayson_scripts 后请求成功。

报错原文

# Response: <Response [500]>
# Response JSON:
{'error': 'IndexError', 'detail': '', 'body': '', 'message': 'list assignment index out of range'}

# Terminal error trace (line reference):
# https://github.com/lllyasviel/stable-diffusion-webui-forge/blob/main/modules/api/api.py#L362

原因分析

可能原因是 alwayson_scripts 中的一个或多个扩展脚本在 payload 中提交的列表项数量超过了 Forge API 对该扩展参数的预期。根据 Issue 中的排查结果,这很可能是由于 API payload extension 或其他扩展插件生成的 alwayson_scripts 数据结构格式错误导致的,并非 Forge 核心 API 的问题。当 payload 中只有单个简化测试扩展时,请求可以成功。

环境排查

  • 确认使用的 WebUI Forge 版本(是否为近期更新)
  • 检查 alwayson_scripts 中涉及的所有扩展插件(如 ControlNet 等)是否已更新至最新版本
  • 验证扩展插件是否提供 Forge 兼容的 API 端点(可通过访问 http://<your webui url>/docs 测试)
  • 确认 payload.json 中的数组结构是否与扩展插件 API 文档一致

解决步骤

  1. 精简 alwayson_scripts:从 payload 的 alwayson_scripts 中逐一移除扩展,每次只保留一个扩展进行测试,定位出具体哪个扩展导致错误。可优先尝试仅保留一个简单扩展。
  2. 验证扩展 API 参数:访问 http://<your webui url>/docs,找到 GET script-info 端点(也可能是 POST 端点),执行测试并下载返回的 .json 文件。检查该 JSON 中的所有扩展及其参数结构,与自己使用的 payload 中的 alwayson_scripts 结构进行对比。
  3. 调整 payload:根据从 /docs 获取到的正确参数结构,修正 alwayson_scripts 中对应扩展的列表项长度和顺序。
  4. 使用 override_settings/alwaysonscripts 字典:如果扩展支持,可考虑将 alwayson_scripts 的参数改写到 override_settingsalwaysonscripts 字典中,而不是直接以数组形式提交。

验证方法

提交修正后的 payload,确认 API 返回 HTTP 200 状态码,并且 response.json() 中不包含 IndexError 错误。为保险起见,可先使用单个简化扩展测试,确保正常返回后再逐步添加其他扩展。

参考来源

lllyasviel/stable-diffusion-webui-forge #2517

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 8659

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注