Skip to content
37 changes: 23 additions & 14 deletions backend/agents/create_agent_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ async def create_agent_config(
last_user_query: str = None,
allow_memory_search: bool = True,
version_no: int = 0,
override_model_id: int | None = None,
):
agent_info = search_agent_info_by_agent_id(
agent_id=agent_id, tenant_id=tenant_id, version_no=version_no)
Expand All @@ -206,6 +207,7 @@ async def create_agent_config(
last_user_query=last_user_query,
allow_memory_search=allow_memory_search,
version_no=sub_agent_version_no,
override_model_id=None,
)
managed_agents.append(sub_agent_config)

Expand Down Expand Up @@ -297,8 +299,9 @@ async def create_agent_config(
}
system_prompt = Template(prompt_template["system_prompt"], undefined=StrictUndefined).render(render_kwargs)

if agent_info.get("model_id") is not None:
model_info = get_model_by_model_id(agent_info.get("model_id"))
model_id_to_use = override_model_id if override_model_id else agent_info.get("model_id")
if model_id_to_use is not None:
model_info = get_model_by_model_id(model_id_to_use, tenant_id=tenant_id)
model_name = model_info["display_name"] if model_info is not None else "main_model"
else:
model_name = "main_model"
Expand Down Expand Up @@ -502,31 +505,37 @@ async def create_agent_run_info(
language: str = "zh",
allow_memory_search: bool = True,
is_debug: bool = False,
override_version_no: int | None = None,
override_model_id: int | None = None,
):
# Determine which version_no to use based on is_debug flag
# If is_debug=false, use the current published version (current_version_no)
# If is_debug=true, use version 0 (draft/editing state)
if is_debug:
if override_version_no is not None:
version_no = override_version_no
elif is_debug:
version_no = 0
else:
# Get current published version number
version_no = query_current_version_no(agent_id=agent_id, tenant_id=tenant_id)
# Fallback to 0 if no published version exists
if version_no is None:
version_no = 0
logger.info(f"Agent {agent_id} has no published version, using draft version 0")

final_query = await join_minio_file_description_to_query(minio_files=minio_files, query=query)
model_list = await create_model_config_list(tenant_id)
agent_config = await create_agent_config(
agent_id=agent_id,
tenant_id=tenant_id,
user_id=user_id,
language=language,
last_user_query=final_query,
allow_memory_search=allow_memory_search,
version_no=version_no,
)
create_config_kwargs = {
"agent_id": agent_id,
"tenant_id": tenant_id,
"user_id": user_id,
"language": language,
"last_user_query": final_query,
"allow_memory_search": allow_memory_search,
"version_no": version_no,
}
if override_model_id is not None:
create_config_kwargs["override_model_id"] = override_model_id

agent_config = await create_agent_config(**create_config_kwargs)

remote_mcp_list = await get_remote_mcp_server_list(tenant_id=tenant_id, is_need_auth=True)
default_mcp_url = urljoin(LOCAL_MCP_SERVER, "sse")
Expand Down
6 changes: 1 addition & 5 deletions backend/apps/agent_app.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,7 @@ async def agent_stop_api(conversation_id: int, authorization: Optional[str] = He
stop agent run and preprocess tasks for specified conversation_id
"""
user_id, _ = get_current_user_id(authorization)
if stop_agent_tasks(conversation_id, user_id).get("status") == "success":
return {"status": "success", "message": "agent run and preprocess tasks stopped successfully"}
else:
raise HTTPException(status_code=HTTPStatus.BAD_REQUEST,
detail=f"no running agent or preprocess tasks found for conversation_id {conversation_id}")
return stop_agent_tasks(conversation_id, user_id)


@agent_config_router.post("/search_info")
Expand Down
2 changes: 2 additions & 0 deletions backend/consts/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ class AgentRequest(BaseModel):
# Complete list of attachment information
minio_files: Optional[List[Dict[str, Any]]] = None
agent_id: Optional[int] = None
model_id: Optional[int] = None
version_no: Optional[int] = None
is_debug: Optional[bool] = False


Expand Down
6 changes: 4 additions & 2 deletions backend/services/agent_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -1632,6 +1632,8 @@ async def prepare_agent_run(
language=language,
allow_memory_search=allow_memory_search,
is_debug=agent_request.is_debug,
override_version_no=agent_request.version_no,
override_model_id=agent_request.model_id,
Copy link
Copy Markdown
Contributor

@WMC001 WMC001 Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

version_no_override和override_model_id的命名风格不统一,建议使用后者

)
agent_run_manager.register_agent_run(
agent_request.conversation_id, agent_run_info, user_id)
Expand Down Expand Up @@ -1985,8 +1987,8 @@ def stop_agent_tasks(conversation_id: int, user_id: str):
return {"status": "success", "message": message}
else:
message = f"no running agent or preprocess tasks found for user_id {user_id}, conversation_id {conversation_id}"
logging.error(message)
return {"status": "error", "message": message}
logging.info(message)
return {"status": "success", "message": message, "already_stopped": True}


async def get_agent_id_by_name(agent_name: str, tenant_id: str) -> int:
Expand Down
1 change: 1 addition & 0 deletions frontend/app/[locale]/agents/AgentVersionCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,7 @@ export function VersionCardItem({
currentVersionNo={currentVersionNo}
compareData={compareData}
onCancel={() => setCompareModalOpen(false)}
agentId={agentId}
showRollback
rollbackLoading={rollbackLoading}
onRollbackConfirm={handleRollbackConfirm}
Expand Down
1 change: 1 addition & 0 deletions frontend/app/[locale]/agents/AgentVersionManage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ export default function AgentVersionManage() {
currentVersionNo={agentInfo?.current_version_no}
compareData={compareData}
onCancel={() => setCompareModalOpen(false)}
agentId={currentAgentId ?? undefined}
selectedVersionNoA={selectedVersionA}
selectedVersionNoB={selectedVersionB}
onChangeVersionA={handleChangeVersionA}
Expand Down
Loading
Loading