Skip to content

Latest commit

 

History

History
445 lines (337 loc) · 13.9 KB

File metadata and controls

445 lines (337 loc) · 13.9 KB

📋 所有版本 English | 简体中文

Chats 1.9.0 发布说明

发布日期:2025-11-27(相对 1.8.1.279 以来 80 次提交)

1.9.0 是一次重大版本更新,核心亮点包括全新的 Anthropic 模型提供商支持Anthropic Messages API 兼容接口OpenAI 图像生成/编辑 APIBuild 开发者页面以及全面的界面动画优化。此版本还升级到 .NET 10,重构了 ChatService 架构以支持 Claude 模型的 thinking+signature 流程。

🎯 核心功能

1) Anthropic 模型提供商支持

新增 Anthropic 提供商(ID=20):

  • 完整支持 Claude 系列模型(包括 claude-opus-4-5 等最新模型)
  • 使用原生 HttpClient 实现
  • 支持 Claude 特有的 thinking(推理)+ signature(签名)流程
  • 默认 URL:https://api.anthropic.com
  • 新增 anthropic.svg 图标

Anthropic 模型特性

  • 支持 MaxThinkingBudget(模型级别)和 ThinkingBudget(会话级别)配置
  • 默认启用 Vision Link 支持(通过 URL 传图而非 base64)
  • 支持内置 web_search 和 MCP 工具调用
  • 支持 Claude 模型的 signature 字段存储

数据库架构调整

  • 新增 StepContentThink 表,包含 ContentSignature 字段
  • 将原有 reasoning 数据从 StepContentText 迁移到 StepContentThink
  • 新增 Model.MaxThinkingBudget
  • 新增 ChatConfig.ThinkingBudget

后端重构

  • AnthropicChatService 使用原生 HttpClient 重新实现(969 行)
  • 支持 JsonPolymorphic 特性处理 Anthropic 流式事件
  • ChatService 架构改为基于 DB Steps 驱动,支持多种消息格式转换

2) 对外 API 增强

Anthropic Messages API(/v1/messages):

  • 完整兼容 Anthropic Messages API 规范
  • 支持流式和非流式响应
  • 支持 Tool Use(工具调用)
  • 支持 System Prompt 解析
  • 实现 Token 计数 API(/v1/messages/count_tokens)

核心组件(新增 6 个文件):

  • AnthropicCompatibleController.cs(380 行)- API 端点控制器
  • AnthropicRequest.cs(140 行)- 请求 DTO
  • AnthropicResponse.cs(105 行)- 响应 DTO
  • AnthropicStreamEvent.cs(227 行)- 流式事件定义
  • AnthropicRequestWrapper.cs(307 行)- 请求转换器
  • AnthropicSegmentExtensions.cs(112 行)- 消息段扩展

OpenAI Image API

  • 实现图像生成 API(POST /v1/images/generations)
  • 实现图像编辑 API(POST /v1/images/edits)
  • OpenAIImageController.cs(478 行)- 完整的图像 API 实现
  • ImageGenerationDtos.cs(171 行)- 图像 API DTO 定义

API 类型强制校验

  • OpenAI 兼容接口强制使用 ChatCompletion 类型模型
  • Anthropic 兼容接口强制使用 Anthropic 类型模型
  • 接口与模型类型不匹配时返回明确错误

3) Build 开发者页面

新增 Build 布局和页面(面向 API 开发者):

  • BuildLayout.tsx(201 行)- 统一的 Build 页面布局
  • 三个核心页面:API Keys、Docs、Usage

API Keys 页面(/build/api-key):

  • API 密钥的创建、编辑、删除管理
  • 密钥掩码显示(防止截图泄露敏感信息)
  • 支持设置密钥备注和过期时间
  • 显示最后使用时间
  • 点击密钥可查看该密钥的使用记录
  • 响应式布局(移动端友好)

Docs 页面(/build/docs):

  • 分类展示 OpenAI 兼容和 Anthropic 兼容 API
  • 显示完整的 API URL(可一键复制)
  • 链接到官方文档
  • OpenAI 兼容 API:
    • Chat Completions(/v1/chat/completions)
    • List Models(/v1/models)
    • Image Generations(/v1/images/generations)
    • Image Edit(/v1/images/edits)
  • Anthropic 兼容 API:
    • Messages(/v1/messages)
    • Count Tokens(/v1/messages/count_tokens)

Usage 页面(/build/usage):

  • 复用现有的 UsageRecordsTab 组件
  • 支持按 API Key 筛选使用记录

4) 界面优化与动画

ChatInput 动画优化

  • 展开/收起时的平滑过渡动画
  • 全屏切换动画效果
  • 修复发送消息后高度未重置的问题
  • 修复聊天时的闪烁问题

UserMenuPopover 组件统一

  • 提取为独立组件,在聊天页和管理页复用
  • 添加下拉菜单动画效果
  • 新增 Tailwind 动画配置

ToolCallBlock 优化

  • 头部展开/收起添加动画过渡
  • 修复自动展开行为异常的问题
  • 优化白色主题下的视觉效果
  • 优化 Anthropic 内置 web_search 工具的前端渲染

