Skip to content

Commit 1fa3c55

Browse files
committed
refac
1 parent 705d1ae commit 1fa3c55

7 files changed

Lines changed: 46 additions & 22 deletions

File tree

‎cptr/routers/gateway.py‎

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -505,12 +505,6 @@ async def _collect(queue: asyncio.Queue) -> str:
505505
"tags_generation",
506506
]
507507

508-
_UTILITY_MODEL_CONFIG_KEYS = {
509-
"summary_generation": "chat.context_compaction.model",
510-
"title_generation": "chat.title_generation.model",
511-
}
512-
513-
514508
async def _intercept_task(
515509
request: Request,
516510
body: ChatCompletionRequest,
@@ -700,11 +694,11 @@ async def _resolve_utility_model(request: Request, workspace: str, app_state=Non
700694

701695
candidates: list[str] = []
702696
task_header = request.headers.get(OWUI_TASK_HEADER, "").strip()
703-
preferred_config_key = _UTILITY_MODEL_CONFIG_KEYS.get(task_header)
704-
if preferred_config_key:
705-
preferred_model = await Config.get(preferred_config_key)
706-
if isinstance(preferred_model, str) and preferred_model.strip():
707-
candidates.append(preferred_model.strip())
697+
if task_header:
698+
from cptr.utils.utility_models import configured_utility_model
699+
700+
if preferred_model := await configured_utility_model(task_header):
701+
candidates.append(preferred_model)
708702

709703
gateway_model = await Config.get("gateway.model")
710704
if isinstance(gateway_model, str) and gateway_model.strip():

‎cptr/routers/git.py‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -642,13 +642,14 @@ async def generate_commit_message(request: Request, body: CommitMessageRequest):
642642
if not patch:
643643
raise HTTPException(status_code=400, detail="No staged changes")
644644

645-
from cptr.models import Config
646-
647645
message_model = body.model_id.strip() if isinstance(body.model_id, str) else None
648646
if message_model is None:
649-
configured_model = await Config.get("git.commit_message_generation.model")
650-
message_model = configured_model.strip() if isinstance(configured_model, str) else None
647+
from cptr.utils.utility_models import configured_utility_model
648+
649+
message_model = await configured_utility_model("git_commit_message_generation")
651650
if not message_model:
651+
from cptr.models import Config
652+
652653
default_model = await Config.get("chat.default_model")
653654
message_model = default_model.strip() if isinstance(default_model, str) else None
654655
text = await generate_text(

‎cptr/utils/chat_task.py‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,9 @@ async def review_tool_approval(
763763
args_text = json.dumps(arguments, ensure_ascii=False, default=str)
764764
if len(args_text) > 4000:
765765
args_text = args_text[:3500] + "\n...(truncated)"
766-
configured_model = await Config.get("tool_approval.review.model")
766+
from cptr.utils.utility_models import configured_utility_model
767+
768+
configured_model = await configured_utility_model("tool_approval_review")
767769
logger.info(
768770
"[tool-approval] auto review start tool=%s policy=%s active_model=%s review_model=%s args=%s",
769771
tool_name,
@@ -828,9 +830,11 @@ async def generate_chat_title(
828830
truncated += "..."
829831

830832
try:
833+
from cptr.utils.utility_models import configured_utility_model
834+
831835
parsed = await generate_json(
832836
None,
833-
model_id=await Config.get("chat.title_generation.model"),
837+
model_id=await configured_utility_model("title_generation"),
834838
active_connection=connection,
835839
active_model=model,
836840
messages=[{"role": "user", "content": truncated}],

‎cptr/utils/memory.py‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1652,13 +1652,14 @@ async def run_memory_review(
16521652
) -> None:
16531653
try:
16541654
from cptr.utils.ai import generate_json
1655+
from cptr.utils.utility_models import configured_utility_model
16551656

16561657
memory_state = await read_memory_state(request, user_id, workspace)
16571658
transcript = summarize_recent_conversation(conversation_messages, assistant_reply)
16581659
prompt = build_memory_review_prompt(memory_state, workspace, transcript)
16591660
parsed = await generate_json(
16601661
None,
1661-
model_id=await Config.get("memory.background_review.model"),
1662+
model_id=await configured_utility_model("memory_background_review"),
16621663
active_connection=model_connection,
16631664
active_model=model,
16641665
messages=[{"role": "user", "content": prompt}],

‎cptr/utils/skills.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -799,9 +799,9 @@ async def run_skill_review(
799799
skill_create_requested: bool,
800800
) -> None:
801801
try:
802-
from cptr.models import Config
803802
from cptr.utils.ai import generate_json
804803
from cptr.utils.memory import summarize_recent_conversation
804+
from cptr.utils.utility_models import configured_utility_model
805805

806806
skills = discover_skills(workspace)
807807
transcript = summarize_recent_conversation(conversation_messages, assistant_reply)
@@ -844,7 +844,7 @@ async def run_skill_review(
844844
)
845845
parsed = await generate_json(
846846
None,
847-
model_id=await Config.get("skills.background_review.model"),
847+
model_id=await configured_utility_model("skills_background_review"),
848848
active_connection=model_connection,
849849
active_model=model,
850850
messages=[{"role": "user", "content": prompt}],

‎cptr/utils/summarize.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ async def summarize_messages(
6363
text = text[:15_000] + "\n...\n" + text[-10_000:]
6464

6565
try:
66-
from cptr.models import Config
6766
from cptr.utils.ai import generate_text
67+
from cptr.utils.utility_models import configured_utility_model
6868

6969
result = await generate_text(
7070
None,
71-
model_id=await Config.get("chat.context_compaction.model"),
71+
model_id=await configured_utility_model("summary_generation"),
7272
active_connection=connection,
7373
active_model=model,
7474
messages=[{"role": "user", "content": text}],

‎cptr/utils/utility_models.py‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""Computer utility task model configuration."""
2+
3+
from __future__ import annotations
4+
5+
UTILITY_MODEL_CONFIG_KEYS: dict[str, str] = {
6+
"title_generation": "chat.title_generation.model",
7+
"summary_generation": "chat.context_compaction.model",
8+
"tool_approval_review": "tool_approval.review.model",
9+
"memory_background_review": "memory.background_review.model",
10+
"skills_background_review": "skills.background_review.model",
11+
"git_commit_message_generation": "git.commit_message_generation.model",
12+
}
13+
14+
15+
async def configured_utility_model(task: str) -> str | None:
16+
"""Return the configured model id for a Computer utility task, if set."""
17+
key = UTILITY_MODEL_CONFIG_KEYS.get(task)
18+
if not key:
19+
return None
20+
21+
from cptr.models import Config
22+
23+
value = await Config.get(key)
24+
return value.strip() if isinstance(value, str) and value.strip() else None

0 commit comments

Comments
 (0)