soulteary / amazing-openai-api

Convert different model APIs into the OpenAI API format out of the box.
https://soulteary.com/2024/01/09/amazing-openai-api-call-all-non-openai-models-according-to-the-openai-api.html
Apache License 2.0
142 stars 11 forks source link

使用Binary出现报错 #3

Closed tastypear closed 8 months ago

tastypear commented 9 months ago

环境:Windows 10 + released aoa.exe Model:gemini-pro 报错:http: proxy error: invalid character '\x1f' looking for beginning of value。似乎是和 gzip 有关? 测试用的APP:ChatGPT Next Web(桌面版)

soulteary commented 9 months ago

感觉可能和 Google BAN IP 有关,用 Gemini 在海外服务器上跑顺利一些...

tastypear commented 9 months ago

应该不是IP的问题,我在colab上部署也是同样的报错。

作为测试,我还部署了另一个类似的项目 gemini-openai-proxy,是没有问题的。 客户端使用的相同的配置: API URL:https://random-subdomain.trycloudflare.com API KEY:Gemini API Key Model:gpt-3.5-turbo

以下是两者在colab上的测试脚本:

# CF quick tunnel
!wget -q -c https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -O cloudflared
!chmod a+x cloudflared

# # gemini-openai-proxy
# !pip install udocker
# !udocker --allow-root pull zhu327/gemini-openai-proxy:latest
# !udocker --allow-root create --name=gemini zhu327/gemini-openai-proxy:latest
# !udocker --allow-root run -p 8443:8080 gemini &\
# ./cloudflared tunnel --url http://localhost:8443

# amazing-openai-api
!wget -c https://github.com/soulteary/amazing-openai-api/releases/download/v0.5.0/amazing-openai-api_0.5.0_linux_x86_64.tar.gz
!tar -zxvf amazing-openai-api*.tar.gz
!chmod a+x aoa
!GEMINI_API_KEY=*** AOA_PORT=8443 AOA_TYPE=gemini GEMINI_MODEL_ALIAS=gpt-3.5-turbo:gemini-pro ./aoa &\
./cloudflared tunnel --url http://localhost:8443

此外,根据说明应该支持无API KEY启动,实际启动时不包括KEY的话,访问时会出现 Please use API Key or other form of API consumer identity to call this API.

Barathrum-Liu commented 8 months ago

这个是因为自动添加了"Accept-Encoding: gzip" 标头,现在的代码没处理gzip 的情况,理论上来说来一段类似这样的代码就好了:

var reader io.ReadCloser
if response.Header.Get("Content-Encoding") == "gzip" {
    reader, err = gzip.NewReader(response.Body)
    defer reader.Close()
} else {
    reader = response.Body
}

responsePayload, err := parseResponseBody(reader)
soulteary commented 8 months ago

已修正, https://github.com/soulteary/amazing-openai-api/releases/tag/v0.6.2