llm-unified 0.1.2

Unified LLM provider layer: one trait, many backends (OpenAI, Anthropic, DeepSeek, Qwen, ...)
Documentation
//! Qwen (Tongyi Qianwen) model profiles.

use super::ModelProfile;
use llm_trait::{Capabilities, Protocol, ReasoningMode};

fn brand_defaults() -> ModelProfile {
    ModelProfile {
        protocol: Protocol::OpenAi,
        provider_name: "qwen",
        capabilities: Capabilities {
            supports_streaming: true,
            supports_tools: true,
            supports_vision: false,
            supports_thinking: false,
            max_context_tokens: Some(1_000_000),
            max_output_tokens: Some(16_384),
        },
        reasoning_mode: ReasoningMode::None,
        supported_extra_params: &[],
    }
}

pub fn profiles() -> Vec<(&'static str, ModelProfile)> {
    vec![
        ("qwen@openai", brand_defaults()),
        ("qwen-plus@openai", brand_defaults()),
        (
            "qwen-max@openai",
            ModelProfile {
                capabilities: Capabilities {
                    max_output_tokens: Some(32_768),
                    ..brand_defaults().capabilities
                },
                ..brand_defaults()
            },
        ),
        (
            "qwen-vl@openai",
            ModelProfile {
                capabilities: Capabilities {
                    supports_vision: true,
                    ..brand_defaults().capabilities
                },
                ..brand_defaults()
            },
        ),
    ]
}

pub fn brand_prefixes() -> Vec<(&'static str, &'static str)> {
    vec![("qwen-", "qwen")]
}