Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Claude模型异常 #1135

Open
5 tasks
zisanjun opened this issue Mar 12, 2024 · 16 comments
Open
5 tasks

Claude模型异常 #1135

zisanjun opened this issue Mar 12, 2024 · 16 comments
Labels
bug Something isn't working

Comments

@zisanjun
Copy link

例行检查

  • 我已确认目前没有类似 issue
  • 我已确认我已升级到最新版本
  • 我已完整查看过项目 README,尤其是常见问题部分
  • 我理解并愿意跟进此 issue,协助测试和提供反馈
  • 我理解并认可上述内容,并理解项目维护者精力有限,不遵循规则的 issue 可能会被无视或直接关闭

问题描述

大佬,自claude3发布后,好像API通信要求被改了,有了更多的要求,下游客户端出现了多种报错,如下:

{
"error": {
"message": "messages: Unexpected role "system". The Messages API accepts a top-level system parameter, not "system" as an input message role. (request id: 2024031217275455426917732821996)",
"type": "invalid_request_error",
"param": "",
"code": null
}
}

{"error":{"message":"messages: first message must use the "user" role (request id: 2024031211095676132633895366427) (request id: 2024031211095627433661757301115)","type":"invalid_request_error","param":"","code":null}}

{"success":false,"content":null,"tokenCount":0,"errorMessage":"{"error":{"message":"messages: roles must alternate between "user" and "assistant", but found multiple "user" roles in a row (request id: 2024031218095472528132521153205)","type":"invalid_request_error","param":"","code":null}}","inputTokens":-1,"outputTokens":-1}

我可以提供多个claude apikey以供测试 可以发到大佬您的邮箱或者加我QQ84680396
复现步骤

预期结果

@zisanjun zisanjun added the bug Something isn't working label Mar 12, 2024
@zisanjun
Copy link
Author

zisanjun commented Mar 12, 2024

体现在oneapi上的错误就是日志有记录,但该条记录的token数量为空白
(应该与issue中另外一位伙伴是同一个问题)

@zisanjun
Copy link
Author

新报错:
{"error":{"message":"messages: first message must use the "user" role (request id: 2024031223523252991746241451096) (request id: 2024031223523195377616522158465)","type":"invalid_request_error","param":"","code":null}}

@songquanpeng
Copy link
Owner

麻烦发一下请求体

@zisanjun
Copy link
Author

