久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

多Agent串行流水線:從任務(wù)拆解到斷點(diǎn)續(xù)跑的工程實(shí)踐

多Agent串行流水線:從任務(wù)拆解到斷點(diǎn)續(xù)跑的工程實(shí)踐 先說(shuō)一個(gè)很多人都會(huì)踩的坑你以為把任務(wù)丟給一個(gè)大模型加上上下文提示詞它就能幫你把一個(gè)十步的活兒一口氣干完。實(shí)際上大模型單次輸出經(jīng)常在中間某個(gè)環(huán)節(jié)悄悄跑偏或者直接因?yàn)槌^(guò)了輸出上限給你半截結(jié)果。一旦出問(wèn)題就得從頭再來(lái)前面的所有工作全部作廢。這也是我后來(lái)決定重做一套“多 Agent 串行流水線”的原因——把任務(wù)拆成一串可重試、可續(xù)跑的 Pipeline 節(jié)點(diǎn)鏈每個(gè)節(jié)點(diǎn)只負(fù)責(zé)一個(gè)被明確定義的子任務(wù)Agent 在其中扮演該環(huán)節(jié)的執(zhí)行者整條鏈路支持失敗重試和斷點(diǎn)續(xù)跑。這套方案的適用面很廣。無(wú)論是讓大模型批量處理幾十份文檔還是把一個(gè)“翻譯 → 潤(rùn)色 → 校對(duì)”的流程穩(wěn)定跑完都能用得上。對(duì)個(gè)人開(kāi)發(fā)者和后端工程來(lái)說(shuō)它不需要重型調(diào)度系統(tǒng)一個(gè) SQLite 文件外加一個(gè)循環(huán)就能實(shí)現(xiàn)很可靠的恢復(fù)機(jī)制。我在自己的某個(gè)內(nèi)部項(xiàng)目里用這套骨架跑了上百條多步驟任務(wù)最大的感受并不是“花了多少錢(qián)”而是“再也不用半夜爬起來(lái)盯著日志看它有沒(méi)有從頭再來(lái)一遍”。這篇文章就把這套架構(gòu)的拆解思路、重試機(jī)制、斷點(diǎn)續(xù)跑實(shí)現(xiàn)和實(shí)戰(zhàn)問(wèn)題完整寫(xiě)出來(lái)。1. 為什么要搞一套可重試、可續(xù)跑的多 Agent 流水線1.1 單次大模型調(diào)用解決復(fù)雜任務(wù)時(shí)的尷尬如果只是“請(qǐng)從這段文章里提取三個(gè)關(guān)鍵詞”這種一步任務(wù)直接調(diào)用大模型當(dāng)然沒(méi)有任何問(wèn)題。麻煩的是那種帶有明顯先后順序的復(fù)合任務(wù)比如“讀取原始報(bào)告 → 提取關(guān)鍵指標(biāo) → 生成摘要 → 整理成表格 → 寫(xiě)一段結(jié)論”。把整個(gè)流程塞進(jìn)一次調(diào)用不是不能跑而是風(fēng)險(xiǎn)極高。模型在長(zhǎng)上下文里容易“選擇性失憶”前兩步還在遵守格式要求第三步就開(kāi)始自由發(fā)揮輸出一個(gè)完全無(wú)法解析的結(jié)構(gòu)。上下文一旦逼近窗口上限調(diào)用可能直接失敗而且這個(gè)失敗往往發(fā)生在最后階段前面花費(fèi)的 token 全部浪費(fèi)。我做過(guò)一次很粗糙的實(shí)驗(yàn)讓同一個(gè)模型完成一個(gè)五步驟的文本處理任務(wù)單次調(diào)用成功率勉強(qiáng)超過(guò)三成。失敗的原因五花八門(mén)有的是 JSON 解析失敗有的是輸出被截?cái)嘤械氖侵型鹃_(kāi)始胡編內(nèi)容。更麻煩的是當(dāng)你只拿到一個(gè)失敗堆棧時(shí)幾乎不可能知道問(wèn)題到底出在“提示詞說(shuō)不清楚”“模型能力不夠”還是“輸入數(shù)據(jù)格式有問(wèn)題”。這種黑盒式調(diào)試非常痛苦逼著我換一條路。1.2 串行流水線在 AI 任務(wù)里的價(jià)值串行流水線的思路其實(shí)是從 CI/CD 那里抄來(lái)的。軟件發(fā)布時(shí)編譯、測(cè)試、打包、部署是分階段的每個(gè)階段有獨(dú)立的日志、重試策略和產(chǎn)物。AI 任務(wù)完全可以照搬把一個(gè)大任務(wù)拆成若干節(jié)點(diǎn)按順序執(zhí)行前一個(gè)節(jié)點(diǎn)的輸出成為后一個(gè)節(jié)點(diǎn)的輸入。每個(gè)節(jié)點(diǎn)可以是一個(gè)大模型調(diào)用也可以是一個(gè)普通函數(shù)、一次外部 API 請(qǐng)求。這樣天然獲得三個(gè)好處隔離性——某一步崩潰不會(huì)把已經(jīng)算好的結(jié)果拖下水可觀測(cè)性——任何一步的輸入輸出都能被審計(jì)可恢復(fù)性——失敗后不必從頭開(kāi)始。我常用一個(gè)工廠流水線來(lái)類(lèi)比。零件在傳送帶上經(jīng)過(guò) A、B、C 三個(gè)工位C 工位發(fā)現(xiàn)零件有問(wèn)題只需要把零件退回 A 工位返工B、C 已完成的步驟根本不需要重做。AI Pipeline 也一樣如果第二步的模型超時(shí)第三步已經(jīng)生成的成果要繼續(xù)保留等第二步補(bǔ)跑成功后再接著往下走。長(zhǎng)耗時(shí)、高成本的任務(wù)尤其受益畢竟每次全量重跑都意味著真金白銀的 token 消耗。1.3 這套方案適合誰(shuí)、能解決什么問(wèn)題如果你符合下面幾種情況之一我很推薦嘗試這套設(shè)計(jì)。第一種你經(jīng)常用大模型處理多步驟文檔任務(wù)比如“翻譯 → 潤(rùn)色 → 風(fēng)格統(tǒng)一”希望每一步失敗時(shí)能單獨(dú)重跑。第二種你的任務(wù)里有部分步驟依賴(lài)外部服務(wù)比如數(shù)據(jù)庫(kù)查詢(xún)、搜索 API、內(nèi)部 HTTP 接口這些服務(wù)偶爾超時(shí)或限流需要重試。第三種你需要向別人說(shuō)明“這個(gè)最終結(jié)果是怎么一步步得到的”這時(shí)每個(gè)節(jié)點(diǎn)獨(dú)立的輸入輸出就是很好的審計(jì)記錄。這套方案對(duì)個(gè)人項(xiàng)目和小團(tuán)隊(duì)很友好。它不需要引入分布式工作流引擎本地文件系統(tǒng)加少量代碼就能實(shí)現(xiàn)斷點(diǎn)續(xù)跑。等節(jié)點(diǎn)數(shù)量增加到幾十甚至上百個(gè)再考慮把 checkpoint 遷移到 Redis 或數(shù)據(jù)庫(kù)也不遲。核心能力“可重試、可續(xù)跑”與底層存儲(chǔ)無(wú)關(guān)重點(diǎn)在于狀態(tài)管理和節(jié)點(diǎn)契約的設(shè)計(jì)。2. 核心設(shè)計(jì)任務(wù)拆解與節(jié)點(diǎn)鏈模型2.1 任務(wù)拆解的原則粒度、邊界、依賴(lài)關(guān)系任務(wù)拆解最常見(jiàn)的兩個(gè)錯(cuò)誤是拆得太粗和拆得太細(xì)。拆得太粗時(shí)一個(gè)節(jié)點(diǎn)里仍然塞了一大堆邏輯失敗后重試的范圍還是太大拆得太細(xì)時(shí)節(jié)點(diǎn)數(shù)量爆炸每個(gè)節(jié)點(diǎn)都要保存上下文的輸入輸出重復(fù)開(kāi)銷(xiāo)反而壓過(guò)收益。我的判斷標(biāo)準(zhǔn)是如果某個(gè)節(jié)點(diǎn)只依賴(lài)上一個(gè)節(jié)點(diǎn)的輸出并且它的輸出能被下一個(gè)節(jié)點(diǎn)直接使用那么粒度基本合適。如果節(jié)點(diǎn)內(nèi)部需要維護(hù)額外狀態(tài)比如多次累積計(jì)數(shù)、跨步驟的臨時(shí)變量說(shuō)明這里應(yīng)該繼續(xù)拆分或者重新設(shè)計(jì)。具體拆解時(shí)我會(huì)從最終目標(biāo)反推先列出為了得到最終結(jié)果必須生成哪些中間物。舉一個(gè)“生成產(chǎn)品周報(bào)”的例子第一步從數(shù)據(jù)庫(kù)導(dǎo)出本周數(shù)據(jù)第二步把數(shù)據(jù)整理成指標(biāo)表格第三步根據(jù)表格寫(xiě)總結(jié)第四步排版成 Markdown。為什么要單獨(dú)拆“生成表格”和“寫(xiě)總結(jié)”因?yàn)榭偨Y(jié)環(huán)節(jié)可能要用更強(qiáng)的模型或者需要多次重試而表格生成屬于機(jī)械轉(zhuǎn)換失敗概率小重試策略可以更激進(jìn)。不同的節(jié)點(diǎn)各配各的參數(shù)這就是拆分帶來(lái)的靈活性。節(jié)點(diǎn)之間只通過(guò)輸入輸出契約互動(dòng)這個(gè)約束必須寫(xiě)進(jìn)代碼里。我在代碼中禁止節(jié)點(diǎn)之間訪問(wèn)彼此的運(yùn)行上下文所有數(shù)據(jù)都通過(guò)統(tǒng)一接口傳遞。這條規(guī)則能讓流水線保持簡(jiǎn)單也保證了斷點(diǎn)續(xù)跑時(shí)上下文重建完全可預(yù)測(cè)。2.2 節(jié)點(diǎn)與鏈路的抽象輸入輸出契約、Agent 封裝為了統(tǒng)一管理我把每個(gè)節(jié)點(diǎn)定義成下面的數(shù)據(jù)結(jié)構(gòu)from dataclasses import dataclass, field dataclass class PipelineNode: id: str agent_type: str # llm, function, api input_schema: dict output_schema: dict params: dict field(default_factorydict) max_retries: int 3這里的id是節(jié)點(diǎn)在流水線中的唯一標(biāo)識(shí)agent_type決定執(zhí)行方式。input_schema和output_schema用來(lái)描述這個(gè)節(jié)點(diǎn)期望收到什么、會(huì)輸出什么。例如一個(gè)“生成摘要”節(jié)點(diǎn)輸入可能是{instructions: str, text: str}輸出可能是{summary: str, keywords: list}。params保存這個(gè)節(jié)點(diǎn)特有的參數(shù)比如模型名、溫度、超時(shí)。max_retries控制重試次數(shù)。我還會(huì)把一條流水線定義成一個(gè)按順序排列的PipelineNode列表。串行意味著節(jié)點(diǎn)的next_node_id隱含在列表順序里不需要額外聲明依賴(lài)關(guān)系。這樣做的缺點(diǎn)是靈活性差但換來(lái)了極低的認(rèn)知負(fù)擔(dān)。在真實(shí)場(chǎng)景中絕大多數(shù)任務(wù)都是天然的線性流程先把它跑通比盲目追求 DAG 編排更重要。2.3 為什么選擇串行而不是編排、并行有人會(huì)問(wèn)市面上有那么多工作流編排工具支持并行分支、條件判斷為什么偏要用這么原始的串行方式我的回答是對(duì)于“生成 → 校驗(yàn) → 再生成”這類(lèi)任務(wù)串行已經(jīng)足夠而且更不容易出錯(cuò)。翻譯之后才潤(rùn)色潤(rùn)色之后才校對(duì)這是強(qiáng)順序依賴(lài)。如果強(qiáng)行并行還要額外處理分支合并和結(jié)果一致性檢查復(fù)雜度一下子拉高好幾倍。但這不代表排斥并行。如果任務(wù)里有完全獨(dú)立的子問(wèn)題比如同時(shí)請(qǐng)求多個(gè)數(shù)據(jù)源我會(huì)先并行拉取再把所有采集結(jié)果合并成一個(gè) JSON 灌回主鏈路。整個(gè)任務(wù)依然是一條主串行鏈并行只發(fā)生在“采集節(jié)點(diǎn)”內(nèi)部。這樣斷點(diǎn)續(xù)跑時(shí)調(diào)度器只需要關(guān)注主鏈的節(jié)點(diǎn)狀態(tài)不用處理復(fù)雜的并行分支恢復(fù)邏輯。3. 可重試機(jī)制的落地細(xì)節(jié)3.1 失敗的分類(lèi)與錯(cuò)誤分級(jí)重試之前的頭等大事是區(qū)分“值得重試的失敗”和“不值得重試的失敗”。如果不做區(qū)分重試機(jī)制反而會(huì)把問(wèn)題放大比如網(wǎng)絡(luò)超時(shí)重試兩三次可能就成功了但輸入數(shù)據(jù)為空這種確定性錯(cuò)誤重試一萬(wàn)次也救不回來(lái)。我通常把錯(cuò)誤分成三類(lèi)基礎(chǔ)設(shè)施類(lèi)錯(cuò)誤網(wǎng)絡(luò)超時(shí)、服務(wù)限流、臨時(shí) 5xx這類(lèi)錯(cuò)誤重試很有效。模型業(yè)務(wù)類(lèi)錯(cuò)誤JSON 解析失敗、輸出不符合 schema、內(nèi)容質(zhì)量不合格這類(lèi)要具體分析有時(shí)重試能緩解有時(shí)要改提示詞。確定性錯(cuò)誤必填字段缺失、參數(shù)非法、數(shù)據(jù)不存在這類(lèi)重試沒(méi)有任何意義應(yīng)該立刻終止。在代碼里我會(huì)讓所有 Agent 包裝器把底層異常統(tǒng)一拋成自定義異常并帶上retryable標(biāo)志。執(zhí)行器拿到異常后根據(jù)標(biāo)志決定是否進(jìn)入重試循環(huán)。這樣分層之后重試策略看起來(lái)清晰很多。3.2 重試策略次數(shù)、退避、超時(shí)附參數(shù)示例我常用的重試策略是每個(gè)節(jié)點(diǎn)默認(rèn)最多重試 3 次初始等待 1 秒之后按指數(shù)增長(zhǎng)每次乘以 2同時(shí)加入 0 到 200 毫秒的隨機(jī)抖動(dòng)。超時(shí)根據(jù)節(jié)點(diǎn)耗時(shí)靈活設(shè)置簡(jiǎn)單 LLM 調(diào)用給 30 秒長(zhǎng)文本分析給 120 秒外部 API 額外設(shè)置連接超時(shí)和讀超時(shí)。這是我在 Python 里常用的裝飾器寫(xiě)法import time import random from functools import wraps class RetryableError(Exception): pass class FatalError(Exception): pass def retry_policy(max_retries3, base_interval1.0, max_interval60.0, jitter0.2): def decorator(func): wraps(func) def wrapper(*args, **kwargs): attempt 0 while True: try: return func(*args, **kwargs) except RetryableError as e: attempt 1 if attempt max_retries: raise interval min(max_interval, base_interval * (2 ** attempt)) interval random.uniform(0, jitter) time.sleep(interval) return wrapper return decorator加抖動(dòng)的目的很實(shí)際多個(gè)節(jié)點(diǎn)幾乎同時(shí)失敗時(shí)如果不加抖動(dòng)下一輪重試還是會(huì)擠在同一個(gè)時(shí)間點(diǎn)再次觸發(fā)服務(wù)端限流。指數(shù)退避的底數(shù)我選 2間隔增長(zhǎng)不會(huì)太慢整個(gè)任務(wù)不會(huì)等太久。如果你對(duì)成本極度敏感可以把底數(shù)改為 3代價(jià)是用戶(hù)等待時(shí)間變長(zhǎng)。參數(shù)沒(méi)有絕對(duì)標(biāo)準(zhǔn)建議先從小值開(kāi)始觀察重試成功率再調(diào)整。3.3 冪等性與狀態(tài)處理讓節(jié)點(diǎn)可以安全重跑重試機(jī)制有一個(gè)容易忽略的副作用節(jié)點(diǎn)重跑時(shí)可能重復(fù)執(zhí)行有外部影響的操作。比如某個(gè)節(jié)點(diǎn)不僅調(diào)用大模型還會(huì)把結(jié)果寫(xiě)入數(shù)據(jù)庫(kù)第一次重試前寫(xiě)入了一部分第二次重試又寫(xiě)一遍數(shù)據(jù)就重復(fù)了。為了解決這個(gè)問(wèn)題我為每個(gè)節(jié)點(diǎn)執(zhí)行單元引入了一個(gè)全局唯一的execution_id在節(jié)點(diǎn)開(kāi)始前生成寫(xiě)入 checkpoint 狀態(tài)然后才開(kāi)始執(zhí)行。具體流程是節(jié)點(diǎn)要執(zhí)行任何外部寫(xiě)操作之前先檢查該execution_id的狀態(tài)。如果狀態(tài)是 done說(shuō)明之前已經(jīng)成功過(guò)直接讀取之前的輸出返回如果狀態(tài)是 running 但之前殘留了部分寫(xiě)入則需要先清理再重新執(zhí)行。大模型調(diào)用本身是相對(duì)純凈的“生成型”操作重復(fù)調(diào)用不會(huì)產(chǎn)生外部副作用但會(huì)多花 token因此我在策略上會(huì)把 LLM 節(jié)點(diǎn)的重試次數(shù)控制得很低避免無(wú)效燒錢(qián)。冪等性的核心不復(fù)雜但很容易被忽略。尤其是當(dāng)你第一次寫(xiě)這套系統(tǒng)時(shí)會(huì)想當(dāng)然地認(rèn)為“失敗就是干凈地失敗”現(xiàn)實(shí)往往是“失敗發(fā)生在寫(xiě)入一半之后”。所以我會(huì)建議所有涉及外部寫(xiě)操作的節(jié)點(diǎn)都要把“寫(xiě)入前登記”和“寫(xiě)入后標(biāo)記”當(dāng)成強(qiáng)制要求。4. 斷點(diǎn)續(xù)跑的 Pipeline 調(diào)度實(shí)現(xiàn)4.1 節(jié)點(diǎn)狀態(tài)機(jī)的設(shè)計(jì)pending/running/done/failed/skipped斷點(diǎn)續(xù)跑的前提是每個(gè)節(jié)點(diǎn)都有明確、可持久化的狀態(tài)。狀態(tài)機(jī)的設(shè)計(jì)盡量簡(jiǎn)單我只使用五種狀態(tài)pending還沒(méi)開(kāi)始執(zhí)行running正在執(zhí)行中done已經(jīng)成功完成輸出已保存failed重試次數(shù)用盡最終失敗skipped條件不滿(mǎn)足或前置節(jié)點(diǎn)失敗選擇跳過(guò)狀態(tài)遷移是嚴(yán)格單向的pending可以到running、failed或skippedrunning可以到done或failed?;謴?fù)時(shí)調(diào)度器只關(guān)心第一個(gè)不是done和skipped的節(jié)點(diǎn)。這里有一條鐵律done狀態(tài)必須和實(shí)際輸出保持一致不允許出現(xiàn)狀態(tài)是 done 但輸出為空的情況。我在保存狀態(tài)和輸出時(shí)把它寫(xiě)在同一個(gè)事務(wù)里要么都成功要么都回滾。4.2 持久化 checkpoint什么信息必須記錄checkpoint 我默認(rèn)用 SQLite 存儲(chǔ)因?yàn)樗p量、支持事務(wù)而且恢復(fù)時(shí)不需要全部加載到內(nèi)存。表結(jié)構(gòu)大致長(zhǎng)這樣CREATE TABLE pipeline_state ( pipeline_id TEXT NOT NULL, node_id TEXT NOT NULL, status TEXT NOT NULL, attempt_count INTEGER DEFAULT 0, input_ref TEXT, output_ref TEXT, error_message TEXT, updated_at TEXT, PRIMARY KEY (pipeline_id, node_id) );這里的input_ref和output_ref可以是指向具體內(nèi)容的 ID也可以指向外部文件路徑。我強(qiáng)烈建議不要直接把幾萬(wàn)字的大模型輸出全文塞進(jìn) checkpoint。之前我犯過(guò)這個(gè)錯(cuò)誤一個(gè)二十節(jié)點(diǎn)的流水線跑完checkpoint 文件超過(guò) 200MB恢復(fù)一次要好幾秒。后來(lái)改成輸出超過(guò) 10KB 就存成外部文件checkpoint 里只記錄路徑恢復(fù)速度立刻正常。另一個(gè)經(jīng)驗(yàn)是每個(gè)節(jié)點(diǎn)完成之后必須立刻把它的輸出快照持久化后續(xù)節(jié)點(diǎn)讀取輸入時(shí)統(tǒng)一從快照加載而不是從內(nèi)存變量拿數(shù)據(jù)。這個(gè)規(guī)則聽(tīng)起來(lái)像廢話但在進(jìn)程被殺、容器重啟等場(chǎng)景下少了這一步就是斷點(diǎn)續(xù)跑失效的根源。我現(xiàn)在所有節(jié)點(diǎn)讀取輸入都通過(guò)checkpoint.load_input(node_id)從不直接引用內(nèi)存對(duì)象。4.3 調(diào)度器如何從斷點(diǎn)恢復(fù)并跳過(guò)已完成節(jié)點(diǎn)調(diào)度器的核心邏輯比想象中簡(jiǎn)單。我把它寫(xiě)成一個(gè)循環(huán)遍歷節(jié)點(diǎn)列表讀取節(jié)點(diǎn)狀態(tài)如果狀態(tài)是done或skipped就跳過(guò)否則執(zhí)行。真正復(fù)雜的是處理running狀態(tài)如果上一次進(jìn)程在執(zhí)行中途被殺節(jié)點(diǎn)狀態(tài)停留在running恢復(fù)時(shí)要先把它改回pending再交給重試機(jī)制處理。偽代碼大致如下def run_pipeline(pipeline, checkpoint, resume_fromNone): start_index 0 if resume_from: start_index pipeline.index_of(resume_from) for node in pipeline.nodes[start_index:]: state checkpoint.get_node_state(node.id) if state and state.status in (done, skipped): continue if state and state.status running: checkpoint.mark_pending(node.id) input_data checkpoint.build_node_input(node.id, pipeline) try: result execute_node_with_retry(node, input_data, checkpoint) checkpoint.save_output(node.id, result) checkpoint.mark_done(node.id) except FatalError: checkpoint.mark_failed(node.id) raisebuild_node_input會(huì)從 checkpoint 中讀取所有前置節(jié)點(diǎn)的輸出然后按照當(dāng)前節(jié)點(diǎn)的input_schema重組為字典。如果前置節(jié)點(diǎn)沒(méi)有輸出它直接拋錯(cuò)避免下游拿到殘缺數(shù)據(jù)。整個(gè)恢復(fù)流程就是不斷循環(huán)這個(gè)函數(shù)直到遇見(jiàn)一個(gè)failed節(jié)點(diǎn)或跑完全部節(jié)點(diǎn)。5. 實(shí)操一個(gè)可參考的多 Agent 串行 Pipeline 骨架5.1 整體架構(gòu)與目錄結(jié)構(gòu)我實(shí)際使用的項(xiàng)目骨架長(zhǎng)這樣pipeline_runner/ ├── models.py # Pipeline、PipelineNode、ExecutionState 等數(shù)據(jù)結(jié)構(gòu) ├── checkpoint.py # SQLite 持久化 ├── retry.py # 重試策略 ├── executor.py # 節(jié)點(diǎn)執(zhí)行與調(diào)度 ├── agent_wrappers.py # LLM、函數(shù)、API 的統(tǒng)一包裝器 └── cli.py # 命令行入口這個(gè)結(jié)構(gòu)不追求分布式只保證在單進(jìn)程內(nèi)實(shí)現(xiàn)斷點(diǎn)續(xù)跑。checkpoint.py負(fù)責(zé)所有持久化executor.py負(fù)責(zé)調(diào)度循環(huán)agent_wrappers.py負(fù)責(zé)把不同類(lèi)型的 Agent 封裝成統(tǒng)一接口。如果以后需要多機(jī)并行只需要把checkpoint換成 Redis 或數(shù)據(jù)庫(kù)然后讓多個(gè) worker 搶占pending節(jié)點(diǎn)即可核心狀態(tài)機(jī)不用變。5.2 節(jié)點(diǎn)定義與 Agent 接入示例我寫(xiě)一個(gè)最簡(jiǎn)單的 LLM Agent 包裝器核心思路就是“接收一個(gè) dict返回一個(gè) dict”。模型調(diào)用、超時(shí)、解析 JSON 都藏在包裝器內(nèi)部節(jié)點(diǎn)定義不關(guān)心這些細(xì)節(jié)。# agent_wrappers.py class LLMWrapper: def __init__(self, modeldefault-model, temperature0.2, timeout120): self.model model self.temperature temperature self.timeout timeout def run(self, input_data: dict) - dict: messages [ {role: system, content: input_data[instructions]}, {role: user, content: input_data[text]}, ] raw call_model( modelself.model, messagesmessages, temperatureself.temperature, timeoutself.timeout, ) return parse_json_response(raw)節(jié)點(diǎn)定義則專(zhuān)注于輸入輸出和參數(shù)node_summary PipelineNode( idsummary, agent_typellm, input_schema{instructions: str, text: str}, output_schema{summary: str, keywords: list}, params{model: fast-model, temperature: 0.3}, max_retries3, )這里最關(guān)鍵的是input_schema和output_schema。它們既是文檔也是約束執(zhí)行器在調(diào)用 Agent 前會(huì)校驗(yàn)傳入字段是否齊全在 Agent 返回后校驗(yàn)字段類(lèi)型是否正確。schema 一出問(wèn)題馬上就能定位到具體節(jié)點(diǎn)而不是含糊地說(shuō)“模型不行”。我用 pydantic 做實(shí)際校驗(yàn)但簡(jiǎn)單的isinstance判斷也夠用。5.3 重試與斷點(diǎn)續(xù)跑的完整流程執(zhí)行器executor.py里的核心邏輯我已經(jīng)在 4.3 展示過(guò)這里補(bǔ)上更完整的重試交互。每個(gè)節(jié)點(diǎn)執(zhí)行前會(huì)先檢查 checkpoint 里有沒(méi)有殘留的retry_wait狀態(tài)如果上一次在等待重試時(shí)進(jìn)程被殺恢復(fù)后會(huì)直接重新計(jì)算等待時(shí)間而不是再次執(zhí)行模型調(diào)用。這個(gè)細(xì)節(jié)保證了重試語(yǔ)義不會(huì)因?yàn)橹袛喽靵y。下面是我實(shí)際使用的execute_node_with_retry簡(jiǎn)化版def execute_node_with_retry(node, input_data, checkpoint): attempt 0 while True: try: agent create_agent(node.agent_type, node.params) result agent.run(input_data) checkpoint.record_attempt(node.id, attempt, statussuccess) return result except FatalError as e: checkpoint.record_attempt(node.id, attempt, statusfatal_error, errorstr(e)) raise except RetryableError as e: attempt 1 if attempt node.max_retries: checkpoint.record_attempt(node.id, attempt, statusfailed, errorstr(e)) raise wait_time compute_backoff(attempt, basenode.params.get(retry_base, 1)) checkpoint.record_attempt(node.id, attempt, statusretry_wait, errorstr(e)) time.sleep(wait_time)在每次time.sleep之前我都先把retry_wait狀態(tài)記錄下來(lái)。因?yàn)?sleep 期間進(jìn)程可能被殺恢復(fù)時(shí)能明確知道當(dāng)前處于“等待重試”階段而不是“執(zhí)行中”。我在實(shí)踐中發(fā)現(xiàn)這種顯式記錄對(duì)排查問(wèn)題非常有幫助???checkpoint 表格就能知道某節(jié)點(diǎn)是模型調(diào)用慢還是在等待退避還是真的執(zhí)行失敗了。5.4 極簡(jiǎn)命令行工具實(shí)現(xiàn)命令行入口讓整個(gè)流水線變成一個(gè)可以獨(dú)立運(yùn)行的進(jìn)程。我常用的命令是python cli.py run --pipeline configs/report_pipeline.json --checkpoint ./checks.db python cli.py resume --pipeline configs/report_pipeline.json --checkpoint ./checks.dbrun從頭開(kāi)始執(zhí)行resume加載已有 checkpoint從第一個(gè)非 done 狀態(tài)開(kāi)始。--pipeline參數(shù)指向一個(gè) JSON 文件描述節(jié)點(diǎn)列表--checkpoint指向 SQLite 文件名。CLI 啟動(dòng)時(shí)先加載配置初始化 checkpoint再調(diào)用executor.run_pipeline。這套骨架看起來(lái)簡(jiǎn)單但其實(shí)已經(jīng)能支撐真實(shí)任務(wù)。我不少項(xiàng)目就是靠它批量跑了幾百份材料中途斷網(wǎng)、API 限流、進(jìn)程被殺只要補(bǔ)一條resume命令流水線還能從斷點(diǎn)繼續(xù)。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄6.1 重試導(dǎo)致重復(fù)副作用、費(fèi)用飆升怎么避免一位朋友用了我的思路后反饋他的第四步是發(fā)送通知郵件模型輸出內(nèi)容后調(diào)用郵件 API 失敗重試時(shí)重復(fù)發(fā)送了兩封郵件。原因就是把發(fā)送郵件當(dāng)成了普通節(jié)點(diǎn)直接重試沒(méi)有做冪等處理。我在 3.3 里提到過(guò)execution_id這里再重申一遍所有有外部副作用的節(jié)點(diǎn)執(zhí)行前必須先登記執(zhí)行成功后必須標(biāo)記。重試時(shí)如果發(fā)現(xiàn)該execution_id已經(jīng)成功直接返回成功結(jié)果不再執(zhí)行副作用。更好的做法是把“生成內(nèi)容”和“執(zhí)行副作用”拆成兩個(gè)節(jié)點(diǎn)。生成郵件內(nèi)容屬于純模型操作失敗可以隨便重試發(fā)送郵件屬于外部副作用一旦成功就永久記錄。這樣既可以利用重試修復(fù)內(nèi)容質(zhì)量問(wèn)題又不會(huì)重復(fù)發(fā)郵件。費(fèi)用方面如果某個(gè)節(jié)點(diǎn)反復(fù)因模型輸出格式問(wèn)題失敗建議先停機(jī)檢查提示詞而不是一味加大重試次數(shù)。重試不是萬(wàn)靈藥它只對(duì)瞬時(shí)故障有效。6.2 checkpoint 文件太大或太碎恢復(fù)慢怎么辦checkpoint 變成性能瓶頸通常是存了太多大文本。我最早遇到的問(wèn)題是每個(gè)節(jié)點(diǎn)的完整輸出都存成一個(gè)文件節(jié)點(diǎn)多之后文件碎片化嚴(yán)重恢復(fù)時(shí)需要遍歷大量文件。后來(lái)我做了兩件事一是把輸出按大小分流小對(duì)象直接存在 SQLite BLOB 字段大對(duì)象存到outputs/目錄checkpoint 只記錄引用二是定期合并 checkpoint比如用一次新快照替換歷史狀態(tài)。SQLite 還有一個(gè)額外好處支持按行讀取不需要反序列化整個(gè)文件。如果節(jié)點(diǎn)數(shù)量達(dá)到幾百直接在pipeline_state表上加索引查詢(xún)速度依然不錯(cuò)。如果未來(lái)checkpoint 落到 Redis可以考慮用哈希表按節(jié)點(diǎn)存儲(chǔ)恢復(fù)時(shí)只拉取第一個(gè)未完成節(jié)點(diǎn)附近的少量狀態(tài)效率和 SQLite 類(lèi)似。6.3 節(jié)點(diǎn)之間上下文太長(zhǎng)導(dǎo)致成本膨脹的優(yōu)化這是非常隱蔽的問(wèn)題。每個(gè)節(jié)點(diǎn)都拿到上游節(jié)點(diǎn)的完整輸出然后拼進(jìn)提示詞越到后面上下文越長(zhǎng)token 費(fèi)用自然飆升。比如第一步生成了一份兩萬(wàn)字的文檔第二步只是提取標(biāo)題卻把全文重新傳給模型一次這就很浪費(fèi)。更麻煩的是上下文太長(zhǎng)還可能引發(fā)模型“走神”降低輸出質(zhì)量。我建議的優(yōu)化是兩個(gè)方向并行。第一精確裁剪利用input_schema定義下游真正需要的字段執(zhí)行器在build_node_input時(shí)只提取這些字段而不是把整個(gè)輸出對(duì)象塞過(guò)去。第二增加摘要節(jié)點(diǎn)如果下游確實(shí)需要全文概覽先對(duì)長(zhǎng)文本做分段摘要再把摘要作為下游輸入。這兩個(gè)方向配合起來(lái)通常能削減 60% 以上的上下文體積我實(shí)測(cè)五節(jié)點(diǎn)流水線的成本能下降將近一半。6.4 邊界情況任務(wù)中途被用戶(hù)終止、版本變更兼容運(yùn)行流水線時(shí)用戶(hù)可能會(huì)按 CtrlC或者部署新版本后想繼續(xù)舊 checkpoint。如果不在代碼層面對(duì)這種情況做處理恢復(fù)時(shí)很容易出現(xiàn)狀態(tài)錯(cuò)亂。我的做法有兩點(diǎn)一是 checkpoint 表里加一個(gè)schema_version字段每次升級(jí)代碼時(shí)手動(dòng)遞增?;謴?fù)時(shí)發(fā)現(xiàn)版本不匹配跑一個(gè)遷移函數(shù)把舊的節(jié)點(diǎn)輸出結(jié)構(gòu)轉(zhuǎn)成新版本兼容的結(jié)構(gòu)。無(wú)法遷移時(shí)提示用戶(hù)選擇強(qiáng)制重跑受影響節(jié)點(diǎn)。二是在執(zhí)行循環(huán)外層捕獲KeyboardInterrupt先把當(dāng)前節(jié)點(diǎn)標(biāo)記為running表示執(zhí)行到一半。下次 resume 時(shí)會(huì)把running改回pending再繼續(xù)。這樣雖然不能保證完全無(wú)差錯(cuò)但至少能把斷點(diǎn)定位到具體節(jié)點(diǎn)不會(huì)讓整個(gè)任務(wù)從零再來(lái)。另外要提醒的是如果你改了某個(gè)已done節(jié)點(diǎn)的提示詞或者 Agent 參數(shù)舊的 checkpoint 里已經(jīng)保存了它的輸出下次 resume 時(shí)會(huì)直接跳過(guò)你的修改不會(huì)生效。這是“斷點(diǎn)續(xù)跑”的一種副作用。我解決的辦法是每次調(diào)整節(jié)點(diǎn)配置后把對(duì)應(yīng)節(jié)點(diǎn)的狀態(tài)重置為pending或者用一個(gè)force參數(shù)強(qiáng)制重跑指定節(jié)點(diǎn)。我在實(shí)際使用這套架構(gòu)之后最明顯的感覺(jué)是心不慌了。以前遇到長(zhǎng)任務(wù)失敗只能心疼地看著它從頭再燒一遍 token現(xiàn)在無(wú)論哪個(gè)節(jié)點(diǎn)中斷我都能準(zhǔn)確說(shuō)出失敗原因然后一條resume命令讓它接著斷點(diǎn)走。設(shè)計(jì) Pipeline 的過(guò)程也是在訓(xùn)練自己把復(fù)雜的 AI 任務(wù)拆解成更小、更可控的單位。如果你也被“一步到位”式的大模型調(diào)用坑過(guò)不妨用這套思路試一次。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲第一页综合在线| 欧美成人综合| 日本精品五区| 啊啊啊com| 日韩欧美大片免费高清啪啪| 色情乱伦AV| 亚洲一区二区 麻豆传媒| 怡红院一区二区熟女人妻| 96精品久久| 国产原创自拍| 国产黄色视频久久| 久操免费电影| 麻豆影音天美视频| 色婷婷综合久久中文字幕雪峰 | 国产精品自在线发布| 免费一二区| 欧美性五月| 一二三区在线| 激情看片网站| 岛国视频一二三区| 97一区二区三区视频| 久久露脸国产老熟女| 国产后入| 99AV| 中出人妻中文字幕91在线| 国产精品午夜成人福利| 日韩视频小说在线观看 | 亚洲色人| 沈阳熟女高潮对白视频| 亚洲十八禁止| 日本女厕偷拍| 操操啪| 亚洲欧洲日本精品中文a∨| 天天综合网亚洲综合网| 一本色道久久综合熟妇| 热久久国产精品视频大陆精品| 丝袜美腿制服人妻二区中文字幕 | AV免费在线播放一区| 中文字幕,人妻,日韩| 欧美论理片| 又摸又舔在线观看网站| 乱精品一区字幕二区| av午夜影院在线播放| 成人小说另类在线| 日本中文熟女视频| 一级毛片电影免费看| 亚洲天堂资源网| 欧美少妇色图| 久久人妻熟女一区二区| 欧美丝袜中文字幕07在线| 9精品久久| 91狠狠综合久久久久久| 99热这里只有精品9| 思思热国产在线视频| 亚洲精品无码久久AV| 97天堂| 婷婷av在线中文字幕| 一级毛片电影免费看| 日韩欧洲操屄视频| 97精品综合久久| 成人激情无码在线视频| 久久手机好看网站| 大香网伊人久久综合网eew| 六六久久日韩不卡| 欧美久久婷婷| 青青色在线观看| a片在线播放| 丰满人妻无码一区二区三区| 五月丁香影院| 用力操死我| 67194无码不卡| 久久不卡一区二区| 五月天精品| 欧美色亚洲色| 伊人五月天婷婷| 激情专区综合| 997色在线| 国产毛片毛片4p懂色| 天天视频黄网站| 成人短视频在线观看| 亚洲A色| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 最新国产精品久久精品| 91久久久久久| 青青青操| 亚洲欧洲av影音| 亚洲精品官网在线观看| 十八禁网站在线| 亚洲综人| 日韩乱伦视频| 天天狠| 丰满精品人妻少妇久久字幕| 超碰97久久| 国产小视频91| 亚洲美乱| 校园春色 亚洲| 911av网站免费观看| 混色激情av| 国产性感骚丝袜在线| 九九九热精品| 亚洲影院成人| 红杏大香蕉| 青青草一区二区三区四| 中文字幕熟女人妻丝袜| 99国产精品人妻人伦| 中文字幕青青草| 草草网站影院白丝内射| 蜜臀少妇一区二区| 91久久国产精品| 人人操人人搞人人草| 91天堂视频| 夜夜欧美 | 色婷婷六月| 操死我了啊啊啊| 中文字幕久热视频在线| 亚洲欧美在线丝袜| 91 刺激在线| 日韩AV噜噜噜一区二区三区四区| 温婉少妇玩3p| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 亚洲**2021在线观看| 五月丁香综合| 日韩99神马视频片| 强奸乱伦亚洲第一页| 67194无码不卡| 免费观看一区| 伊人操操| 中国探花熟女| 久久综合97| 五月激情小说| 日本人妻最新在线中| 欧洲无码一区二区| 日日操免费视频| 久久久久9| 亚洲欧美日韩不卡人妻| 麻豆天美国美国产| 香蕉国产精品麻豆亚洲欧美日韩| 十八禁黄色成人网站观看| 日韩强奸av| 97在线欧洲| 377p欧洲日本亚洲大胆| 日本一二三免费久久| 99视频在线| 精品69网| 曰韩精品九九无码| 欧美高清18A片| 99久久综合| 国产亚洲女v在线观看| 亚洲素人网| 欧美一级黄片免费播放| AVE乱伦| 99精品伊人| 99热只有这里有精品| 国产91丝袜 在线播放| 少妇69中文| 国产九九九九九九九九| 午夜性生活av免费在线看| 久久综合精品一区二区三区| 免费观看的黄色的网站| 一区二区乱码福利| 九九九久千久久激情蜜桃在线看 | 久久伊人网视频一区二区三区 | 密臀成人视频久久久| www五月| 欧美性爱第1 页| 口爆综合网| 欧美色图另类图片| 偷拍在线观看视频| 97操97色| 成人性爱电影网| 91性色| 欧美男人亚洲天堂| 91亚洲精品青草| 国产99精品一区二区三区免费| 欧美丝袜中文字幕07在线| 东京太热久久久| 黄片aaaaa一区| 欧美中文综合| 国产乱码精品久久久久久| 国内毛片无码一级毛片| 99久久久无码精品国产人| 欧美成人一区二区| 国产精品九9| 大香网站| 在线强奷到舒服的无码视频| 久热影视| 操逼无码操逼| 久久人| 欧美在线干| 97精品久久久久久久| 大奶啊啊好爽 | 69人妻精品丰满熟女区| 亚洲伊人久久精品狠狠在线| 婷婷色综合| 欧亚性爱啪啪| 国产精品免费美女视频| 亚洲色图欧美色图日韩色图| 极品综合| 久久综合国产精品国产| 狠狠操官网| 激情黄色片在线观看| 亚洲影视综合| 欧美色视| 九九九色| 91被操| 欧美亚洲中文| 99热在线播放| 国产精品九九九| 97碰碰色| 人妻三级在线中文字幕| 被窝影院午夜看片无码| 欧美色性爱| 午夜超爽| 99综合视频| 色情综合网| 日本天天操| 男人天堂久久精品| 丝袜狠狠草尤物人妻av91| 91九久| 91久久午夜无码鲁丝片久久人妻| 久操在97| 久久精品操| 精品人妻少妇| 国产又色又粗又黄又爽| 免费一级a毛片久久久久久鸭绿欲| 蜜臀99久久国产| 九九九九一区| 嗯嗯啊啊操我| 久久精品国产亚洲妲己影视| 亚洲精品xxx| 免费毛片在线播放| 九九无码久久精品视频| 91jk色拍| 久草综合网| 日韩精品-原创伙伴| 欧美色图片| 啪啪啪精品| blacked精品一区国产| 亚乱色| 色婷婷丁香五月| 天天干天天日天天射黄色大片 | 一个色导综合| 亚洲欧美在线观看2021 | 综合网亚洲在线| 97色网| 操操逼视频| 日本东京热久久久电影| 日韩 欧美 另类 人妻| 在线只有精品| 成人在线视频一区| 9精品久久久久| 女人综合网| 九色精品视频导航1| 欧亚在线视频| 欧亚不卡| 搡老女人老91妇女老熟女| 日本一区二区三区午夜观看| 91人妻爽爽人人做人人澡| 91黑丝美女| 一本色道综合久久欧美日韩精品| 亚洲天堂中文字| 激情小说五月天| 日日骚精品视频| 亚洲资源站| 久久香蕉综合一本到3atv| 欧洲天天在线| 人妻激情视频| 99精品热| 国产成人啪一区二区| 2019天天干| 国产精品久久久久久久久AV大片| 日韩传媒在线| 天天干天天舔| 91啪9色| 少妇天堂| 无套内射性感少妇视频| 蜜桃狠狠色伊人亚洲综合| 一级黄色性爱裸体视频| 国产一区二区三区不卡手机在线| 97在线视频免费| 伊人久久大香大香线蕉中文| 亚洲日韩欧美一区二区| 亚洲色欲天天天堂色欲网女| 18一区二区三区| 亚洲色交| 大香蕉97久久| 我要色综合网| 蜜臀久久99精品久久久老,,| 丰满人妻-区二区三区免费看 | 天天干天天中出av| 国产亚洲性生活视频播放| 中文字幕二区日韩天堂| 天天干人人看综合| 中文字幕在线观看网页| 国产精品美女视频诱惑| 91人妻丝袜无码| 欧州91高潮| 韩日精品四区| 97视频在线看| 北条麻妃99精品青青久久| 中文字幕一二三| 成人情色一区二区| 国内伊人久久久久久网站视频| 任你爽视频| 国语少妇精| 欧美嗯啊……在线观看视频免费| 青青操网| 99精品高潮| 无码免费精品高清| 日本媚薬中文字幕在线| 91在线|亚| 九九碰九九爱97超碰| 神马福利久草| 在线A日本| 蜜臀va69| 色狠狠综合噜一二三区| 久久这里是精品| 嫩草影院永久在线制服丝袜| 丁香五月天社区| 免费成人自拍视频在线| 在线情色电影 91大 | 91精品国| 久久精品欧美一区蜜桃| 欧美另类综合久久| 欧美姓爱综合网| 青青草日逼视频| 草莓精品视频在线免费观看| 国内毛片四区| 国产精品在线网站| 爽爽淫人网| 翔田千里Av在线| 超碰欧美97资源| 亚洲欧美精品91| AV一区观看| 一本一道久久综合久久| 亚洲AO在线| 国产女生在线| 免费黄色片。| 亚洲色图 欧美| 欧美亚州综合图片| 欧美有码激情视频一区二区三区| 欧美一级特黄淫片在线观看| 综合色91| 超碰在线1234区| 国精品一区二区三| 丁香婷婷啪啪| 大伊香蕉在线视频免费| 日韩 国产 欧美自拍| 激情四射婷婷六月天| 多乙久久久久久| 亚洲国产精品无石码久久| 久久中日麻豆| 资源在线观一 二| 美國A片| 女人与公拘交酡2020视频| 色色青青久久| 欧美日韩亚洲高清不卡一区二区三区| 十八禁啪啦拍视频无遮挡| 性爱网站一区二区| 人人操,人人液| 国产熟码AV| 色五月婷婷在线| 国产精品爽爽v| 懂色Av| 亚洲成人在线乱码色午夜| 蜜臀久久久国产| 蜜臀精品1区2区| 开心五月婷婷| 黄页大片在线观看| 大香蕉在线视频15| 亚洲天堂男人在线| 婷婷色色五月天| 综合久久欧美| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 黑人精品欧美一区二区蜜桃| 狠狠干妹子| 国产免费久久精品99re韩国| 天天干天天日天天射黄色片| 高树玛利亚无码流出| 校园春色之综合网| 九九九久千久久激情蜜桃在线看 | 国产精点久久久成人| av在线不卡一区二区三区| 久久超碰国产一区二区三区| 不卡日本一区二区| 一级做a爰片性色毛片久久| 无码人妻1727| 青娱乐休闲视频在线观看| 日本506070| 小说区 图片区色 综合区| 亚洲精品97久久| 97天天| 色姑娘综合网| 蜜乳AV免费观看| 天天日天天干天天色| 成人一二| 精品欧美А∨无码黑人大荫蒂 | 超碰 国产熟女精品一区| 国产亚热在线久久| 97伊人| 一起草视频在线| 91情色| 亚洲精品乱码线路中文字幕| 亚洲精品人妻吞精av | 人妻激情视频| 免费人成毛片乱码| 久久亚洲AV无码专区首页| 久草网站免费在线观看| www色色com| 91九九九馒头| 精品一国2| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 久超碰这里只有精品| 色九九久九九| 日韩欧美性爱电影在线观看| 中文字幕乱在线伦视频中文字幕乱码在线| 爆操无码| 亚洲一二三四区机械| s片在线观看| 精品少妇99| 亚洲国产一级黄色视频| 国产一级片| 欧美精品成人亚洲| 五毛骚逼极品美女怕怕| 成人性生活高清视频在线播放| 国产精品一区二区a| 国产东北女人在线视频| 青草视频在线看看看看看看看看看| 九久9热| 少妇蹲下买菜露大唇0| 国产一区在线看| 亚洲色图尤物视频| 久久草草欧美精品| 激情文学 亚洲图片| 啊v在线观看视频| 国产日韩区| 久久人妻视频| 欧美日韩人妻少妇 一区二区三区| 97这里有精品| 性做久久久久久久| 啊啊啊要高潮了| 无码人妻1727| 亚洲精品三| 97超碰亚洲| 欧美97爱| 色婷婷电影| 青青欧洲黑| 成年无码动漫av片无尽在线| 婷婷五月天色色| 色妇91| 9国产超碰| 亚洲第一页色| 亚洲图片欧美偷拍| 黄色视频特级毛片| 亚洲性猛交| 日本成人免费一区二区三区| 欧美极品少妇交| 操久久久久| 亚洲性爱无码乱伦av| 中国小夫妻勾搭露脸淫荡对白| 国产成人久久精品蜜臀| 亚洲图片 91| 亚洲高清欧美总合| 色色热| 日日骚网站| 色五月首页| 性高潮久久久| 日韩三级一区 | 午夜爽爽爽在线观看永久入口姬片| 中文字幕少妇色| 91w欧美| 91熟女熟妇视频网站| 蜜臀99久久精品久久久久久| 人妻熟女av国产网站| 啊啊啊啊在线播放| 偷窥自拍A片| 综合色久欲| 国内三级自拍小视频在线观看| 超碰97资源网亚洲| 亚洲五月天激情| 欧美性性性| 色色亚洲| 亚洲日韩精品久久久久一区壹牛 | 中国熟女老妇仑乱一区二区三区| 中文字幕乱码人妻一区二区三区,99精品| 97欧美| 成人AV素股で擦久久| 91精品国产91久久青草 | 中字幕人妻一区二区三区| 综合网欧| 日韩久久激情精品| 欧美性爱第1 页| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 国产精品亚洲天堂网址| 99精品综合久久久久五月天| 夜夜操美女| 久久久久久久国产a∨| 96麻豆精品一区二区三区| 亚洲人妻中文高清| 五月天人妻综合| 大香蕉久操| 福利视频香蕉免费一区二区在线| 亚洲一区二区三区麻豆传媒| A片 AV一级在线播放观看免费| 亚洲午夜精品久久久中文影院| 婷婷五月天小说| 成年人网站在线免费观看| 97天天弄| 丁香五月天社区| 日韩激情无码影院| AV中文字幕三四五| 丰满搜索结果 -第18页- 久久高清无码 | 诱惑网综合| 欧美少妇性乱| 又黄又爽在线观看视频| 性在久久久久久| 91bbbbbb| 欧美一区二区三区黄色影视| 91婷婷伊人狠人| 蜜乳AV一区二区三区四| 伊人一级免费黄片| 97国产|免费| 欧美 熟女 日韩| 国产女人高潮视频| 国产精品一区二区 尿失禁| 少妇被c 黄 免费观看| 天天插天天操天天摸天天射天天看| 久久夜夜| 加勒比海色香蕉婷婷| 美日韩一二三区| 大香交伊人网| 国产女性无套 免费观看| 四虎国产精品永久在线囯在线 | 亚洲欧美在线丝袜| 成人在线午夜视频一区| 久久精品国产亚洲av水密被窝| 秋霞一区二区三区四区五区六区七区| 91Chinese在线| 久久成人国产| 中文字幕一区二区三区四区在线视频| 亚洲熟女诱惑| 欧美韩日精品99综合| 99re在线视频| 欧美97日韩精品| 91暧暧| 欧美亚洲激情小说| 综合熟女| h在线看免费版在线看| 综合色啪| 婷婷综合五月天| 精品一区二区成人动漫| 啪一啪免费视频| 中文字幕一区二区三区高清| 色www精品视频在线观看| 亚洲在线欧美| 91爱| 91这里只有精品| 夫妻日逼| 亚洲国产丝袜熟女av| 欧美情色亚洲| 91熟女丨91老女人| 色欧美综合| 91老熟女视频| 日本不卡一区| 国产AAAAAABBBBB| 精品久久无码午夜福利| 天天躁日日躁AAAAXXXX国产 | 亚洲一区二区麻豆影院| 东京热男人的天堂网| 亚洲综合激情五月久久| 91麻豆天美国产欧美日| 色悠久久久av| 人人摸人人添人人操| 国产一在线观看| 26uuu性物| 多乙久久久久久| 久精品无码av一区二免费国产在线观看| 国语国产操逼伊人AV网| 高清国产av无码| 婷婷丁香六月| 欧美三级免费伊人| 91爱欧美| 人妻熟女一区二区在线视频| 日韩亚洲欧美中文字幕| 日小BB小视频| 午夜男人一级A片7777| 国产少妇肉丝在线观看| 亚洲一区二区三区麻豆传媒| 欧美在线 亚洲| 国内毛片四区| 黑人精品XXX一区一二区| 思思热er精品视频| 男人的天堂不卡一区二区 | 啊啊啊啊啊啊啊啊在线观看| jizz啪啪| 国产欧美亚洲精品a第2页| 久久极品一区二区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 新婚人妻扶着粗大强行坐下| 久久手机好看网站| 精品妇操一区二区三区| 美女诱惑一区| 久久久久久国产精品免费网站| AA丁香综合激情| 97色色国产视频| 亚洲区 欧美区| 日本1区2区不卡视频| 亚洲操逼网| 亚州综合图片| 探花视频免费观看国产专区| 999国产精品999| 中文字幕少妇色| 美女91网址 | 欲射影视| 日韩欧无码一区二区三区免费不卡| 亚洲AV秘 精品久久老牛影视| 97久久资源| 欧美日韩精品青青| 国产东北女人在线视频| 午夜久久一区二区无码中出| 99在线观看视频在线高清| 国产视频一区二区三区在线免费观看| 先锋精品av色鲁| 91精品婷婷国产综合久久| 国产三级在线现体验区| 91亚洲黑人| 啊啊啊骚| 96精品久久久久中文字幕| 亚精品无码毛片一区二区三区| 97欧美在线| 久久9视频| 男女性扦B| 性影在线视频| 一区二区不卡| 26uuu偷拍亚洲欧洲综合| WWW4虎| 97久久国产| 国产激情综合五月久久| 东北女人性交| 亚洲啪啪性视频| 一本色道久久综合狠狠操| 欧美另类综合久久| 天堂亚洲精品久久老牛| 国产女人和拘做爰视频 | 天天草AV| 日韩一区二区高清在线观看的| 69人妻精品丰满熟女区| 亚洲国产91精品一区二区久久| 超碰97在线 欧美 国产| 午夜国产成人精品视频| 国产精品亚洲四五区在线观看| 成人羞羞视频国产| 亚洲精品一二三四区| 起碰97| 涩爱AV在线| 日本国产亚洲一区在线观看| 9 7超碰在线免费观看| 中文字幕五月婷婷免费| 亚洲日韩熟女人妻高清在线| 欧美人妻久久精品二区三区| 久久婷婷苹果| 中文字幕啊啊啊在线观看视频| 搡老女人老91二区| 天天摸夜夜摸| 无码国产Av| 死我十八禁| 国产精品色色| 被窝影院午夜看片无码| 国产欧美后入| www久久99| 亚洲国产熟妇综合色专区| 日本三级小说中文字幕| 国产91啪| 精品日日人妻| 欧美综合色站| 女人午夜视频777| 91A欧美电影网站| 国产天天骚| 91c色| 91性情| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 亚洲视频一二区| 欧美特大黄一级片片免费| 亚洲91色| 亚洲凸凹超碰成人| 色欧美天天| 欧美黄色片在线播放| 97伊人超碰| 蜜桃久久久久久久| 日本高清一区二区在线| 福利视频香蕉免费一区二区在线| 香蕉av一区二区三区| 96精品在线| 日本天天操| 欧洲久久一二线| 天天干夜夜肏| 欧美午夜色妇色鬼| 亚洲五月婷婷| 久操凹凸视频| 99无码狠狠久久| 女人天堂网| AV丝袜少妇| 婷婷成人五月天| 青娱乐国产精品| 亚洲一区二区三区春色| 狠久久| 日日骚精品视频| 日本不卡高清免v欧美日韩在线观看| 国产尤物AV尤物在线观看不卡| 新亚洲无码| 超碰97人妻自拍| 亚洲日韩久久精品一区| 91黑丝少妇| 超碰国产在线| 黄色一级视| 三级色综合| 日韩精品在线放| 91成人无码| 久久久久九九九九九| 综合97亚洲| 天堂日本亚洲欧美| 男人的天堂啪啪啪啪啪蜜桃不卡| 欧美日韩国产色图在线| 久久久久久久亚洲Av无码| 亚洲AV成人精品网站在AV| 男人天堂欧美| 国产精品农村妇女| 97久久超碰国产精品| 青青草无码视频| 欧美A√综合网| 亚洲精品欧洲精品| 成人日本精品九区| 精品人妻一区二区三区-国产精品| 婷婷六月天| 五月婷婷五月天| 丁香六月综合激情| 国产精品青草综合久久| 91精品久久综合熟女| 在线看片国产精品每日更新| 亚洲欧美自拍偷拍| 九月丁香婷婷色| 国产高清无码一区三区二区| 欧美一区二区福利在线| 无码外流操逼视频| 亚洲 自拍偷拍 欧美| 九月丁香婷婷色| 岛国在线一区二区三区| 日韩国产乱子伦App| 五月婷婷丁香中文字幕| 性做久久久久久免费观看软件| 亚洲精品精品一区二区| 三级片网站在线播放| 自拍啪啪视频| 新版天堂中文资源8在线| 激情综合网五月婷婷五月天| 精品v日韩欧美国产| 精品一二三区久久AAA片| 久久一区二区三区入口| 丁香婷婷久久| 四虎 精品 WWW| 伊人97色天使| 91欧美性| 国产农村妇女毛片精品久久| 国产精品久久久久久久久久久久久久吹| 久久 精品| 18禁止看精品中文字幕| 亚洲欧美综合区自拍另类| 国产女生在线| 日韩免费人妻色情网站| 狠狠操一区二区| 经典丝袜一区| 高清孕妇孕交 交| 超碰免费人妻人人| 日韩欧美综合激情| 99免费视频| 日韩精品9999| 国产日韩中文字幕欧美| 好爽视频在线观看视频 | 熟妇一区二区三区| 日韩人妻丝袜美腿中文| 欧美在线天堂| 日韩精品国产一区二区| 再深点灬舒服灬太大了好硬好爽| 95人妻爽爽人人做人人澡 | 永久免费发布性爱网| 亚洲1区| 熟女天天干| 欧美黑人与女人91| 91视频伊人| 国产亚洲综合欧美一区| 99啪啪视频| 国产2.3.4区| 国产91av在线播放| 玖玖在线视频| 97超碰免费人人性爱| 日韩熟女精一区二区三区不卡| 丁香六月激情| 亚码激情| 黄页网站成人免费| 亚一综合久久久久久久久久| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 欧美性爱一内片一区二区三区| 激情综合av| 亚州性色| 男女真人网18| 亚洲吊色| 国产1024在线播放| 大香蕉AV在线| 99re在线视频国产| .精品人妻一区二区三| 男人兔费天堂| 九九五月天| 日韩一级特黄av毛片| 欧美激情超碰777| 人人妻人人玩人人澡人人爽| 中文久久爆乳| 天堂综合| 3d成人精品一区二区| 男人干美女| www国产无码| 亚洲天堂区| 啊啊啊啊嗯嗯在线久久久| 久久精品国产亚洲AV无码电影| 久久鲁夜| 免费少妇一区二区| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 国产精品夜夜| 志村玲子视频一区二区| 国产人妻久久精品一区二区三区| 国产1769在线| 内射中国少妇高清视频免费视频 | 加勒比av官网在线| 亚洲免费成人在线高清无码视频| 亚洲男人天堂2012| 日韩无码视频黄色| 中文字幕在线观看第二页| 天天综合网网欲色| 欧美成人9797| 百度百度日本操逼| 蜜奶av| 明星性猛交ⅹxxx乱大交| 嗯啊免费视频| 国产在线能看的你懂的| 精品久久久久久久久久久久| 日本黄大片在线观看视频| 天天综合香 ld视频| 国产精品露脸在线观看| 人人超碰在线观看黄| 啪啪视频亚洲第一| 激情小说亚洲视频| 九色婷婷| 蜜臀AV午夜精品久| 91人妻超碰| 国产精品成久久久久午夜午夜| 欧亚久久偷拍视频| 国产一级操B视频| 人妻喷水| 欧美另类色图片| 免费观看网黄| 九9热伊人| 人妻人人操| 大学生美女口爆| 啊啊啊啊二区好大| 思思在线免费视频| 少妇天堂| 国模不卡一本二本三电影| 手机在线播放国产福利| 91亚洲黄色网| 草b在线| 国产精品无码av在线| 欧美色图欧美| 日韩精品人妻中文字幕有码午| 最新岛国大片| 伊人网在线点播| 久久本道| 国产一区二区欧美日本| 国产精品播放| 少妇色综合| 亚洲男人天堂Av| 亚洲国产av中文字幕久久| 日韩青久久| 青青草在线成人视频| 亚洲欧综合另类无码一区| 99re黄 | 色婷婷六月丁香七月婷婷| 亚洲国产中文字幕| 久久本道| 国产超碰| 国产精品4p在线观看| 亚洲自拍小说| 亚洲揄拍网| 中文字幕五区| 操逼操操操91| 国产Av超碰| 日韩小电影| 九九超碰综合网| 男人的天堂成人的社区| 久久综合激情| 岛国网址国产| 在线午夜成人无码视频| 97操B| 久九9精品| 美女淫穴| 国产九月婷婷| 91久久久久久久久18| 在线观看高清AV| 国产精品第一页国产大屁股视频免费区| 99热18这里只有精品| 欧美无圣光在线| 国产精品交换一区二区| 久草福利在线资源站| 天天操天天舔| 亚洲精品官网在线观看| 澳门黄片一香蕉视频| 亚洲图片激情小说| 久久99九九九九6666免费观看软件| 中文字幕AV片| 天美欧美国产| 久久做97| 18精品一区| 特污免视频| 少妇二级| 精品一区二区三区蜜桃臀赵总| 熟女人妻一区二区三区| 新婚人妻扶着粗大强行坐下| 艹精品| 亚洲图片色图欧美另类| 黑人精品XXX一区一二区| 超清中文乱码字幕| 97国产人人| 男人天堂网站| 天美精品原创av片国产| 97超碰人妻| 中文字幕后石码四区五区| 欧美人妻少妇| 亚洲国产熟妇综合色专区| 国产传媒日韩| 日本视频在线中文字幕| 永久免费观看的毛片的网站| 尤物视频视频官网| 久操91视频| 性久久久| 久久五月天婷婷丁香中文字幕| 精品国产91内射久久| 熟女乱伦A| 约操熟妇| 91GD.COM| 成人五月香网在线| 亚洲熟妇图片| 亚洲欧美另类少妇精品| 亚洲国产精品久久久男人的天堂| 丝袜亚洲91| 99日视频在线免费| 熟女熟妇一区二区三四区| 国色综合天| а√天堂资源官网在线资源| 人人玩人人添人人澡免费| 国产精品麻豆视频网站| 国产亚洲色婷婷久久99精品91葵花宝典| 久精品无码av一区二免费国产在线观看| 午夜男女爽爽爽在线视频| 亚洲免费看片| 欧美一区二区情色| 久久久99999久网站| 少妇高潮喷水无套久久久久久| AV色女综合| 日韩成人私密一级精品av| AV和黑人在线播放| 国产又粗又长又爽又色| 欧美美女自慰一区二区三区| 亚洲免费97免费| 91精品操美女| 丰满熟女一区二区三区在线播放| 亚洲成人精品在线一区| 凸凹视频在线观看| 2020中文字幕| 熟妇国产免费一区| 人妻少妇精品视频一区二区三区| 女欧美一区二三区| 在线强奷到舒服的无码视频| 国产91美女高潮| 操淫穴亚洲五月丁香 | 伊人9| 啪啪视频免费在线观看| 免费观看的黄色的网站| 久无码| 欧美久久人体| 欧美偷拍区| 日本三级韩三级99久久| 天天日美女的B| 亚洲无992tv| 超碰成人国产| 亚洲第一色页夜| 男人的天堂免费| 狠狠色噜噜狠狠狠狠狠色综合久久| 9久综合网| 超碰在线在公开超碰在线在公开| 亚洲在线网站| 午夜一区| 嗯嗯啊啊好大好爽| 日本影视久久免费| 日本韩欧美在线播放a| 国产精品久久久777| 超碰美女97| av婷婷色婷婷色六月| 神马久久网| 国内外内射高清视频| 久久精品三级影视| 天天射夜夜| 亚洲码在线中文在线观看| 激情小说五月天| 欧美性五月| 淫荡少妇免费| 久久超碰免费的| 91精片| 首页亚洲国产高跟丝袜诱惑视频| 亚洲高清在线se| 在线播放免费av福利片| 大香蕉在线视频15| 97超碰超| 99在线精品观看99| 天天爱综合网| 日韩精品人妻一| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 热思思免费视频| 亚洲nv男人的天堂网| 熟女久久| 欧美日韩操逼嗦吊| 香蕉大久久久| 粉嫩不卡一区二区性爱| 97超碰这里只有精品| 很黄很色的视频在线观看| 神马久久中文字幕| 亚洲?V无码专区在线电影| 天天综合网在线| 国产亚洲日韩欧| 久久视网78| 少妇熟女1区2区3区| 99999精品成人| 强奸乱伦 亚洲一区| oumeisetupian| 人人做,人人操,人人摸| 男人天堂久久日韩| 国产对白刺激视频| 日本999精品| jizzjizz欧美| 亚洲影视第一页| 婷婷中文网| 99少妇内射| 丝袜六区| 天天做天天爱夜夜爽毛片试看| 91色爽欧美| 国产在线激情视频| 91艹| 强奸乱亚洲| 老熟女91视频| 成人熟女视频一区二区三区| 久久久国产av美女私房| 久久久久网站-538在线视频-欧美永久乱码| 免费一级性爱久久| 精品一区二区久久| 亚洲中文字幕精品久久久久久直播| 91N综合网| 9久久9综合| 精品成人动漫一区二区| 人妻少妇久久| 992这里有精品| 嫩草美女久久| 九九九九九九九| 国产av尤物| 日本精品网站在线中文| 日韩中文9| 91麻豆天美国产欧美| 中文色综合| 熟人人妻少妇精品久久| 高清不卡国产| 在线人人人人人人精品超| 伊人九九| 久久鲁夜| a网站免费观看| 天天狠操| juliaann欧美丝袜办公室| 青娱乐大香蕉| 久久久久久人妻| 国产精品久久久久久照片| 亚洲色图日韩丝袜制服一区二区五月在线| 九九九综合精品| 亚卅熟女乱色| 国产黄色小视频网站| 欧美亚洲天天| 日韩无码AB| 国产精品情侣啪啪| 日韩欧美经典在线观看| 亚洲A曰本VA欧美VA视频| 人妻熟女一区二区三区视频| 最新精品久久蜜桃| 天天日老熟妇| 999国产精品999| 免费av高清无码| 男人的午夜天堂| 免看60秒涩涩视频| 欧洲一区二区三区免费| 麻豆 欧美 日韩| 精品久久人妻成人网| 国产精品区在线12p| 久操电影| 亚洲色图A| 亚洲AV色图一区| 超碰在线97国产| 亚洲中文字幕有码视频一区二区三区| 破苞ⅩXXX性无码动漫无码| 偷拍亚洲熟女视频播放| 26uuu最新| 91亚洲欧洲| 97超碰精品图片| 欧美亚洲韩国视频十五区 | 欧美一区二区三区四区综合| 亚洲色图图片| 欧美伊人电影| 精品人妻一区二区蜜桃视频 | 亚洲欧美日韩免费电影| 午夜舔阴达高潮视频免费看| 人妻少妇精品视频一区二区三区| 久久久少妇诱惑精品视频| 天天操人人操骚逼网站| 色阁阁AV综合网| 久艹日日日| 国产美女自拍视频| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 99色在线| av草草在线电影| www. 男人天堂成人在线| 亚洲区限制级| 91国产美女丝袜足交精品视频| 人人爱夜夜爱| 人人喜人人妻| 四虎免费看黄| 免费一级精品啪啪视频| 91国产操逼视频| 白丝被操91| 深夜国产一区二区三区在线看| 亚洲日韩国产欧美综合v| 亚洲激情网| 亚洲成人一二三区| 91丝袜在线视频| 亚洲高潮影院| 亚洲一区二区三区在线激情| 樱花蜜乳av| 免费久久精品麻豆一区二区av| 91色艳| 91亚洲欧美色图| 亚洲久草AV色图| 男人在线天堂| 日本成人A片免费看| 99热这里是精品| 久久天天躁日日躁狠狠躁| 疯操AV| 伊人一级免费黄片| 伊人女女资源在线观看|