AiProvider.java 2.2 KB
package com.aigeo.common.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * AI提供方枚举
 * 对应数据库字段:ai_configurations.provider
 * 
 * 支持的AI服务提供商:
 * - DIFY: Dify开源平台,支持工作流和知识库
 * - OPENAI: OpenAI官方API,GPT系列模型
 * - ANTHROPIC: Claude系列模型
 * - GOOGLE: Gemini系列模型
 * - AZURE_OPENAI: Azure托管的OpenAI服务
 * - OTHER: 其他自定义AI服务
 *
 * @author AIGEO Team
 * @since 1.0.0
 */
@Getter
public enum AiProvider {
    
    /**
     * Dify开源平台 - 工作流和知识库集成
     */
    DIFY("dify", "Dify平台"),
    
    /**
     * OpenAI官方API - GPT系列模型
     */
    OPENAI("openai", "OpenAI"),
    
    /**
     * Anthropic - Claude系列模型
     */
    ANTHROPIC("anthropic", "Anthropic"),
    
    /**
     * Google - Gemini系列模型
     */
    GOOGLE("google", "Google AI"),
    
    /**
     * Azure OpenAI - 微软Azure托管的OpenAI服务
     */
    AZURE_OPENAI("azure_openai", "Azure OpenAI"),
    
    /**
     * 其他AI服务提供商
     */
    OTHER("other", "其他");

    /**
     * 数据库存储值
     */
    private final String code;
    
    /**
     * 显示名称
     */
    private final String displayName;
    
    AiProvider(String code, String displayName) {
        this.code = code;
        this.displayName = displayName;
    }
    
    /**
     * 根据代码获取枚举
     */
    public static AiProvider fromCode(String code) {
        for (AiProvider provider : values()) {
            if (provider.code.equals(code)) {
                return provider;
            }
        }
        throw new IllegalArgumentException("未知的AI提供方代码: " + code);
    }
    
    /**
     * 检查是否支持流式输出
     */
    public boolean supportStreamOutput() {
        return this == OPENAI || this == ANTHROPIC || this == AZURE_OPENAI;
    }
    
    /**
     * 检查是否需要API密钥认证
     */
    public boolean requiresApiKey() {
        return this != DIFY;
    }
    
    /**
     * 检查是否支持知识库集成
     */
    public boolean supportsKnowledgeBase() {
        return this == DIFY || this == OPENAI || this == AZURE_OPENAI;
    }
}