{"model":"claude-1.3-100k","contentType":"Text","sessionUuid":null,"mask":null,"stream":"true","temperature":0.5,"n":null,"functions":null,"messages":[{"id":null,"role":"assistant","content":"迷糊通常表示以下几个意思:\n\n1. 意识模糊,思维不清晰。如刚睡醒后的状态,还没有完全清醒过来。\n\n2. 对某件事不太清楚,缺乏清晰和准确的理解。如对工作任务或学习内容迷糊,不太明白。\n\n3. 记忆力差,健忘。常常忘记要做的事或忘记已经做过的事,给人留下随意或不靠谱的印象。\n\n4. 不太精明或机警,容易上当受骗。如对陌生人太过信任,容易被人利用。\n\n5. 举止或言语不太连贯清晰,让人觉得似懂非懂。这种迷糊往往让人觉得这人有点儿糊涂或傻乎乎的。\n\n所以,迷糊是一个比较负面的词,表示一定程度上的意识不清、判断不准、记忆差等状态。对一个人来说,时常迷糊会给人留下不太靠谱或有点儿糊涂的印象。但偶尔迷糊也是人之常情,不必太过在意。重要的是要尽量避免在重要场合或工作中迷糊以免影响表现。","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"你好吗","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"assistant","content":"json\n{\n \"error\": {\n \"message\": \"messages: first message must use the \\\"user\\\" role (request id: 2024031212402264177661902963411) (request id: 2024031212402259186095833740833)\",\n \"type\": \"invalid_request_error\",\n \"param\": \"\",\n \"code\": null\n }\n}\n","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"为什么报错了","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null}],"modelEntity":null,"apiKeyEntity":null,"sessionEntity":null,"plugins":null,"resend":false,"assistantMessageId":null,"threadUuid":null,"lastMessage":{"id":null,"role":"user","content":"为什么报错了","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},"presence_penalty":0.0,"frequency_penalty":0.0,"top_p":1.0,"max_tokens":null}

响应:{"success":false,"content":null,"tokenCount":0,"errorMessage":"{"error":{"message":"messages: first message must use the \"user\" role (request id: 2024031300350947244414732578428)","type":"invalid_request_error","param":"","code":null}}","inputTokens":-1,"outputTokens":-1}

使用的下游客户端程序是nextweb

大佬,不同报错我得收集,收集到了我继续comment,您先休息,早点睡觉,祝好梦

@zisanjun
Copy link
Author

请求:
{"model":"claude-3-sonnet-200k","contentType":"Text","sessionUuid":null,"mask":null,"stream":"true","temperature":0.5,"n":null,"functions":null,"messages":[{"id":null,"role":"system","content":"You are ChatGPT, a large language model trained by OpenAI.\nKnowledge cutoff: 2021-09\nCurrent model: claude-3-sonnet-20240229\nCurrent time: 2024-03-14","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"system","content":"这是历史聊天总结作为前情提要:对话内容涉及了问候、能力介绍、数学题求解等。下面是一个简要总结:\n\n用户问候并询问助手是否能够解答数学题,助手回答肯定并表示可以解答各种数学题。用户提出了一个关于鸡和兔子数量的问题,助手通过列方程并解方程的方式给出了解答。接着用户提问了一个乘法题,助手进行了详细的计算并给出了答案。","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"888X999等于多少","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"assistant","content":"好的,让我们计算一下888 x 999的值:\n\n888\nx999\n------\n888,000\n79,920,000\n71,904,000\n----------\n888,888,000\n\n过程是:\n1) 先把888乘以999的最后一位9,得到888 x 9 = 7,992\n2) 把7,992加上一个0,得到79,920,000\n3) 再把888乘以99的9,得到888 x 99 = 87,912\n4) 把87,912乘以10,得到879,120,000\n5) 把第2步和第4步的结果相加,得到888,888,000\n\n所以,888 x 999 = 888,888,000","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"666x777是?","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"assistant","content":"好的,让我们计算666 x 777:\n\n666\nx777\n-------\n4,662\n53,292\n466,662\n---------\n517,722\n\n解释如下:\n1) 先计算666 x 7 = 4,662\n2) 把4,662加一个0,得53,292,000\n3) 再计算666 x 77 = 51,282\n4) 把51,282乘以10,得512,820,000\n5) 把第2步和第4步的结果相加,得517,722,000\n\n所以,666 x 777 = 517,722,000","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"你好聪明啊","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null}],"modelEntity":null,"apiKeyEntity":null,"sessionEntity":null,"plugins":null,"resend":false,"assistantMessageId":null,"threadUuid":null,"lastMessage":{"id":null,"role":"user","content":"你好聪明啊","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},"presence_penalty":0.0,"frequency_penalty":0.0,"top_p":1.0,"max_tokens":null}

响应:
{"success":false,"content":null,"tokenCount":0,"errorMessage":"{"error":{"message":"messages: Unexpected role \"system\". The Messages API accepts a top-level system parameter, not \"system\" as an input message role. (request id: 2024031420285160774753140428724)","type":"invalid_request_error","param":"","code":null}}","inputTokens":-1,"outputTokens":-1}

@zisanjun
Copy link
Author

目前使用的oneapi版本:v0.6.2-alpha.13

