llm-sdk-rs 0.3.0

A Rust library that enables the development of applications that can interact with different language models through a unified interface.
Documentation
use crate::{
    openai::responses_api::{ReasoningEffort, ReasoningEffortValue},
    LanguageModelError,
};

pub const OPENAI_REASONING_EFFORT_MINIMAL: u32 = 1000;
pub const OPENAI_REASONING_EFFORT_LOW: u32 = 2000;
pub const OPENAI_REASONING_EFFORT_MEDIUM: u32 = 3000;
pub const OPENAI_REASONING_EFFORT_HIGH: u32 = 4000;

pub fn reasoning_effort_from_budget(value: u32) -> Result<ReasoningEffort, LanguageModelError> {
    let effort = match value {
        OPENAI_REASONING_EFFORT_MINIMAL => ReasoningEffortValue::Minimal,
        OPENAI_REASONING_EFFORT_LOW => ReasoningEffortValue::Low,
        OPENAI_REASONING_EFFORT_MEDIUM => ReasoningEffortValue::Medium,
        OPENAI_REASONING_EFFORT_HIGH => ReasoningEffortValue::High,
        _ => {
            return Err(LanguageModelError::Unsupported(
                "openai",
                "Budget tokens property is not supported for OpenAI reasoning. You may use \
                 OPENAI_REASONING_EFFORT_* constants to map it to OpenAI reasoning effort levels."
                    .to_string(),
            ))
        }
    };

    Ok(Some(Some(effort)))
}