anthropic model changes

This commit is contained in:
leach
2025-08-19 01:20:17 -04:00
parent b847ef8812
commit 10b79eaf79
4 changed files with 139 additions and 32 deletions

View File

@@ -2,7 +2,7 @@ use anyhow::Result;
use crate::config::Config;
use crate::core::{
create_client, get_provider_for_model, provider::get_all_models,
create_client, get_provider_for_model, provider::{get_model_info_list, get_display_name_for_model, get_model_id_from_display_name},
ChatClient, Session,
};
use crate::utils::{Display, InputHandler, SessionAction};
@@ -45,7 +45,8 @@ impl ChatCLI {
self.display.print_info("Type /help for help.");
let provider = get_provider_for_model(&self.session.model);
self.display.print_model_info(&self.session.model, provider.as_str());
let display_name = get_display_name_for_model(&self.session.model);
self.display.print_model_info(&display_name, provider.as_str());
self.display.print_session_info(&self.session.name);
println!();
@@ -216,27 +217,34 @@ impl ChatCLI {
}
async fn model_switcher(&mut self) -> Result<()> {
let all_models = get_all_models();
let model_info_list = get_model_info_list();
let display_names: Vec<String> = model_info_list.iter().map(|info| info.display_name.to_string()).collect();
let current_display_name = get_display_name_for_model(&self.session.model);
let selection = self.input.select_from_list(
"Select a model:",
&all_models,
Some(&self.session.model),
&display_names,
Some(&current_display_name),
)?;
match selection {
Some(model) => {
if model.to_string() == self.session.model {
self.display.print_info("Already using that model");
Some(display_name) => {
if let Some(model_id) = get_model_id_from_display_name(&display_name) {
if model_id == self.session.model {
self.display.print_info("Already using that model");
} else {
self.session.model = model_id.clone();
let provider = get_provider_for_model(&self.session.model);
self.display.print_command_result(&format!(
"Model switched to {} ({})",
display_name,
provider.as_str()
));
self.client = None; // Force client recreation
self.session.save()?; // Save the model change
}
} else {
self.session.model = model.to_string();
let provider = get_provider_for_model(&self.session.model);
self.display.print_command_result(&format!(
"Model switched to {} ({})",
self.session.model,
provider.as_str()
));
self.client = None; // Force client recreation
self.session.save()?; // Save the model change
self.display.print_error("Invalid model selection");
}
}
None => {
@@ -292,9 +300,10 @@ impl ChatCLI {
match Session::load(&session_name) {
Ok(session) => {
self.session = session;
let display_name = get_display_name_for_model(&self.session.model);
self.display.print_command_result(&format!(
"Switched to session '{}' (model={})",
self.session.name, self.session.model
self.session.name, display_name
));
self.client = None; // Force client recreation
return Ok(());
@@ -329,9 +338,10 @@ impl ChatCLI {
match Session::load(&remaining_names[0]) {
Ok(session) => {
self.session = session;
let display_name = get_display_name_for_model(&self.session.model);
self.display.print_command_result(&format!(
"Switched to session '{}' (model={})",
self.session.name, self.session.model
self.session.name, display_name
));
self.client = None;
return Ok(());
@@ -383,12 +393,10 @@ impl ChatCLI {
// Show compatibility warnings based on provider
match provider {
crate::core::provider::Provider::Anthropic => {
if web_enabled {
self.display.print_warning("Web search is not supported by Anthropic models");
}
if reasoning_enabled {
self.display.print_warning("Reasoning summaries are not supported by Anthropic models");
}
// Web search is now supported by Anthropic models
}
crate::core::provider::Provider::OpenAI => {
// OpenAI models generally support these features