Редактировать coordinator.py
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
# rag/agents/coordinator.py
|
|
||||||
"""
|
"""
|
||||||
Координатор агентов: управляет специализированными агентами и маршрутизирует запросы.
|
Координатор агентов: управляет специализированными агентами и маршрутизирует запросы.
|
||||||
"""
|
"""
|
||||||
@@ -40,9 +39,7 @@ class AgentCoordinator:
|
|||||||
Основной метод: выбирает агента и передаёт ему запрос.
|
Основной метод: выбирает агента и передаёт ему запрос.
|
||||||
Если агент возвращает действие, выполняет его (или передаёт другому агенту).
|
Если агент возвращает действие, выполняет его (или передаёт другому агенту).
|
||||||
"""
|
"""
|
||||||
# Простая маршрутизация: определяем ключевые слова
|
|
||||||
query_lower = query.lower()
|
query_lower = query.lower()
|
||||||
# Можно использовать классификатор намерений или просто по ключевым словам
|
|
||||||
if any(kw in query_lower for kw in ["методолог", "стандарт", "гост", "методика", "регламент"]):
|
if any(kw in query_lower for kw in ["методолог", "стандарт", "гост", "методика", "регламент"]):
|
||||||
agent_name = "methodologist"
|
agent_name = "methodologist"
|
||||||
elif any(kw in query_lower for kw in ["коробочное", "типовое", "решение", "шаблон", "создай документ"]):
|
elif any(kw in query_lower for kw in ["коробочное", "типовое", "решение", "шаблон", "создай документ"]):
|
||||||
@@ -50,8 +47,7 @@ class AgentCoordinator:
|
|||||||
elif any(kw in query_lower for kw in ["командировка", "бронирование", "билет", "отель", "календарь"]):
|
elif any(kw in query_lower for kw in ["командировка", "бронирование", "билет", "отель", "календарь"]):
|
||||||
agent_name = "personal_assistant"
|
agent_name = "personal_assistant"
|
||||||
else:
|
else:
|
||||||
# Если не определили, можно использовать первый зарегистрированный или общий
|
agent_name = "methodologist"
|
||||||
agent_name = "methodologist" # по умолчанию
|
|
||||||
|
|
||||||
agent = self.agents.get(agent_name)
|
agent = self.agents.get(agent_name)
|
||||||
if not agent:
|
if not agent:
|
||||||
@@ -61,15 +57,11 @@ class AgentCoordinator:
|
|||||||
else:
|
else:
|
||||||
return "Нет доступных агентов для обработки запроса."
|
return "Нет доступных агентов для обработки запроса."
|
||||||
|
|
||||||
# Обрабатываем запрос агентом
|
|
||||||
result = await agent.process(query, context, history, tools)
|
result = await agent.process(query, context, history, tools)
|
||||||
|
|
||||||
if result.get("type") == "answer":
|
if result.get("type") == "answer":
|
||||||
return result.get("content", "")
|
return result.get("content", "")
|
||||||
elif result.get("type") == "action":
|
elif result.get("type") == "action":
|
||||||
# Если агент вернул действие (например, вызов инструмента), можно выполнить его
|
|
||||||
# и передать результат другому агенту или тому же самому.
|
|
||||||
# Для простоты мы просто вернём сообщение о необходимости действия.
|
|
||||||
action = result.get("content", {})
|
action = result.get("content", {})
|
||||||
return f"Агент запросил действие: {action}"
|
return f"Агент запросил действие: {action}"
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user