例行检查[//]: # (方框内删除已有的空格,填 x 号
问题描述
{"error":{"message":"请确保多轮请求以用户角色或功能响应结尾。(请求ID: 20231218115733848767070nWkJNglT)","type":"","param":"","code":400}}
复现步骤预期结果相关截图
如果没有的话,请删除此节。
5us2dqdw1#
我昨天一开始也遇到了这个问题,我怀疑这跟文心一言一样,要求在多伦对话时,传入的列表必须是单数,不能是偶数。我自己在客户端编写了一个代码,当判断发过去的对话是偶数的情况下,就删除最前面的一条消息。直到现在还没有遇到报错。你也可以考虑看看是否能解决这个问题。
mrfwxfqh2#
我也遇到了,应该不是个例。
xienkqul3#
我也遇到过这个问题,看起来像是多轮回话,同一个用户不能连续说多次,只能多角色相互交替发言。
ymzxtsji4#
要解决这个问题,您可以在Langchain中使用ConversationChain和ConversationBufferMemory。这就是我在尝试使用消息之前所使用的。起初,我认为消息会随着我们追加消息而动态更新,但似乎它无法处理多于一个人类消息
ConversationChain
ConversationBufferMemory
ymdaylpp5#
或者尝试这个:babaohuang/GeminiProChat#28(评论)我之前的评论并不完全正确(消息部分没有处理多条消息),而是应该将人类消息和AI消息的连续性结合起来,我在提供的链接中解释得更好。
wfauudbj6#
你们使用的是哪个客户端?
sxpgvts37#
你们使用的是哪个客户端?chatx和jb idea codegpt插件
oalqel3c8#
我怎么会在这里结束?
u4dcyp6a9#
根据当前的实现,只要系统消息和助手消息同时存在,就会发生错误。one-api/relay/adaptor/gemini/main.go第120行到第131行| | // 如果系统消息是最后一条消息,我们需要添加一个虚拟模型消息,以使gemini正常工作 || | if shouldAddDummyModelMessage { || | geminiRequest.Contents=append(geminiRequest.Contents, ChatContent{ || | Role: "model", || | Parts: []Part{ || | { || | Text: "Okay", || | }, || | }, || | }) || | shouldAddDummyModelMessage=false || | } |示例:
// 1. works [ { "role": "system", "content": "system_prompt" }, { "role": "user", "content": "user_content" } ] // -> [ { "role": "user", "content": "system_prompt" }, { "role": "model", "content": "Okay" }, { "role": "user", "content": "user_content" } ] // 2. broken [ { "role": "system", "content": "system_prompt" }, { "role": "assistant", "content": "xxxx" }, { "role": "user", "content": "user_content" } ] // -> [ { "role": "user", "content": "system_prompt" }, { "role": "model", "content": "Okay" }, { "role": "model", "content": "xxxx" }, { "role": "user", "content": "user_content" } ]
9条答案
按热度按时间5us2dqdw1#
我昨天一开始也遇到了这个问题,我怀疑这跟文心一言一样,要求在多伦对话时,传入的列表必须是单数,不能是偶数。我自己在客户端编写了一个代码,当判断发过去的对话是偶数的情况下,就删除最前面的一条消息。直到现在还没有遇到报错。你也可以考虑看看是否能解决这个问题。
mrfwxfqh2#
我也遇到了,应该不是个例。
xienkqul3#
我也遇到过这个问题,看起来像是多轮回话,同一个用户不能连续说多次,只能多角色相互交替发言。
ymzxtsji4#
要解决这个问题,您可以在Langchain中使用
ConversationChain
和ConversationBufferMemory
。这就是我在尝试使用消息之前所使用的。起初,我认为消息会随着我们追加消息而动态更新,但似乎它无法处理多于一个人类消息
ymdaylpp5#
或者尝试这个:babaohuang/GeminiProChat#28(评论)
我之前的评论并不完全正确(消息部分没有处理多条消息),而是应该将人类消息和AI消息的连续性结合起来,我在提供的链接中解释得更好。
wfauudbj6#
你们使用的是哪个客户端?
sxpgvts37#
你们使用的是哪个客户端?
chatx和jb idea codegpt插件
oalqel3c8#
我怎么会在这里结束?
u4dcyp6a9#
根据当前的实现,只要系统消息和助手消息同时存在,就会发生错误。
one-api/relay/adaptor/gemini/main.go
第120行到第131行
| | // 如果系统消息是最后一条消息,我们需要添加一个虚拟模型消息,以使gemini正常工作 |
| | if shouldAddDummyModelMessage { |
| | geminiRequest.Contents=append(geminiRequest.Contents, ChatContent{ |
| | Role: "model", |
| | Parts: []Part{ |
| | { |
| | Text: "Okay", |
| | }, |
| | }, |
| | }) |
| | shouldAddDummyModelMessage=false |
| | } |
示例: