lobehub / lobe-chat

🤯 Lobe Chat - an open-source, modern-design AI chat framework. Supports Multi AI Providers( OpenAI / Claude 3 / Gemini / Ollama / Azure / DeepSeek), Knowledge Base (file upload / knowledge management / RAG ), Multi-Modals (Vision/TTS) and plugin system. One-click FREE deployment of your private ChatGPT/ Claude application.
https://chat-preview.lobehub.com
Other
40.69k stars 9.27k forks source link

[Bug] 对话框中选择Claude无法链接 #3183

Closed Pai-Po closed 2 months ago

Pai-Po commented 2 months ago

📦 Environment

Zeabur

📌 Version

latest

💻 Operating System

Other Linux

🌐 Browser

Chrome

🐛 Bug Description

image 测试网络连接时,是可以连接通的;我的代理服务器也成功转发了请求; 然而当我在对话框中尝试用claude时,会发生如下错误,模型选择的是Haiku { "error": { "status": 500, "headers": { "content-length": "142", "content-type": "application/json" }, "error": { "timestamp": "2024-07-09T13:01:49.417+00:00", "path": "/v1/messages", "status": 500, "error": "Internal Server Error", "requestId": "35a60294-299671" } }, "endpoint": "https://api.gp****pi.net/", "provider": "anthropic" } 切换选择模型为3.5-sonnet时,会报如下错误 { "error": { "status": 404, "headers": { "content-type": "application/json" }, "error": { "error": { "message": "Invalid URL (POST /v1/messages) (request id: )", "type": "invalid_request_error", "param": "", "code": "" } } }, "endpoint": "https://api.gp****pi.net/", "provider": "anthropic" } ,感觉有点问题

📷 Recurrence Steps

No response

🚦 Expected Behavior

No response

📝 Additional Information

No response

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


📦 Environment

Zeabur

📌 Version

latest

💻 Operating System

Other Linux

🌐 Browser

Chrome

🐛 Bug Description

image When testing the network connection, the connection was successful; my proxy server also successfully forwarded the request; However, when I try to use claude in the dialog box, the following error occurs. The model selected is Haiku. { "error": { "status": 500, "headers": { "content-length": "142", "content-type": "application/json" }, "error": { "timestamp": "2024-07-09T13:01:49.417+00:00", "path": "/v1/messages", "status": 500, "error": "Internal Server Error", "requestId": "35a60294-299671" } }, "endpoint": "https://api.gp****pi.net/", "provider": "anthropic" } When switching the selected model to 3.5-sonnet, the following error will be reported { "error": { "status": 404, "headers": { "content-type": "application/json" }, "error": { "error": { "message": "Invalid URL (POST /v1/messages) (request id: )", "type": "invalid_request_error", "param": "", "code": "" } } }, "endpoint": "https://api.gp****pi.net/", "provider": "anthropic" } , I feel there is something wrong

📷 Recurrence Steps

No response

🚦 Expected Behavior

No response

📝 Additional Information

No response

lobehubbot commented 2 months ago

👀 @Pai-Po

Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible. Please make sure you have given us as much context as possible.\ 非常感谢您提交 issue。我们会尽快调查此事,并尽快回复您。 请确保您已经提供了尽可能多的背景信息。

arvinxx commented 2 months ago

你用的是透明代理还是 one-api 这种类型的?这个 Proxy 只支持透明代理,不支持 one-api 这种

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


Are you using a transparent proxy or one-api? This Proxy only supports transparent proxy and does not support one-api.

shog86 commented 2 months ago

你试试把信息录到OpenAI那个地方去然后获取模型

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


You try to record the information into OpenAI and get the model.

Pai-Po commented 2 months ago

第一次向claude发送包,可以收到正常的回复,如下图: image 但是从调试上看,onOpen函数成功执行了,但是返回的body值是空 image 进一步调试发现,是transformAnthropicStream这个transormer没有执行导致 image image 劳烦帮忙看看,究竟是为啥?

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


The first time you send a package to claude, you can receive a normal reply, as shown below: image But from the debugging point of view, the onOpen function was successfully executed, but the returned body value was empty. image Further debugging found that the transformer transformAnthropicStream was not executed. image image Could you please help me find out why?

arvinxx commented 2 months ago

@Pai-Po 你的代理接口的 chunk 的原始和 Anthropic 的一致吗?

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


@Pai-Po Is the original chunk of your proxy interface consistent with Anthropic?

Pai-Po commented 2 months ago

下面是从chrome中复制出来的返回内容,我不知道原始的Anthropic是什么样的,不过应该是一致的,你可以瞅瞅

data:{"type":"message_start","message":{"id":"msg_bdrk_01SgtEMUC7rHNa8JMKPSNnif","model":"claude-3-haiku-20240307","type":"message","role":"assistant","content":[],"usage":{"input_tokens":12,"output_tokens":1}}}

data:{"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"很"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"高"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"兴"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"认"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"识"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"!"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"我"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"是"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"一"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"个"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"人"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"工"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"智"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"能"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"助"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"手"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":","}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"可"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"以"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"帮"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"助"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"完"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"成"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"各"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"种"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"任"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"务"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":","}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"比"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"如"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"回"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"答"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"问"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"题"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"、"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"提"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"供"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"建"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"议"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"和"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"分"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"析"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"数"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"据"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"等"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"。"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"有"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"什"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"么"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"需"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"要"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"帮"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"助"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"的"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"吗"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"?"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"我"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"会"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"尽"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"我"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"所"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"能"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"为"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"你"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"服"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"务"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"。"}}

data:{"type":"content_block_stop","index":0}

data:{"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":79}}

data:{"type":"message_stop"}

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


The following is the returned content copied from chrome. I don’t know what the original Anthropic looks like, but it should be the same. You can take a look.

data:{"type":"message_start","message":{"id":"msg_bdrk_01SgtEMUC7rHNa8JMKPSNnif","model":"claude-3-haiku-20240307","type":"message","role": "assistant","content":[],"usage":{"input_tokens":12,"output_tokens":1}}}

data:{"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"very"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"high"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Xing"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"recognize"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"knowledge"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"you"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"!"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"i"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Yes"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"一"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"piece"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"人"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"work"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"智"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"can"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"help"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"hand"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":","}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Yes"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"with"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"help"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"help"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"you"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"End"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"成"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"each"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"kind"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"any"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"事"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":","}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"ratio"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"such as"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Back"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"answer"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Q"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"question"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":","}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Ti"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"for"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"build"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"discuss"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"and"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"分"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"analysis"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"number"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"according to"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"etc."}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"."}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"you"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Yes"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"what"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"what"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"required"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"want"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"help"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"help"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"of"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"是什么"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"?"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"i"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"会"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"END"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"i"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":""}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"can"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"is"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"you"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"service"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"事"}}

data:{"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"."}}

data:{"type":"content_block_stop","index":0}

data:{"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":79}}

data:{"type":"message_stop"}

arvinxx commented 2 months ago

我看了下这个请求应该是 Anthropic 的官方流的结构,所以响应应该没问题。你现在是怎么填写的?为什么我感觉你这个像是走了客户端请求

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


I looked at the structure of this request and it should be Anthropic’s official stream, so the response should be fine. How do you fill it out now? Why do I feel like you are making client requests?

Pai-Po commented 2 months ago

是的,我勾选的走客户端请求,我觉得没必要绕一下后端再发。但是我关了走客户端请求,在zeabur上部署的也不通,就是检查链接那都不通,不知道是不是zeabur服务器也做了限制;反正是本地存储key,客户端还是好点。

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


Yes, I checked the client request. I don’t think it is necessary to go around the backend before sending. But I turned off the client request, and the deployment on zeabur still doesn't work. Even when checking the link, it doesn't work. I don't know if the zeabur server has also imposed restrictions; anyway, it stores the key locally, so the client is better.

arvinxx commented 2 months ago

@Pai-Po 如果可以的话私戳我下 proxy地址和 api key ?我可能需要测下你这个 case

lobehubbot commented 2 months ago

Bot detected the issue body's language is not English, translate it automatically. 👯👭🏻🧑‍🤝‍🧑👫🧑🏿‍🤝‍🧑🏻👩🏾‍🤝‍👨🏿👬🏿


@Pai-Po If possible, can you privately poke me the proxy address and api key? I may need to test your case

lobehubbot commented 2 months ago

👋 @{{ author }}
Since the issue was labeled with 🤔 Need Reproduce, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.\ 由于该 issue 被标记为需要更多信息,却 3 天未收到回应。现关闭 issue,若有任何问题,可评论回复。

lobehubbot commented 2 months ago

✅ @Pai-Po

This issue is closed, If you have any questions, you can comment and reply.\ 此问题已经关闭。如果您有任何问题,可以留言并回复。