OpenAI 国内停服,除了停机迁移,这个方案更平滑_博客-Higress官网

OpenAI 国内停服,除了停机迁移,这个方案更平滑

发布时间 2024-07-23


OpenAI 国内停服,除了各个大模型厂商提供的迁移方案外,是否有其他更平滑的迁移方案呢?本文以 OpenAI 切换到通义千问为例,介绍开源网关 Higress 的应对方案。优势是:

  • 默认按照模型价格和能力进行了合理映射,且支持用户自定义调整配置
  • 可以通过 OpenAI 的统一协议对接多种大模型,屏蔽实现细节,降低接入新大模型的 API 适配成本
  • Higress 可以提供 token 限流插件、内容审核插件,通过网关的工程化能力实现业务收益

实操视频

步骤介绍

准备工作:需要登陆阿里云申请通义千问 API Key

第一步:启动 Higress AI 网关

Higress 有多种部署方式,例如 K8s Helm 部署,或者对接 Nacos 部署等。最简单的方式是通过一个 Docker 命令直接在本地启动:

Terminal window
# 创建一个工作目录
mkdir higress; cd higress
# 启动 higress,配置文件会写到工作目录下
docker run -d --rm --name higress-ai -v ${PWD}:/data \
-p 8001:8001 -p 8080:8080 \
-e CONFIG_TEMPLATE=ai-proxy -e DEFAULT_AI_SERVICE=qwen \
-e DASHSCOPE_API_KEY=这里填你自己的通义千问APIKey \
higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:1.4.1

第二步:调整 API 地址

不用改任何代码逻辑,只需通过base_url调整 API 地址为 Higress AI 网关的 API 地址,这里是里本地启动的,所以填:http://127.0.0.1:8080/v1
例如下面是 openai 流式响应的例子:

from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="http://127.0.0.1:8080/v1"
)
# 不需要修改模型,higress 做了等价映射
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "你是谁"}],
stream=True,
)
# 换行打印收到的每个流式响应
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content)

测试生效:
higress-qwen.gif

Higress AI 代理能力介绍

AI 代理插件目前支持的大模型 API 有:通义千问,OpenAI/Azure OpenAI,月之暗面,百川智能,零一万物,智谱 AI,阶跃星辰,文心一言,腾讯混元,DeepSeek,Anthropic Claude,Groq,MiniMax,Ollama
可以用类似方式,通过 Higress 将业务对 OpenAI 的依赖快速迁移到其他厂商的大模型。
下图以 OpenAI SDK 流式处理为例, Higress 的 AI 代理原理如下,可以纯流式处理多种不同厂商的模型协议:
image.png

探索更多 Higress AI 网关能力

自定义模型映射

Higress 默认将所有 OpenAI 模型按能力和价格做了到通义千问的等价映射:
image.png
用户也可以进入 Higress 控制台,自定义模型映射

开启通义千问联网搜索能力

AI 代理插件配置为:

provider:
type: qwen
apiTokens:
- "你自己的通义千问 API Key"
modelMapping:
# 映射配置省略
...
# 开启联网搜索能力
qwenEnableSearch: true

然后使用 LobeChat 进行测试(这里查看:LobeChat 对接方式):
image.png

实现最简单的 RAG

上传一份文件用于 RAG (详细可以查看这里的文档):

Terminal window
curl --location --request POST 'https://dashscope.aliyuncs.com/compatible-mode/v1/files' \
--header 'Authorization: Bearer 这里填APIKey' \
--form 'file=@" ./doc.md"' \
--form 'purpose="file-extract"'
# 返回内容中包含文件id:
{"id":"file-fe-xxxxxxx","object":"file","bytes":596687,"created_at":1716635947,"filename":"doc.md","purpose":"file-extract","status":"processed"}

AI 代理插件配置为:

provider:
type: qwen
apiTokens:
- "你自己的通义千问 API Key"
modelMapping:
# 映射配置省略
...
# 在这里配置上面返回的文件id
qwenFileIds:
- "file-fe-xxxxxxx"

导入 Higress 官网文档的文件 id,测试效果:
image.png

Higress 的更多 AI 能力

从 2020 年开始,我们通过服务阿里内部,以及云上客户的需求,沉淀了云原生网关 Higress,在开源社区分享代码和知识的同时,通过大量开源用户的使用反馈,得以进一步完善自身能力。
今天,Higress 企业版既是通义千问等阿里云核心 AI 业务的 API 网关,又是云上多家 AGI 厂商的的 API 网关,我们也很乐于分享在接入这些场景过程中积累的心得体会,并将相关 AI 能力全面开源:
image.png
Higress AI 网关相关能力已经全面开源,可以查看这篇文档:《Higress 重磅更新:AI 能力全面开源,云原生能力再升级》
关于 AI 代理插件,以及 Higress 其他 AI 插件的能力介绍和使用方式在 Higress 官网文档均有详细说明,可以访问 https://higress.cn 查看。
如果你有企业级 AI 网关需求,可以点击查看原文,了解 Higress 企业版,立即拥有通义千问的同款流量网关。

加入 Higress 社区

欢迎更多小伙伴一起参与到 Higress 社区的建设中,近期的社区活动有:

了解更多社区动态,可以加入 Higress 微信/钉钉群(群号:_30735012403 _):
higress-comm.jpg