请求:
{"model":"claude-1.3-100k","contentType":"Text","sessionUuid":null,"mask":null,"stream":"true","temperature":0.5,"n":null,"functions":null,"messages":[{"id":null,"role":"system","content":"You are ChatGPT, a large language model trained by OpenAI.\nKnowledge cutoff: 2021-09\nCurrent model: claude-1.3\nCurrent time: 2024-03-14","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"system","content":"这是历史聊天总结作为前情提要:对话总结:用户询问AI对文职类工作的看法,AI表示对文职工作持积极正面态度,认为文职工作稳定、适合不喜欢频繁学习新技术的人,工作压力小,工资和福利相对稳定。用户特别提到文员工作,AI进一步解释文员工作的稳定性、工作内容的固定性,以及晋升机会较少但工作稳定性高的特点。AI总结文员工作适合追求稳定生活的人,但需综合考虑工资水平。","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"我觉得文员比较靠谱","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"assistant","content":"是的,文员工作属于典型的文职工作,比较靠谱稳定。具体来说:\n\n1. 文员工作的技能和知识要求比较固定,不需要频繁学习新的技能,比较适合那些不喜欢经常学习新的技术的人。\n\n2. 文员的工作内容和工作流程比较稳定,不会经常发生很大变化,所以工作强度和压力也比较小。\n\n3. 文员工作提供的工资和福利也比较稳定。虽然工资水平不高,但基本能保障生活,也有各种法定福利。\n\n4. 文员工作的晋升机会较少,但工作稳定性高。很多人可以长期在同一个文员岗位工作多年。\n\n5. 文员工作门槛较低,比较容易找到工作。只要有一定的语言文字功底和办公软件使用能力,基本上可以胜任文员工作。\n\n所以,总体来说,文员工作比较稳定可靠,工作压力小,比较适合那些追求稳定生活的人。如果对工作的发展和晋升机会要求不高,文员工作可以作为一个不错的选择。当然,如果工资水平无法满足生活需要,也需要综合考虑。","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"是的,不过工资方面是看地方的","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"assistant","content":"json\n{\n \"error\": {\n \"message\": \"messages: Unexpected role \\\"system\\\". The Messages API accepts a top-level `system` parameter, not \\\"system\\\" as an input message role. (request id: 2024031420420164887999431360752)\",\n \"type\": \"invalid_request_error\",\n \"param\": \"\",\n \"code\": null\n }\n}\n","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},{"id":null,"role":"user","content":"?","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null}],"modelEntity":null,"apiKeyEntity":null,"sessionEntity":null,"plugins":null,"resend":false,"assistantMessageId":null,"threadUuid":null,"lastMessage":{"id":null,"role":"user","content":"?","hasName":false,"name":null,"tool_call_id":null,"function_call":null,"tool_calls":null},"presence_penalty":0.0,"frequency_penalty":0.0,"top_p":1.0,"max_tokens":null}

响应:

{"success":false,"content":null,"tokenCount":0,"errorMessage":"{"error":{"message":"messages: Unexpected role \"system\". The Messages API accepts a top-level system parameter, not \"system\" as an input message role. (request id: 2024031420453130110263771958642)","type":"invalid_request_error","param":"","code":null}}","inputTokens":-1,"outputTokens":-1}

@FoamCold
Copy link

The Messages API accepts a top-level sysChat Completion API messages: Unexpected role "system". The Messages API accepts a top-level system parameter, not "system" as an input message role. (request id: 202403180721225026027321890617)tem parameter, not "system" as an input message role

@FoamCold
Copy link

The Messages API accepts a top-level sysChat Completion API messages: Unexpected role "system". The Messages API accepts a top-level system parameter, not "system" as an input message role. (request id: 202403180721225026027321890617)tem parameter, not "system" as an input message roleMessages API接受顶级 sysChat Completion API messages: Unexpected role "system". The Messages API accepts a top-level system parameter, not "system" as an input message role. (request id: 202403180721225026027321890617)tem 参数,而不是“system”作为输入消息角色

确实,我也遇到这个问题

@FoamCold
Copy link

试了下,就是只能第一条role: "system",第二条role: "user",第三条
role: "assistant",然后后续都user、assistant交替,不能第一条role: "system",第二条role: "system",也不能第一条role: "system",第二条role: "assistant",对于像SillyTavern这种交互就不行了,希望能尽快改善吧

@L9qmzn
Copy link

L9qmzn commented Apr 4, 2024

可以简单修改一下/relay/channel/anthropic/main.go第53行,把系统提示词拼接起来。
claudeRequest.System = "" for _, message := range textRequest.Messages { if message.Role == "system" { claudeRequest.System += message.StringContent() continue }

@slot181
Copy link

slot181 commented Jun 28, 2024

+1,我发现这问题到今天还存在,chatbox在发送图片也会出现这个情况,酒馆就更不用说了,直接压根用不了……

@hackerpayne
Copy link

+1 同样的问题,求Fix

@jerry-intrii
Copy link

+1 cursor遇到相同問題

@panthole
Copy link

+1 求修复

@E-sion
Copy link

E-sion commented Sep 2, 2024

+1

@00010110
Copy link

有计划修复吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

10 participants