chatchat-space / Langchain-Chatchat

Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM, Qwen 与 Llama 等语言模型的 RAG 与 Agent 应用 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM, Qwen and Llama) RAG and Agent app with langchain
Apache License 2.0
32.28k stars 5.6k forks source link

chatchat调用自己部署的模型API #3093

Closed fuxiaoiii closed 9 months ago

fuxiaoiii commented 9 months ago

问题描述 / Problem Description 我想要自己部署模型并可通过openai形式的API调用,但是chatchat报错:invalue http request

复现问题的步骤 / Steps to Reproduce

  1. 部署chatglm3的openai API

  2. 在文件 /configs/model_config.py文件中修改openai-api 为 "glm-api": { "model_name": "chatglm3-6b", "api_base_url": "https://####:8000/v1/chat", "api_key": "empty", "openai_proxy": "", },

  3. 在文件/configs/server_config.py文件中修改其为 "glm-api": { # 使用default中的IP和端口 "port": "22000", },

  4. 问题出现 / Problem occurs 部署chatglm3的终端:WARNING: Invalid HTTP request received. 部署chatchat的终端:ERROR: APIConnectionError: 获取ChatCompletion时出错:Error communicating with OpenAI 预期的结果 / Expected Result 回复模型的回复结果

dosubot[bot] commented 9 months ago

🤖

嘿,@fuxiaoiii!很高兴再次看到你在这里寻求帮助。让我们一起解决这个新问题吧!🚀

根据我在Langchain-Chatchat仓库中找到的相关问题,"Error communicating with OpenAI"错误可能是由于OpenAI配置设置不正确或缺失导致的。在提供的代码中,OpenAI API密钥和基础URL是通过get_model_worker_config函数从模型的配置中获取的。如果这些值在配置中没有正确设置,可能会导致与OpenAI API的通信错误。

这里有一些步骤来排查问题:

  1. 检查api_keyapi_base_url是否在配置中正确设置。如果api_key设置为"EMPTY",将无法通过OpenAI API进行身份验证,导致通信错误。同样,如果api_base_url没有正确设置,也可能导致通信错误。

  2. 确保端口20000和7861成功绕过可能阻止通信的任何防火墙或代理。

  3. 如果你还没有更新到版本0.2.5,那么请更新,因为这个版本重写了model_config.py,可能会解决问题。

  4. 如果你在虚拟机中运行应用程序,确保端口和依赖项正确设置,且机器可以访问OpenAI API。

如果这些建议不能解决问题,你可能需要参考Langchain-Chatchat仓库中类似已解决的问题以获取更多指导。

另外,"Invalid HTTP request received"错误通常发生在服务器无法理解请求的语法。在Langchain-Chatchat中部署自己的模型并通过OpenAI风格的API调用时,可能有几个原因导致这个错误:

  1. API密钥不正确:确保你使用的API密钥是正确的。API密钥应放在model_config.py.example文件中的ONLINE_LLM_MODEL字典中。例如,如果你使用的是OpenAI API,你的配置应如下:
"openai-api": {
    "model_name": "gpt-4",
    "api_base_url": "https://api.openai.com/v1",
    "api_key": "your_api_key",  # 用你的实际API密钥替换
    "openai_proxy": "",
},
  1. 模型名称不正确:确保你使用的模型名称是正确的,并且在LLM_MODELS列表中可用。例如,如果你使用的是OpenAI的gpt-4模型,它应该包含在列表中:
LLM_MODELS = ["chatglm3-6b", "zhipu-api", "openai-api", "gpt-4"]  # 在这里添加你的模型
  1. API基础URL不正确:API的基础URL应该是正确的。对于OpenAI API,基础URL是https://api.openai.com/v1

  2. 模型路径不正确:如果你使用的是本地模型,确保在MODEL_PATH字典中模型的路径是正确的。

如果你检查了所有这些点,错误仍然存在,可能是由于其他配置问题或服务器问题。在这种情况下,最好检查服务器日志以获取更详细的错误消息。

Sources

#### About Dosu This response is meant to be useful and save you time. It is **not meant to be a precise solution**, but rather a starting point for your own research. Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant. If you want to continue the conversation, start your reply with @dosu-bot.
fuxiaoiii commented 9 months ago

解决了,"api_base_url": "https://####:8000/v1/chat" 替换https为http即可

hyy666168 commented 8 months ago

你好,我想了解下这个glm3是本地单独起的服务吗?

fuxiaoiii commented 8 months ago

你好,我想了解下这个glm3是本地单独起的服务吗?

不是本地,是云端,但和chatchat服务不在一个服务器

hyy666168 commented 8 months ago

感谢及时回复哈,我这边的服务和您的部署方式类似,也是远程服务器启动的一个大模型的服务,大模型的调用方式如下:curl --location 'https://xxxxx/generate' --header 'Content-Type: application/json' --data '{"inputs":"你好","parameters":{"max_new_tokens":1000}}'那么按照您的经验,我这边需要怎么接入这个大模型服务呢,我的大模型是自己微调的模型

fuxiaoiii commented 8 months ago

将大模型部署为openai api,在model_config文件中添加信息,你可以参考我的代码 "model-api": { "model_name": "chatglm3-6b", "api_key": "EMPTY", "api_base_url": "http://17.52.213.63:8000/v1",

"version": "chatglm3-6b",  # 可选包括 "chatglm_turbo"

}, 同时需要在server_config中添加端口信息

但是我发现您的url后缀并不是v1,我不清楚这符不符合openai api以及是否可以直接替换其中的url

------------------ 原始邮件 ------------------ 发件人: "Bayesian @.>; 发送时间: 2024年4月7日(星期天) 下午5:19 收件人: @.>; 抄送: @.>; "State @.>; 主题: Re: [chatchat-space/Langchain-Chatchat] chatchat调用自己部署的模型API (Issue #3093)

感谢及时回复哈,我这边的服务和您的部署方式类似,也是远程服务器启动的一个大模型的服务,大模型的调用方式如下:curl --location 'https://xxxxx/generate' --header 'Content-Type: application/json' --data '{"inputs":"你好","parameters":{"max_new_tokens":1000}}'那么按照您的经验,我这边需要怎么接入这个大模型服务呢,我的大模型是自己微调的千问7B模型  

黄于晏 @.***

 

------------------ 原始邮件 ------------------ 发件人: @.>;
发送时间: 2024年4月7日(星期天) 下午5:14 收件人:
@.>;
抄送: @.>; @.>;
主题: Re: [chatchat-space/Langchain-Chatchat] chatchat调用自己部署的模型API (Issue #3093)

你好,我想了解下这个glm3是本地单独起的服务吗?

不是本地,是云端,但和chatchat服务不在一个服务器

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.> — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @.>

hyy666168 commented 8 months ago

明白,我在部署自己微调的大模型之前,也尝试过kimi的调用方式,通过官方文档我发觉kimi也有支持openai形式的接口,您是否有尝试过接入kimi呢?我接入发现也会报错

kimi api https://platform.moonshot.cn/docs/api-reference#python-%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95

"kimi-api": {
    "model_name": "moonshot-v1-8k",
    "api_base_url": "https://api.moonshot.cn/v1/chat/completions",
    "api_key": "sk-x",
},

报错:# openai.NotFoundError: Error code: 404 - {'code': 5, 'error': 'url.not_found', 'message': '没找到对象', 'method': 'POST', 'scode': '0x5', 'status': False, 'ua': 'OpenAI/Python 1.3.2', 'url': '/v1/chat/completions/chat/completions'} 按照你的方法修改https为http之后好像也无法生效,想请教下你

fuxiaoiii commented 7 months ago

明白,我在部署自己微调的大模型之前,也尝试过kimi的调用方式,通过官方文档我发觉kimi也有支持openai形式的接口,您是否有尝试过接入kimi呢?我接入发现也会报错

kimi api https://platform.moonshot.cn/docs/api-reference#python-%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95

"kimi-api": {
    "model_name": "moonshot-v1-8k",
    "api_base_url": "https://api.moonshot.cn/v1/chat/completions",
    "api_key": "sk-x",
},

报错:# openai.NotFoundError: Error code: 404 - {'code': 5, 'error': 'url.not_found', 'message': '没找到对象', 'method': 'POST', 'scode': '0x5', 'status': False, 'ua': 'OpenAI/Python 1.3.2', 'url': '/v1/chat/completions/chat/completions'} 按照你的方法修改https为http之后好像也无法生效,想请教下你

我并不了解该模型,也没有接入过kimi,但是你的api_base_url 应该去掉后面的chat/completions,即修改为https://api.moonshot.cn/v1 。此外,我认为你在部署为openai api形式后,应该手动写程序去调用该API,确认可以得到回复后再融入chatchat使用

BANGzys commented 7 months ago

我也是服务器起了模型并设置好了openai-api,然后在个人pc本地去通过openai-api调用服务器的模型,但是webui问问题不出结果,报错 utils.py[line:40] - ERROR: APIConnectionError: Caught exception: Connection error.

hyy666168 commented 7 months ago

明白,我在部署自己微调的大模型之前,也尝试过kimi的调用方式,通过官方文档我发觉kimi也有支持openai形式的接口,您是否有尝试过接入kimi呢?我接入发现也会报错

kimi api https://platform.moonshot.cn/docs/api-reference#python-%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95

"kimi-api": {
    "model_name": "moonshot-v1-8k",
    "api_base_url": "https://api.moonshot.cn/v1/chat/completions",
    "api_key": "sk-x",
},

报错:# openai.NotFoundError: Error code: 404 - {'code': 5, 'error': 'url.not_found', 'message': '没找到对象', 'method': 'POST', 'scode': '0x5', 'status': False, 'ua': 'OpenAI/Python 1.3.2', 'url': '/v1/chat/completions/chat/completions'} 按照你的方法修改https为http之后好像也无法生效,想请教下你

我并不了解该模型,也没有接入过kimi,但是你的api_base_url 应该去掉后面的chat/completions,即修改为https://api.moonshot.cn/v1 。此外,我认为你在部署为openai api形式后,应该手动写程序去调用该API,确认可以得到回复后再融入chatchat使用

感谢,我已经接入了 配置如下 "kimi-api": { "model_name": "moonshot-v1-8k", "api_base_url": "https://api.moonshot.cn/v1", "api_key": "sk-x", },

newstargo commented 7 months ago

明白,我在部署自己微调的大模型之前,也尝试过kimi的调用方式,通过官方文档我发觉kimi也有支持openai形式的接口,您是否有尝试过接入kimi呢?我接入发现也会报错

Kimi API https://platform.moonshot.cn/docs/api-reference#python-%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95

"kimi-api": {
    "model_name": "moonshot-v1-8k",
    "api_base_url": "https://api.moonshot.cn/v1/chat/completions",
    "api_key": "sk-x",
},

报错:# openai.NotFoundError: 错误代码: 404 - {'code': 5, 'error': 'url.not_found', 'message': '没找到对象', 'method': 'POST', 'scode': '0x5', 'status': False, 'ua': 'OpenAI/Python 1.3.2', 'url': '/v1/chat/completions/chat/completions'} 按照你的方法修改https为http之后好像也无法生效,想请教下你

我并不了解该模型,也没有接入过kimi,但是你的api_base_url 应该去掉后面的chat/completions,即修改为 https://api.moonshot.cn/v1 。此外,我认为你在部署为openai api形式后,应该手动写程序去调用该API,确认可以得到回复后再融入chatchat使用

感谢,我已经接入了 配置如下 “kimi-api”: { “model_name”: “大胆创新计划-v1-8k”, “api_base_url”: “https://api.moonshot.cn/v1”, “api_key”: “sk-x”, },

为何我按你的脚本执行,还是连不上kimi? ERROR: NotFoundError: Caught exception: Error code: 404 - {'error': {'message': 'not found the model or permission denied', 'type': 'resource_not_found_error'}}

chengxiangwang commented 6 months ago

在configs.model_config.py的ONLINE_LLM_MODEL中添加一项即可,以云端部署的chatglm3-6b api_server为例:

ONLINE_LLM_MODEL = {
    "openai-api": {
        "model_name": "gpt-4",
        "api_base_url": "https://api.openai.com/v1",
        "api_key": "",
        "openai_proxy": "",
    },
    "chatglm3-6b-api":{
        "model_name":"chatglm3-6b",
        "api_key":"EMPTY",
        "api_base_url": "http://xxx.xxx.xxx/v1",
    },
   ...
}
jmsking commented 6 months ago

明白,我在部署自己微调的大模型之前,也尝试过kimi的调用方式,通过官方文档我发觉kimi也有支持openai形式的接口,您是否有尝试过接入kimi呢?我接入发现也会报错

kimi api https://platform.moonshot.cn/docs/api-reference#python-%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95

"kimi-api": {
    "model_name": "moonshot-v1-8k",
    "api_base_url": "https://api.moonshot.cn/v1/chat/completions",
    "api_key": "sk-x",
},

报错:# openai.NotFoundError: Error code: 404 - {'code': 5, 'error': 'url.not_found', 'message': '没找到对象', 'method': 'POST', 'scode': '0x5', 'status': False, 'ua': 'OpenAI/Python 1.3.2', 'url': '/v1/chat/completions/chat/completions'} 按照你的方法修改https为http之后好像也无法生效,想请教下你

我并不了解该模型,也没有接入过kimi,但是你的api_base_url 应该去掉后面的chat/completions,即修改为https://api.moonshot.cn/v1 。此外,我认为你在部署为openai api形式后,应该手动写程序去调用该API,确认可以得到回复后再融入chatchat使用

感谢,我已经接入了 配置如下 "kimi-api": { "model_name": "moonshot-v1-8k", "api_base_url": "https://api.moonshot.cn/v1", "api_key": "sk-x", },

你好,请问下,你这边也是通过chatchat里面的get_ChatOpenAI或者get_OpenAI这个方法来调用自己部署的OpenAI服务吗?