所有文章 > API设计 > One-API实现大语言模型请求接口的统一

One-API实现大语言模型请求接口的统一

前言

 自ChatGPT发布以来,人工智能大语言模型已经引起了广泛的关注和讨论。而经过最近一两年的发展,很多企业推出了自己的大语言模型:Azure、Anthropic Claude、GooglePaLM2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元。但是这些多种多样,混乱不统一的大语言模型会给开发者带来一个问题,当我们想要使用这些大语言模型进行项目开发时,难免会遇到接口不统一问题。

 本篇文章介绍的开源项目One-Api就解决上述了问题,该项目可以让我们以请求OpenAI的接口形式向各种大语言模型进行请求,实现了各种大语言模型的请求接口的统一。

项目介绍

One-Api是一款OpenAI接口管理和分发的系统,支持 Azure、Anthropic Claude、GooglePaLM2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用。

使用One-Api的好处就是可以将任何使用OpenAI接口的地方替换为One-Api的接口,然后对One-Api进行大语言模型的渠道配置,比如配置文心一言Claude等,然后你就可以像请求OpenAI一样请求文心一眼Claude

  • 地址:https://github.com/songquanpeng/one-api

部署

 One-Api是一个Go项目,开箱即用,因此部署非常简单。这里我们以正常的业务部署为例,实现下述要求:

  • 在Linux服务器上部署One-Api
  • 配置域名和证书
  • 添加ChatGPT和其它大语言模型渠道(这里以ChatGLM为例)

一、在Linux服务器上部署One-Api

 一台Linux服务器,建议选择国外地区,但中国大陆或港澳地区亦可,但是在添加国外大语言模型时需要配置代理接口(台湾貌似不需要)。我这里以Vultr的服务器为例,选用Debian 12 x64

为了后续的域名配置和SSL配置,我建议服务器选择国外的。

1. 安装Docker

 直接通过运行官方提供的安装脚本安装Docker。

curl -fsSL get.docker.com -o get-docker.sh && sudo sh get-docker.sh
3. 运行One-API项目

 直接运行下述指令:

docker run -d --name one-api -p 3000:3000 -v ./data/oneapi:/data -v ./logs:/app/logs justsong/one-api:latest --log-dir /app/logs
4. 访问

 访问主机IP:3000

 默认管理员账户:

  • 用户名:root
  • 密码:123456

 登录之后会提示修改密码,按照指引完成即可。

二、配置域名和证书

1. 域名解析

 这里不对域名解析操作进行介绍,因为不同的域名提供商,对应的操作界面不同,不会域名解析的,请自行谷歌了解自己的域名提供商怎么进行域名解析。

选用国外服务器的话,域名也要国外的,我一般使用的是cloudflare平台的域名。国内服务器进行域名配置的话,需要进行域名备案,且国外域名解析到国内服务器时会出现DNS污染的情况。

 我这里已经有一个域名oneapi.mnzdna.xyz解析到了我这台服务器上。

如何验证域名是否解析到了服务器上?执行ping 域名,看看信息反馈的IP地址是不是你服务器的IP即可。

2. 安装Nginx

 运行如下指令:

apt install nginx -y

 Centos运行:

yum install nginx -y

 运行完成后,可以访问服务器IP来验证下Nginx是否安装成功。

在访问服务器的某端口所对应的程序时,需要确保对应的端口是否对外开放,nginx程序端口默认是80,如果访问不了,可以使用iptables工具开放对应的端口,不会的话直接向ChatGPT提问。

3. 配置OneAPI项目的Nginx配置

 OneAPI的项目我们已经部署上了,从服务器的角度上来说,访问本地3000端口即可访问OneAPI项目,从外部网络来说,访问服务器IP:3000即可访问OneAPI项目。

 在我们安装了Nginx之后,我们需要将外部的请求全部转发到本地的3000端口即可,这里就需要用到Nginx的反向代理。

 运行下述指令,在/etc/nginx/conf.d下创建一个oneapi项目的配置文件oneapi.conf

下面的操作需要有一定的linux基础和Vim基础,没有的话,可以现在本地将oneapi.conf文件准备好,然后上传到/etc/nginx/conf.d下。

vim /etc/nginx/conf.d/oneapi.conf

 然后将下述配置信息复制进去:

server{
server_name oneapi.mnzdna.xyz; # 请根据实际情况修改你的域名

location / {
client_max_body_size 64m;
proxy_http_version 1.1;
# 反向代理配置
proxy_pass http://localhost:3000; # 请根据实际情况修改你的端口
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_cache_bypass $http_upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_read_timeout 300s; # GPT-4 需要较长的超时时间,请自行调整
}
}

 然后运行下述指令,重新加载Nginx配置文件

nginx -s reload

 然后在浏览器访问你的域名。

 浏览器提示网站不安全,是因为网站没有配置SSL证书。

4. 配置SSL证书

 Nginx配置SSL证书可以在我的博客文章中了解:https://pgthinker.me/tag/nginx/.这里我们使用自动化配置SSL工具:Certbot

  • Certbot:https://certbot.eff.org/

 安装官方的教程,依次运行下述指令:

# 1. 安装snapd 不同的Linux版本请使用不同的包管理工具进行安装
apt install snapd

# 2. 使用snapd安装certbot
sudo snap install --classic certbot

# 3. 创建链接,确保certbot能够运行
sudo ln -s /snap/bin/certbot /usr/bin/certbot

# 4. 使用certbot自动配置nginx
sudo certbot --nginx

第4步的时候,需要依次输入信息,第一个是你的邮箱,随意输入,第二个是协议条款,填Y,第三个是订阅消息输入N,第四个是certbot自动检测到你Nginx绑定的哪些域名,选择对应域名的编号回车就会自动安装SSL并对配置文件进行修改。

配置完SSL后,就可以通过https访问,若出现访问不了的情况,请确定443端口是否对外开放。

三、添加ChatGPT和其它大语言模型渠道

1. 添加ChatGPT模型

2. 添加智谱AI模型

3. 创建Key

4. 测试

 这里用ChatGPT-Next-Web项目进行测试。

  • 地址:https://a.nextweb.fun/

 填入One-Api地址和刚刚创建的Key(令牌).

 选择gpt-3.5-turbo模型。

 添加自定义模型chatglm_turbo,并设置chatglm_turbo,测试智谱AI

文章转自微信公众号@易写开发服务

#你可能也喜欢这些API文章!