// ReSharper disable InconsistentNaming
namespace Dpz.Core.Service.Network.Models;
/// <summary>
/// AI模型枚举,支持多个AI提供商的模型
/// </summary>
[Obsolete("use IOpenAiService")]
public enum AiModel
{
#region ChatGPT Models
/// <summary>GPT-5</summary>
Gpt5,
/// <summary>GPT-5-Mini</summary>
Gpt5Mini,
/// <summary>GPT-5-Nano</summary>
Gpt5Nano,
/// <summary>O1-Mini</summary>
O1Mini,
/// <summary>GPT-4.1</summary>
Gpt41,
/// <summary>GPT-4.1-Mini</summary>
Gpt41Mini,
/// <summary>GPT-4o-Mini (Default)</summary>
Gpt4oMini,
#endregion
#region Claude Models
/// <summary>claude-sonnet-4-5</summary>
ClaudeSonnet4_5,
/// <summary>Claude-Sonnet-4-20250514</summary>
ClaudeSonnet420250514,
/// <summary>Claude-3-7-Sonnet-Latest</summary>
Claude37SonnetLatest,
/// <summary>Claude-3-5-Sonnet-Latest</summary>
Claude35SonnetLatest,
#endregion
#region Gemini Models
/// <summary>Gemini-2.5-Pro</summary>
Gemini25Pro,
/// <summary>Gemini-2.5-Flash</summary>
Gemini25Flash,
#endregion
#region DeepSeek Models
/// <summary>DeepSeek-V3</summary>
DeepSeekV3,
/// <summary>DeepSeek-R1</summary>
DeepSeekR1,
/// <summary>DeepSeek-R1-Distill-Qwen-7B</summary>
DeepSeekR1DistillQwen7B,
/// <summary>DeepSeek-R1-Distill-Qwen-32B</summary>
DeepSeekR1DistillQwen32B,
#endregion
#region 文心一言 Models
/// <summary>ERNIE-3.5-8K</summary>
Ernie35_8K,
#endregion
#region 通义千问 Models
/// <summary>Qwen-Turbo</summary>
QwenTurbo,
/// <summary>Qwen-Plus</summary>
QwenPlus,
/// <summary>Qwen-Max</summary>
QwenMax,
#endregion
#region 智谱AI Models
/// <summary>GLM-3-Turbo</summary>
Glm3Turbo,
/// <summary>GLM-4</summary>
Glm4,
/// <summary>GLM-4V</summary>
Glm4V,
#endregion
#region 豆包 Models
/// <summary>Doubao-Pro-32K</summary>
DoubaoP32K,
/// <summary>Doubao-Lite-32K</summary>
DoubaoLite32K,
#endregion
}
/// <summary>
/// AI模型映射工具类,用于将枚举转换为API调用所需的字符串
/// </summary>
[Obsolete("use IOpenAiService")]
public static class AiModelMapper
{
private static readonly Dictionary<AiModel, string> ModelMapping = new()
{
// ChatGPT Models
{ AiModel.Gpt5, "gpt-5" },
{ AiModel.Gpt5Mini, "gpt-5-mini" },
{ AiModel.Gpt5Nano, "gpt-5-nano" },
{ AiModel.O1Mini, "o1-mini" },
{ AiModel.Gpt41, "gpt-4.1" },
{ AiModel.Gpt41Mini, "gpt-4.1-mini" },
{ AiModel.Gpt4oMini, "gpt-4o-mini" },
// Claude Models
{ AiModel.ClaudeSonnet4_5, "claude-sonnet-4-5" },
{ AiModel.ClaudeSonnet420250514, "claude-sonnet-4-20250514" },
{ AiModel.Claude37SonnetLatest, "claude-3-7-sonnet-latest" },
{ AiModel.Claude35SonnetLatest, "claude-3-5-sonnet-latest" },
// Gemini Models
{ AiModel.Gemini25Pro, "gemini-2.5-pro" },
{ AiModel.Gemini25Flash, "gemini-2.5-flash" },
// DeepSeek Models
{ AiModel.DeepSeekV3, "DeepSeek-V3" },
{ AiModel.DeepSeekR1, "DeepSeek-R1" },
{ AiModel.DeepSeekR1DistillQwen7B, "DeepSeek-R1-Distill-Qwen-7B" },
{ AiModel.DeepSeekR1DistillQwen32B, "DeepSeek-R1-Distill-Qwen-32B" },
// 文心一言
{ AiModel.Ernie35_8K, "ERNIE-3.5-8K" },
// 通义千问
{ AiModel.QwenTurbo, "qwen-turbo" },
{ AiModel.QwenPlus, "qwen-plus" },
{ AiModel.QwenMax, "qwen-max" },
// 智谱AI
{ AiModel.Glm3Turbo, "glm-3-turbo" },
{ AiModel.Glm4, "glm-4" },
{ AiModel.Glm4V, "glm-4v" },
// 豆包
{ AiModel.DoubaoP32K, "Doubao-pro-32k" },
{ AiModel.DoubaoLite32K, "Doubao-lite-32k" },
};
/// <summary>
/// 将AiModel枚举转换为API调用所需的字符串
/// </summary>
/// <param name="model">AI模型枚举</param>
/// <returns>模型字符串</returns>
/// <exception cref="ArgumentException">不支持的模型类型</exception>
public static string GetModelString(AiModel model)
{
if (ModelMapping.TryGetValue(model, out var modelString))
{
return modelString;
}
throw new ArgumentException($"不支持的模型类型: {model}", nameof(model));
}
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
代码解释
这是一个 C# 代码文件,定义了 AI 模型的枚举类型和映射工具类。以下是详细说明:
主要组成部分
1. AiModel 枚举
这是一个已废弃([Obsolete])的枚举类型,用于表示多个 AI 提供商的模型。
包含的 AI 提供商和模型:
- ChatGPT 系列:GPT-5、GPT-5-Mini、GPT-5-Nano、O1-Mini、GPT-4.1、GPT-4.1-Mini、GPT-4o-Mini(默认)
- Claude 系列:多个 Claude Sonnet 版本(4.5、4-20250514、3.7、3.5)
- Gemini 系列:Gemini-2.5-Pro、Gemini-2.5-Flash
- DeepSeek 系列:DeepSeek-V3、DeepSeek-R1 及其 Distill 版本
- 文心一言:ERNIE-3.5-8K
- 通义千问:Qwen-Turbo、Qwen-Plus、Qwen-Max
- 智谱AI:GLM-3-Turbo、GLM-4、GLM-4V
- 豆包:Doubao-Pro-32K、Doubao-Lite-32K
2. AiModelMapper 静态工具类
同样标记为已废弃,用于将枚举值映射到 API 调用所需的字符串。
核心功能:
ModelMapping字典:存储枚举值到字符串的映射关系- 例如:
AiModel.Gpt5→"gpt-5" - 涵盖所有枚举定义的模型
- 例如:
GetModelString()方法:- 输入:
AiModel枚举值 - 输出:对应的 API 模型字符串
- 异常处理:如果传入不支持的模型,抛出
ArgumentException
- 输入:
设计特点
- Region 组织:使用
#region将不同提供商的模型分组,提高可读性 - 废弃标记:
[Obsolete("use IOpenAiService")]表示应使用IOpenAiService替代 - 禁用警告:
// ReSharper disable InconsistentNaming允许不一致的命名风格(如枚举成员) - 类型安全:使用枚举而非字符串,提供编译时类型检查
使用示例
// 获取模型字符串
string modelName = AiModelMapper.GetModelString(AiModel.Gpt4oMini);
// 返回: "gpt-4o-mini"
注意事项
- 此代码已标记为废弃,建议迁移到
IOpenAiService接口 - 适用于需要统一管理多个 AI 提供商模型的场景
AI 正在分析代码…
评论加载中...