
    s0j                        d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZ ddlmZ  ed          Z G d	 d
e          ZdS )ui  Layer 3:LangGraphMind——用 LangGraph 认知图驱动的 agent 大脑。

继承 CognitiveMind,只覆写"推断"这一步(_run_action/_run_dialogue):
- prompt 组装、目标自举、反思、关系/信任、言行一致等全部沿用父类(同一份经久打磨的提示词);
- 决策推断改走 LangGraph 图 + ChatLiteLLM 结构化输出(原生函数调用约束,免脆弱正则);
- 结构化失败 → 回落父类的"litellm 直答 + 文本解析",世界绝不因模型抽风停摆。
因为是 CognitiveMind 的子类,引擎里所有 `isinstance(mind, CognitiveMind)` 分支照常命中,引擎零改动。
    )annotationsN)build_chat_model)
get_logger)_LATENCYSLOW_CALL_SCognitiveMindDecision
ThinkInput)build_cognition_graphzruntime.langgraph_mindc                  l     e Zd ZdZd  fdZdddd!dZd" fdZd# fdZd$ fdZd% fdZ	d&dZ
 xZS )'LangGraphMindu[   与引擎契约不变(decide(snap)→Decision),内部用 LangGraph 图做结构化决策。returnNonec                z     t                      j        |i | i | _        t          | j                  | _        d S )N)super__init___model_cacher   _make_model_graph)selfargskwargs	__class__s      9/root/genesis-world/src/genesis/runtime/langgraph_mind.pyr   zLangGraphMind.__init__   s=    $)&)))"$+D,<==    i  F)
max_tokensthinkingr   intr   boolc               l    ||f}|| j         vrt          d||d          | j         |<   | j         |         S )Ng333333?g      9@)temperaturer   r   request_timeout)r   r   )r   r   r   keys       r   r   zLangGraphMind._make_model    sQ    8$d'''%5 Z(\`&b &b &bDc" %%r   systemstruserdeepsnapr
   r	   c           
         |                      d|||ddd| j        i          }|%t                                          |||||          S |S )NactionL2decisionintenttagr#   extra)_invoke_graphr-   r   _run_action)r   r$   r&   r'   r   r(   decr   s          r   r2   zLangGraphMind._run_action(   s`      64S](0$+'> ! @ @;77&&vtT:tLLL
r   c                    |                      d||ddd|j        | j        d          }|#t                                          |||          S |S )Ndialogue   L1r,   )dialogue_withr-   r.   )r1   r8   r-   r   _run_dialogue)r   r$   r&   r(   r3   r   s        r   r9   zLangGraphMind._run_dialogue0   sc      VT3Dj9=9KW[Wb'c'c ! e e;77((t<<<
r   	list[str]c           	         |                      d||dddi           }|"t                                          ||          S d |j        D             d d         S )N	bootstrap@  r+   resultr.   c                ,    g | ]}t          |          S  r%   ).0gs     r   
<listcomp>z0LangGraphMind._run_bootstrap.<locals>.<listcomp>;   s    ***1A***r      )r1   r   _run_bootstrapgoals)r   r$   r&   outr   s       r   rF   zLangGraphMind._run_bootstrap7   sd      fdCTx_a bb;77))&$777**	***2A2..r   tuple[list[str], list[dict]]c           	         |                      d||dddi           }|"t                                          ||          S d |j        D             d d         }d |j        D             }||fS )Nreflectr=   r>   r.   c                ,    g | ]}t          |          S r@   rA   )rB   is     r   rD   z.LangGraphMind._run_reflect.<locals>.<listcomp>A   s    111qCFF111r      c                D    g | ]}|j         	|                                S r@   )name
model_dump)rB   rs     r   rD   z.LangGraphMind._run_reflect.<locals>.<listcomp>B   s'    EEEafEQ\\^^EEEr   )r1   r   _run_reflectinsights	relations)r   r$   r&   rH   rT   rU   r   s         r   rS   zLangGraphMind._run_reflect=   s      FD#9RZbd ee;77''55511CL111"1"5EES]EEE	""r   moder/   r#   r0   dictc          
        ||||dd|}t          j                    }	d}
	 | j                            |                              |          }
nM# t
          $ r@}t                              d| j        t          |          dd                    Y d}~nd}~ww xY wt          j                    |	z
  }t          |
t                    rt          |
j                  nd}t          j        || j        |dt          |          t          |          z   |f           |t           k    rAt                              d|| j        |t          |          t          |          z   |           |
S )u\   调用认知图取 state[key];复用 cognition 的耗时埋点(/api/latency 继续可用)。F)rV   r$   r&   r   r'   Nu   [%s] LangGraph 调用异常:%s   r   u$   [慢LG %.1fs] %s tag=%s in=%d out=%d)time	monotonicr   invokeget	Exceptionloggerwarningaidr%   
isinstancer	   lenrawr   appendr   )r   rV   r$   r&   r   r/   r#   r0   statet0rH   edt	out_charss                 r   r1   zLangGraphMind._invoke_graphE   sg    )5C C<AC^	U+$$U++//44CC 	U 	U 	UNN;TXs1vvdsd|TTTTTTTT	U^"$.sH$=$=DCLLL1	TXsE3v;;T3JIVWWWNNA2txQTv;;T2I? ? ?
s   -A 
B6BB)r   r   )r   r   r   r   )r$   r%   r&   r%   r'   r   r   r   r(   r
   r   r	   )r$   r%   r&   r%   r(   r
   r   r	   )r$   r%   r&   r%   r   r:   )r$   r%   r&   r%   r   rI   )rV   r%   r$   r%   r&   r%   r   r   r/   r%   r#   r%   r0   rW   )__name__
__module____qualname____doc__r   r   r2   r9   rF   rS   r1   __classcell__)r   s   @r   r   r      s        ee> > > > > >
 03U & & & & & &          / / / / / /# # # # # #       r   r   )rn   
__future__r   rZ   genesis.llm.lc_adapterr   genesis.obs.logging_setupr   genesis.runtime.cognitionr   r   r   r	   r
   genesis.runtime.graph_brainr   r_   r   r@   r   r   <module>ru      s     # " " " " "  3 3 3 3 3 3 0 0 0 0 0 0              > = = = = =	,	-	-> > > > >M > > > > >r   