通義千問 2.5 “客串” ChatGPT4,你分的清嗎?

作者:張添翼、董藝荃

引子

OpenAI 發佈了最新的 GPT-4o 模型,通義千問也在前不久剛發佈通義千問 2.5,已經和 GPT-4-Turbo 不分伯仲:

既然目前還沒有和 GPT-4o 文本生成能力的對比數據,就讓我們來和大模型一起做個遊戲測試一下:

我們讓通義千問 2.5 扮演 GPT4,來和真正的 GPT4 進行問答 PK,讀者不妨來猜一猜誰是通義千問

兩名選手的頭像和暱稱分別是:

🌝 :我是 GPT4

🌚 :如假包換 GPT4誰是通義千問,誰是 ChatGPT,答案將在文末揭曉。

Round 1

第一輪由“我是 GPT4”選手提問,由“如假包換 GPT4”選手作答。

🌝 :角色設定+第一個問題

🌚 :角色設定+第一個回答

🌝 :第二個問題

🌚 :第二個回答

🌝 :第三個問題

🌚 :第三個回答

Round 2

第二輪由“如假包換 GPT4”選手提問,由“我是 GPT4”選手作答。

🌚 :角色設定+第一個問題

🌝 :角色設定+第一個回答

🌚 :第二個問題

🌝 :第二個回答

🌚 :第三個問題

🌝 :第三個回答

🌚 的回答更簡短,更符合設定的要求,也是因爲 🌝 的提問根據給定的要求更聚焦,相比下 🌚 的問題更發散,且都包含子問題,比較難用一兩句話來作答。整體來說確實不分伯仲。

不過,聰明的你,可能已經有了答案,如果急於驗證,可以直接劃到文末查看。如果你對上面通義千問是如何扮演 ChatGPT,以及聊天框工具感到好奇,不妨先來看我們是如何搭建這個測試場景的。

測試場景介紹

我們使用了兩個開源軟件工具來搭建: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

第二步:在瀏覽器裏訪問 http://localhost:3000/ ,打開 NextChat 頁面

第三步:點擊對話輸入框工具欄最右側的模型設置按鈕,切換模型

因爲 Higress 的 AI Proxy 插件(可以訪問 http://localhost:8001 登陸 Higress 的控制檯查看插件配置)配置了 gpt-4o 到 qwen-max(即通義千問 2.5)的模型映射,所以實際上這裏提供的模型服務是 qwen-max。

完成!現在你就可以與 AI 進行對話了。

可以看到 Higress 實現了流式的效果,這不僅基於 Higress 底層對 SSE 等流式協議的良好支持,也依賴 Higress 的 Wasm 插件擴展機制可以實現通義千問協議到 OpenAI 協議的流式轉換。

Higress AI 網關介紹

隨着 LLM 技術蓬勃發展,AI Web 應用創新如火如荼,對於構建一款 Web 應用來說,網關是必須的。而 AI Web 應用流量有以下特徵,和對 AI 網關的需求:

  • 長連接:由 AI Web 應用常見的 Websocket 和 SSE 協議決定,長連接的比例很高,要求網關更新配置操作對長連接無影響,不影響業務。
  • 高延時:LLM 推理的響應延時比普通 Web 應用要高出很多,使得 AI Web 應用面向 CC 攻擊很脆弱,容易被攻擊長時間維持住大量長連接,消耗大量計算和存儲資源。
  • 大帶寬:結合 LLM 上下文來回傳輸,以及高延時的特性,AI Web 應用對帶寬的消耗遠超普通應用,網關或後端如果沒有實現較好的流式處理能力,容易導致內存快速上漲,繼而觸發 OOM。

Higress 可以很好地解決這些痛點:

  • 長連接:不同於 Nginx 變更配置需要 Reload,導致連接斷開,Higress 基於 Envoy 實現了連接無損的真正配置熱更新。
  • 高延時:Higress 基於安全網關能力可以提供 CC 防護能力,並面向 AI 場景,除了 QPS,還可以擴展針對 Token 生成的限流防護。
  • 大帶寬:Higress 支持完全流式轉發,在 AI Web 應用場景下,所需的內存佔用極低,同時也可以開發 Wasm 插件對請求和響應進行自定義邏輯的流式處理。

從上面的測試環境搭建流程來看,Higress AI 代理插件可以很方便的讓 AI 對話應用直接對接通義千問等接口契約不同的大模型服務。除了通義千問和 ChatGPT 之外,這個插件還支持 Azure OpenAI 和月之暗面(Moonshot)等大模型服務提供商,並且支持配置一個外部文件地址作爲聊天上下文,可以用來快速搭建一個個人 AI 助理服務。

整個插件使用 Go 語言進行開發,代碼可以在這裏找到:https://github.com/alibaba/higress/tree/main/plugins/wasm-go/extensions/ai-proxy對於流式相應的處理方法,大家可以參考這段代碼:

// 這個 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 下認領任務:https://github.com/alibaba/higress/issues/940

有任何使用問題,也歡迎到社區提 issue,也可以進微信或釘釘羣交流(釘釘羣號:30735012403):

此外,由中國科學院軟件研究所“開源軟件供應鏈點亮計劃”發起並長期支持的暑期開源活動“開源之夏”正在進行中。Higress 也有兩個與 AI 相關的項目參與其中,分別是“基於向量相似度實現 LLM 結果召回的 WASM 插件”和“基於 AI 網關實現 AI 模型的輕量化部署”。歡迎各位在校同學積極報名參與。

詳情可查看開源之夏的 Higress 社區頁面 [ 4]

答案揭曉

最後,我們來揭曉前面問題的答案。不知道各位猜對了嗎?

相關鏈接:

[1] NextChat (ChatGPT Next Web)

https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web

[2] Higress

https://github.com/alibaba/higress

[3] 通義千問的 API Key

https://help.aliyun.com/zh/dashscope/opening-service?spm=a2c4g.11186623.0.0.72c2369dLprd45

[4] Higress 社區頁面

https://summer-ospp.ac.cn/org/orgdetail/1f8ea42c-86c9-46b8-b1f5-344de5741ef0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章