ModelRecommendation

Struct ModelRecommendation 

Source
pub struct ModelRecommendation { /* private fields */ }
Expand description

Model recommendation helper

Provides recommendations for which Claude model to use based on task type. You can use the default recommendations or provide custom mappings.

Implementations§

Source§

impl ModelRecommendation

Source

pub fn with_defaults() -> Self

Create with default recommendations

Default mappings:

  • “simple” / “fast” / “cheap” → claude-3-5-haiku-20241022 (fastest, cheapest)
  • “balanced” / “general” → sonnet (balanced performance/cost)
  • “complex” / “best” / “quality” → opus (most capable)
§Example
use cc_sdk::model_recommendation::ModelRecommendation;

let recommender = ModelRecommendation::default();
let model = recommender.suggest("simple").unwrap();
assert_eq!(model, "claude-3-5-haiku-20241022");
Source

pub fn custom(recommendations: HashMap<String, String>) -> Self

Create with custom recommendations

§Example
use cc_sdk::model_recommendation::ModelRecommendation;
use std::collections::HashMap;

let mut custom_map = HashMap::new();
custom_map.insert("code_review".to_string(), "sonnet".to_string());
custom_map.insert("documentation".to_string(), "claude-3-5-haiku-20241022".to_string());

let recommender = ModelRecommendation::custom(custom_map);
Source

pub fn suggest(&self, task_type: &str) -> Option<&str>

Get a model suggestion for a given task type

Returns the recommended model name, or None if no recommendation exists.

§Example
use cc_sdk::model_recommendation::ModelRecommendation;

let recommender = ModelRecommendation::default();

// For simple tasks, use Haiku
assert_eq!(recommender.suggest("simple"), Some("claude-3-5-haiku-20241022"));

// For complex tasks, use Opus
assert_eq!(recommender.suggest("complex"), Some("opus"));
Source

pub fn add(&mut self, task_type: impl Into<String>, model: impl Into<String>)

Add or update a recommendation

§Example
use cc_sdk::model_recommendation::ModelRecommendation;

let mut recommender = ModelRecommendation::default();
recommender.add("my_task", "sonnet");
assert_eq!(recommender.suggest("my_task"), Some("sonnet"));
Source

pub fn remove(&mut self, task_type: &str) -> Option<String>

Remove a recommendation

Source

pub fn task_types(&self) -> Vec<&str>

Get all task types with recommendations

Source

pub fn all_recommendations(&self) -> &HashMap<String, String>

Get all available recommendations

Trait Implementations§

Source§

impl Clone for ModelRecommendation

Source§

fn clone(&self) -> ModelRecommendation

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ModelRecommendation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ModelRecommendation

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more