部署自己的网页chatgpt
编辑之前一直使用NextChat作为自己的Ai前端使用的,但是这个客户端最大的问题是不能同步记录,或者说同步很难用,所以使用自己的服务器部署了自己用也可以分享给朋友使用的LibreChat,它复刻了网页版的ChatGPT,同时新版本也带来了agents的功能来替代插件功能,使其拥有了更加灵活的能力。
部署内容
Docker Compose部署LibreChat
- 克隆仓库
$ git clone https://github.com/danny-avila/LibreChat.git && cd LibreChat
- 复制
.env
$ cp .env.example .env
- (可选)配置
.env
默认LibreChat已经有几种官方的模型,例如openai,Claude,Google等,如果使用的是官方的服务,那么可以不用配置.env
直接启动即可,我自己使用了第三方的api中转,所以需要配置一下环境变量,主要是两个变量OPENAI_API_KEY
和OPENAI_REVERSE_PROXY
注意OPENAI_REVERSE_PROXY
的值需要写到/v1
。
- 启动
$ docker compose up -d
- 访问
http://localhost:3080/
参考文档:www.librechat.ai/docs/local/docker
Uni-Api
因为默认的LibreChat没有国内的大模型代理,配置起来比较麻烦,加上有一些模型没有的api请求地址和openai不同,所以出现了不少二次分发key的代理集合,可以把各家的模型接入到一起使用类openai的方式接入,只需要配置一处,即可以随处使用。我主要使用的有两个:
- New-Api:大而全的集合代理,带有统计系统,适合于运营
- Uni-Api:只有集合提供商的功能,没有其他的功能,非常的简介,甚至目前还没有前端,我目前使用的就是这个。
-
compose.yml文件
services: uni-api: container_name: uniapi image: yym68686/uni-api:latest ports: - '0.0.0.0:8010:8000' volumes: - ./api.yaml:/home/api.yaml # 如果已经设置 CONFIG_URL,不需要挂载配置文件 - ./uniapi_db:/home/data # 如果不想保存统计数据,不需要挂载该文件夹 restart: always
-
api.yaml文件
官网有示例,我只配置了中转openai的代理和硅基流动,官方配置详细示例providers: - provider: api # 服务提供商名称, 如 openai、anthropic、gemini、openrouter,随便取名字,必填 base_url: https://xxxxx/v1/chat/completions # 后端服务的API地址,必填 api: sk-Z1JMOZyECWvAkoPiE49dD221B59xxxxxxxxxxxx # 提供商的API Key,必填 # model: # 选填,如果不配置 model,会自动通过 base_url 和 api 通过 /v1/models 端点获取可用的所有模型。 # - gpt-4o # 可以使用的模型名称,必填 # - claude-3-5-sonnet-20240620: claude-3-5-sonnet # 重命名模型,claude-3-5-sonnet-20240620 是服务商的模型名称,claude-3-5-sonnet 是重命名后的名字,可以使用简洁的名字代替原来复杂的名称,选填 # - dall-e-3 tools: true - provider: siliconflow base_url: https://api.siliconflow.cn/v1/chat/completions api: # 支持多个 API Key,多个 key 自动开启轮训负载均衡,至少一个 key,必填 - sk-jueqfzdklhewxkajbelgtxxxxxxxxxxxxxxxxxxxxxxxxxxx - sk-sspwxmxmvoksgsqjuefnnxxxxxxxxxxxxxxxxxxxxxxxxxxx # model: # - Qwen/QwQ-32B-Preview # - Qwen/Qwen2.5-Coder-32B-Instruct # - claude-3-5-sonnet-20240620: claude-3-5-sonnet # 重命名模型,claude-3-5-sonnet-20240620 是服务商的模型名称,claude-3-5-sonnet 是重命名后的名字,可以使用简洁的名字代替原来复杂的名称,选填 # tools: true # 是否支持工具,如生成代码、生成文档等,默认是 true,选填 api_keys: - api: sk-WifWIaIxCvS2dJc_hBQvFxxxxxxxxxxxxxxxxxxxxx # API Key,用户使用本服务需要 API key,必填 model: # 该 API Key 可以使用的模型,必填。默认开启渠道级轮询负载均衡,每次请求模型按照 model 配置的顺序依次请求。与 providers 里面原始的渠道顺序无关。因此你可以设置每个 API key 请求顺序不一样。 - api/* # 可以使用的模型名称,可以使用所有提供商提供的 gpt-4o 模型 - siliconflow/* # 可以使用的模型名称,可以使用所有提供商提供的 claude-3-5-sonnet 模型 # - gemini/* # 可以使用的模型名称,仅可以使用名为 gemini 提供商提供的所有模型,其中 gemini 是 provider 名称,* 代表所有模型 role: admin preferences: # 全局配置 model_timeout: # 模型超时时间,单位为秒,默认 100 秒,选填 gpt-4o: 10 # 模型 gpt-4o 的超时时间为 10 秒,gpt-4o 是模型名称,当请求 gpt-4o-2024-08-06 等模型时,超时时间也是 10 秒 claude-3-5-sonnet: 10 # 模型 claude-3-5-sonnet 的超时时间为 10 秒,当请求 claude-3-5-sonnet-20240620 等模型时,超时时间也是 10 秒 default: 10 # 模型没有设置超时时间,使用默认的超时时间 10 秒,当请求的不在 model_timeout 里面的模型时,超时时间默认是 10 秒,不设置 default,uni-api 会使用 环境变量 TIMEOUT 设置的默认超时时间,默认超时时间是 100 秒 o1-mini: 30 # 模型 o1-mini 的超时时间为 30 秒,当请求名字是 o1-mini 开头的模型时,超时时间是 30 秒 o1-preview: 100 # 模型 o1-preview 的超时时间为 100 秒,当请求名字是 o1-preview 开头的模型时,超时时间是 100 秒 cooldown_period: 300 # 渠道冷却时间,单位为秒,默认 300 秒,选填。当模型请求失败时,会自动将该渠道排除冷却一段时间,不再请求该渠道,冷却时间结束后,会自动将该模型恢复,直到再次请求失败,会重新冷却。当 cooldown_period 设置为 0 时,不启用冷却机制。 error_triggers: # 错误触发器,当模型返回的消息包含错误触发器中的任意一个字符串时,该渠道会自动返回报错。选填 - The bot's usage is covered by the developer - process this request due to overload or policy
-
启动
$ docker compose up -d
配置LibreChat使用自定义渠道
-
添加
docker-compose.override.yml
内容如下services: api: volumes: - type: bind source: ./librechat.yaml target: /app/librechat.yaml
-
添加
librechat.yaml
内容如下,注意备注修改version: 1.1.5 cache: true endpoints: custom: - name: "Selfapi" apiKey: "" # 上面填写的api_keys中的api baseURL: "http://uniapi:8000/v1" # uni-api的地址,如果用docker 桥接模式可以用容器名:端口的形式 models: default: ["Qwen/QwQ-32B-Preview", "Qwen/Qwen2.5-Coder-32B-Instruct", "o1-mini", "o1-preview", "gpt-4o-mini", "gpt-4o", "claude-3-5-sonnet", "command-r-plus"] fetch: true titleConvo: true titleModel: "QwQ-32B-Preview" summarize: false summaryModel: "QwQ-32B-Preview" forcePrompt: false modelDisplayLabel: "Selfapi" dropParams: - "stop" - "user" - "presence_penalty" - "frequency_penalty"
参考文档:librechat.yaml配置
- 重启LibreChat即可
配置Agents使LibreChat支持联网搜索
agents
必然是Librechat的一大杀器,继承于插件,容易配置。
-
配置
.env
启用agents
添加EXPERIMENTAL_AGENTS=true
到.env
文件 -
申请google search key
申请地址,需要拿到引擎id和json的api key -
把google申请的添加到
.env
配置文件GOOGLE_SEARCH_API_KEY="" #json api key GOOGLE_CSE_ID="" 引擎id
-
配置agents
-
提供的模型中需要支持函数调用,另外需要搭配一些prompt才好。
后记
Ai还是需要有一个好的Prompt才好用的。
- 0
- 0
-
分享