Skip to content

Commit 2963b39

Browse files
committed
Site updated: 2025-08-07 09:13:10
1 parent 8795d52 commit 2963b39

5 files changed

Lines changed: 336 additions & 204 deletions

File tree

ComputerScience/知识/LangGraph/index.html

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<meta property="og:description" content="source venv&#x2F;bin&#x2F;activatepip install langgraph python-dotenv openai LangGraph Demo 1.0 State State就是AI流转的全局变量 class InputState(TypedDict): question: str llm_answer: Optional[str] # None or strc">
2929
<meta property="og:locale" content="zh_CN">
3030
<meta property="article:published_time" content="2025-08-05T16:00:00.000Z">
31-
<meta property="article:modified_time" content="2025-08-06T01:12:54.014Z">
31+
<meta property="article:modified_time" content="2025-08-07T00:55:58.371Z">
3232
<meta property="article:author" content="SIMULEITE">
3333
<meta property="article:tag" content="知识">
3434
<meta name="twitter:card" content="summary">
@@ -141,7 +141,7 @@
141141
<div class="sidebar-panel-container">
142142
<!--noindex-->
143143
<div class="post-toc-wrap sidebar-panel">
144-
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#langgraph-demo"><span class="nav-text"> LangGraph Demo</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#10-state"><span class="nav-text"> 1.0 State</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#20-node"><span class="nav-text"> 2.0 Node</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#30-graph-compile"><span class="nav-text"> 3.0 Graph Compile</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#draw-graph"><span class="nav-text"> Draw Graph</span></a></li></ol></div>
144+
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#langgraph-demo"><span class="nav-text"> LangGraph Demo</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#10-state"><span class="nav-text"> 1.0 State</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#20-node"><span class="nav-text"> 2.0 Node</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#30-graph-compile"><span class="nav-text"> 3.0 Graph Compile</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#draw-graph"><span class="nav-text"> Draw Graph</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#messages-history"><span class="nav-text"> Messages History</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#messagegraph"><span class="nav-text"> MessageGraph</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#structured-output"><span class="nav-text"> Structured Output</span></a></li></ol></div>
145145
</div>
146146
<!--/noindex-->
147147

@@ -215,9 +215,15 @@ <h1 class="post-title" itemprop="name headline">
215215
<i class="far fa-calendar"></i>
216216
</span>
217217
<span class="post-meta-item-text">发表于</span>
218-
219218

220-
<time title="创建时间:2025-08-06 00:00:00 / 修改时间:09:12:54" itemprop="dateCreated datePublished" datetime="2025-08-06T00:00:00+08:00">2025-08-06</time>
219+
<time title="创建时间:2025-08-06 00:00:00" itemprop="dateCreated datePublished" datetime="2025-08-06T00:00:00+08:00">2025-08-06</time>
220+
</span>
221+
<span class="post-meta-item">
222+
<span class="post-meta-item-icon">
223+
<i class="far fa-calendar-check"></i>
224+
</span>
225+
<span class="post-meta-item-text">更新于</span>
226+
<time title="修改时间:2025-08-07 08:55:58" itemprop="dateModified" datetime="2025-08-07T08:55:58+08:00">2025-08-07</time>
221227
</span>
222228

223229

