// ReSharper disable InconsistentNaming
namespace Dpz.Core.Service.Network.Models;
/// <summary>
/// AI模型枚举,支持多个AI提供商的模型
/// </summary>
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-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>
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.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));
}
}