feat(ui): AI Settings Overhaul - added dual sliders for model params including top_p

This commit is contained in:
2026-03-11 20:22:06 -04:00
parent 55475b80e7
commit 09902701b4
3 changed files with 55 additions and 8 deletions

View File

@@ -61,8 +61,8 @@ class GenerateRequest(BaseModel):
prompt: str
auto_add_history: bool = True
temperature: float | None = None
top_p: float | None = None
max_tokens: int | None = None
class ConfirmRequest(BaseModel):
approved: bool
script: Optional[str] = None
@@ -199,6 +199,7 @@ class AppController:
self._current_provider: str = "gemini"
self._current_model: str = "gemini-2.5-flash-lite"
self.temperature: float = 0.0
self.top_p: float = 1.0
self.max_tokens: int = 8192
self.history_trunc_limit: int = 8000
# UI-related state moved to controller
@@ -484,6 +485,7 @@ class AppController:
self._predefined_callbacks: dict[str, Callable[..., Any]] = {
'_test_callback_func_write_to_file': self._test_callback_func_write_to_file,
'_set_env_var': lambda k, v: os.environ.update({k: v}),
'_set_attr': lambda k, v: setattr(self, k, v),
'_apply_preset': self._apply_preset,
'_cb_save_preset': self._cb_save_preset,
'_cb_delete_preset': self._cb_delete_preset,
@@ -835,6 +837,7 @@ class AppController:
self._current_provider = ai_cfg.get("provider", "gemini")
self._current_model = ai_cfg.get("model", "gemini-2.5-flash-lite")
self.temperature = ai_cfg.get("temperature", 0.0)
self.top_p = ai_cfg.get("top_p", 1.0)
self.max_tokens = ai_cfg.get("max_tokens", 8192)
self.history_trunc_limit = ai_cfg.get("history_trunc_limit", 8000)
projects_cfg = self.config.get("projects", {})
@@ -1246,7 +1249,7 @@ class AppController:
self.ai_response = ""
csp = filter(bool, [self.ui_global_system_prompt.strip(), self.ui_project_system_prompt.strip()])
ai_client.set_custom_system_prompt("\n\n".join(csp))
ai_client.set_model_params(self.temperature, self.max_tokens, self.history_trunc_limit)
ai_client.set_model_params(self.temperature, self.max_tokens, self.history_trunc_limit, self.top_p)
ai_client.set_agent_tools(self.ui_agent_tools)
# Force update adapter path right before send to bypass potential duplication issues
self._update_gcli_adapter(self.ui_gemini_cli_path)
@@ -1633,8 +1636,9 @@ class AppController:
csp = filter(bool, [self.ui_global_system_prompt.strip(), self.ui_project_system_prompt.strip()])
ai_client.set_custom_system_prompt("\n\n".join(csp))
temp = req.temperature if req.temperature is not None else self.temperature
top_p = req.top_p if req.top_p is not None else self.top_p
tokens = req.max_tokens if req.max_tokens is not None else self.max_tokens
ai_client.set_model_params(temp, tokens, self.history_trunc_limit)
ai_client.set_model_params(temp, tokens, self.history_trunc_limit, top_p)
ai_client.set_agent_tools(self.ui_agent_tools)
if req.auto_add_history:
with self._pending_history_adds_lock:
@@ -2265,6 +2269,7 @@ class AppController:
"provider": self.current_provider,
"model": self.current_model,
"temperature": self.temperature,
"top_p": self.top_p,
"max_tokens": self.max_tokens,
"history_trunc_limit": self.history_trunc_limit,
"active_preset": self.ui_global_preset_name,