feat(agent): 新增当智能体配置无效的回退方案
This commit is contained in:
parent
b1700f2424
commit
6284dfc3b5
@ -443,8 +443,10 @@ async def check_and_handle_interrupts(
|
|||||||
async def _ensure_thread_bound_agent_config(
|
async def _ensure_thread_bound_agent_config(
|
||||||
*,
|
*,
|
||||||
conv_repo: ConversationRepository,
|
conv_repo: ConversationRepository,
|
||||||
|
agent_config_repo: AgentConfigRepository,
|
||||||
thread_id: str,
|
thread_id: str,
|
||||||
user_id: str,
|
user_id: str,
|
||||||
|
department_id: int,
|
||||||
agent_id: str,
|
agent_id: str,
|
||||||
agent_config_id: int,
|
agent_config_id: int,
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -458,7 +460,22 @@ async def _ensure_thread_bound_agent_config(
|
|||||||
|
|
||||||
current_agent_config_id = (conversation.extra_metadata or {}).get("agent_config_id")
|
current_agent_config_id = (conversation.extra_metadata or {}).get("agent_config_id")
|
||||||
if current_agent_config_id != int(agent_config_id):
|
if current_agent_config_id != int(agent_config_id):
|
||||||
await conv_repo.bind_agent_config(thread_id, agent_config_id)
|
# 检查目标配置是否存在于配置表中
|
||||||
|
config_item = await agent_config_repo.get_by_id(int(agent_config_id))
|
||||||
|
if config_item is None:
|
||||||
|
# 配置已损坏或已移除,切换到默认配置
|
||||||
|
logger.warning(
|
||||||
|
f"Config {agent_config_id} not found for thread {thread_id}, "
|
||||||
|
f"switching to default config for agent {agent_id}"
|
||||||
|
)
|
||||||
|
default_config = await agent_config_repo.get_or_create_default(
|
||||||
|
department_id=department_id,
|
||||||
|
agent_id=agent_id,
|
||||||
|
created_by=user_id,
|
||||||
|
)
|
||||||
|
await conv_repo.bind_agent_config(thread_id, default_config.id)
|
||||||
|
else:
|
||||||
|
await conv_repo.bind_agent_config(thread_id, agent_config_id)
|
||||||
|
|
||||||
|
|
||||||
async def agent_chat(
|
async def agent_chat(
|
||||||
@ -562,10 +579,13 @@ async def agent_chat(
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
conv_repo = ConversationRepository(db)
|
conv_repo = ConversationRepository(db)
|
||||||
|
agent_config_repo = AgentConfigRepository(db)
|
||||||
await _ensure_thread_bound_agent_config(
|
await _ensure_thread_bound_agent_config(
|
||||||
conv_repo=conv_repo,
|
conv_repo=conv_repo,
|
||||||
|
agent_config_repo=agent_config_repo,
|
||||||
thread_id=thread_id,
|
thread_id=thread_id,
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
|
department_id=current_user.department_id,
|
||||||
agent_id=agent_id,
|
agent_id=agent_id,
|
||||||
agent_config_id=agent_config_id,
|
agent_config_id=agent_config_id,
|
||||||
)
|
)
|
||||||
@ -765,10 +785,13 @@ async def stream_agent_chat(
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
conv_repo = ConversationRepository(db)
|
conv_repo = ConversationRepository(db)
|
||||||
|
agent_config_repo = AgentConfigRepository(db)
|
||||||
await _ensure_thread_bound_agent_config(
|
await _ensure_thread_bound_agent_config(
|
||||||
conv_repo=conv_repo,
|
conv_repo=conv_repo,
|
||||||
|
agent_config_repo=agent_config_repo,
|
||||||
thread_id=thread_id,
|
thread_id=thread_id,
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
|
department_id=current_user.department_id,
|
||||||
agent_id=agent_id,
|
agent_id=agent_id,
|
||||||
agent_config_id=agent_config_id,
|
agent_config_id=agent_config_id,
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user