Sdcb Chats 1.6.6 发布,彻底移除 Azure.AI.OpenAI 专用包

最近,我对我的开源项目 Sdcb Chats 进行了一次更新,发布了 1.6.6 版本。这次更新的核心,是解决了一个我个人一直很在意的技术债:彻底移除了对 Azure.AI.OpenAI 这个专用包的依赖。

在介绍具体改动前,先为新朋友简单介绍一下 Sdcb Chats。这是一个旨在帮助开发者和用户轻松接入、管理和使用各类主流大语言模型的开源项目。

核心特性包括:

  • 🔍 广泛的模型支持:兼容超过 18 种主流 LLM,包括 OpenAI、Azure OpenAI,以及在本地部署的 Ollama 等。
  • 🗄️ 灵活的数据库选项:支持 SQLite、SQL Server 和 PostgreSQL,可以根据部署规模灵活选择。
  • 🚢 多样的部署方式:提供 Docker 镜像和原生二进制文件,旨在实现快速、便捷的部署。
  • ⚙️ 完善的管理功能:内置多用户管理、Token 消耗统计与成本控制模块,为实际运营提供支持。

项目基于 Apache 2.0 协议开源,所有代码都托管在 GitHub,欢迎大家关注和贡献:https://github.com/sdcb/chats

接下来,我们详细聊聊 1.6.6 版本(包含 1.6.5 的累积更新)带来的变化。

API 的统一:移除 Azure.AI.OpenAI 依赖

在之前的版本中,为了同时兼容标准 OpenAI API 和 Azure OpenAI,我需要同时维护对 OpenAIAzure.AI.OpenAI 两个包的依赖。后者虽然是微软官方出品,但在实践中存在一些与主包不完全一致的 API 行为和配置,这给代码的统一性和维护性带来了一些不必要的麻烦,算是一个不大不小的"痛点"。

好消息是,微软最近终于将 Azure OpenAI 的预览版 API 更新为与官方 OpenAI API 完全兼容。

官方的参考文档也明确了这一点:Azure OpenAI Service preview API reference

这一变化意义重大。现在,我可以直接移除 Azure.AI.OpenAI 包,只保留 OpenAI 包,就能同时服务于两个平台。代码逻辑得到了极大的简化,不再需要那些条件编译或分支判断来处理不同平台的差异。对于追求代码简洁的我来说,这是一个非常受欢迎的改进。

得益于 API 的统一,之前的一些模型使用限制也自然解除了:

  • o3/o4-mini 这类需要 Response API 的模型,之前只能通过 Azure 部署,现在同样支持标准的 OpenAI 渠道。
  • 图片生成模型 gpt-image-1 也一样,不再受限于必须使用 Azure OpenAI,现在两个渠道均可使用。

其他更新与 Bug 修复

当然,除了这个核心变化,还有一些其他的调整。

首先,作为常规维护的一部分,我将项目依赖的一系列 NuGet 包更新到了最新版本,具体清单如下:

复制代码
AWSSDK.S3 updated to 4.0.6.3
Microsoft.EntityFrameworkCore.* updated to 9.0.8
Mscc.GenerativeAI updated to 2.6.8
OpenAI updated to 2.3.0
System.IdentityModel.Tokens.Jwt updated to 8.13.0
System.Runtime.Caching updated to 9.0.8

其次,也修复了一个迭代开发中出现的典型问题。在 1.6.5 版本中,我修复了 o3/o4-mini 等模型在使用 JSON Schema 时会导致 API 调用失败的 Bug。然而,这个修复却意外导致了 gpt-image-1 图片生成模型的调用出错。修复一个 Bug 引入另一个,这大概是软件开发的常态了。在 1.6.6 版本中,这个问题已经得到修正,保证了功能的稳定性。

如何快速上手?

如果你想体验 Sdcb Chats,可以通过以下两种方式部署。

对于习惯使用 Docker 的用户,可以使用以下命令:

bash 复制代码
docker run --restart unless-stopped --name sdcb-chats -v ./AppData:/app/AppData -p 8080:8080 sdcb/chats:latest

如果你偏好直接运行二进制文件,可以访问项目的 GitHub Release 页面:
https://github.com/sdcb/chats/releases

以 Windows 为例,下载 chats-win-x64.zip,解压后运行 Chats.BE.exe 即可启动服务。

需要说明的是,项目默认使用 SQLite 数据库,并会自动创建,无需额外配置。如果你的业务需要更专业的数据库,它也支持 SQL Server 和 PostgreSQL,具体配置方法请参考项目首页的文档。

关于下载地址

我之前提供过一个位于 io.starworks.cc:88 的国内下载镜像,主要是为了解决 GitHub Release 在国内访问慢的问题。但这个镜像的稳定性并不理想,后续我可能不再投入精力维护。因此,建议大家还是优先通过官方的 GitHub Release 页面进行下载,以确保获取到最稳定和最新的版本。

总的来说,这次更新让 Sdcb Chats 的底层实现更加干净和统一,也体现了上游技术生态(这里指 Azure)向开放标准靠拢的积极趋势。这对于开发者无疑是件好事。


感谢阅读到这里,如果感觉本文对您有帮助,请不吝评论点赞,这也是我持续创作的动力!

也欢迎加入我的 Sdcb Chats QQ群:498452653,一起交流 .NET 和 AI 的各种有趣玩法!