当模式输入变成系统消息时,Groq chat.completions 会拒绝 Fabric 有效负载(最后角色必须为 'user')
作者: das-analyst创建于 2026年5月1日更新于 2026年6月10日
标题: Groq 聊天。 当模式输入成为系统消息时, 完成会拒绝 Fabric 有效载荷( 最后的角色必须是“ 用户 ”)
内容提要
Fabric可以产生只包含系统消息的聊天有效载荷(与INPUT结合的平面指令). Groq的谈话。 professions API 拒绝此选项时写道 : “ 最后一个消息角色必须是“ 用户 ” 。 这打破了许多使用Groq供应商的内在模式(例如总结)。
环境
- 纤维CLI v1.4.451
- Groq供应商通过~/.config/fabric/.env(GROQ API BASE URL=https://api.groq.com/ZOpenAI/v1,DEFAULT-MODEL=groq/compound)配置.
复制
- 确保以~/.config/fabric/.env提供格罗克配置。
- 运行 :
打印“摘要的测试输入”。 QQ 织物 - p 概括 - vendor Groq - 模型 groq/ compound - debug=4
- 观察出错并调试显示单一系统消息和Groq响应的行:
POST"https://api.groq.com/OpenAI/v1/chat/completes":400 Bad Request {"message":"最后的信息角色必须是"用户"}
预期 当发送到聊天时。 补全时, 消息阵列中的最后消息应该是角色='user' 。 家具应:
- 将图案作为单独的信息(系统+用户)发送,因此最后的信息角色是“用户”,或
- 检测Groq在发送前需要用户信息并附加用户信息(如输入).
建议的固定(最小)
- 在Groq/OpenAI兼容的供应商适配器中,在构建信息阵列时:
- 如果信件目前以角色结束 !='user'(或只有系统消息),在 POST 之前将用户信件与输入内容相附加(或将输入移入最后的用户信件).
- 添加包含将INPUT占位符放入 system.md 的单元/整合测试,以确保 Groq 聊天请求总是以用户角色结束 。
任择说明 – 许多模式通过设计将INPUT标记放入了system.md;适配器应该通过确保最后一个消息角色是聊天端点的"用户"来坚固地适应.
我可以根据请求提供调试日志和摘要图案文件.
内容来源: danielmiessler/Fabric