perf: updated the memory injection warning so it only logs once, rather than after each keystroke
This commit is contained in:
@@ -709,6 +709,10 @@ impl RequestContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn extract_role(&self, app: &AppConfig) -> Result<Role> {
|
pub fn extract_role(&self, app: &AppConfig) -> Result<Role> {
|
||||||
|
self.extract_role_impl(app, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn extract_role_impl(&self, app: &AppConfig, inject_memory: bool) -> Result<Role> {
|
||||||
let mut role = if let Some(session) = self.session.as_ref() {
|
let mut role = if let Some(session) = self.session.as_ref() {
|
||||||
session.to_role()
|
session.to_role()
|
||||||
} else if let Some(agent) = self.agent.as_ref() {
|
} else if let Some(agent) = self.agent.as_ref() {
|
||||||
@@ -757,34 +761,36 @@ impl RequestContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let memory_config = self.memory_config();
|
if inject_memory {
|
||||||
if memory_config.enabled {
|
let memory_config = self.memory_config();
|
||||||
let store = MemoryStore {
|
if memory_config.enabled {
|
||||||
global_dir: paths::global_memory_dir(),
|
let store = MemoryStore {
|
||||||
workspace: memory_config.workspace,
|
global_dir: paths::global_memory_dir(),
|
||||||
};
|
workspace: memory_config.workspace,
|
||||||
let with_tools = app.function_calling_support;
|
};
|
||||||
let cap = if with_tools {
|
let with_tools = app.function_calling_support;
|
||||||
app.memory_cap_with_tools
|
let cap = if with_tools {
|
||||||
.unwrap_or(DEFAULT_MEMORY_CAP_WITH_TOOLS)
|
app.memory_cap_with_tools
|
||||||
} else {
|
.unwrap_or(DEFAULT_MEMORY_CAP_WITH_TOOLS)
|
||||||
app.memory_cap_without_tools
|
} else {
|
||||||
.unwrap_or(DEFAULT_MEMORY_CAP_WITHOUT_TOOLS)
|
app.memory_cap_without_tools
|
||||||
};
|
.unwrap_or(DEFAULT_MEMORY_CAP_WITHOUT_TOOLS)
|
||||||
match memory::build_memory_section(&store, with_tools, cap) {
|
};
|
||||||
Ok(Some(section)) => {
|
match memory::build_memory_section(&store, with_tools, cap) {
|
||||||
let separator = if role.is_empty_prompt() { "" } else { "\n\n" };
|
Ok(Some(section)) => {
|
||||||
role.append_to_prompt(separator);
|
let separator = if role.is_empty_prompt() { "" } else { "\n\n" };
|
||||||
role.append_to_prompt(§ion);
|
role.append_to_prompt(separator);
|
||||||
role.append_to_prompt("\n\n");
|
role.append_to_prompt(§ion);
|
||||||
role.append_to_prompt(if with_tools {
|
role.append_to_prompt("\n\n");
|
||||||
prompts::DEFAULT_MEMORY_INSTRUCTIONS
|
role.append_to_prompt(if with_tools {
|
||||||
} else {
|
prompts::DEFAULT_MEMORY_INSTRUCTIONS
|
||||||
prompts::DEFAULT_MEMORY_INSTRUCTIONS_READONLY
|
} else {
|
||||||
});
|
prompts::DEFAULT_MEMORY_INSTRUCTIONS_READONLY
|
||||||
|
});
|
||||||
|
}
|
||||||
|
Ok(None) => {}
|
||||||
|
Err(e) => warn!("memory injection failed: {}", e),
|
||||||
}
|
}
|
||||||
Ok(None) => {}
|
|
||||||
Err(e) => warn!("memory injection failed: {}", e),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1276,7 +1282,7 @@ impl RequestContext {
|
|||||||
|
|
||||||
pub fn generate_prompt_context(&self, app: &AppConfig) -> HashMap<&str, String> {
|
pub fn generate_prompt_context(&self, app: &AppConfig) -> HashMap<&str, String> {
|
||||||
let mut output = HashMap::new();
|
let mut output = HashMap::new();
|
||||||
let role = self.extract_role(app).unwrap_or_else(|err| {
|
let role = self.extract_role_impl(app, false).unwrap_or_else(|err| {
|
||||||
warn!("failed to compute effective role for prompt rendering: {err}");
|
warn!("failed to compute effective role for prompt rendering: {err}");
|
||||||
Role::default()
|
Role::default()
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user