亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

LangGraph多智能體實(shí)戰(zhàn):從狀態(tài)機(jī)到條件路由與子圖編排

LangGraph多智能體實(shí)戰(zhàn):從狀態(tài)機(jī)到條件路由與子圖編排 如果你還在猶豫“多智能體到底是不是偽需求”或者收藏了一堆 LangGraph 資料卻始終沒有跑通一個(gè)完整的示例那么這篇文章就是為你準(zhǔn)備的。先說一個(gè)判斷**LangGraph 不是 LangChain 的簡(jiǎn)單升級(jí)而是把大模型應(yīng)用從“單次調(diào)用”推進(jìn)到“可編排狀態(tài)機(jī)”的關(guān)鍵基礎(chǔ)設(shè)施。**在這個(gè)體系里多智能體不是噱頭而是解決復(fù)雜任務(wù)拆解、工具調(diào)用編排、人工審核介入、長(zhǎng)流程狀態(tài)恢復(fù)等真實(shí)問題的一套工程化方案。這篇文章會(huì)從多智能體架構(gòu)講起逐步拆解 LangGraph 的核心組件最后用可復(fù)制的代碼帶你從零構(gòu)建一個(gè)帶條件路由、子圖和并行分支的多智能體應(yīng)用。本文不會(huì)教你“背概念”而是希望你讀完能回答三個(gè)問題LangGraph 為什么值得學(xué)它的核心組件是怎么配合工作的如果我只想做一個(gè)最小可用項(xiàng)目代碼該怎么寫如果這三個(gè)問題正是你關(guān)心的建議先收藏再跟著實(shí)操。1. 為什么你需要關(guān)注 LangGraph 多智能體1.1 單個(gè)大模型調(diào)用解決不了的問題很多開發(fā)者第一次接觸大模型應(yīng)用開發(fā)時(shí)最先寫的是這樣的代碼from openai import OpenAI client OpenAI() response client.chat.completions.create( modelgpt-4o, messages[{role: user, content: 寫一份周報(bào)}], ) print(response.choices[0].message.content)這段代碼本身沒有問題但它只能處理“單次輸入、單次輸出”的簡(jiǎn)單請(qǐng)求。一旦業(yè)務(wù)場(chǎng)景變成下面這樣單次調(diào)用就撐不住了用戶輸入一個(gè)問題需要先判斷該調(diào)用哪個(gè)領(lǐng)域?qū)<夷P?。需要從多個(gè)數(shù)據(jù)源檢索資料再匯總成一份報(bào)告。生成結(jié)果之前需要人工審核確認(rèn)。長(zhǎng)任務(wù)執(zhí)行到一半失敗重新恢復(fù)后要繼續(xù)之前的進(jìn)度。這些問題本質(zhì)上不是“讓模型更聰明”能解決的而是需要一套工作流編排機(jī)制讓多個(gè)模型調(diào)用、工具調(diào)用和人工節(jié)點(diǎn)按順序或條件組合起來。LangGraph 就是為這類場(chǎng)景設(shè)計(jì)的。1.2 多智能體不是“多個(gè)模型聊天”一個(gè)常見的誤區(qū)是多智能體系統(tǒng)就是讓幾個(gè) AI 角色互相對(duì)話誰都能當(dāng)“智能體”。實(shí)際上工程意義上的多智能體系統(tǒng)包含四個(gè)核心要素要素說明多個(gè)能力邊界明確的智能體每個(gè)智能體負(fù)責(zé)一類任務(wù)而不是全部任務(wù)明確的調(diào)度/路由機(jī)制決定某個(gè)請(qǐng)求應(yīng)該進(jìn)入哪個(gè)智能體共享或可傳遞的狀態(tài)智能體之間需要傳遞中間結(jié)果可恢復(fù)的執(zhí)行流程支持暫停、恢復(fù)、回滾和檢查點(diǎn)如果只是讓兩個(gè)模型互相聊“你覺得呢”那只是聊天不是多智能體。真正的多智能體應(yīng)用必須是一個(gè)有狀態(tài)的、可控制的、可觀測(cè)的工作流。1.3 LangGraph 在這個(gè)生態(tài)中的定位LangGraph 是由 LangChain 團(tuán)隊(duì)推出的框架專門用于構(gòu)建有狀態(tài)、可編排的大模型應(yīng)用。它與 LangChain 的核心區(qū)別在于【LangChain】更偏向提供模型調(diào)用、Prompt 模板、工具封裝等基礎(chǔ)能力?!綥angGraph】更側(cè)重定義圖結(jié)構(gòu)節(jié)點(diǎn)Node做什么、邊Edge怎么走、狀態(tài)State怎么流轉(zhuǎn)。說得直白一點(diǎn)LangChain 是積木LangGraph 是圖紙。你要建一座房子積木決定你能用什么材料圖紙決定房子長(zhǎng)什么樣。2. LangGraph 核心概念詳解在進(jìn)入代碼之前必須先把 LangGraph 的五個(gè)核心組件講清楚。這幾個(gè)概念貫穿后續(xù)所有實(shí)戰(zhàn)代碼。2.1 State全局狀態(tài)State 是 LangGraph 的靈魂。它表示工作流在任意時(shí)刻的“快照”所有節(jié)點(diǎn)都從 State 讀取輸入并把輸出寫回 State。from typing_extensions import TypedDict class AgentState(TypedDict): messages: list current_step: str result: str你可以把 State 理解為前端里的全局 Store只是這里的 Store 不止存界面狀態(tài)還存整個(gè)工作流的中間數(shù)據(jù)。2.2 Node節(jié)點(diǎn)Node 是工作流里的一個(gè)執(zhí)行單元可以是大模型調(diào)用、工具函數(shù)、API 請(qǐng)求也可以只是一個(gè)普通 Python 函數(shù)。def call_model(state: AgentState) - AgentState: # 這里是節(jié)點(diǎn)邏輯 return {result: some_result}每個(gè)節(jié)點(diǎn)本質(zhì)上就是“輸入 State輸出 State 增量”的函數(shù)。2.3 Edge邊Edge 定義節(jié)點(diǎn)之間的連接關(guān)系。分為普通邊和條件邊【普通邊】上一個(gè)節(jié)點(diǎn)執(zhí)行完無條件進(jìn)入下一個(gè)節(jié)點(diǎn)。【條件邊】根據(jù)當(dāng)前 State 或節(jié)點(diǎn)返回值決定進(jìn)入哪個(gè)分支。2.4 Conditional Edge條件路由條件路由是 LangGraph 最強(qiáng)大的能力之一。它允許你根據(jù)某個(gè)字段的值動(dòng)態(tài)選擇下一個(gè)節(jié)點(diǎn)。from langgraph.graph import END, START, StateGraph def route_by_intent(state: AgentState) - str: if 天氣 in state[messages][-1]: return weather_agent return general_agent2.5 Checkpoint檢查點(diǎn)Checkpoint 讓工作流具備“記憶”和“恢復(fù)能力”。你可以把每一步狀態(tài)保存到內(nèi)存或數(shù)據(jù)庫即使中間某個(gè)節(jié)點(diǎn)失敗也可以從上一個(gè)檢查點(diǎn)繼續(xù)執(zhí)行。from langgraph.checkpoint.memory import InMemorySaver checkpointer InMemorySaver()3. 環(huán)境準(zhǔn)備與 LangGraph 安裝3.1 版本與環(huán)境要求LangGraph 是一個(gè) Python 框架目前同時(shí)支持 JavaScript/TypeScript 版本。本文以 Python 為例。建議使用 Python 3.10 及以上版本具體小版本以你本機(jī)環(huán)境為準(zhǔn)。3.2 安裝 LangGraph推薦使用 pip 安裝pip install langgraph如果需要調(diào)用 OpenAI 或其他模型還要安裝對(duì)應(yīng) SDKpip install openai如果你使用的是國(guó)產(chǎn)大模型或本地部署模型只要接口兼容 OpenAI 格式也可以直接通過配置 base_url 接入。3.3 確認(rèn)安裝成功python -c import langgraph; print(langgraph.__version__)如果輸出版本號(hào)說明安裝成功。注意LangGraph 版本更新很快API 可能會(huì)有細(xì)微變化。本文的代碼以較新的穩(wěn)定版本為參考如果你使用的版本過舊或過新請(qǐng)以官方文檔為準(zhǔn)。4. 從零構(gòu)建第一個(gè) LangGraph 多智能體應(yīng)用4.1 業(yè)務(wù)場(chǎng)景我們構(gòu)造一個(gè)非常典型的多智能體場(chǎng)景一個(gè)“客服工單分流系統(tǒng)”。用戶提交一句問題系統(tǒng)先做意圖識(shí)別然后根據(jù)意圖分配到不同的智能體如果涉及訂單問題轉(zhuǎn)給訂單處理智能體。如果涉及技術(shù)問題轉(zhuǎn)給技術(shù)支持智能體。如果意圖不明確轉(zhuǎn)給通用助手。這個(gè)場(chǎng)景雖然簡(jiǎn)單但已經(jīng)包含了多智能體的核心要素多個(gè)專用節(jié)點(diǎn)、條件路由、共享狀態(tài)。4.2 定義狀態(tài)與節(jié)點(diǎn)創(chuàng)建一個(gè)文件agent_demo.pyfrom typing_extensions import TypedDict from langgraph.graph import END, START, StateGraph class AgentState(TypedDict): user_input: str intent: str final_answer: str def intent_node(state: AgentState) - AgentState: 模擬意圖識(shí)別實(shí)際項(xiàng)目中可以用大模型調(diào)用代替 text state[user_input] if 訂單 in text or 發(fā)貨 in text: intent order elif 報(bào)錯(cuò) in text or 無法運(yùn)行 in text or bug in text: intent tech else: intent general return {intent: intent} def order_agent(state: AgentState) - AgentState: 訂單處理智能體 return {final_answer: f【訂單客服】收到你的問題{state[user_input]}我們會(huì)盡快核查訂單狀態(tài)。} def tech_agent(state: AgentState) - AgentState: 技術(shù)支持智能體 return {final_answer: f【技術(shù)支持】收到你的問題{state[user_input]}請(qǐng)?zhí)峁┩暾麍?bào)錯(cuò)信息我們將協(xié)助排查。} def general_agent(state: AgentState) - AgentState: 通用助手智能體 return {final_answer: f【通用助手】收到你的問題{state[user_input]}建議聯(lián)系人工客服獲得更多幫助。}這里有一點(diǎn)需要特別注意每個(gè)節(jié)點(diǎn)函數(shù)必須返回一個(gè)字典字典中的鍵名要與 State 定義對(duì)應(yīng)。LangGraph 會(huì)把這個(gè)返回值合并到全局 State 中。4.3 定義條件路由函數(shù)條件路由函數(shù)是 LangGraph 中決定“下一步去哪”的關(guān)鍵。def route_by_intent(state: AgentState) - str: 根據(jù)意圖字段決定進(jìn)入哪個(gè)智能體節(jié)點(diǎn) intent state[intent] if intent order: return order_agent elif intent tech: return tech_agent else: return general_agent4.4 構(gòu)建圖并運(yùn)行# 構(gòu)建圖 builder StateGraph(AgentState) # 添加節(jié)點(diǎn) builder.add_node(intent_node, intent_node) builder.add_node(order_agent, order_agent) builder.add_node(tech_agent, tech_agent) builder.add_node(general_agent, general_agent) # 添加邊 builder.add_edge(START, intent_node) builder.add_conditional_edges( intent_node, route_by_intent, { order_agent: order_agent, tech_agent: tech_agent, general_agent: general_agent, }, ) builder.add_edge(order_agent, END) builder.add_edge(tech_agent, END) builder.add_edge(general_agent, END) # 編譯圖 graph builder.compile() # 運(yùn)行 result graph.invoke({user_input: 我的訂單什么時(shí)候發(fā)貨}) print(意圖, result[intent]) print(回答, result[final_answer])4.5 運(yùn)行與驗(yàn)證python agent_demo.py預(yù)期輸出意圖 order 回答 【訂單客服】收到你的問題我的訂單什么時(shí)候發(fā)貨我們會(huì)盡快核查訂單狀態(tài)。再測(cè)試一個(gè)技術(shù)問題result graph.invoke({user_input: 程序運(yùn)行時(shí)報(bào)錯(cuò)怎么辦}) print(意圖, result[intent]) print(回答, result[final_answer])預(yù)期輸出意圖 tech 回答 【技術(shù)支持】收到你的問題程序運(yùn)行時(shí)報(bào)錯(cuò)怎么辦請(qǐng)?zhí)峁┩暾麍?bào)錯(cuò)信息我們將協(xié)助排查。如果看到這樣的輸出說明第一個(gè)多智能體工作流已經(jīng)成功跑通了。5. 接入真實(shí)大模型讓意圖識(shí)別變成模型能力5.1 為什么需要用大模型做意圖識(shí)別上面示例中意圖識(shí)別使用的是字符串匹配效果非常有限。真實(shí)項(xiàng)目中你應(yīng)該讓大模型來承擔(dān)意圖識(shí)別任務(wù)這樣可以處理更復(fù)雜、更模糊的表達(dá)。5.2 改造意圖識(shí)別節(jié)點(diǎn)from langchain_openai import ChatOpenAI llm ChatOpenAI( modelgpt-4o-mini, temperature0, base_urlhttps://api.openai.com/v1, # 按你的服務(wù)商配置 api_keyyour-api-key, ) def intent_node_with_llm(state: AgentState) - AgentState: prompt f 你是意圖識(shí)別引擎。用戶輸入如下 {state[user_input]} 請(qǐng)判斷該輸入屬于哪種意圖只能輸出三個(gè)選項(xiàng)之一 - order訂單、物流、售后相關(guān) - tech技術(shù)報(bào)錯(cuò)、代碼問題、使用故障 - general其他情況 輸出格式只輸出意圖單詞不要有其他內(nèi)容。 response llm.invoke(prompt) intent response.content.strip().lower() if intent not in [order, tech, general]: intent general return {intent: intent}注意把temperature設(shè)為 0讓模型輸出更穩(wěn)定。在 Prompt 中限定輸出格式避免模型返回多行解釋。即使模型輸出了意外內(nèi)容也要做兜底處理。5.3 接口兼容的模型都可以接入如果你的項(xiàng)目使用的是國(guó)產(chǎn)大模型或本地部署模型只要服務(wù)商提供了 OpenAI 兼容接口就可以這樣配置llm ChatOpenAI( modelyour-model-name, api_keyyour-api-key, base_urlhttps://your-model-endpoint.com/v1, )這里的base_url指向你的模型服務(wù)地址即可。LangGraph 不關(guān)心底層模型是誰它只關(guān)心如何編排這些模型節(jié)點(diǎn)的調(diào)用關(guān)系。6. 深入 Condition Edge分支控制與循環(huán)檢測(cè)6.1 多分支條件路由實(shí)際業(yè)務(wù)中條件路由往往不是“一次判斷、一次分流”這么簡(jiǎn)單而是會(huì)出現(xiàn)多級(jí)分支、循環(huán)重試甚至動(dòng)態(tài)決定是否終止的情況。比如在意圖識(shí)別之后我們還想加一個(gè)“回答質(zhì)量評(píng)估”節(jié)點(diǎn)如果評(píng)估結(jié)果不合格則重新調(diào)用模型生成一次答案。def quality_check(state: AgentState) - AgentState: answer state[final_answer] # 簡(jiǎn)單的質(zhì)量規(guī)則答案長(zhǎng)度太短就判為不合格 if len(answer) 10: return {need_retry: True} return {need_retry: False} def route_by_quality(state: AgentState) - str: if state.get(need_retry): return retry_node return END這樣圖結(jié)構(gòu)就出現(xiàn)了“環(huán)”LangGraph 是支持這種循環(huán)結(jié)構(gòu)的。但與普通編程不同LangGraph 的循環(huán)需要小心處理否則可能出現(xiàn)無限循環(huán)。6.2 循環(huán)檢測(cè)與最大步數(shù)限制LangGraph 在編譯圖的時(shí)候會(huì)做基礎(chǔ)的循環(huán)檢測(cè)但不會(huì)阻止合法的循環(huán)。運(yùn)行時(shí)我們可以通過參數(shù)控制最大執(zhí)行步數(shù)config {recursion_limit: 10} result graph.invoke({user_input: 測(cè)試}, configconfig)如果工作流執(zhí)行超過 10 個(gè)節(jié)點(diǎn)步驟LangGraph 會(huì)拋出異常提醒你可能存在無限循環(huán)。這是一個(gè)非常實(shí)用的保護(hù)機(jī)制。在生產(chǎn)環(huán)境中強(qiáng)烈建議顯式設(shè)置recursion_limit。6.3 一個(gè)帶重試的完整圖示例from typing_extensions import TypedDict from langgraph.graph import END, START, StateGraph class RetryState(TypedDict): user_input: str final_answer: str need_retry: bool def generate_answer(state: RetryState) - RetryState: answer f針對(duì)問題「{state[user_input]}」的自動(dòng)回復(fù) return {final_answer: answer} def quality_check(state: RetryState) - RetryState: answer state[final_answer] if len(answer) 20: return {need_retry: True} return {need_retry: False} def retry_node(state: RetryState) - RetryState: return {final_answer: state[final_answer] 已補(bǔ)充詳細(xì)說明} def route_by_quality(state: RetryState) - str: if state.get(need_retry): return retry_node return END builder StateGraph(RetryState) builder.add_node(generate_answer, generate_answer) builder.add_node(quality_check, quality_check) builder.add_node(retry_node, retry_node) builder.add_edge(START, generate_answer) builder.add_edge(generate_answer, quality_check) builder.add_conditional_edges(quality_check, route_by_quality, {retry_node: retry_node, END: END}) builder.add_edge(retry_node, quality_check) graph builder.compile() config {recursion_limit: 5} result graph.invoke({user_input: 你好}, configconfig) print(result)這個(gè)示例展示了 LangGraph 中非常核心的能力循環(huán) 條件跳出 狀態(tài)更新。這類結(jié)構(gòu)在真實(shí)項(xiàng)目中非常常見比如 AI 生成內(nèi)容后的格式校驗(yàn)、合規(guī)檢查、安全審查都可以用類似方式實(shí)現(xiàn)。7. 子圖Subgraph與并行分支7.1 什么是子圖當(dāng)工作流變得復(fù)雜時(shí)不可能把所有節(jié)點(diǎn)都平鋪在同一個(gè)圖里。子圖允許你把一部分節(jié)點(diǎn)封裝成一個(gè)獨(dú)立的 Graph再作為上層圖的一個(gè)節(jié)點(diǎn)使用。打個(gè)比方主圖是公司的整體流程子圖是某個(gè)部門內(nèi)部的詳細(xì)流程。對(duì)外其他部門只看到結(jié)果不關(guān)心內(nèi)部細(xì)節(jié)。7.2 子圖實(shí)戰(zhàn)示例假設(shè)我們要做一個(gè)“技術(shù)問答智能體”其中“日志分析”需要作為獨(dú)立子圖實(shí)現(xiàn)因?yàn)槿罩痉治鰞?nèi)部包含讀取日志、提取錯(cuò)誤、生成診斷建議三個(gè)步驟。from typing_extensions import TypedDict from langgraph.graph import END, START, StateGraph class LogSubGraphState(TypedDict): log_text: str error_summary: str def read_log(state: LogSubGraphState) - LogSubGraphState: return {error_summary: f從日志中提取到關(guān)鍵錯(cuò)誤{state[log_text][:20]}} def extract_error(state: LogSubGraphState) - LogSubGraphState: return {error_summary: state[error_summary] 錯(cuò)誤類型運(yùn)行時(shí)異常} def generate_diagnosis(state: LogSubGraphState) - LogSubGraphState: return {error_summary: state[error_summary] 建議檢查內(nèi)存配置并重啟服務(wù)。} log_subgraph_builder StateGraph(LogSubGraphState) log_subgraph_builder.add_node(read_log, read_log) log_subgraph_builder.add_node(extract_error, extract_error) log_subgraph_builder.add_node(generate_diagnosis, generate_diagnosis) log_subgraph_builder.add_edge(START, read_log) log_subgraph_builder.add_edge(read_log, extract_error) log_subgraph_builder.add_edge(extract_error, generate_diagnosis) log_subgraph_builder.add_edge(generate_diagnosis, END) log_subgraph log_subgraph_builder.compile()7.3 把子圖接入主圖class MainState(TypedDict): question: str log_text: str diagnosis: str def diagnostic_node(state: MainState) - MainState: sub_result log_subgraph.invoke({log_text: state[log_text]}) return {diagnosis: sub_result[error_summary]} def answer_node(state: MainState) - MainState: return {diagnosis: f最終答復(fù){state[diagnosis]}} main_builder StateGraph(MainState) main_builder.add_node(diagnostic_node, diagnostic_node) main_builder.add_node(answer_node, answer_node) main_builder.add_edge(START, diagnostic_node) main_builder.add_edge(diagnostic_node, answer_node) main_builder.add_edge(answer_node, END) main_graph main_builder.compile() result main_graph.invoke({question: 服務(wù)掛了怎么辦, log_text: OutOfMemoryError at com.example.Main}) print(result[diagnosis])子圖的價(jià)值在于大型項(xiàng)目可以按業(yè)務(wù)模塊拆分圖定義。子圖可以被復(fù)用比如日志分析子圖可以被多個(gè)主圖調(diào)用。調(diào)試時(shí)只需要關(guān)注當(dāng)前子圖范圍問題定位更清晰。7.4 并行分支縮短任務(wù)耗時(shí)LangGraph 支持在一個(gè)節(jié)點(diǎn)后派出多個(gè)并行分支等待所有分支完成后合并結(jié)果。比如做市場(chǎng)分析時(shí)需要同時(shí)抓取競(jìng)品信息、用戶評(píng)價(jià)和銷售數(shù)據(jù)from langgraph.graph import END, START, StateGraph class ParallelState(TypedDict): question: str competitor_result: str user_review_result: str sale_result: str final_report: str def competitor_task(state: ParallelState) - ParallelState: return {competitor_result: 競(jìng)品信息A 產(chǎn)品主打性價(jià)比B 產(chǎn)品主打高端體驗(yàn)} def user_review_task(state: ParallelState) - ParallelState: return {user_review_result: 用戶評(píng)價(jià)對(duì) A 產(chǎn)品好評(píng)集中在價(jià)格B 產(chǎn)品好評(píng)集中在設(shè)計(jì)} def sale_task(state: ParallelState) - ParallelState: return {sale_result: 銷售數(shù)據(jù)A 產(chǎn)品近一月銷量 1000 件B 產(chǎn)品近一月銷量 800 件} def merge_report(state: ParallelState) - ParallelState: report ( f競(jìng)品{state[competitor_result]}\n f用戶{state[user_review_result]}\n f銷售{state[sale_result]} ) return {final_report: report} parallel_builder StateGraph(ParallelState) parallel_builder.add_node(competitor_task, competitor_task) parallel_builder.add_node(user_review_task, user_review_task) parallel_builder.add_node(sale_task, sale_task) parallel_builder.add_node(merge_report, merge_report) parallel_builder.add_edge(START, competitor_task) parallel_builder.add_edge(START, user_review_task) parallel_builder.add_edge(START, sale_task) parallel_builder.add_edge(competitor_task, merge_report) parallel_builder.add_edge(user_review_task, merge_report) parallel_builder.add_edge(sale_task, merge_report) parallel_builder.add_edge(merge_report, END) parallel_graph parallel_builder.compile() result parallel_graph.invoke({question: 近期市場(chǎng)分析}) print(result[final_report])并行分支的關(guān)鍵在于多個(gè)節(jié)點(diǎn)都連接到同一個(gè)聚合節(jié)點(diǎn)。LangGraph 會(huì)等待所有上游分支完成后才執(zhí)行聚合節(jié)點(diǎn)不需要你自己寫多線程代碼。8. Checkpoint讓工作流具備記憶與恢復(fù)能力8.1 Checkpoint 解決了什么問題多智能體工作流往往需要多輪交互。比如用戶第一句話是“幫我查一下訂單”第二句話是“順便改一下收貨地址”。如果沒有狀態(tài)保存機(jī)制第二句話就失去了上下文。Checkpoint 解決了這個(gè)問題。它把每一步 State 保存到檢查點(diǎn)存儲(chǔ)中你可以隨時(shí)恢復(fù)到任意歷史步驟。8.2 使用 InMemorySaver 實(shí)現(xiàn)記憶from langgraph.checkpoint.memory import InMemorySaver from langgraph.graph import END, START, StateGraph class ConversationState(TypedDict): user_input: str response: str history: list def respond_node(state: ConversationState) - ConversationState: history state.get(history, []) history.append({user: state[user_input]}) response f這是第 {len(history)} 輪對(duì)話你的問題是{state[user_input]} history.append({ai: response}) return {response: response, history: history} checkpointer InMemorySaver() builder StateGraph(ConversationState) builder.add_node(respond_node, respond_node) builder.add_edge(START, respond_node) builder.add_edge(respond_node, END) graph builder.compile(checkpointercheckpointer) # 第一輪對(duì)話 result1 graph.invoke( {user_input: 你好}, config{configurable: {thread_id: user-123}} ) print(result1[response]) # 第二輪對(duì)話 result2 graph.invoke( {user_input: 幫我查訂單}, config{configurable: {thread_id: user-123}} ) print(result2[response])注意thread_id的使用。它相當(dāng)于一個(gè)會(huì)話標(biāo)識(shí)同一個(gè)thread_id下的多輪調(diào)用會(huì)共享狀態(tài)。8.3 生產(chǎn)環(huán)境 Checkpoint 選型InMemorySaver只適合測(cè)試和單機(jī)場(chǎng)景。生產(chǎn)環(huán)境中建議使用持久化存儲(chǔ)LangGraph 官方提供了 Postgres 等存儲(chǔ)方案的適配你也可以把 Checkpoint 數(shù)據(jù)寫入 Redis 或自研存儲(chǔ)。核心原則是State 具備可恢復(fù)性是生產(chǎn)級(jí)工作流的基本要求。9. 將 Checkpoint 內(nèi)容傳入大模型上下文9.1 一個(gè)容易被忽略的問題很多人在使用 LangGraph 做對(duì)話應(yīng)用時(shí)會(huì)直接拿state[messages]作為模型上下文。但如果你使用了 Checkpointmessages 可能已經(jīng)被序列化或包含了一些內(nèi)部字段直接傳入模型并不合適。更穩(wěn)妥的做法是從 Checkpoint 中取回歷史對(duì)話摘要再手動(dòng)組裝成模型需要的 messages 格式。9.2 示例從 Checkpoint 構(gòu)建模型上下文def build_context_from_history(state: ConversationState) - list[dict]: context [] for item in state.get(history, []): if user in item: context.append({role: user, content: item[user]}) elif ai in item: context.append({role: assistant, content: item[ai]}) return context # 使用方法 def respond_with_context(state: ConversationState) - ConversationState: history state.get(history, []) context build_context_from_history(state) context.append({role: user, content: state[user_input]}) # 此時(shí)把 context 傳給大模型即可 response f已收到當(dāng)前上下文共 {len(context)} 條消息。 history.append({user: state[user_input]}) history.append({ai: response}) return {response: response, history: history}要點(diǎn)是不要直接拿內(nèi)部 State 結(jié)構(gòu)當(dāng)模型輸入要顯式組裝。這樣可以避免字段污染也方便你接入不同的模型接口。10. 常見問題與排查思路問題現(xiàn)象可能原因排查方式解決方案安裝失敗依賴版本沖突查看 pip 錯(cuò)誤信息使用pip check在干凈虛擬環(huán)境中安裝統(tǒng)一 langchain 相關(guān)包版本節(jié)點(diǎn)返回值沒有被更新返回的 dict 鍵名與 State 定義不一致打印 State 內(nèi)容確認(rèn)鍵名嚴(yán)格使用 State 定義的鍵名運(yùn)行時(shí)報(bào) KeyError某節(jié)點(diǎn)讀取了不存在的鍵在節(jié)點(diǎn)函數(shù)中打印state在節(jié)點(diǎn)函數(shù)開頭使用state.get(key)而不是state[key]工作流無限循環(huán)條件邊始終返回同一個(gè)節(jié)點(diǎn)檢查路由函數(shù)的返回值和節(jié)點(diǎn)映射設(shè)置recursion_limit并檢查條件邏輯多輪對(duì)話不記住上下文沒有配置 checkpointer 或 thread_id 不一致檢查編譯時(shí)是否傳入 checkpointer編譯時(shí)傳入checkpointer...invoke 時(shí)傳入一致 thread_id大模型響應(yīng)格式不符合預(yù)期Prompt 約束不足打印模型原始輸出在 Prompt 中限定輸出格式并增加兜底解析并行分支結(jié)果丟失聚合節(jié)點(diǎn)讀取鍵名錯(cuò)誤打印聚合節(jié)點(diǎn)前的 State 內(nèi)容核對(duì)每個(gè)分支節(jié)點(diǎn)返回的鍵名是否與 State 定義一致11. LangGraph 多智能體最佳實(shí)踐建議11.1 圖設(shè)計(jì)原則不要在單個(gè)圖里堆太多節(jié)點(diǎn)。經(jīng)驗(yàn)閾值是如果主圖節(jié)點(diǎn)超過 10 個(gè)建議拆分子圖。每個(gè)子圖只負(fù)責(zé)一個(gè)領(lǐng)域比如“日志診斷子圖”“訂單處理子圖”“合規(guī)審查子圖”。11.2 狀態(tài)設(shè)計(jì)原則State 字段越少越好。只放需要跨節(jié)點(diǎn)共享的數(shù)據(jù)不要把所有中間變量都塞進(jìn) State。比較常見的做法是將中間變量用局部變量保存只把關(guān)鍵結(jié)果放入 State。11.3 安全邊界大模型生成內(nèi)容可能包含違規(guī)信息生產(chǎn)環(huán)境應(yīng)加入內(nèi)容審核節(jié)點(diǎn)。涉及用戶隱私數(shù)據(jù)時(shí)State 中不應(yīng)保存明文敏感信息必要時(shí)應(yīng)脫敏后再寫入 Checkpoint。工具調(diào)用節(jié)點(diǎn)應(yīng)遵循最小權(quán)限原則不要給智能體過寬的權(quán)限邊界。11.4 可觀測(cè)性在關(guān)鍵節(jié)點(diǎn)增加日志輸出記錄節(jié)點(diǎn)名、輸入 State 摘要、輸出結(jié)果。LangGraph 生態(tài)中有 LangSmith 等觀測(cè)工具但在沒有接入的情況下最簡(jiǎn)單的做法是def node_with_log(state: State) - State: print(f進(jìn)入節(jié)點(diǎn)node_with_log) print(f輸入字段{state.keys()}) result do_something(state) print(f節(jié)點(diǎn)輸出{result}) return result11.5 從 Java 或其他語言接入 LangGraph很多同學(xué)問“Java 怎么使用 LangGraph”。目前 LangGraph 官方有 JavaScript 版本如果你的團(tuán)隊(duì)是 Java 技術(shù)棧更推薦的方式是把 LangGraph 工作流封裝成獨(dú)立服務(wù)通過 HTTP API 暴露給 Java 后端調(diào)用。這樣既能使用 LangGraph 的編排能力又不會(huì)和現(xiàn)有 Java 體系沖突。12. 總結(jié)與下一步學(xué)習(xí)建議LangGraph 多智能體開發(fā)的核心不是“讓模型變強(qiáng)”而是把大模型調(diào)用、工具調(diào)用、人工審核、狀態(tài)恢復(fù)等環(huán)節(jié)用工程化方式組織起來。State、Node、Edge、Conditional Edge、Checkpoint 這五個(gè)組件構(gòu)成了 LangGraph 的最小認(rèn)知框架本文的示例基本都圍繞這五個(gè)組件展開。下一步你可以做三件事第一把本文的客服工單分流示例改造成使用真實(shí)大模型并替換成你熟悉的數(shù)據(jù)源和工具調(diào)用。這一步能幫你真正理解 State 和 Condition Edge 的配合。第二嘗試在一個(gè)項(xiàng)目中加入子圖和并行分支體會(huì)模塊化拆分帶來的維護(hù)收益。第三把內(nèi)存 Checkpoint 換成持久化方案并接入你自己的日志體系讓工作流從“能跑”變成“可運(yùn)維”。LangGraph 的版本迭代很快新概念也在持續(xù)出現(xiàn)但核心的圖編排思想不會(huì)變。只要把這一套狀態(tài)機(jī)和條件路由的思維方式掌握了不管未來框架怎么升級(jí)你都能快速上手。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
后入式五六区| 天天射夜夜| 五月天AV资源| 99精品在线观看| 日本欧美韩国国产在线| 国产精品久久泡妞网站| 久久久九九| 殴美日韩m| 五月丁香黄色网| www.91欧美| 狠狠色综合网| 日韩色欲久久一二三四区| 久久久久久久综合,国产| 日韩黄片影院| 欧美日韩亚洲电影| 香港日本韩国人妇99www.wccm20| 欧洲免费一区二| 超碰99在线观看| 色牛牛AV| 亚洲女毛多水多21P| 亚洲密乳AV| 日日夜夜精品视频| 亚欧无码线免费观看视频| 亚洲精品97久久| 人妖欧美一区二区| 免费视频观看60秒| 欧美色97| 亚洲一区二区三区婷婷| 97超碰碰| 日韩中文字幕国产| 国产一进一出视频网站| 欧美久久人人网| 色乱二区| 亚 欧 美 综合| 久久久精品国产亚洲伊人| 亚洲综合另类| 国产在线76页| 97露脸精品丝袜| 韩国三级三级BD在线| 九九色逼| 欧美成人性爱视频大全| 最新欧美色网| 国产男女无套97| 日韩欧亚太美不卡| 熟妇激情| 亚洲国成人情色好看电影| 99久久久| 国产亚洲日韩在线三区黑人| 人人操AV| 久久一区,青青青青草视频在线播放| 激情婷婷五月天| 亚洲区限制级| 91色综合| 五月激情啪啪| 91欧美丨精品丨入口| 日韩人人精品| 亚洲三区视频| 亚洲五月丁香花狠狠干一区二区三区| 亚洲91亚洲| 欧美天天干| 久久久久久久国产视频| 久久久久久中文版| 尤物视频偷拍免费| 国产美女销魂在线观看不卡| 福利社区午夜一区二区| 一区=区三区视频| 超碰导航97| 少妇3P性爱自拍| 男人的天堂在线2| 亚洲97精品| 亚洲中文字母在线播放| 刺激性视频黄页| 欧美97色| 久久久久久久久久久久黄色| 精品国产乱码久久久久久久久久毛片 | 日本1区2区不卡视频| 丰满人妻一区二区三区大胸懂色 | 久久久久久91香蕉国产| 内射老妇BBWX0C0CK| 日本天天吊| 久久超碰com| 一区二区三区欧美激情| 国产九九九九九九| 亚洲中文字幕日产无码久久| 日本2020一区二区| 视频在线观看一二三区| 国产无码精品无码| 5252色欧美在线男人的天堂| 青娱乐 成人娱乐在线| 人人妻人射| 九九九精品成人免费视频小说| 乱子伦一区二区三区国产精品| 麻豆这里只有精品| 老司机射| 青娱乐欧美激情一区二区 | 宅男91视频在线播放| 亚洲 国产 精品一区| 五月丁香激情四射| 久热这里只有精品9| 亚洲97p| 亚洲色图91欧美日韩| 操婷婷逼| 亚洲人妖网| 少妇蹲下露出大唇5| 午夜男女爽爽爽在线视频| 亚洲区限制级| 激情终合网| 国产免费久久久久| Blackedraw视频一区二区| 欧美另类精品xxxx| A级毛片在线看免费| 国产毛片片精品天天看视频 | 噜噜噜久久亚洲精品色情| 97亚洲性爱| 在线综合 亚洲 欧美中文字幕 | 伊人在线大香蕉二。| 夜夜综合| 少妇内射视频| 超碰欧美97资源| 后入合集| 夜夜躁狠狠躁日日躁av| 美女诱惑久久| 男人的天堂网免费| 日韩人妻播放| 吖在线不卡一区二区国产剧情| 超碰 97国产熟女| 亚洲色资源| 中文字幕丝袜| 超碰日本97美女人妻人人玩人人爱| 中文字幕五区| 狠狠干精品一二三四五六2022| 夜夜嗨TV| 无码国产精品96久久久久孕妇| 嗯阿好爽好紧| www亚洲免费| 91狠狠综合久久久久久| 无码操逼天堂| 欧美日韩国产黄色片| 国产农村妇女毛片精品久久| 亚欧精品久久久久久久久久久| 国产亚洲精品玖玖玖在线观看| 精品久9| 色综91| 久久9亚洲| 大香蕉99热| 亚洲福利中文字幕在线| 婷婷AV一区二区三区| 97国产精品久久久久| 亚精品无码毛片一区二区三区| 色爱综合网| 精品国产99| 国产尤物在线三区| 国产精品一级特黄aaa大片在线观看| 亚洲男人综合| 婷婷尹人大香蕉免费| 欧美亚洲美少妇一区二区| 久久香蕉国产线看观看亚洲女人 | 久草在| 天天舔天天日天天射| 青娱乐淫乱1314| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 人人人人插| 嗯嗯啊啊操死我| 东京太热男人的天堂久久久| 97精品网站| 中文字幕av一区二区三区人妻少妇 | 精品久久人妻成人网| 99热精品在线观看| 婷婷综合网站| 久久蜜桃综合网| 日本成人在线不卡一区二区三区| 亚洲偷91色| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 天天日天天干天天操| 日逼视频日本| 亚洲 另类 丝袜 自拍 动漫| 日韩三A大片在线观看| 午夜福利在线视频1000| 一区二区影院| 久久久久久人| 九九玖玖精品| 乱伦图av| 日韩本不卡视频在线观看| 五月婷久久| 亚洲图片偷拍欧美| 国产精品色色| 亚洲无码超碰免费| 久久精品视频一区三区小泽玛利亚| 久草在| 超碰 国产熟女精品一区| 91性感在线| 在线观看一级α片刺激高潮视频| 欧美色图自拍| 91影视亚洲| 国模少妇一区二区三区| 另类 综合 日韩 欧美 亚洲| 农村妇女一级二级三级视频| 国产乱伦视频污| 日韩97P| 欧美亚洲自拍另类人妻| 自拍偷拍草一草| 久久亚洲AV无码专区国产精品| 欧美亚男人的天堂| 啊啊啊啊嗯嗯在线久久久| 亚洲国产高清福利视频| 久久 久久国内精品亚洲| 成人一道本免费视频| 激情五月天色色| 成人在线永久| 99re国产精品视频| 中文字幕人乱码中文字的预防方法 | 亚洲av综合伊人久久| 婷婷五月天激情四射| 亚州九九九精品视频| 18禁美女裸体无遮挡啪啪| 超碰国产情侣自拍网| 亚洲欧洲综合成人av一区| 99国内精品| 丰满人妻-区二区三区免费看| 超碰九色| 家庭乱伦国产精品| 欧美亚洲清纯| 国产后入精品| 俺去俺来也在线www| 大香蕉伊人75| 91久精品| 99综合视频| 日本潮催一卡操| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 美女网站黄页| 歐美一級亂黃99在綫精品| 五月天婷精品激情| 国产美女自拍AV| 草草草草视频| 蜜臀99久久国产| 日韩资源网| AV天堂男人的天堂| 按摩中文字幕| 啊嗯好大视频在线观看| 日夜啪电影| 正在播放国产精品一区| 四虎AV在线播放| 啊啊啊好舒服好爽啊啊啊视频| 国产无码一二三区| 搡老熟女老女人老熟妇免费视频| 热久久国产| 日韩av无码网站| 亚洲 欧美 第一页| 男人久久天堂| 久操频道免费在线呗看| 男人综合网| 久久夜夜| www亚洲欧美| 久久内射| 综合亚洲网| 91中出在线| 蜜臀无码视频在线观看| 日韩精品在线观看观看| 97九色| 超碰78| 日韩黄片视频试看| 久久久草草精品| av毛片aaaaa免费看| 韩日色费| 国产精品久久成人免费| 91欧美| 这里都是精品在线观看| 97国产精品国| 后入福利视频| 成人区人妻精品一| 欧美人人曰人人操人人射射| 国产又粗又大硬免费色网视频| 日韩操p| 久草福利在线资源站| 无码人妻丰满热妇又大又粗| 国产精品老熟女一区二区| 欧美精品偷拍| 97超碰欧美中文字幕| 亚洲图片欧美色| 九九探花视频在线观看| 五月天婷婷综合网| 丝袜天堂网| 黄色工厂这里只有精品| 欧美1区二区三区公司 | 欧美综合骚| 性色av一区二区| 中文字幕制服诱惑| 久久久精品视频免费观看| 盗摄 精品 另类 一区| 欧美日韩99| 久草精品一区| 91M一社| 欧州一区二区三区四区| 激情五月天丁香社区| 免费成人在线熟妇网| 加勒比色99999| 插穴性爱视频在线观看| 国产67194| 丝袜熟女2P| 狠狠操狠狠操操| 亚洲国产另类在线中文| 九九色综合| 99re在线视频国产| 色噜噜婷婷| 欧美日韩97在线| 爱av免费| 九九九只有精品| а√天堂资源官网在线资源| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 精品176精品2| 5278欧美一区二区三区| 97欧美精品综合| 日韩三级av片| 99re这里只有精品3| 亚洲欧美色图| 日韩传媒在线| 屁屁影院一区二区三区国产| 97操b| 日本高清电影欧美色图| 乱伦熟妇一区二区| 99999精品成人| 男人的天堂久久久| 五月开心网| 97色97干| WWW美腿丝袜香蕉中文| 国产福利影视| 亚洲一区日韩精品中文字幕| 嗯嗯,啊啊,国产精品| 国产在线观看91精品一区| 伊人玖玖网| 国产精品蜜乳AV| 亚洲色电影在线| 日韩三级久久久| 欧美日韩色综合网| 亚洲综合97| 国产丝袜高跟美女av免费观看| 五月天婷婷基地| 国产精品久久久久久高清无码免费看| 日韩精品一区,二区 九九...老司机| 乱老女人一区二区视频| 93人人操人人| 搡老女人911熟妇老熟女| 欧美色图中文字幕| 亚洲性综合9| 一区操逼日比视频| 狠狠操,使劲操| 日韩在线欧美精品一区二区| 伊人午夜福利视频| 欧美老熟另类| 欧美精品69性爱| 天堂在线一区二区| 91在线限制级| 伊人国产视频| 亚码激情| 青青操在线亚洲视频观看欧美在线| 三级片大波波| 91狠狠综合久久久久久| 99热免费精品| 超碰到97情色| 欧美色亚洲| 超碰91在线| 国产精品露脸在线观看| www.av在线视频| 国产呦精品一区二区三区下载| 久热婷婷| 草蕉影视亚洲无码| 欧美色图自拍| 精品人妻1区| 蜜乳AV网址| 99色婷婷中文字幕乱色| 91高跟美女在线播放| 久久9免费视频| 人妻丰满熟妇av无码区蜜桃| 日韩欧美蜜桃精品久久中文字幕久久 | 偷拍片久久| 传媒在线观看一区二区三区| a亚洲欧美色欲| 日本女人操逼| 日韩中文字幕2020| 中出欧美| 超碰在线人妻| 狠操91,com| 91女日逼| 国产女人成人精品视频| 婷婷99| 99xav| 20cm女自慰在线日韩欧美| 天天天天天干夜夜夜夜夜操| 日韩精品大香蕉伊人在线| 欧美激情亚洲情色| 亚洲国产欧美一区二区潘金莲| 93人人操人人| 影音先锋每日最新资源在线观看 | 717影院理论午夜伦八戒| 久久东京热成人| 五月综合激情网| 丁香七月婷婷| 日韩久久超碰色| 日韩欧美蜜桃精品久久中文字幕久久| 97综合在线| 蜜桃成人1区2区3区| 欧美色另类| 久草新免费| 91国产丝袜美女| 中国东北熟女老太婆内谢| 精品一区二区三区最新| 91丝袜人妻| 素人一区二区三区日韩| 欧美性区| 欧美性色网| 欧美亚洲天堂| 淫荡少妇免费| 99超碰网| 日韩激情啪啪| 国产丝袜高跟美女av免费观看| 精品亚洲天堂| 少妇一线天久久久久久| 一区二区影视| 午夜情侣自拍网站| 99久久亚洲精品无码毛片潘甜甜| 丁香五月婷婷五月| 操少妞在线视频| 欧美日韩97| 五月丁香成人网| 久久青娱乐| 丁香色婷婷| 乱理日韩中文| 91综合色噜噜| 少妇内射www在线观看视频| 精品久久久久久中文字幕三区 | 欧美大干日韩| 麻豆国产96在线| 欧美丝袜中文字幕07在线| 操逼日韩无码| 中国操逼无码| sss视频华人在线| 欧美黄色大片在线观看| 色精品极品| 国产美女口爆吞精视频| 性色高清..……| 久久九色| 免费又黄又裸乳的视频| 啊啊啊不要嗯嗯在线观看| 成人性爱电影网| 亚洲 欧美 综合 91| 丁香五月婷婷色| 日韩欧美综合激情| 亚洲性少妇| 搡老熟女老女人老熟妇免费视频| 天天碰久久入| 日韩情色视频| 欧美亚洲国产91在线| 欧美97在线观看| 日韩一级片在线看| 亚洲AV无码乱码| 天天日天天干天天摸天天操| 国产精品 午夜福利| 久久av成人无码免费| 欧美激情综合| 97bbn| 欧美三级一级| 91粉芽高清在线一区二区 | 中文字幕免费在线观看| 免费看污网站| 欧美老熟另类| 波多野结衣一级视频| 91老熟女视频| 午夜一区| 后入国产| 白丝AV| 超碰97COm中文| 99re这里| 欧美亚洲厕所精品偷拍91| 蜜色网色哟哟| 亚州精品一区二区三区香中文字幕在线| 另类小色呦| 亚洲中文字母在线播放| 久操精品| 欧美一区二区一级岛国大片| 欧美高清18A片| 日语五十路和六十路亚洲国产精品| 麻豆91熟妇人妻中文字幕茄子| 中文字幕欧洲有码| 另类图片五月天| 超碰吊日色| 日韩精品国模| 国产精品青青草| 久久久9视频| 91精品免费| 久草看看看| 亚洲欧美另类小说| 日本操逼视频免费| 啊啊啊啊啊在线| 色臀av| 国产在线播放成人免费| 国产h片在线观看视频| 立川理惠无码一区二区| 亚洲性爱高潮影院| 伊人精品国产| 国产精品午夜精品| 老司机午夜精品视频| 亚洲一曲日韩精品| 日韩一级欧美一级国产一级台湾| 日日操丁香五月天| 欧美成人性爱视频大全| 亚洲 欧美 天天| 青青伊人久久| 中文区中文字幕免费看| 操高情无码| 精品少妇后入一区二区三区四区人妻巨乳| 91N欧美| 欧美午夜精品久久久久久3D| 亚洲91色在线| 少妇专区一二三四五| 免费看国产大AB| 大香蕉一级黄色片久久| 操美女高潮抽搐白浆| 欧美亚洲第1页| 欧洲精品欧洲精品| 黄色片,com| 欧美78p| 五月天伊人网| 成人资源中文字幕在线观看天天| 欧美人妻一区二区| 偷看洗澡一二三区美女| 又大又黄国产| 成年人网站在线免费观看| 久操99| 免费观看成人www精品视频| 超碰人妻中文在线| 欧美熟女逼久久久久久| 亚洲欧美国产其他二区| 蜜屁av| 精彩国产视频播放1区2区| 国产黄色在线播放观看| 欧美色吧综合| 97精品国产97久久久久久户外免费| 东京热一区二区中文字幕| 色偷偷色偷偷欧美日韩| 性做久久久久久免费观看软件| 久久精品无码专区| 97精品国产手机| 91一区二区| 干我久操| 中国熟女91| 岛国小电影| 成人免费在线网站| 日韩精品一区二区高清| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 美女91网| 国产精品午夜福利视频| 久久人人舔人人爽舔人人av片| 芊芊操逼视频无码| 日本在线不卡v二区| 国产精品亚洲一级av第二区| 蜜臀亚洲中文| 黑人无码一区二区| 999久久芭蕾| 曰韩欧美国产传媒麻豆第一区| 国产精品免费1区2区视频| AV色五月| 怡红院怡春院| 色乱二区| 97无码视频在线播放| 91少妇通奸网站| 狠狠久久四虎| 免费av在线播放二区| 亚洲 综合 第一页| 日韩丝袜人妻AV| 国产精品干干干| 精品人妻一区二区三区不卡断 | 男人兔费天堂| 午夜福利激情在线视频| 久操黄色视频| 亚洲丁香花色| 亚洲二区精品在线观看 | 日韩三级一区| 久操操AV电影| 99久久精品国产系列| 无套后入双马尾| 男生通女生屁股| 97一本大道亚洲一区| 色色婷婷五月| 抽插无码高清一区| 日韩国产在线观看av| 人人干黄色| 1769一区| 日日操免费视频| 久久丁香久草综合网| 夫妻AV网站| 综合色久欲| 偷拍色图| 色一区二区三区综合| 9997se| 天天综合有色网| 蜜桃无码AV一区二区| 0755午夜福利视频| 欧美色图另类图片| 亚洲精品久久久久久| 日本精品一区二区三| 91色碰| 伊人亚洲国产一成人久久精品,久久| 欧美麻豆成人同性GⅤ在线| 欧美少妇性爱网站| 欧美激情五月天| caopeng97| 青青伊人久久| 日韩欧美女求操每天更新| 天天综合网91| 人人看人人插| 国产成人网站在线观看| 欧美激情五月天| 97一区二区蜜臀| 久久综合久色欧美综合狠狠| 日韩91网| 欧美大香蕉久| 99热超碰| 欧美日韩人人精品| 亚洲日韩电影| 99e久久国产精品| 国产99久久99热这里只有精品15| 久久女婷| 欧美在线综合| 天天影视综合色| 麻豆精品一区二区三区四区免费观看| 999国产精品999| 91女人的网站| 日本ZZ高免费A级视频| 欧美人人操人人插| 久久产精品一区二区三区电影| 欧美不卡二区| 日韩欧美麻豆大片| 操老熟女AV| 成人三一级一片aaa| 国产精品电影| 国产日韩在线播放av| 日韩精品色呦呦| 色色色网站| 欧美黄色手机在线观看| 色鬼在线综合| 日本精品高清一二区一本到| 性色A∨91| 精产国品一区二三产品| 天天干天天操天天干天天操| 97爱亚洲| 在线五区| 香一区二区三区| 欧美日韩香蕉| 黄骗免费网站| 亚洲drav色图| 亚州成人a∨| 日韩黄色一区二区三区| 日本影视久久免费| 国产自啪精品视频网站黑丝| 中文字幕大片三级狠狠干| 神马久久久久久伦理片| 97欧美日韩| 超碰在线1234区| 国产九九久久久精品| 人妻-91porn| 日熟女| 呦女网站| 日本天堂网| 蜜桃久久一区二区三区| 大香蕉性欧美| 一区久久久二区| 婷婷久久五月| 干日本人少妇午夜寂寞影院| 亚洲九九九| 成人情色综合网| 日本中文字幕一区| 久久久性爱视频| 日本特黄f c2| 日韩无码专区| 久久精品中文字幕观看| 精品欧美不卡在线播放| 性色aV一区二区三区噜噜| 综合大香蕉美。| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 99rre在线精品99re8| 青青草视频爽一爽| 中国国国产一级特黄毛片| 国产AAAAAABBBBB| 丁香色狠狠色综合久久小说| 久久久久深夜无码| 亚洲清纯唯美| 人妻素股| 欧美精品,四区。五区| 美腿丝袜高跟网免费视频免费视频| 91亚洲人电影| 欧美性爱五月天| 午夜精品视频777| aaaa黄片| 日本操BAV| 国产第25页在线观看| 日韩激情小说一区二区| 手机在线播放国产福利| 人人爱人人乐人人操| 四虎在线观看网站| 四虎AV影视国产精品亚洲精品| 偷窥自拍亚洲色图| 亚洲欧美校园另类春色| 九九热精品在线| av资源在线观看少妇| 性爱免费视频成人| 人妻在线视频| 色色色五月婷婷| 亚洲精品99| 天天透伊人| 97精品国产97久久久久久| 国产精品熟女丝袜一区二区| 精品一区二区成人动漫| 免费人成?大片在线播放| 国产精品老师| 国产精品老熟女一区二区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 国内精品伊人久久久久影院会| 豆花视频操逼网址| 无码丰满熟妇一区二区浪潮AV| www.yeyecao| 飘花国产午夜精品不卡| 国产成人无码a| 国产亚洲精品美女久久久m| 婷婷视频在线免费观看| 国产精点久久久成人| 黄色AAAAA欧美| 去干网最新版| 五月香婷婷| 91在线美女| 亚洲综合性网址| 亚洲激情深爱文学小说网站| 超碰人妻久久| 无码高清操逼网址| 久久久久久久久久久久97| 射综合网| 免费精品中文字幕| 91久操| 久视频在线观看| 成人在线午夜视频一区| 少妇精品| 中文字幕国产| 九月色婷婷| 国产肏屁眼视频| 亚洲诱惑| 舔足天天操天天射| 国产AV精久久| 久久这里都是精品| 亚洲码和欧洲精品激情系列| 亚欧操逼片在线观看 | www.黄色在线| 欧美亚州手机在线| 国产精品视频在线播放| 一区二区播放| 国产精品久久泡妞网站| 国产特级毛片AAAAAA高潮流水| 中文字幕精品日韩中文字幕| 亚州色交| 天天日骚逼熟女| 伊人专区一区二区三区| 欧美日产国产在线成人第一区| 欧美亚洲第一页| 97五月天| 人妻熟女一区二区| 精品二区三四区五电影 | 国产成自自拍在线观看| 亚洲图片 欧美电影| 精品综合久久久久久五月天| 亚洲中字幕日本一区二区三区| 秋霞曰韩R级| 91中文精品日韩欧美在线 | 欧美色日本| 四虎在线免费视频| 中文字幕乱码在线| AV九九| 精品熟女一区=区三区| 台湾佬大香蕉| 亚洲熟女中文字幕在线| 久久综合久色欧美综合狠狠 | 99国产精品视频尤物| 后入 亚洲 美女 射| 大屁股熟女一区二区三区| 综合国产影视三级| 日韩影片中文字幕一区二区三区| 午夜传煤十二区精品| 黑人美精品 A片| 刺激性视频黄页| 国语少妇精| 日本久久精品| 天躁夜夜躁2021| 99热只有这里有精品| 久久精品视| 久久九九视频九九视频| 中 文字幕一区二区三四 五 区日 日 骚| 99999精品| 蜜臀久久一区二区| 视频一区二区免费在线| 99热99re超碰精品| 伊人国产成人av网站| 中文乱码99| 交换娇妻呻吟声不停中文字幕| 伊人991| 成人 日本A片无码8888| 99国产人成精品| 久久春色| 亚洲精品一二三四区| 亚洲成人精品在线一区| 中文字幕55555| 亚洲性爱电影| 18禁久极品美女久久哦哟呀!| 懂色av色欲av蜜臀av| 亚洲男人的天堂网| 99爱爱| 五月天AV资源| 天天看天天综合成人网| 翔田千里无码一区| 99热日| 女人爽到高潮潮喷18禁网站| 91性网| 国产午夜视频| 女同性恋久久| 欧美天天搞| 欧美se亚洲| 玖玖玖玖精品国产剧情| 亚州一区二区| 大香蕉国产中文自拍| 26uuu性| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 久久精品无码专区| 六月丁丁香| 涩涩涩综合| 男人天堂最新手机版在线青青草| 曰韩精品九九无码| 国内毛片热久久思思热| 任你干在线视频| 天天综合网站| 亚洲无无码αⅴ每日更新| 久久风骚城市| 观看免费区二区三区二| 人人看欧美性爱| 天天综合97| 国产精品久久久久久久久久久久久久久久| 色青青久久影视| 亚洲色天| 精彩久久中文| 色99在线| 日本性爱欧美性爱| 九九九九9999| 超碰久久网| 国产欧美精选激情视频| 另类专区加勒比| 麻豆60秒| 日韩av乱伦| 国产男女边吃边摸视频网站| 国产97色在线 | 亚洲| yazhousetuoumei| 综合一区中亚洲国产成人综合精品| 男女日B国产| 精品一区二区2| 炮色五月| 亚洲天堂男人在线| 欧美日韩在线国产在线| 激情小说亚洲| 四虎影视国产精品| 精品久久艹| 国产夫妻一区二区| 九九热精品| 在线观看精品国产免费| 日本高清视频xxxx| 放黄片放3级黄片没穿衣服| 国产精品高朝久久久久久久| 老鸭窝亚洲毛片| 亚洲乱码国产乱码精网站| 人人操,人人插| 欧美国产精品久久九九| 欲色综合| 久久久96精品| 四虎在线免费视频| 亚洲91网。| 亚洲图片欧美91N| 成人性爱电影一区二区| 天天做日日爱夜夜爽| 亚洲一区日韩精品| aa片毛片| 亚洲丝袜诱惑| 久9精品| 久草综合网| 欧美国产操逼| 日本一级不卡一二区| 97bbn| 亚洲天堂自拍| 色老汉色| 日韩内射视频| 亚洲av热热色| 第四色色综合91| 97超碰天天爱天天爱| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 偷拍导航视频网站| 超碰久久综合| 丰满精品人妻少妇久久字幕| 97在线观看免费视频l| 97色色色综合网站| 超碰97资源中文字幕| 熟妇视频一区二区三区在线观看| 国产久久一区二区三区野外在线| 九九九九九九亚洲| 日本狠狠干| 蜜色网色哟哟| 德国一二三不卡| 日韩伦理久 久久 清纯| 日韩熟女精品无码专区一区二区 | 操比国产| 青青操综合网| 精品人人插人人操| 久久婷婷伊人| 野狼激情网| 97蜜桃综合| 婷婷五月天无码| 91老熟女91老女人| 在线五区| 欧美亚洲今日在线| 干B网| 国产精品美女视频诱惑| 青娱乐休闲视频在线观看| 欧美性爱无码一区二区三区| 国产99精品一区二区三区免费| 久久无码电影| 五月天婷婷色色| 欧美大香蕉97| 十八禁电影伊人网| 久草毛片| 亚洲九九九九| 天天弄天天操| 熟女精品一区二区三区| 好湿好紧好爽 视频| 日日夜夜国产综合| 欧美大干日韩| 97在线免费| 亚洲成人性| 黄页视频网站野外| 六月丁香五月婷婷| 操人妻逼91| 国产五码丝袜屁眼| 怡红院亚洲怡春院av| 天天操夜夜操| 艹少妇网站| 天天日日夜夜| 91N综合在线| 天久久久噜噜噜久久国产精品爽爽| 一级乱伦网站| 欧美日韩另类在线播放| 激情专区综合| 亚洲欧美综合色| 久久这里| 啊啊啊啊啊啊啊啊在线观看| 精品人妻一区二区视频| 色综合美国| 国产偷人妻精品一区二区在线| 91大香蕉伊人| 国产日韩在线播放av| 婷婷尹人大香蕉免费| 亚洲在高跟鞋自慰久久在色线| 日韩欧亚中文在线| 天天操夜夜操| 飘花国产午夜精品不卡| 亚洲欧美精品91| 色亚州人久干视频在线观看免费版| 免费国产视频| 亚洲午夜福利视频| 色综合20p| 国产品精品自在在线午夜免费| 影音先锋国产精品| 久久久久久久国产| 97se亚洲| 成人aⅴ一区二区三区| 色婷婷色99国产综合精品| 啊啊啊不要好疼视频| 欲女人妻性色av| 影音先锋日本乱伦| 亚洲综合色男人网| 久久风骚城市人| 国产成人精品无码久久| 2011国产精品| 色妇综合网| 国产麻豆一级精品视频| 日韩不卡网操逼中文字幕日韩| 亚洲男人天堂av| 女优视频第10页| 超碰社区97| 人人摸人人干人人拍97| 91嫩草欧美| 欧美在线永久天堂| 久jiu久神马影院| 亚洲97在线观看| 色播丁香| 欧美中文综合| 中文字幕在线免费观看视频| 亚欧美色图| 色婷婷视频| 伊人991| 俺去啦俺来也久久综合| 色哟哟-国产专区| 麻豆久久一区二区三区| 亚洲第一页色| 综合色欧美| 成人五月香网在线| 超碰97综合在线| 久久这里只精品99re66图| 男人的天堂日韩| 色噜噜人妻丝袜a∨先锋影| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲国产丝袜熟女av| 亚洲色图大香| 夜夜骑夜夜操| 东北夫妻性偷拍| 大香蕉视频一二三区| 青青草啪啪网| 久久亚洲AV无码专区国产精品 | 91欧美高清| 少妇久久久久久| 99xav| 蜜臀久久99精品久久久电影| 另类综合另类| 国产无吗在线播放| 久久人妻无码毛片A片麻豆| 黄色电影观看久久9| 久久久久久久久久久久久久久久9| 日韩免费看在线黄色片| 超碰是碰在线观看| 中文字幕在线高清男人的天堂| 中文精品少妇天堂| 国产亚洲在线观看| 手机看片91人妻| 四季AV一区二区凹凸精品小说| 久久一级无码精品毛片6| 亚洲欧美天| 亚洲男人的天堂V| 国产精品嫩草久久久久| 大香蕉99re| 九九色图| 国产亚洲深夜激情| 亚洲素人综合| 蜜桃臀av在线观看| 国产精品视频自拍在线| 亚州欧美总和| 久超碰在| 国产真实野战在线视频| 国产999精品久久久| 18岁禁 茉莉成人久久| 日韩性爱再线视频| 久九色| av72网| 中文高清一区二区的| 人人摸人人添人人操| 精品人妻一区二区三区视频在线| 91超碰人人| 国产大学生口爆吞精合集| 日韩97P| av72网| 欧美熟女操屄| 亚洲在线观看| 人妻精品4K4K4K4K4| 午夜电影在线观看无码专区| 久久无码精品| 亚洲激情色片| 99色热| 91成人久久 | 视频在线观看一二三区| 宅男影院久久久,99| 亚洲色图欧美色18直播在线| 欧美色图中文字幕| 国产吞精a级片激情电影| 在线有码中文字幕| 国产免费内射视频| 亚洲中文字幕乱码无码一区二区| 熟女色综合久久| 天天影视色香欲综合网小说| 九九九成人| 一区二区视频你懂的| 夜夜肏2021| 一个人免费HD91视频| 国产视频一区二区三区在线免费观看| 激情婷婷丁香网| 狠狠躁天天躁日日躁97| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 操逼精品视频| 91人人爽人人爽| 国产超碰人人操| 成人性爱全视频观看| 日韩欧美成人性爱在线| 91久久青青草原精品| 大香蕉中文201| 蜜乳av一区二区三区四区不卡| 女人一区| 最新加勒比丝袜在线| 无码乱人伦中文视频| 国产一区免费午夜视频| 久久精品国产Aⅴ| 天天综合网91| 亚洲中文丝袜美腿诱惑字幕| 九九九九精品一区| 精彩国产视频播放1区2区| 好湿好紧好爽 视频| 91精品丝袜在线观看| 在线观看黄色电话| 狠狠操,使劲操| 国产高清成人免费视频| 97超碰超碰| 97免费视频在线| 超碰97人妻在线| 97chaopengongkai| 人妻丝袜日本| 俞拍自拍| 啊啊啊 在线| 97久久超碰亚洲| 后入式福利| 蜜臀久久99精品久久久久久成人小说 | 天天操天天射青青草| 青青草视频这里只有精品| 色欧美天天| 高清无码网址| 熟女精品一区二区三区| 九色 人妻 大香蕉| 花野真衣| 欧美老妇女内射网址| 综合色啪| 免费视频无码| 白丝1区2区3区| 熟妇在线视频一区二区| 97视频新免费| 色老牛| 天天操人人操骚逼网站| 色欲色香天天天综合网www-亚洲综合国| 日本免费不卡二区| 精品大久久| 无码人妻精品一区二区三区九九| 97精品国产手机| 天天天做天天天爱天天天爽| 操一区| 屁股久久久久久久久| 日本不卡免费二区| 欧美资源| 国产精品久久妻无码网站| 在线无码视频| 亚洲成人一区二区精品| 精品一二三区久久AAA片| a在线观看| 亚洲午夜AV| av大香蕉网站| 国产欧美后入| 99精品无码| 国产美女高潮| 性饥渴少妇av无码毛片| 日韩成人性爱电影在线播放| 91狠| 久久免费老司机精品| 黄总AV色图| 色综合1991| 囯产精品久久久久久久久久梁医生| 亚洲啪啪视频一区二区| 婷婷操逼|