网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
// 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));
    }
}
loading