@@ -238,8 +244,16 @@ <h2 id="20-node"><a class="markdownIt-Anchor" href="#20-node"></a> 2.0 Node</h2>
238244
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">llm_node</span>(<span class="params">state: InputeState</span>):</span><br><span class="line"> msg = [</span><br><span class="line"> (<span class="string">&quot;system&quot;</span>, readMd(<span class="string">&quot;system.md&quot;</span>)),</span><br><span class="line"> (<span class="string">&quot;human&quot;</span>, state[<span class="string">&quot;question&quot;</span>])</span><br><span class="line"> ]</span><br><span class="line"></span><br><span class="line"> llm = ChatOpenAI(model=<span class="string">&quot;gpt-4o&quot;</span>)</span><br><span class="line"></span><br><span class="line"> resp = llm.invoke(msg)</span><br><span class="line"> <span class="keyword">return</span> &#123;<span class="string">&quot;answer&quot;</span>: resp.content&#125;</span><br></pre></td></tr></table></figure>
239245
<h2 id="30-graph-compile"><a class="markdownIt-Anchor" href="#30-graph-compile"></a> 3.0 Graph Compile</h2>
240246
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line">builder = StateGraph(OverallState, <span class="built_in">input</span>=InputState, output=OutputState)</span><br><span class="line"></span><br><span class="line">builder.add_node(<span class="string">&quot;llm&quot;</span>, llm_node)</span><br><span class="line">builder.add_edge(START, <span class="string">&quot;llm&quot;</span>)</span><br><span class="line">builder.add_edge(<span class="string">&quot;llm&quot;</span>, END)</span><br><span class="line"></span><br><span class="line">graph = builder.<span class="built_in">compile</span>()</span><br></pre></td></tr></table></figure>
241-
<h1 id="draw-graph"><a class="markdownIt-Anchor" href="#draw-graph"></a> Draw Graph</h1>
247+
<h2 id="draw-graph"><a class="markdownIt-Anchor" href="#draw-graph"></a> Draw Graph</h2>
242248
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line">display(Image(graph.get_graph(xray=<span class="literal">True</span>).draw_mermaid_png()))</span><br></pre></td></tr></table></figure>
249+
<h2 id="messages-history"><a class="markdownIt-Anchor" href="#messages-history"></a> Messages History</h2>
250+
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">State</span>(<span class="title class_ inherited__">TypedDict</span>):</span><br><span class="line"> msgs: Annotated[<span class="built_in">list</span>, operator.add]</span><br></pre></td></tr></table></figure>
251+
<h1 id="messagegraph"><a class="markdownIt-Anchor" href="#messagegraph"></a> MessageGraph</h1>
252+
<p>使用Reducer追加消息,但是可以对已有消息做更新、合并、删除操作(Context Engine)</p>
253+
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">MessageGraph</span>(<span class="title class_ inherited__">StateGraph</span>):</span><br><span class="line"> <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self</span>) -&gt; <span class="literal">None</span>:</span><br><span class="line"> <span class="built_in">super</span>().__init__(Annotated[<span class="built_in">list</span>[AnyMessage], add_message])</span><br></pre></td></tr></table></figure>
254+
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line">builder = MessageGraph()</span><br><span class="line"><span class="comment"># ...</span></span><br><span class="line">graph = builder.<span class="built_in">compile</span>()</span><br><span class="line"></span><br><span class="line">msgs2 = [HumanMessage(content=<span class="string">&quot;xxx&quot;</span>, <span class="built_in">id</span>=msg1.<span class="built_in">id</span>)]</span><br><span class="line"><span class="comment"># ID相同,覆盖消息</span></span><br><span class="line">add_messages(msgs1, msgs2)</span><br></pre></td></tr></table></figure>
255+
<h1 id="structured-output"><a class="markdownIt-Anchor" href="#structured-output"></a> Structured Output</h1>
256+
<figure class="highlight python"><table><tr><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">UserInfo</span>(<span class="title class_ inherited__">BaseModel</span>):</span><br><span class="line"> name: <span class="built_in">str</span> = Field(description=<span class="string">&quot;The name of the user&quot;</span>)</span><br><span class="line"> <span class="comment"># ...</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Runnable对象</span></span><br><span class="line">structured_llm = llm.with_structured_output(UserInfo)</span><br><span class="line"></span><br><span class="line"><span class="comment"># UserInfo对象</span></span><br><span class="line">resp = structured_llm.invoke(msg)</span><br></pre></td></tr></table></figure>
243257
</div>
244258

245259

0 commit comments

Comments
 (0)