其他 UI 改进

  • 修复 UserMessage 下的亚像素线条问题
  • 优化管理页面的移动端布局
  • 优化模型管理页面标签和描述 UI
  • 删除聊天确认时添加加载指示器
  • 聊天缓存与创建/删除操作保持同步

🏗️ 架构改进

1) 升级到 .NET 10

  • 框架从 .NET 9 升级到 .NET 10
  • 更新所有相关 NuGet 包
  • OpenAI SDK 升级到 2.7.0
  • 构建流程切换到 Ubuntu 24.04

2) ChatService 架构重构

核心变更

  • ChatService 从基于 OpenAI payload 驱动改为基于 DB Steps 驱动
  • 新增 ChatServiceRequest 类封装请求数据
  • 支持 Anthropic 的 thinking+signature 流程
  • ChatService 改为 DI 单例注册服务
  • ChatService 不再继承 IDisposable

代码优化

  • 删除 ChatServiceExtensions.cs(136 行)
  • 删除 TestChatService.cs(76 行)
  • 简化各个 ChatService 实现
  • 统一的请求/响应处理流程

3) 新增 Model.SupportsVisionLink 字段

  • 控制图片传输方式:URL 链接或 Base64 编码
  • Anthropic 模型默认启用(使用 URL)
  • 其他模型默认禁用(使用 Base64,兼容性更好)
  • 可在模型配置中手动切换

🐛 问题修复

1) Thinking Budget 修复

  • 修复无法应用 thinking budget 设置的问题
  • 正确传递模型级别和会话级别的 budget 配置

2) Gemini 相关修复

3) UI 相关修复

  • 修复 ChatInput 发送消息后高度未重置的问题
  • 修复 UserMessage 下的亚像素线条显示问题
  • 修复 ToolCallBlock 自动展开行为异常
  • 修复非全屏模式下 FilePreview 缺失的问题
  • 修复 Quick Add Model 因 VisionLink 变更导致的失败
  • 修复管理模型页"显示所有提供商"按钮不工作的问题

4) API 相关修复

  • 修复 Anthropic Messages API 的 tool call finish reason 处理
  • 修复 Anthropic Messages API 的 system prompt 解析(支持 Claude Code)
  • 修复切换 ApiType 时影响模型价格的问题

🗄️ 数据库迁移

迁移脚本位置

src/scripts/db-migration/1.9/1.9.0.sql

迁移内容

Step 1:创建 StepContentThink 表

CREATE TABLE dbo.StepContentThink (
    Id BIGINT NOT NULL,
    Content NVARCHAR(MAX) NOT NULL,
    Signature VARBINARY(MAX) NULL,
    CONSTRAINT PK_StepContentThink PRIMARY KEY CLUSTERED (Id),
    CONSTRAINT FK_StepContentThink_StepContent FOREIGN KEY (Id) REFERENCES dbo.StepContent (Id)
);

Step 2:迁移 reasoning 数据

  • ContentTypeId = 3 的记录从 StepContentText 迁移到 StepContentThink

Step 3:移除 StepContentType 表

  • 删除外键约束和表本身

Step 4:File.MediaType 改造

  • 新增 File.MediaType
  • 迁移 FileContentType 数据
  • 删除 FileContentType

Step 5:StepContentBlob 增强

  • 新增 MediaTypeFileName

Step 6:移除 ChatRole 表

  • 删除 Step 表的外键约束
  • 删除 ChatRole

Step 7:Model/ChatConfig 表调整

  • 删除 Model.AllowSystemPrompt
  • 新增 Model.MaxThinkingBudget
  • 新增 ChatConfig.ThinkingBudget
  • 调整 ReasoningEffortOptionsSupportedImageSizes 为可空

Step 8:字段重命名

  • ChatConfig.ReasoningEffortChatConfig.ReasoningEffortId
  • Model.ApiTypeModel.ApiTypeId

Step 9:新增 Model.SupportsVisionLink

  • 添加布尔字段,默认为 false

迁移步骤

  1. 备份数据库(强烈建议)
  2. 停止应用服务
  3. 执行迁移脚本
    sqlcmd -S localhost -d Chats -i 1.9.0.sql
  4. 验证迁移结果
  5. 更新应用程序
  6. 启动服务

📊 代码统计

整体变更

  • 提交数量:80 次提交
  • 主要变更:Anthropic 支持、API 增强、Build 页面、动画优化、.NET 10 升级

关键模块

后端新增

  • AnthropicChatService.cs - 969 行(Anthropic 聊天服务)
  • AnthropicCompatibleController.cs - 380 行(Anthropic API 控制器)
  • AnthropicRequestWrapper.cs - 307 行(请求转换)
  • AnthropicStreamEvent.cs - 227 行(流式事件)
  • OpenAIImageController.cs - 478 行(图像 API)
  • ChatServiceRequest.cs - 115 行(请求封装)

前端新增

  • BuildLayout.tsx - 201 行(Build 布局)
  • BuildApiKeyPage - 255 行(API Key 管理)
  • BuildDocsPage - 120 行(API 文档)
  • UserMenuPopover.tsx - 110 行(用户菜单组件)

