阿里巴巴中间件

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

Image

OpenAI 国内停服,除了各个大模型厂商提供的迁移方案外,是否有其他更平滑的迁移方案呢?本文以 OpenAI 切换到通义千问为例,介绍开源网关 Higress 的应对方案。优势是:
  • 默认按照模型价格和能力进行了合理映射,且支持用户自定义调整配置。

  • 可以通过 OpenAI 的统一协议对接多种大模型,屏蔽实现细节,降低接入新大模型的 API 适配成本。

  • Higress 可以提供 token 限流插件、内容审核插件,通过网关的工程化能力实现业务收益。

实操视频

Aliware

步骤介绍

Aliware

🔔 准备工作:需要登录阿里云申请通义千问 API Key[1]

第一步:启动 Higress AI 网关
Higress 有多种部署方式,例如 K8s Helm 部署,或者对接 Nacos 部署等。最简单的方式是通过一个 Docker 命令直接在本地启动:
# 创建一个工作目录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)

测试生效:

Image

Higress AI 代理能力介绍

Aliware

AI 代理插件目前支持的大模型 API 有:通义千问,OpenAI/Azure OpenAI,月之暗面,百川智能,零一万物,智谱 AI,阶跃星辰,文心一言,腾讯混元,DeepSeek,Anthropic Claude,Groq,MiniMax,Ollama。

可以用类似方式,通过 Higress 将业务对 OpenAI 的依赖快速迁移到其他厂商的大模型。

下图以 OpenAI SDK 流式处理为例, Higress 的 AI 代理原理如下,可以纯流式处理多种不同厂商的模型协议:

Image

探索更多 Higress AI 网关能力

Aliware

自定义模型映射
Higress 默认将所有 OpenAI 模型按能力和价格做了到通义千问的等价映射:
Image
用户也可以进入 Higress 控制台,自定义模型映射。
开启通义千问联网搜索能力
AI 代理插件配置为:
provider:  type: qwen  apiTokens:  - "你自己的通义千问 API Key"  modelMapping:  # 映射配置省略  ...  # 开启联网搜索能力  qwenEnableSearch: true

然后使用 LobeChat 进行测试(这里查看:LobeChat 对接方式[2]):

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

加入 Higress 社区

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

了解更多社区动态,可以加入 Higress 微信/钉钉群(群号:30735012403 )。

Image

相关链接:

[1] 申请通义千问 API Key
https://help.aliyun.com/zh/dashscope/opening-service?spm=a2c4g.11186623.0.0.72c2369dLprd45
[2] LobeChat 对接方式
https://github.com/alibaba/higress/issues/1023
[3] 文档
https://help.aliyun.com/zh/dashscope/developer-reference/openai-file-interface?spm=a2c4g.11186623.0.0.4f5e4ad0clKblp
[4] GLCC 开源夏令营的 Higress 三大课题

https://www.gitlink.org.cn/glcc/2024/projects