package com.gzzm.lobster.llm;

/**
 * ModelProvider —— 模型供应协议族 / LLM provider family.
 *
 * <p>用于 {@link LobsterAdapterFactory} 选择具体 Adapter。
 * <br>Drives which {@link LobsterLlmAdapter} implementation is instantiated.
 *
 * <p>历史文档里使用连字符形式（如 {@code openai-compatible}）；
 * 枚举常量名用 Java 合法的下划线形式，两者通过 {@link #fromString(String)} 互通。
 */
public enum ModelProvider {
    /** OpenAI Chat Completions 兼容 / OpenAI Chat Completions compatible. */
    openai_compatible,
    /** Ollama 原生 / Ollama native. */
    ollama_compatible,
    /** vLLM 专用协议 / vLLM-native generate. */
    vllm_compatible,
    /** Anthropic Messages 兼容 / Anthropic Messages compatible. */
    anthropic_compatible,
    /** 内部私有协议 / Internal protocol. */
    internal;

    /**
     * 容错解析：同时接受 {@code openai_compatible} / {@code openai-compatible}
     * 两种形态（大小写不敏感），便于与历史 REST 调用兼容。
     * <br>Lenient parse: both underscore and dash, case-insensitive.
     */
    public static ModelProvider fromString(String s) {
        if (s == null) return null;
        String norm = s.trim().toLowerCase().replace('-', '_');
        if (norm.isEmpty()) return null;
        return ModelProvider.valueOf(norm);
    }
}
