summaryrefslogtreecommitdiffstats
path: root/src/config/input.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/input.rs')
-rw-r--r--src/config/input.rs23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/config/input.rs b/src/config/input.rs
index 0406a5e..4d0ed7f 100644
--- a/src/config/input.rs
+++ b/src/config/input.rs
@@ -1,7 +1,7 @@
use super::{role::Role, session::Session, GlobalConfig};
use crate::client::{
- init_client, list_chat_models, ChatCompletionsData, Client, ImageUrl, Message, MessageContent,
+ init_client, ChatCompletionsData, Client, ImageUrl, Message, MessageContent,
MessageContentPart, MessageRole, Model,
};
use crate::function::{ToolCallResult, ToolResults};
@@ -165,18 +165,15 @@ impl Input {
}
pub fn model(&self) -> Model {
- let model = self.config.read().model.clone();
- if let Some(model_id) = self.role().and_then(|v| v.model_id.clone()) {
- if model.id() != model_id {
- if let Some(model) = list_chat_models(&self.config.read())
- .into_iter()
- .find(|v| v.id() == model_id)
- {
- return model.clone();
- }
- }
- };
- model
+ if let Some(session) = self.session(&self.config.read().session) {
+ return session.model.clone();
+ } else if let Some(model) = self
+ .role()
+ .and_then(|v| v.retrieve_model(&self.config.read()))
+ {
+ return model;
+ }
+ self.config.read().model.clone()
}
pub fn create_client(&self) -> Result<Box<dyn Client>> {