anthropic model changes
This commit is contained in:
52
src/cli.rs
52
src/cli.rs
@@ -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(¤t_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
|
||||
|
||||
Reference in New Issue
Block a user