日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

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
返回資訊列表
超碰1024久久| 嗯嗯啊啊操死我| 色香欲天天天天综合色| 开心激情站| 国产欧美另类久久久精品课程| 2010男人的天堂| 免费观看网黄| yazhououmeizongya| 久久伊人在线五区| 欧美日不卡| 国产黄片精品在线| 99热这里只有精品18| 国产精品视频播放| 99啪啪视频| 日韩欧美操逼xxx| 国产精品色约约| 久久9精品视频| 成人八戒网站| 国产中文精品一区二区在线观看| 精品欧美老熟女一二区| 人妻夜爽夜夜爽| 综合91网| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 亚洲精品骚逼| 亚洲人妻熟妇三十三区| 国产原创精品| 三级片网站在线播放| 九九九热| 91亚洲人| 在线国产福利网址导航| 天天澡天天狠天天天做| 91精品国产91熟女| 偷拍导航视频网站| 九九久久国产精品怡红院| 国产农村妇女精品一| 丰满的三级少妇欧美久久久| 亚洲精品人妻在线| 久久透逼视频| 四虎国产精品永久地址入口| 国产区在线| 麻豆精品.欧美精品.日韩精品.| 亚洲日韩少妇一道本视频| 女人妻一区| 美女超碰978| 4399成人黄A片| 精品亚洲黄色片 国产精品导航一区二区 | 日日夜夜精品视频| 人人妻人人澡人人爽久久av| 精品中文字幕第一页| 美女被啪到深处抽搐视频| 亚洲色狠| 中文字幕精品码亚洲| 欧美,日韩,中文,另类| 人妻大相焦在线| 日本丝袜美腿人妻九九| 美女黑人91神马| 中文字幕久久精品一区| 色偷偷2020免费视频播放| 天堂亚洲精品久久老牛| 香蕉免费一区二区三区不读 | 任你爽视频| www成人啪啪18秘 免费| 精品伊人久久久大香线蕉小说| 乱伦系列一区二区| 亚洲第一综合| 97人肏| 91亚洲不卡一区| 五月婷婷hd| 色婷婷婷五月天激情四射| 九九九久千久久激情蜜桃在线看| 婷婷丁香一区二区三区| 99re综合伊人| 久久东京热久久| 黄片视频观看| 综合在线导航一区| 久久久com| 激情五月婷婷| 久久亚州高清| 97伊人超碰| 亚洲天堂在线怕怕视频| 淮穴色AV| 做爱福利视频一区二区| 性感美女91影视| 色婷婷一区二区三区久久| 日韩三级伊人| 能在线播放的国产三级| 九九内射在线| 欧美日韩美女精品久草一区二区三区| 天美麻豆一区二区三区| 狠狠色婷婷777| 加勒比在线视频| 加勒比海成人视频网 | 天天天天天天天天综合| 丰满人妻一区二区三区免费| 狠狠色狠狠色狠狠五月| av九九| 亚洲另类色图片| 久久骚| 夜夜爽夜夜爽| 性感女人网页在线观看视频| 91制服丝袜| 国产成人亚洲精品无码古代早漏男| 日韩亚洲Av人人夜夜澡人人爽| www色婷婷| 手机久操欧美综合色码| 久久久久久亚洲中文| 99热在线播放| 午夜传煤十二区精品| 五月婷婷丁香六月丁香| 日韩人体偷拍| 深夜激情 | 人人操人人插 - 百度 - 百度| 熟女字幕| 中文字幕亚洲欧美在线不卡| 91青青草| 激情五月激情综合网| 蜜桃狠狠色伊人亚洲综合 | 中国操逼无码| 色情综合网| 日韩二区三四区五区六区在线看| 夜夜天天噜狠狠爱2021| 天天日天天射天天干| 东京热综合久久一区二区| 国产精品呦一区二区三区| 男人天堂站| 日韩欧美亚欧在线视频| 91亚洲不卡一区| 97在线观看免费| 国产极品精品美女视频| 欧美激情超碰777| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 91一区二区| 青青草一本道福利视频| 日韩不卡在线一区二区| 日本一级不卡一二区| 国产又黄又粗的视频| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 先锋影音av先锋一区| 国产av尤物| 91高清欧美| 欧美色性爱| av东京热男人的天堂| 国产精品一区二区亚洲人成毛片| 97超碰色屌| 日韩中文字幕国产| 久操在97| 亚洲欧美国产成人综合不卡| 老鸭窝成人免费毛片视频| 99久久久er直播网址| 国产视频大全| 99久久婷婷| 日韩精品-原创伙伴| 秋霞视频一区二区 | 美国三级日本三级久久99| 强奸乱伦亚洲第一页| 一区二区精品更新提醒| 亚洲熟女性高潮久久久| 双插性欧美一二三区| 久久国产精品熟女人妻| 久热香蕉精品在线视频| 骚货操死你| 探花精品视频| 一区二区影视| 日韩精品作爱导航| 自拍偷拍 日韩无码| 亚洲男人天堂2| 自拍鲍鱼一区在线高清观看免费| 曰韩人妻中文字幕在线| 欧美韩国你懂得在线| 97人妻免费中文字幕| 欧美色图偷拍另类| 极品尤物在线观看| 久久97| 久久女同性恋一二区| 亚洲国产精品有声| 久久99干一本高清| 97玖玖人妻| 国产精品爽爽v| 日韩成人人妻网站| 少妇与黑人高潮在线| AV污污污污| 成人怡红院| 99精品网站| 欧美人妻精品一区二区| 91无码精品| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 青青青操| www国产天美久久久| 中文字幕乱亚洲美女精品一区| 日产中文字幕2020| 色噜噜综合网| 深夜国产一区二区三区在线看| 国产黑白丝在线| 97亚洲资源| 九九碰九九爱97超碰| 欧美性爱精品七区| 综合久久少妇中文字幕| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 超碰美女97| 夜夜人妻爽| 黄污污污污| 国产熟女乱论| 国产一区二区三区白丝| 青青草毛片| 密乳无码| 男人亚洲天堂| 五月情色天| 色九九久九九| 欧美v亚洲v日韩v最新在线二区| av在线一区二区三区| 欧美性性性| 日本免费不卡二区| 五月天成人综合| 色色福利| 超碰成人公开| 国产对白刺激视频| 中国少妇XXXX做受| 日本成熟少妇A∨网站| 97久操| 走光一区92下载| 中文字幕亚洲欧美在线不卡| 青青草大香蕉在线视频| 东北操逼| 天天躁狠狠躁av| 日韩精品国模| 久久综合久色欧美综合狠狠| 少妇色综合| 91美女看B| 日日夜夜骚| 蜜桃久久久久久| 九九热精品免费视频| 日韩欧美大力操| 青春草莓视频在线观看网址| 亚洲国产一级黄色视频| 国产日韩色综合| 国产乱伦亚洲| 久操网视频| 色噜噜精品一区二区三| 欧美日韩国产色图在线| 国内毛片无码一级毛片| 啪啪视频mP4| 亚洲精品一区二区三区新线路| 大香交伊人网| 屌妞视频久久久久久久 | 蜜桃香蕉久草精品在线| 天堂射| 91AV国产精品| 校园春色AV天堂| 91高清日| 国产精品久久aV| 人人操人人93| 亚州操逼图| 日韩图区 偷拍| 五月天丁香婷婷综合网站| 欧美劲爆视频一区二区| www.狠狠操| 色香阁在线| 日韩AV一区二区三区三州三州| 久久久婷| 91爱网| 久久精品国产亚洲妲己影视| 免费中文在线| 久久极品一区二区| 色哟哟av| 国产无吗在线播放| 人妻中文字幕日韩电影| 国产精品一区人妻精品阁在线| 欧美熟妇乱码在线一区| 色欧洲97| 四虎午夜影院| 免费观看啪视频| 2019AV天堂| 久久久国产护士丝袜美腿一| 男人的天堂 在线一区| 国产成人无码a| 人人考人人摸人人干| 男人下部插入女人下部 | 亚洲性猛| 2019天天干| 亚洲精品天堂久久A∨51成人漫| 粉嫩av在线一区二区| 97人人中文网| 校园激情狠狠四射| 404操逼福利视频| 伊人丝袜美腿高跟在线观看高清| 天天色踪合| 天天综合网网欲色| 五月丁香啪啪啪| 久操视频免费观看| 操逼视频国产无套| 激情自拍 校园春色| 久久久久斤小| 妇女一区二区三区| 人妻AV在线| 美女丝袜激情小说| 亚洲暴力强奸AV| 久9久| 欧洲人妻视频| 丁香五月久久| 校园春色美腿丝袜 | 伊人精品久久网站| 艳美熟妇先锋一二三区| 超碰吊日色| 亚洲欧洲综合视频在线| 丰满熟女人妻一区二区三五十一路| 成人av在线播放| 日韩欧美视频青青| 精品人妻av区天天看片| 婷婷色一区| 久久久一区二区三区麻豆| 亚洲 一区二区 自拍| 欧美大战久久久伊人| 久操电影| 免费的av网| 亚洲欧美综合| 久久亚洲熟妇在线视频| 翔田千里一区二区三区奶水| 啊啊啊啊二区好大| 午夜激情成人在线观看| 欧美国产操逼| 日本一区视频在线观看| 麻豆精品天美| 嫖老熟女A片一二三区| 国产精品久久久久久久久久久久久久久久 | 超碰这里只有精品| 久久久久亚洲?V片无码V| 欧美色图片91| 久草免费福利在线播放| 精品一区二区三区蜜桃| 800zy一区二区| 国产精品人妻无码久久久老鸭窝 | 亚洲不卡不卡中文字幕不卡| 无码精品久久久久久亚洲| 超碰日本97美女人妻人人玩人人爱| 啪啪自拍九九综合| 992这里有精品| 大香蕉手机在线| 欧洲色色| 欧美激情性久久久久久| 四虎精品亚洲| 熟女天天干| 无码丰满熟妇一区二区浪潮AV| 91成人久久| 日本性爱网址| 蜜臀久久99精品久久久电影| 精品一久久久| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 亚洲精品美女久久久久久久久| 国产久久久久影院老熟女| 377p欧洲日本亚洲大胆| 日韩人妻无码不卡网站| 久草色悠悠在线视频| 色综合色综合网| 青椒国产97在线熟女| 日本一区二区三区四区五区六区七区八区九区| 九九自拍伦理| 日韩av乱伦| 91青青| 九九热免费国产视频婷婷伊人五月| 日韩兔费看黄片| 青娱乐大香蕉| A久久| 亚洲高清无码在线桃色| 国内偷拍精品一区二区| 欧美性高潮| 精品精品精品| 成视频在线观看免费看| 久久精品中文字幕观看| 91无遮挡| 在线欧美亚洲| 九九九偷拍| 亚洲天天影视色综合| 久久e6只有精品| 老熟女阿 国产91| 91国精产品| 神马久久中文字幕| 欧美一二三区四五区| 极品色社| 亚洲91av| 日本不卡高清免v欧美日韩在线观看| 国产精品国产拍高清AV| 搡老熟女老女人老熟妇免费视频| 深夜激情无码| 岛国片在线观看视频亚洲| 天堂无码精品国产久| 一类无码操逼视频| 黑人嘿嘿嘿超爽免费视频| 精品成人动漫一区二区| 天天躁日日躁XXXXYY| 全球成人中文在线| 综合啪啪| 夜色五月天| 在线观看一卡二卡| 久久久99久9| 久久天天摸| 德国一二三不卡| 欧亚乱色熟一区二区三四区| 91精品人妻一区二区三区蜜桃臀| 久久亚洲人妻| 人妻夜爽夜夜爽| 抽插亚洲无码| 91肉片| 強姦亂倫a| 国产专区第一页| 国产视频一区二区免费| 欧美一级三级| 麻豆精品A片免费观看| 久久这里| 亚洲做性| 沈阳熟女高潮对白视频| 男人高清无码一区二区| 五月婷婷深深爱| 九九久久首页| 国外91| 加勒比aⅴ| JIZZJIZZ亚洲女人被躁| 加勒比久久综合网高清| 岛国小电影| 天天看高清麻豆| 欧美少妇高潮视频| 国产成人拍国产亚洲精品| 中日韩熟女| 蜜桃视频精品一区二区| 亚洲丰满很很操| 97超碰超| 日韩精品免费高清视频在线| 五月开心网| 白丝jkav| 好色综合| 精品区国产区一区二区三区| 99操| 天天综合-91入口| 亚洲AV噜噜狠狠网址蜜桃动漫| 色情五月婷婷| 夜夜骑操视频| 免费的黄片有限公司| 99久久网站| 啊啊啊不要啊啊受不了了视频在线 | 综合久久中文字幕综合日韩精品| 欧美激情 日韩精品| WWW美腿丝袜香蕉中文| 97色碰| 午夜色婷婷| 一本大道综合伊人精品热热| 国产美女高潮| 日本有码久久| 欧美综合综合| 偷拍自拍在线视频观看| 嗯嗯啊好大| 欧美性爽xyxOOOO| 五月丁香啪啪网| 四虎影视永久在线观看精品免费网站| 亚洲无码国产精品久久| 任我爽视频在线观看| 啊啊啊水好多| 婷婷五月天色色| 日韩成人人妻网站| 久久精品国产亚洲AV无码电影| 免费农村成人少妇人妻Aa一区二区视频| 久久久一区二区三区麻豆| 无码高清专| 亚洲国产精品久久久男人的天堂| 成人性爱免费播放| 宗合情欲网| 久久久久亚洲Av无码专区老牛影视| 综合激情五月丁香| 久热这里只有精品9| 大香蕉黄色一区| 91插B网站| 久久性爱城| www久久精品| 亚洲 欧美 手机在线观看| 超碰1997| 睡产熟女乱伦| 精品国产乱码久久久久久免费| 精品一二三区久久AAA片| 欧美高潮| 99热成人| 熟妇乱伦一区二区| 夜夜高潮夜夜爽| 中文字幕精品一区二| 成人综合网 欧美| 国产一区免费午夜视频| 精吧天堂| 九九热在线精品视频| 2017天天操| 青青草原人妻| 成人无码电影在线观看网| 国产熟女二区| 亚洲第一综合| 欧美高清18A片| 九九九久久久久| blacked精品一区国产| 亚洲好色人妻| 97二区四区| 另类小说综合网| 日韩中文9| 欧美色五月| 欧州一区二区三区四区| 99热18这里只有精品| 色综合久| 热无码中文亚洲H一道本一区二区| 美性中文综合网| 777奇米影视777四色| 欧美色图 色综合图| 91成人在线| 黄片www.| 特级特黄一级毛片免费| 啊啊啊啊免费视频| 操逼精品视频| 天天操天天插| 性爱免费视频成人| 日日夜夜摸| 少妇人妻激情四射| 欧洲免费一区二| 看日韩操逼| 狠狠操,使劲操| 久久天堂网| 诱惑人妻欧美一区在线播放| 99热综合| 精品国产乱码久久久久久口爆网站| 亚洲情色欧美| 玖色av| 秋霞一区二区三区四区五区六区七区| 五月综合久久| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 91 丝袜在线| 国产麻豆一级精品视频| 一级日本牲交大片好爽在线看| 久久香蕉国产线看观看亚洲女人 | 国产有码一区| 95人妻爽爽人人做人人澡| 大香蕉黄色一级片免费看| 日本一二区不卡| 五月天精品| 97精品在线| 久久亚洲天天做| 大香蕉久久| 伊人久操| 91成人久久 | 亚洲色图欧美色图另类图片| 999久久久久久久久| 精品国产国产AV| 中文字幕一区二区三区蜜臀| 无码免费一区二区三区啪啪| 九九久久99| 色成人Www精品永久观看| 影音先锋日本乱伦| 国产福利视频精品视频| 91精品国产91综合久久蜜臀| 久久啊啊| 丰满人妻一区二区三区| 欧美劲爆第一页| 97这里有精品| 草草草草视频| 日韩亚洲欧美中文字幕| 黄骗免费网站| 亚洲无992tv| 一起草在线视频| 欧美色网络| 无码粉嫩白虎一线天b区| 激情婷婷黑人91| 精品少妇一区二区三区| 91青青在线| 欧美九九九| 一本久道久久综合狠狠爱一密臀精 | 中文字幕一区二区无码成人| 亚州一区二区| 久草精品国产99| {男男暴菊gay无套网站| 日韩在线一区高清在线| 一级特级aaaa毛片免费观看 | 国产精品丝袜在线| 蜜臀久久99精品久久久电影| 综合久久少妇中文字幕| 欧美自拍偷拍综合图片| 乱伦图av| 婷婷丁香五月激情啪啪| 欧美亚洲综合色| 久久国色天香香蕉| 1二区9| 亚洲色图 综合| 久久久久久人| 一级乱伦网站| 日韩一级特黄av毛片| 日韩中文字幕视频在线观看| 欧美亚洲综合色| 欧美激情片一区二区| 东方亚洲在线操逼天堂| 国产精品一区二区密臀| 亚洲高清无毛一区二区| 精品亚洲国产成人AV制服丝袜| 五月婷婷丁香六月| 激情图片亚洲色图| 久久99干一本高清| 日韩在线观看三级电影| 国语国产操逼伊人AV网| 人妻啊啊人妻啊啊| 人妻少妇精品久久久| 国产精品不卡少妇白| 先锋影音av先锋一区| 久久久久久AⅤ无码免费肉站 | www.AV有限公司一区| 日日嗷| 成人国产视频在线观看| 免费中文在线| 欧美香蕉视xxx| 老鸭窝在线视频播放| 久久av无码| 亚洲午夜av| 国产丰满少妇久久久精品影院| 天天久久久久久| 人人操我人人干| 99色视频| 偷拍亚洲情色| 中文幕97| 蜜臀中文字幕| 中文字幕 国产 精品| 精品亚州18| 蜜臀久久99精品久久久电影| 国产精选三级在线观看| 欧美一级专区免费大片| 国产强奸乱伦无码视频| 日本久久天堂| 精久久久| 亚洲AV无码AV吞精久久久久| 美女91在线观看| 欧美性爱第1 页| 狠狠色色| 久9爱经典视频| 欧美丰满少妇xx高潮| 欧美综合97www| 91色欧美| 色色丁香| 夜嗨影院| 国产 码在线成人网站| 新97国产超碰| 日本免费中文一区二区三区四区 | 亚洲风情综合网| 人妻内射一区二区在线视频| 欧美第二页午夜| 久久国产AⅤ| 嗯啊不要啊在线| 亚洲欧美激情小说| 亚洲精品国产熟女久久久久久| 97久久久久久久精| 夜色91| 五月丁香综合啪啪| av影院十区| 精品亚洲黄色片 国产精品导航一区二区| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 啊啊啊用力在线观看| 青草地一本线一区二区三区| 9久久精品| 欧美操逼录像国产黄色国产| 欧美精品日韩一区二区| 亚州高清AV| 91久久久久久久| 友优传媒精品在线一区二区| 日韩精品99999| 97干在线| 欧亚久久偷拍视频| 日本东京热加勒比久久| 日本免费一区二区不卡| 亚洲日本韩国在线| 91熟女丨91老女人| 不卡超碰护士AV在线免费播放| 91久久久亚洲| 97爱b| 免费中文在线| 亚洲精品97久久| 欧美18禁91| 国产传媒操逼视频| 亚州色图欧美色图| 97九色人妻| 欧美日韩午夜精品一区二区三区| 色娱乐色呦呦夜夜夜夜av| 国产精品久久久久久片| 欧美成97爱| www.操| 日韩美女操b| 日本媚薬中文字幕在线| 中文字日本乱码| 亚洲成人美女无吗| 九九九九九九九九九国产精品| 日本青青草在线| 人妻一区视频| 热热色中文无码| 色呦呦国产精品免费看| 干B| 99色在线| 午夜乱轮操逼视频免费看| 超碰久久综合| 亚洲国产一区二区三区在线| 玖玖爱免费观看视频| 91n欧美| 免费成人在线熟妇网| 99免费在线视频| 日本日逼高清| 九九AV| 精品一区二区2| 4141514逼喷水三级片| 国产女生在线| AV天堂国产| 97国产精品一区| 欧美 亚洲 另类 综合| 国产少妇与亚洲av| 国产九九九九九九九九| 亚州熟女乱伦| 欧美 色 亚洲| 久艹99| 中文字幕人妻色偷偷久久皮| 极品五月天噜噜| 牛牛aV| 夜夜操美女| 超清中文乱码字幕| 久久激情四射婷婷丁香五月天| 九热大香蕉| 97久久资源| 欧美十八禁在线看| h无码动漫在线观看| 亚洲熟伦熟妇AV无码春色| 超碰人人干天天射| 天天综合站| 色香伊人| 色综合99999| 少妇天堂网络| 精品免费一区二区三区在线亚洲人成| 香蕉久久国产AV一区二区| 国产精品无码av在线| 一级成人性爱| 亚洲av综合伊人久久| av天堂电影网| 欧美 亚洲精品首页| 九九久精品| 99re热| 老司机午夜精品福利视频一区二区 | 国产偷人妻精品一区二区在线| 97国产色综合| 97二区四区| 亚洲 欧美 91| 九九热九九热| 五月天丁香欧洲日韩| 综合网欧美在线| 人妻久久久| 91爽啪| 午夜精品99久久久久传媒| 国产精品交换一区二区| 日韩精品 资源| 色妹子A V| 色九九九| 青娱乐手机日韩在线视频| 久啪| nuu12国产麻豆精品| 久久久亚洲熟妇资源| 男人的天堂视频精品乱在线| 校园春色第一页| 九九碰九九爱97超| 自拍偷拍第26| 国产一区二区a毛片| 亚洲日韩XXX| 97在线/亚洲| 久久精品一区二区| 精品无码一区二区三区| 亚洲 欧美 偷拍 唯美| 中文字幕aⅴ在线视频| 欧美特大黄一级片片免费| 欧美在线视频99| 国产自产91区13区| 狠狠做深爱婷婷久久二区| 九九九国产精品| 综合色好色| 欧亚性爱在线视频| 国产精品老师| 一区,二区,三区网站| 91丝袜美腿片| 中文字幕第2页| 1769国内精品视频| 亚洲AV永久无码一区仙野| 淮穴色AV| 欧美久久久| 欧美亚洲丝袜人妻制服中文99| 日韩国产精品人妻无码久久久| 天天躁日日躁xxxxx| 99热自拍| 狠狠躁天天躁日日躁| 人妻激情视频| 欧美中文字幕日韩在线| 深田咏美亚洲精品福利社| 国产后入精品| 亚州高清av| 99国产精品| 久久毛卡| 亚洲s在线观看| 国产超碰欧美| 国产传媒午夜理伦精品| 99热自拍| 激情五月天校园春色网| 狠狠婷婷亚洲中文综合久久| 免费强奸av| 99re只有精品| site:sinbotex.com| 免费A V在线播放| 日韩久久超碰色| 青青草大香蕉视频| 3d成人精品一区二区| 精品99999久久久久久| 欧美 日韩第一性色| 国产日逼视频| 亚洲熟妇丝袜在线观看| 97视频播放| 影音先锋乱| 国产精品欧美激在线| 东京热男人的天堂| 五月天色图影视| 天天综合网亚洲综合网| WWW啪啪的com| 天天综和| 色激情综合网站| 91丝袜美女国产| 国产亚洲禁久一区二区| 色香在线| 欧美精品一区二区少妇免费A片 | 国产十八禁视频| 欧美区亚洲区偷拍区| 99热色这里只有精品| 春色综合网| 激情综合五月| 久久久无码精品人妻二区| 国产精品蜜乳AV| 97超碰精品成| 亚欧无码在线| 9999久久久久| 黄色大香焦1级‘′‘| 九九九精品一区二区无码| www.91人妻.com| 欧美亚洲一区二区久久久婷精品大包诱| 热热色91| 国产精品情侣啪啪| 在线日韩日本亚洲国产| 96AV久久久| 成人免费视瓶| 欧美72网页| 久久男人精品| 加勒比伊人影院| 强奸乱伦Av网| 欧美伦乱| 97色色视频| 免费视频一二三区| 免费的av网| 中文字幕美女91| 97色涩| 国产理论视频在线播放| 校园春色家庭伦理欧美激情| 国产精品免费美女视频| 日韩日韩日韩-国产乱码精品一区二区| 无码少妇精品一区二区60岁老人| 日日骚一区二区三区| 成人 日韩欧美一区| 91情色| 亚洲精品骚逼| 首页中文字幕中文字幕免费| 少妇色欲综合网2| 激情自拍 校园春色| 很很操在线| 亚州熟妇精品| 久久久97| 精品九九九| 97超碰免费人人性爱| 无码视频黄色网战| 亚洲天天操| 欧美天堂超碰97| 亚洲精品成人| 国产中出内射一区二区| 欧美大色交| 五月丁香网站| 日韩黄色片子| 97超碰影音| 有码人妻系列| 午夜福利视频在线一区| 男人天堂2017| 极品AV网站在线观看| 久热无码| 亚洲性图91| 久久一二三四五六七八九区区区| 午夜亚洲WWW湿好大| 美女上床网站| 国产综合久久久鬼色| 人妻精品视频一区二区| 无码高清操逼| 国内外激情在线| 密臀AV在线| 成功精品影院| 国产自产自拍| 98久久| 国产日韩中文字幕欧美| 歐美一級亂黃99在綫精品| 五月婷婷爱六月丁香色| 亚洲一区操| 亚洲自拍97| 91老熟女91老女人| 97亚洲资源| 天天综合,91综合永久| 日操粉逼逼| 精品无码一区二区三区| 色约约一区=区三区| 欧美大片天天看| 美女诱惑1区2区| 韩国一级婬片A片AAAAA| 久久黄色性爱视频| 免费无码婬片AAAA片直播色戒| 麻豆一区二区三区在线看 | 久久黄色性爱视频| 亚洲无线观看久久| 大香蕉中文网| 91色射| 日产成人久久| 人妻社区男人天堂| 东北女人av| 五月丁香久久| 色色色色综合网| 秋霞免费AV| 国产精品久久99日日| 性爱乱伦视频免费| 黄色视频高清无码网站| 78超碰| 亚洲熟女综合一区二区| 深夜激情| 日韩BBN| 中文字幕av片| 久草毛片| 99蜜月精品久久| 国产精品在线一区二区| 97资源免费视频| 欧美大战久久久伊人| 和协影院中文字幕三区| 国产肏屁眼视频| 青青草国产亚洲精品久久| 国产四虎在线| 歐美一級亂黃99在綫精品| 国产欧美日韩女同性恋ww喷水精品 | 啊啊啊不要啊啊受不了了视频在线 | 欧美日日人人天天| 人妻少妇久久| 色婷婷一区二区三区久久午夜成人不| 后入式五六区| 久久超碰天天| 一二三区精品视频| 青青草久草| 亚洲无码 国产无码| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 久久久精品中文字幕爱豆| 100啪啪视频大全| 一二三四视频中文字幕在线看| 精品中文字幕一区二区| 99性爱在线观看| 韩国一级做A片免费的| 天天插天天操| 亚洲天堂综合AV| 污到发麻的视频 国产| 精品十三区| 成人精品欧洲亚洲| 夜夜嗨一区| 欧美黑人熟妇精品91| 国产精品白领在线观看| 二男一女成人A片| 粉嫩在线一区二区懂色| 超碰99在线观看| 日韩伦理视频| 天堂伊人久久| 欧美色图99| 91日韩| 韩日性爱av| 中文字幕jul-617人妻熟女| 欧美激情综合色综合啪啪五月| 99自拍B亚洲| 成人天天爽| 97在线视频免费| 欧美αv.com| 久热伊人| 久久久性爱视频| 国产精品一区二区麻豆| 人人操人人色网| 久操网线| 亚洲影视综合网| 欧美亚洲美少妇一区二区| 在线电影亚洲色图| 男女啪啪网站免费视频| 免费在线黄片视频| 嗯啊不要啊在线 | 黄骗免费网站| 综合久久六月久久婷婷| 97人肏| 本道在线| 亚洲国产精品成人综合| 亚洲色综合| 97日视频| 亚洲欧美另类图片| 久久精品国产亚洲AV高级北京| 97久久资源| 大白逼三四级| 久久久久久久伊人精品| 午夜精品久久久久久久男人的天堂 | 黑人粗大V S日韩女优视频| 亚洲国产另类在线中文| 国产精品午夜高潮呻吟久久av| 丝袜综合| 亚洲色图欧洲| 日韩性爱网址| 超碰免费欧美7| 欧美乱伦专区| 五月丁香激情综合| 国产精品粉嫩福利在线| 97人人夜夜精品视频| 中文乱码字字幕在线第5页| 亚洲强奸乱伦影视网| 极品内射| 亚洲欧洲成人在线电影| 婷婷综合| 老熟女阿 国产91| 久久久久久国产无码精品| 少妇天堂网络| 东北少妇高潮zzzz| 97爱免费插| 一本色道久久综合精品婷婷| 精品在线观看视频在线| 日韩精品9区| 无码外流操逼视频| 欧美少妇一区二区三区| …亚洲黄色厕厕女女在线播…| 五月丁香激情啪啪| 亚洲好色人妻| 国产第25页在线观看| 欧美 日韩 婷婷 五月| 欧洲亚洲国产综合在线| 久久天天躁日日躁狠狠躁| 综合另类| 色综合潮| 国产福利电影| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91骚熟女| 欧美熟爽综合| 亚洲中文字幕熟女| 久久最新免费视频23| 98久久| 欧美亚洲国产自久久| 亚洲男人综合| 九九九九日本| 欧美老妇曰批的视频| 999 久久久| 九色在线熟女国产黑人| 国产精品乱码久久久、久久| 日本精品高清一二区一本到| 亚洲97网站| 丁香五月色情| 97超碰欧美中文字幕| 青青草密桃在线播放| 天天上日日上日韩精品| 亚洲色性情三级| 韩国黄片aaaa| 国产精品一区在线播放| 日本大片日本一区二区免费高清| 欧洲精品一级二级精品综合视频综合| 插入综合网| 国产精品高清2021在线| 韩日精品福利视频一区不卡在线免| 333kkkk·亚洲com久久| 久久老熟女| 嗯嗯,啊啊,国产精品| 丁香九月 婷婷| 91精品操美女| 97天天搞在线| 国产高清无码一区三区二区| 亚洲91射| 九九热精品在线| 18禁免费视频| 国产蜜臀精品一区二区尤物| 91久久国产综合久久| 亚洲国产av中文字幕久久| 粉嫩久久久极品| 国产精品女同| 不卡一区二区日本视频| 亚洲无码一区成人免费午夜| 一区二区三区四区五区高清无码永久视频 | 国产精品伦理| 欧美狠狠弄| 一区二区三区欧美激情| 蜜臀在线视频| 国产情色第一第二页在线观看| www.婷婷| 亚洲国产成人福利在线观看| 婷婷色婷婷| 日韩欧洲操屄视频| 欧日韩一二三f区| 亚洲91网。| www久久久| h4610国产人妻| 久久系列| 国产精品第一页国产大屁股视频免费区i| 又大又白奶子| 日韩A优精品在线观看| 色99999| 亚洲在线A| 青春草A| 一二三四日本视频高清| 亚洲强奸乱伦影视网| 天天射天天操天天干天天吃2018 | 欧美精品庄| 欧洲精品一二三在线| 啪啪视频mP4| 亚洲精品亚洲人成人网| 久操凹凸视频| 久久久新亚洲AV| 亚州,欧美在线| 久久久99999久网站| 午夜福利久久久噜久噜久久综合| 日本综合久久| 中国一区二区亚洲人妻| 可以免费看黄片的视频| 中文字幕熟女人妻丝袜| 草B在线| 九热超碰| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 九九干| 強姦亂倫a| 欧美91精品国产自产| 少妇天堂| 久久有码视频| 春色综合免费| 亚洲十八禁止| 91/欧美| 玖玖爱一区在线| 一区二区激情国产熟女 | 久久久少妇| 亚欧美综合网| 日日AAvv| 人人妻天天做天天爽| 久久久99999久网站| 一区二区三区日韩欧美| 操人妻丝袜高跟| 欧美天天拍| www.狠狠干.coom | 狠狠婷婷亚洲中文综合久久| 天天亚洲| 日韩综合色图| 亚州综合色| 欧美色999| 精品无码一区二区三区色欲| 私人尤物在线精品不卡| 欧美91精品国产自产| 九九九热| 亚洲黄片免费在线播放| 国产精品露脸在线观看| 九九精品99| 综合欧美激情网| 激情干在线| 91日本在线观看| 屌逼麻豆| 色婷婷在线视频精品导航| 狠狠干精品一二三四五六2022|