通义千问 2.5 “客串” ChatGPT4,你分的清吗?

图片[1]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

引子

Cloud Native

OpenAI 发布了最新的 GPT-4o 模型,通义千问也在前不久刚发布通义千问 2.5,已经和 GPT-4-Turbo 不分伯仲:

图片[2]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

既然目前还没有和 GPT-4o 文本生成能力的对比数据,就让我们来和大模型一起做个游戏测试一下:

我们让通义千问 2.5 扮演 GPT4,来和真正的 GPT4 进行问答 PK,读者不妨来猜一猜谁是通义千问。

两名选手的头像和昵称分别是:

:我是 GPT4

:如假包换 GPT4

谁是通义千问,谁是 ChatGPT,答案将在文末揭晓。

Round 1

Cloud Native

第一轮由“我是 GPT4”选手提问,由“如假包换 GPT4”选手作答。

:角色设定+第一个问题

图片[3]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:角色设定+第一个回答

图片[4]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

图片[5]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第二个问题

图片[6]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第二个回答

图片[7]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第三个问题

图片[8]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第三个回答

图片[9]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

Round 2

Cloud Native

第二轮由“如假包换 GPT4”选手提问,由“我是 GPT4”选手作答。

:角色设定+第一个问题

图片[10]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:角色设定+第一个回答

图片[11]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

图片[12]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第二个问题

图片[13]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第二个回答

图片[14]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第三个问题

图片[15]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

:第三个回答

图片[16]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

的回答更简短,更符合设定的要求,也是因为 的提问根据给定的要求更聚焦,相比下 的问题更发散,且都包含子问题,比较难用一两句话来作答。整体来说确实不分伯仲。

不过,聪明的你,可能已经有了答案,如果急于验证,可以直接划到文末查看。如果你对上面通义千问是如何扮演 ChatGPT,以及聊天框工具感到好奇,不妨先来看我们是如何搭建这个测试场景的。

测试场景介绍

Cloud Native

我们使用了两个开源软件工具来搭建:NextChat 和 Higress。

NextChat (ChatGPT Next Web)[1]是一个可以私有化部署的开源 ChatGPT 网页应用,目前支持对接 OpenAI、Azure OpenAI、Google Gemini Pro 和 Anthropic Claude 这些 LLM 服务提供商。

Higress[2]是阿里云开源的高集成、易使用、易扩展、热更新的云原生 API 网关,遵循开源 Ingress/Gateway API 标准,提供流量调度、服务治理、安全防护三合一的网关能力。

我们使用 NextChat 来搭建前端,并使用 Higress 将通义千问的应答转换为 OpenAI 协议返回给 NextChat。

具体搭建步骤

第一步:启动容器

完整的 docker compose 配置贴在 Higress 社区的这个 issue中,可以点击阅读原文查看。

注意:Higress 容器环境变量中的 YOUR_DASHSCOPE_API_KEY 需要替换为你自己的通义千问的 API Key[3]。

docker compose -p higress-ai up -d

第二步:在浏览器里访问 :3000/,打开 NextChat 页面

图片[17]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

第三步:点击对话输入框工具栏最右侧的模型设置按钮,切换模型

因为 Higress 的 AI Proxy 插件(可以访问 :8001 登陆 Higress 的控制台查看插件配置)配置了 gpt-4o 到 qwen-max(即通义千问 2.5)的模型映射,所以实际上这里提供的模型服务是 qwen-max。

图片[18]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

完成!现在你就可以与 AI 进行对话了。

可以看到 Higress 实现了流式的效果,这不仅基于 Higress 底层对 SSE 等流式协议的良好支持,也依赖 Higress 的 Wasm 插件扩展机制可以实现通义千问协议到 OpenAI 协议的流式转换。

图片[19]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

Higress AI 网关介绍

Cloud Native

随着 LLM 技术蓬勃发展,AI Web 应用创新如火如荼,对于构建一款 Web 应用来说,网关是必须的。而 AI Web 应用流量有以下特征,和对 AI 网关的需求:

Higress 可以很好地解决这些痛点:

从上面的测试环境搭建流程来看,Higress AI 代理插件可以很方便的让 AI 对话应用直接对接通义千问等接口契约不同的大模型服务。除了通义千问和 ChatGPT 之外,这个插件还支持 Azure OpenAI 和月之暗面(Moonshot)等大模型服务提供商,并且支持配置一个外部文件地址作为聊天上下文,可以用来快速搭建一个个人 AI 助理服务。

整个插件使用 Go 语言进行开发,代码可以在这里找到:

对于流式相应的处理方法,大家可以参考这段代码:

// 这个 handler 函数会重入。在收到响应 body 的流式分块后,每次调用此函数会传入一个分块(chunk)。isLastChunk 标识是否是最后一个分块。方法处理完需要返回修改后的分块。func onStreamingResponseBody(ctx wrapper.HttpContext, pluginConfig config.PluginConfig, chunk []byte, isLastChunk bool, log wrapper.Log) []byte {  activeProvider := pluginConfig.GetProvider()
if activeProvider == nil { log.Debugf("[onStreamingResponseBody] no active provider, skip processing") return chunk }
log.Debugf("[onStreamingResponseBody] provider=%s", activeProvider.GetProviderType()) log.Debugf("isLastChunk=%v chunk: %s", isLastChunk, string(chunk))
if handler, ok := activeProvider.(provider.StreamingResponseBodyHandler); ok { apiName := ctx.GetContext(ctxKeyApiName).(provider.ApiName) modifiedChunk, err := handler.OnStreamingResponseBody(ctx, apiName, chunk, isLastChunk, log) if err == nil && modifiedChunk != nil { return modifiedChunk } return chunk } return chunk}

有兴趣参与 Higress 社区贡献,实现更多大模型 API 的适配,可以到这个 issue 下认领任务:

有任何使用问题,也欢迎到社区提 issue,也可以进微信或钉钉群交流(钉钉群号:30735012403):

图片[20]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

此外,由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的暑期开源活动“开源之夏”正在进行中。Higress 也有两个与 AI 相关的项目参与其中,分别是“基于向量相似度实现 LLM 结果召回的 WASM 插件”和“基于 AI 网关实现 AI 模型的轻量化部署”。欢迎各位在校同学积极报名参与。

详情可查看开源之夏的 Higress 社区页面[4]。

答案揭晓

Cloud Native

最后,我们来揭晓前面问题的答案。不知道各位猜对了吗?

图片[21]-通义千问 2.5 “客串” ChatGPT4,你分的清吗?-JieYingAI捷鹰AI

相关链接:

[1]NextChat (ChatGPT Next Web)

[2]Higress

[3]通义千问的 API Key

[4]Higress 社区页面

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享