
    Ti                         d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ ddlmZmZmZ d d	lmZ  G d
 d      Zy)    )ListDictAnyOptional)create_react_agent)CompiledGraph)BaseTool)ToolInfoJson)ImageVideoCreatorAgentConfig   )PlannerAgentConfigcreate_handoff_toolBaseAgentConfig)tool_servicec                       e Zd ZdZe	 ddedee   dedee	   fd       Z
ededede	fd       Zed	eeeef      d
ee   dee   fd       Zy)AgentManageru   智能体管理器 - 负责创建和管理所有智能体

    此类负责协调智能体配置的获取和实际 LangGraph 智能体的创建。
    model	tool_listsystem_promptreturnc                 h   |D cg c]  }|j                  d      dk(  s| }}|D cg c]  }|j                  d      dk(  s| }}t        d|        t        d|        t               }t        j	                  | |      }t        |      }t        j	                  | |      }	||	gS c c}w c c}w )u   创建所有智能体

        Args:
            model: 语言模型实例
            registered_tools: 已注册的工具名称列表
            system_prompt: 系统提示词

        Returns:
            List[Any]: 创建好的智能体列表
        typeimagevideou   📸 图像工具: u   🎬 视频工具: )getprintr   r   _create_langgraph_agentr   )
r   r   r   toolimage_toolsvideo_toolsplanner_configplanner_agentimage_video_creator_configimage_video_creator_agents
             b/home/jay/workspace/tools/ai-image-gen/jaaz-app/server/services/langgraph_service/agent_manager.pycreate_agentszAgentManager.create_agents   s    " *3Rdhhv6F'6QRR(1QTXXf5E5PtQQ#K=12#K=12+-$<<># &B)%L"$0$H$H-%/! 8995 SQs   B*B*B/B/configc                 B   g }|j                   D ])  }t        |d   |d         }|s|j                  |       + g }|j                  D ].  }t	        j
                  |d         }|s|j                  |       0 t        |j                  | g |||j                        S )u   根据配置创建单个 LangGraph 智能体

        Args:
            model: 语言模型实例
            config: 智能体配置字典

        Returns:
            Any: 创建好的 LangGraph 智能体实例
        
agent_namedescription)r)   r*   id)namer   toolsprompt)	handoffsr   appendr-   r   get_toolr   r,   r   )r   r'   handoff_toolshandoffhandoff_toolbusiness_tools	tool_jsonr   s           r%   r   z$AgentManager._create_langgraph_agent>   s     )+ 	3G."<0#M2L $$\2	3 *, 	,I((49D%%d+	, "3N3]3''	
 	
    messagesagent_namesc                     t        |       D ]3  }|j                  d      dk(  s|j                  d      }|s,||v s1|c S  y)u   获取最后活跃的智能体

        Args:
            messages: 消息历史
            agent_names: 智能体名称列表

        Returns:
            Optional[str]: 最后活跃的智能体名称，如果没有则返回 None
        role	assistantr,   N)reversedr   )r8   r9   messagemessage_names       r%   get_last_active_agentz"AgentManager.get_last_active_agente   sL      ) 	(G{{6"k1&{{62LK$?''		(
 r7   N) )__name__
__module____qualname____doc__staticmethodr   r   r
   strr   r&   r   r   r   r   r@    r7   r%   r   r      s    
   *:*:%*: *: 
m		*: *:X $
$
$
 
$
 $
L tCH~&#Y 
# r7   r   N)typingr   r   r   r   langgraph.prebuiltr   langgraph.graph.graphr   langchain_core.toolsr	   models.tool_modelr
   <services.langgraph_service.configs.image_vide_creator_configr   configsr   r   r   services.tool_servicer   r   rH   r7   r%   <module>rQ      s/    , , 1 / ) * e M M .m mr7   