数据库迁移

  • 1.9.0.sql - 421 行(完整迁移脚本)

🚀 升级指南

从 1.8.1 升级到 1.9.0

  1. 备份数据库(强烈建议,此版本有重大架构变更)
  2. 停止应用服务
  3. 执行数据库迁移
    sqlcmd -S localhost -d Chats -i 1.9.0.sql
  4. 更新 .NET 运行时到 10.0
  5. 更新后端代码
  6. 更新前端代码
  7. 启动应用服务
  8. 验证功能
    • 测试 Anthropic 模型是否正常工作
    • 测试 Build 页面功能
    • 测试 Anthropic Messages API
    • 测试图像生成 API
    • 验证现有聊天记录的 thinking 内容显示

新功能使用说明

添加 Anthropic 模型

  1. 进入模型管理页面
  2. 选择 Anthropic 提供商
  3. 填写 API Key(从 Anthropic Console 获取)
  4. 添加模型(如 claude-sonnet-4-5-20250514)
  5. 可选配置 MaxThinkingBudget

使用 Build 页面

  1. 点击用户菜单中的"Build"选项
  2. 在 API Keys 页面创建新的 API Key
  3. 在 Docs 页面查看支持的 API 端点
  4. 在 Usage 页面查看使用记录

调用 Anthropic Messages API

curl -X POST https://your-chats-url/v1/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4-5-20250514",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

⚠️ 破坏性变更

1. .NET 版本升级

  • 运行时要求从 .NET 9 升级到 .NET 10
  • 部署环境需要安装 .NET 10 运行时

2. 数据库架构变更

删除的表

  • StepContentType
  • FileContentType
  • ChatRole

字段重命名

  • Model.ApiTypeModel.ApiTypeId
  • ChatConfig.ReasoningEffortChatConfig.ReasoningEffortId

删除的字段

  • Model.AllowSystemPrompt

3. ChatService 接口变更

  • ChatService 不再继承 IDisposable
  • 构造函数签名可能有变化
  • 如有自定义 ChatService 实现需要适配新架构

📝 已知限制

  • Anthropic 服务暂不支持 prompt caching 功能,可能影响长对话的成本优化
  • Windows Nano Server 1809 (Windows Server 2019) Docker 镜像已停止维护,不再提供新版本

🎓 学习资源

相关文档

社区支持


🙏 贡献者

感谢所有为本版本做出贡献的开发者!

特别感谢:

  • @sdcb - Anthropic 提供商支持、Messages API、图像 API、Build 页面、界面动画、.NET 10 升级、数据库架构重构

如有问题或建议,欢迎在 GitHub Issues 反馈。


📝 更新日志摘要

新增功能

  • ✅ Anthropic 模型提供商支持(ID=20)
  • ✅ Anthropic Messages API 兼容接口(/v1/messages)
  • ✅ Anthropic Token 计数 API(/v1/messages/count_tokens)
  • ✅ OpenAI 图像生成 API(/v1/images/generations)
  • ✅ OpenAI 图像编辑 API(/v1/images/edits)
  • ✅ Build 开发者页面(API Keys / Docs / Usage)
  • ✅ API 密钥掩码显示
  • ✅ ChatInput 展开/收起/全屏动画
  • ✅ UserMenuPopover 动画效果
  • ✅ ToolCallBlock 头部动画
  • ✅ Model.SupportsVisionLink 字段

架构改进

  • ✅ 升级到 .NET 10
  • ✅ ChatService 架构重构(基于 DB Steps 驱动)
  • ✅ 新增 StepContentThink 表支持 Claude signature
  • ✅ ChatService 改为 DI 单例注册
  • ✅ 统一的 UserMenuPopover 组件

问题修复

  • ✅ 修复 thinking budget 无法应用的问题
  • ✅ 修复 Gemini 启用 thinking 后无法对话的问题
  • ✅ 修复 ChatInput 高度重置问题
  • ✅ 修复 UserMessage 亚像素线条问题
  • ✅ 修复 ToolCallBlock 自动展开异常
  • ✅ 修复 FilePreview 在非全屏模式缺失
  • ✅ 修复 Anthropic API tool call finish reason
  • ✅ 禁用 Google Gemini 重试以绕过上游 bug

数据库迁移

  • ✅ 创建 StepContentThink 表(含 Signature 字段)
  • ✅ 迁移 reasoning 数据
  • ✅ 移除 StepContentType/FileContentType/ChatRole 表
  • ✅ 添加 Model.MaxThinkingBudget 字段
  • ✅ 添加 ChatConfig.ThinkingBudget 字段
  • ✅ 添加 Model.SupportsVisionLink 字段
  • ✅ 字段重命名(ApiType→ApiTypeId, ReasoningEffort→ReasoningEffortId)

代码清理

  • ✅ 删除 ChatServiceExtensions.cs
  • ✅ 删除 TestChatService.cs
  • ✅ 简化 ChatService 实现

最后更新:2025-11-27