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

ARTICLE DETAIL

資訊詳情

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

全棧AI修圖Agent實(shí)戰(zhàn):從架構(gòu)設(shè)計(jì)到模型調(diào)度與踩坑記錄

全棧AI修圖Agent實(shí)戰(zhàn):從架構(gòu)設(shè)計(jì)到模型調(diào)度與踩坑記錄 “又一個(gè)新項(xiàng)目完結(jié)”——這句話(huà)說(shuō)出口的時(shí)候我終于能把“全棧 AI 修圖 Agent”從待辦列表里劃掉了。這個(gè)項(xiàng)目從立項(xiàng)到交付前后差不多一個(gè)多月期間推翻過(guò)一版架構(gòu)也踩了不少模型和前后端的坑。如果你最近也在折騰 AI 全棧項(xiàng)目或者想看看 Agent 工程化到底怎么落地這篇博文應(yīng)該能給你省下不少時(shí)間。一句話(huà)介紹這個(gè)項(xiàng)目它是一套基于自然語(yǔ)言的修圖系統(tǒng)。用戶(hù)上傳一張圖輸入一句“幫我把背景換掉順便調(diào)亮一點(diǎn)”系統(tǒng)里的 AI Agent 會(huì)自動(dòng)理解意圖、拆分任務(wù)、調(diào)度模型、執(zhí)行修圖最后返回成圖。整個(gè)系統(tǒng)覆蓋 Web 端和移動(dòng)端前端用了 Vue3 和 Uniapp后端用的 Golang中間夾了一層 Agent 任務(wù)編排與模型網(wǎng)關(guān)。本文會(huì)把項(xiàng)目的設(shè)計(jì)思路、技術(shù)選型、核心實(shí)現(xiàn)和踩坑記錄全部拆開(kāi)來(lái)講適合想獨(dú)立做出一個(gè) AI 全棧作品的開(kāi)發(fā)者參考。1. 項(xiàng)目整體設(shè)計(jì)與需求拆解1.1 這個(gè)項(xiàng)目到底想解決什么問(wèn)題傳統(tǒng)修圖軟件的學(xué)習(xí)成本很高。想給一個(gè)非專(zhuān)業(yè)人士解釋清楚“圖層、蒙版、選區(qū)、曲線(xiàn)”實(shí)在太難了。哪怕是我自己遇到批量老照片修復(fù)或者一鍵換背景也不可能每張圖都去 Photoshop 里手動(dòng)操作。所以這個(gè)項(xiàng)目的核心定位非常明確用自然語(yǔ)言把修圖意圖說(shuō)清楚剩下的交給 Agent 去拆解和執(zhí)行。舉一個(gè)最能說(shuō)明問(wèn)題的例子。用戶(hù)輸入“把照片的背景換成秋天的銀杏葉”傳統(tǒng)的做法是什么樣的需要把人像摳出來(lái)、生成新的背景、再做人像與背景的融合、最后統(tǒng)一色調(diào)。這一套流程在 Photoshop 里至少涉及四五個(gè)環(huán)節(jié)。而在我們的系統(tǒng)里Agent 會(huì)把這句話(huà)拆成“語(yǔ)義分割人像、生成銀杏背景、圖像融合、色彩匹配”四個(gè)子任務(wù)再依次調(diào)用對(duì)應(yīng)的模型工具最終合成一張成品圖。用戶(hù)不需要理解任何技術(shù)細(xì)節(jié)只需要表達(dá)“要什么效果”。這就是 Agent 和普通接口的本質(zhì)區(qū)別。普通接口是“請(qǐng)求-處理-返回”的單次服務(wù)。Agent 則是一個(gè)帶循環(huán)判斷的系統(tǒng)接收用戶(hù)需求、調(diào)度工具、檢查結(jié)果、決定是否繼續(xù)調(diào)整直到任務(wù)完成或者達(dá)到輪次上限。1.2 核心功能與能力邊界在實(shí)際開(kāi)發(fā)之前我先把功能邊界畫(huà)了一個(gè)表確定了第一版必須支持和可以延后的部分。這里直接把我們項(xiàng)目最初的功能清單分享出來(lái)功能模塊具體能力優(yōu)先級(jí)圖片上傳與存儲(chǔ)支持 JPG/PNG/WebP統(tǒng)一壓縮到 2048pxOSS 存儲(chǔ)必須人像美化磨皮、美白、瘦臉等參數(shù)化操作必須背景處理?yè)笀D、背景替換、背景虛化必須老照片修復(fù)去噪、上色、超分必須色彩調(diào)整提亮、加濾鏡、色溫調(diào)整必須畫(huà)面擴(kuò)展以圖生圖方式擴(kuò)展畫(huà)面外區(qū)域延后批量處理一次提交多張圖延后風(fēng)格模板一鍵套用某種預(yù)設(shè)風(fēng)格延后第一版不做批量處理是我反復(fù)權(quán)衡以后的決定。原因很簡(jiǎn)單Agent 帶多輪工具調(diào)用的場(chǎng)景里單張圖的執(zhí)行鏈路已經(jīng)很復(fù)雜如果再加上批量任務(wù)的并發(fā)編排問(wèn)題排查難度會(huì)成倍增加。先跑通單張閉環(huán)再往橫向擴(kuò)展是這一類(lèi)項(xiàng)目的穩(wěn)妥節(jié)奏。1.3 Agent 修圖與傳統(tǒng)修圖的架構(gòu)差異很多剛接觸 Agent 開(kāi)發(fā)的人會(huì)陷入一個(gè)誤區(qū)以為 Agent 就是在普通后端接口前面加一層大模型接口用戶(hù)說(shuō)什么直接轉(zhuǎn)給大模型大模型返回什么就展示什么。但真正做過(guò)以后你會(huì)發(fā)現(xiàn)修圖場(chǎng)景完全不是這么回事。一張圖的修圖結(jié)果沒(méi)辦法在文本對(duì)話(huà)里直接返回大模型能做的只是“決定該做什么”具體的圖像處理必須由后端去調(diào)模型完成。所以我們的架構(gòu)里Agent 扮演的不是“回答者”而是“調(diào)度中樞”。它接收用戶(hù)需求輸出結(jié)構(gòu)化的工具調(diào)用指令后端拿到指令去執(zhí)行真實(shí)的圖像處理執(zhí)行完再把結(jié)果摘要回傳給 Agent讓它判斷任務(wù)是否結(jié)束或者下一步該做什么。這個(gè)設(shè)計(jì)直接決定了后續(xù)數(shù)據(jù)庫(kù)要怎么設(shè)計(jì)、接口要怎么通信、前端狀態(tài)要怎么管理??梢哉f(shuō)所有在開(kāi)發(fā)過(guò)程中讓人頭疼的問(wèn)題最終都指向同一個(gè)根因這是一個(gè)異步、多步驟、帶狀態(tài)的 AI 工作流而不是一個(gè)同步的查詢(xún)接口。2. 技術(shù)選型與整體架構(gòu)設(shè)計(jì)2.1 前端為什么選 Vue3 和 Uniapp前端選擇 Vue3首先是因?yàn)閳F(tuán)隊(duì)技術(shù)棧本來(lái)就是 Vue后面接手項(xiàng)目的人不至于看不懂。另外一個(gè)更實(shí)際的原因修圖工作臺(tái)的界面狀態(tài)非常復(fù)雜畫(huà)布區(qū)、參數(shù)面板、歷史記錄、指令輸入框之間需要頻繁跨組件通信。Vue3 的組合式 API 在處理這類(lèi)復(fù)雜交互時(shí)代碼組織形式比 Vue2 的 Options API 清晰得多。移動(dòng)端選擇 Uniapp考慮的是投入產(chǎn)出比。我們的目標(biāo)不只是做 Web 端還希望用戶(hù)能在手機(jī)上隨手拍一張圖直接處理。Uniapp 一套代碼能同時(shí)輸出 H5 和原生 App雖然性能上不如真正的原生開(kāi)發(fā)但對(duì)于圖片展示和表單交互這種場(chǎng)景已經(jīng)完全夠用。更關(guān)鍵的是uniapp 對(duì) Vue 語(yǔ)法的兼容度很高Web 端的一些邏輯代碼甚至可以直接復(fù)制到移動(dòng)端使用省了非常多的重復(fù)工作量。這里要補(bǔ)充一個(gè)經(jīng)驗(yàn)如果你只有一個(gè)前端同學(xué)想做多端Uniapp 是合理選擇但如果是重交互的圖片編輯器建議 Web 端還是單獨(dú)用 Canvas 和 WebGL 做好基礎(chǔ)再考慮遷移。我們第一版把大部分復(fù)雜操作放在 Web 端移動(dòng)端只做上傳、預(yù)覽和結(jié)果展示就是為了避開(kāi)移動(dòng)端 Canvas 性能的坑。2.2 后端為什么選擇 Golang后端選型我其實(shí)考慮過(guò) Node.js、Python 和 Golang 三個(gè)方向。Node.js 的好處是前端同學(xué)能直接上手但我們的任務(wù)編排層涉及大量并發(fā)調(diào)度我希望有一個(gè)更強(qiáng)的并發(fā)模型。Python 在 AI 生態(tài)里確實(shí)無(wú)敵但部署要帶運(yùn)行環(huán)境和一堆依賴(lài)維護(hù)起來(lái)并不輕松。最后敲定 Golang理由有三個(gè)。第一Goroutine 的并發(fā)模型對(duì) AI 任務(wù)調(diào)度非常友好。一個(gè)修圖 Agent 任務(wù)會(huì)拆成多個(gè)子任務(wù)其中一些子任務(wù)之間是可以并行的比如同時(shí)做人像摳圖和色彩分析。用 goroutine 做并行調(diào)度比起線(xiàn)程池和協(xié)程都更直觀。第二Golang 編譯出來(lái)就是單個(gè)二進(jìn)制文件部署到服務(wù)器沒(méi)有任何環(huán)境依賴(lài)問(wèn)題。我們的 AI 模型部分雖然跑在獨(dú)立的 GPU 機(jī)器上但服務(wù)端只需要通過(guò) HTTP 調(diào)用模型接口所以 Golang 并不影響 AI 能力的接入。第三Gin 框架提供了非常簡(jiǎn)潔的路由和中間件機(jī)制SSE 流式輸出的實(shí)現(xiàn)也足夠穩(wěn)定。我們整個(gè)后端只用了 Gin、GORM 和 SSE 相關(guān)的幾個(gè)標(biāo)準(zhǔn)庫(kù)沒(méi)有引入額外重框架。2.3 AI 模型層本地模型與云端 API 混合路線(xiàn)模型層的設(shè)計(jì)是這個(gè)項(xiàng)目里最考驗(yàn)取舍的部分。最開(kāi)始我考慮過(guò)全部接入開(kāi)源模型自部署比如 Stable Diffusion 和 GFPGAN。但實(shí)際跑下來(lái)發(fā)現(xiàn)不同子任務(wù)的模型效果差異極大。有些開(kāi)源小模型在老照片修復(fù)上效果根本不夠看而商業(yè) API 的表現(xiàn)則是開(kāi)箱即用。最終我采用了混合路線(xiàn)主控 Agent意圖識(shí)別、工具參數(shù)抽取使用商用大模型 API因?yàn)樗闹噶罾斫夂?JSON 結(jié)構(gòu)化輸出能力穩(wěn)定這是整個(gè)鏈條里最不能出錯(cuò)的部分。圖像生成和編輯類(lèi)任務(wù)使用開(kāi)源 Stable Diffusion 系列模型部署在自己的 GPU 服務(wù)器上因?yàn)檫@類(lèi)操作請(qǐng)求量大走本地模型可以控制成本。一些專(zhuān)項(xiàng)能力比如人像深度摳圖、老照片修復(fù)用的是商業(yè) API。這類(lèi)任務(wù)對(duì)結(jié)果質(zhì)量要求高開(kāi)源小模型很難達(dá)到同一水平。這套混合架構(gòu)的核心是一個(gè)模型網(wǎng)關(guān)層。后端服務(wù)不關(guān)心具體調(diào)的是本地服務(wù)還是外部 API只面向一個(gè)統(tǒng)一的接口封裝。模型網(wǎng)關(guān)根據(jù)任務(wù)類(lèi)型和當(dāng)前服務(wù)器負(fù)載把請(qǐng)求路由到對(duì)應(yīng)的模型實(shí)例。這給項(xiàng)目帶來(lái)了兩個(gè)直接好處一是某個(gè)模型掛了不會(huì)影響整個(gè)鏈路二是后續(xù)替換某個(gè)子任務(wù)的模型時(shí)不需要改動(dòng)上層邏輯。2.4 整體架構(gòu)分層整個(gè)系統(tǒng)從邏輯上可以分成五層展示層Vue3 Web 管理端、Uniapp 移動(dòng)端接入層Golang 后端提供 REST 接口和 SSE 流式推送Agent 編排層負(fù)責(zé)意圖理解、任務(wù)拆分、工具調(diào)用、結(jié)果驗(yàn)證工具執(zhí)行層每個(gè)修圖能力都封裝成一個(gè)獨(dú)立工具模型網(wǎng)關(guān)層統(tǒng)一調(diào)度本地模型和商業(yè) API這里最關(guān)鍵的一點(diǎn)是 Agent 編排層和工作流運(yùn)行時(shí)的邊界要清楚。Agent 只輸出“決策結(jié)果”而工作流運(yùn)行時(shí)負(fù)責(zé)執(zhí)行、狀態(tài)管理和錯(cuò)誤處理。如果沒(méi)有這個(gè)邊界所有邏輯都塞在 Agent 的對(duì)話(huà)循環(huán)里后期幾乎沒(méi)法維護(hù)。3. Agent 核心工作流的落地實(shí)現(xiàn)3.1 給 Agent 建立“能力說(shuō)明書(shū)”一個(gè)修圖 Agent 首先要讓大模型知道自己有什么工具、能做什么事、不該做什么事。這部分我通過(guò)系統(tǒng)提示詞來(lái)實(shí)現(xiàn)。Project 的 System Prompt 大致是如下結(jié)構(gòu)你是一個(gè)修圖任務(wù)調(diào)度管家負(fù)責(zé)將用戶(hù)的修圖需求拆解為可執(zhí)行的工具調(diào)用序列。 你擁有以下工具 1. remove_background(image_id, output_format)移除圖片背景 2. replace_background(image_id, background_prompt)替換圖片背景 3. face_retouch(image_id, smooth_level, whitening_level)人像美化 4. restore_photo(image_id)老照片修復(fù) 5. adjust_color(image_id, brightness, contrast, saturation)色彩調(diào)整 ... 要求 1. 用戶(hù)需求無(wú)法用現(xiàn)有工具實(shí)現(xiàn)時(shí)直接返回 error 說(shuō)明原因 2. 一次請(qǐng)求可以調(diào)用多個(gè)工具工具之間按執(zhí)行順序排列 3. 結(jié)果滿(mǎn)意后必須返回 done不要重復(fù)執(zhí)行已完成的步驟這套提示詞的核心是“給模型畫(huà)清邊界”。在測(cè)試過(guò)程中我明顯感覺(jué)到提示詞里如果沒(méi)有明確說(shuō)明“不要重復(fù)執(zhí)行已完成的步驟”模型就很容易在第一步執(zhí)行完后繼續(xù)重復(fù)相同的工具調(diào)用白白浪費(fèi)時(shí)間和算力。3.2 讓大模型穩(wěn)定輸出工具調(diào)用參數(shù)Agent 和工具層之間的通信必須用結(jié)構(gòu)化的方式不能直接讓模型輸出自然語(yǔ)言否則下游解析會(huì)非常痛苦。我們要求大模型始終返回一個(gè) JSON 對(duì)象結(jié)構(gòu)固定如下{ thought: 用戶(hù)需要替換背景并調(diào)亮我先執(zhí)行背景替換, tool_calls: [ { tool_name: replace_background, arguments: { image_id: img_10001, background_prompt: autumn gingko leaves } }, { tool_name: adjust_color, arguments: { image_id: img_10001, brightness: 1.2 } } ], is_finished: false }這里的is_finished是一個(gè)重要字段。模型完成所有工具調(diào)用后要把這個(gè)字段置為 true服務(wù)端看到 true 才會(huì)結(jié)束循環(huán)。為了提升 JSON 解析的成功率我把大模型接口的 temperature 參數(shù)刻意調(diào)低到 0.2 以?xún)?nèi)同時(shí)對(duì)返回內(nèi)容做了一層清洗處理去掉 Markdown 代碼塊標(biāo)記、修正未閉合的花括號(hào)。還有一個(gè)容易踩的坑是圖像處理的中間結(jié)果管理。多個(gè)工具需要串行處理同一張圖片時(shí)每次執(zhí)行的輸入可能是上一個(gè)工具的輸出。因此我們不能讓每個(gè)工具都從原始圖片開(kāi)始處理而是在運(yùn)行時(shí)維護(hù)一個(gè)“當(dāng)前圖片”狀態(tài)。比如上面對(duì)話(huà)的 JSON 里第二次調(diào)用的參數(shù)還是 image_id但實(shí)際在工具執(zhí)行層該 id 對(duì)應(yīng)的圖片地址已經(jīng)被第一次的工具調(diào)用結(jié)果覆蓋了。3.3 工具注冊(cè)與動(dòng)態(tài)調(diào)度機(jī)制為了讓 Agent 的“能力說(shuō)明書(shū)”和實(shí)際的工具代碼保持一致我實(shí)現(xiàn)了一套簡(jiǎn)單的工具注冊(cè)機(jī)制。每個(gè)工具都是一個(gè)結(jié)構(gòu)體type Tool interface { Name() string Description() string Parameters() map[string]interface{} Execute(ctx *ToolContext, args map[string]interface{}) (*ToolResult, error) }系統(tǒng)啟動(dòng)時(shí)所有工具會(huì)注冊(cè)到一個(gè)工具表里。注冊(cè)的同時(shí)會(huì)把工具的名字、描述、參數(shù) Schema 自動(dòng)拼接到 System Prompt 中。這樣做的好處是以后新增一個(gè)修圖能力只需要實(shí)現(xiàn) Tool 接口然后在啟動(dòng)入口注冊(cè)一下Agent 下次對(duì)話(huà)時(shí)就會(huì)自動(dòng)感知到新工具的存在不需要手動(dòng)修改提示詞。動(dòng)態(tài)調(diào)度的時(shí)候通過(guò)工具名從注冊(cè)表找到對(duì)應(yīng)的 Tool 實(shí)例參數(shù)則從 Agent 返回的 JSON 中抽取。有一個(gè)經(jīng)驗(yàn)值得記錄參數(shù)校驗(yàn)一定要做兩層。第一層是 Agent 層的 Schema 校驗(yàn)第二層是工具內(nèi)部的類(lèi)型斷言。因?yàn)榇竽P团紶枙?huì)返回brightness: 1.2這種字符串類(lèi)型的數(shù)字如果工具內(nèi)部不轉(zhuǎn)類(lèi)型程序就會(huì)直接 panic。3.4 多輪工具循環(huán)的狀態(tài)管理一個(gè)修圖需求往往需要好幾輪工具調(diào)用。比如“把背景換掉順便調(diào)亮”這個(gè)需求如果讓 Agent 一次完成其實(shí)只需要一輪。但如果是“把背景換掉、調(diào)亮、再把人的皮膚磨一下”這種需求Agent 可能需要兩到三輪才能把參數(shù)逐步確認(rèn)好。整個(gè)循環(huán)的代碼結(jié)構(gòu)是經(jīng)典的 while state update 模式for i : 0; i maxIterations; i { currentState : buildState(conversation, currentImageURL) llmResponse : callAgent(systemPrompt, currentState) if llmResponse.IsFinished { break } for _, call : range llmResponse.ToolCalls { tool : registry.Get(call.ToolName) result : tool.Execute(ctx, call.Arguments) appendToolResult(conversation, result) } }循環(huán)跳出條件有兩個(gè)一是模型返回is_finished: true二是達(dá)到最大輪次上限。我給默認(rèn)值設(shè)成了 5 輪超過(guò) 5 輪直接返回當(dāng)前結(jié)果。這個(gè)上限非常重要沒(méi)有它Agent 在某些奇怪輸入下會(huì)一直循環(huán)調(diào)工具最終超時(shí)或燒光 token。3.5 結(jié)果是不是真的符合預(yù)期Agent 修圖還有一個(gè)很容易被忽視的問(wèn)題怎么判斷結(jié)果“成功了”。之前我以為這一步很順理成成實(shí)際開(kāi)發(fā)時(shí)才發(fā)現(xiàn)圖像處理工具到底有沒(méi)有成功不能只看模型返回的 JSON 里success: true。有些模型返回成功但生成的結(jié)果圖可能是黑圖、糊圖或者與原圖毫無(wú)關(guān)系。所以我在工具執(zhí)行層加了一個(gè)基礎(chǔ)質(zhì)量校驗(yàn)?zāi)K對(duì)所有模型輸出的圖片做三項(xiàng)檢查寬度和高度是否大于預(yù)設(shè)閾值、圖片文件字節(jié)數(shù)是否低于異常下限、清晰度評(píng)分是否超過(guò)基礎(chǔ)線(xiàn)。任何一項(xiàng)不通過(guò)就會(huì)觸發(fā)一次自動(dòng)重試或者直接讓 Agent 判定當(dāng)前工具執(zhí)行失敗。這個(gè)設(shè)計(jì)確實(shí)救過(guò)我們一次。有一版我們?cè)跍y(cè)試背景替換時(shí)某個(gè)場(chǎng)景的模型輸出偶爾會(huì)出現(xiàn)純色填充但接口本身是 200 狀態(tài)。如果沒(méi)有質(zhì)量校驗(yàn)用戶(hù)看到的就會(huì)是一張全黑圖而且系統(tǒng)還認(rèn)為任務(wù)完成了。4. 全棧實(shí)現(xiàn)與多端聯(lián)調(diào)過(guò)程4.1 后端接口設(shè)計(jì)與 SSE 任務(wù)推送后端的核心接口大致分三組。第一組是會(huì)話(huà)管理接口負(fù)責(zé)創(chuàng)建會(huì)話(huà)和查詢(xún)歷史記錄第二組是文件接口負(fù)責(zé)圖片上傳和臨時(shí) URL 生成第三組是任務(wù)接口負(fù)責(zé)提交 Agent 任務(wù)和接收進(jìn)度推送。任務(wù)提交通道我最終選擇了 SSEServer-Sent Events方案。原因很直接Agent 任務(wù)的處理時(shí)間通常需要 10 到 30 秒甚至更久用戶(hù)需要實(shí)時(shí)看到“正在理解需求”“正在執(zhí)行背景替換”“正在調(diào)整色調(diào)”這樣的中間狀態(tài)。如果只用輪詢(xún)不僅浪費(fèi)請(qǐng)求資源體驗(yàn)也差了很多。SSE 的推送格式設(shè)計(jì)成了事件流。前端通過(guò) EventSource 連接后后端按階段推事件event: stage data: {stage: understanding, message: 正在理解您的修圖需求} event: stage data: {stage: tool_executing, tool: replace_background, message: 正在執(zhí)行背景替換} event: stage data: {stage: image_ready, image_url: https://cdn.xxx.com/result.jpg}前端只需要監(jiān)聽(tīng)不同的事件類(lèi)型驅(qū)動(dòng)頁(yè)面上狀態(tài)卡片和圖片容器的更新。這里有個(gè)后端細(xì)節(jié)要注意SSE 的響應(yīng)頭必須設(shè)成Content-Type: text/event-stream并且關(guān)閉代理層的緩沖。我們第一次上線(xiàn)時(shí)Nginx 默認(rèn)開(kāi)了緩沖SSE 消息全部攢著不發(fā)前端一直停留在“理解中”排查了很久才找到原因。4.2 Web 端交互工作臺(tái)的實(shí)現(xiàn)Web 工作臺(tái)的界面不算復(fù)雜但狀態(tài)管理很容易亂。我把頁(yè)面拆成了四個(gè)核心模塊左側(cè)圖片列表展示當(dāng)前會(huì)話(huà)里所有上傳圖片和生成結(jié)果中間畫(huà)布區(qū)展示當(dāng)前編輯的圖片支持縮放和比例標(biāo)注右側(cè)工具信息面板展示 Agent 執(zhí)行的工具序列和每一步的執(zhí)行結(jié)果底部指令輸入框接收用戶(hù)自然語(yǔ)言修圖指令支持語(yǔ)音轉(zhuǎn)文字狀態(tài)管理使用 Pinia。整個(gè)會(huì)話(huà)上下文全部放在 store 里包括 session_id、image_list、execution_trace、is_processing 等字段。每次 SSE 事件到達(dá)時(shí)通過(guò) store 的 action 統(tǒng)一更新?tīng)顟B(tài)。組件層只負(fù)責(zé)渲染不做數(shù)據(jù)邏輯。組件通信層級(jí)要注意一個(gè)細(xì)節(jié)Agent 的執(zhí)行軌跡execution_trace是一個(gè)數(shù)組包含每一步的 tool_name、status、耗時(shí)、輸出圖片 URL。這個(gè)數(shù)組要始終在頁(yè)面上可見(jiàn)這樣用戶(hù)才能理解 AI 為什么做了某些操作。如果只展示最終結(jié)果用戶(hù)會(huì)對(duì)“AI 是不是偷偷改了別的地方”產(chǎn)生疑慮這類(lèi)工具需要的是過(guò)程和結(jié)果都透明。4.3 移動(dòng)端 Uniapp 的適配難點(diǎn)移動(dòng)端用 Uniapp 實(shí)現(xiàn)功能上做了精簡(jiǎn)只保留了上傳圖片、發(fā)送指令、查看執(zhí)行進(jìn)度、查看結(jié)果、保存到相冊(cè)這幾個(gè)操作。核心業(yè)務(wù)邏輯從 Web 端抽取到公共的 JS 模塊里兩個(gè)端共享。實(shí)際開(kāi)發(fā)中主要遇到兩類(lèi)差異。第一是文件上傳方式。Web 端可以直接用 FormData 上傳 Blob移動(dòng)端則需要用 uni.uploadFile涉及臨時(shí)文件路徑的轉(zhuǎn)換。第二是圖片預(yù)覽方式。Web 端可以渲染任意 CDN 地址的圖片但移動(dòng)端對(duì)某些 URL 有跨域限制需要統(tǒng)一走代理或加時(shí)間戳簽名。我選用的做法是所有端前端在調(diào)用 Agent 之前都會(huì)對(duì)圖片做一次前端預(yù)壓縮統(tǒng)一將最長(zhǎng)邊壓縮到 2048 像素內(nèi)。這樣既減小了上傳體積也避免了同一個(gè)圖片在不同端處理時(shí)尺寸不一致導(dǎo)致的 Agent 判斷偏差。4.4 數(shù)據(jù)庫(kù)表設(shè)計(jì)和狀態(tài)流轉(zhuǎn)數(shù)據(jù)庫(kù)用的是 MySQL一共有五張核心表用戶(hù)、會(huì)話(huà)、消息、圖片、任務(wù)記錄。這里重點(diǎn)說(shuō)下任務(wù)表和消息表的設(shè)計(jì)。任務(wù)表記錄了每次 Agent 執(zhí)行的整體信息核心字段包含task_id、session_id、status、current_stage、error_message、completed_at。剛開(kāi)始我并沒(méi)有單獨(dú)設(shè)計(jì)任務(wù)表而是把執(zhí)行狀態(tài)直接存在會(huì)話(huà)表里。但很快就發(fā)現(xiàn)一個(gè)問(wèn)題一個(gè)會(huì)話(huà)可能包含多輪修圖操作比如用戶(hù)先讓人像美顏再讓改背景這兩個(gè)是不同的任務(wù)如果狀態(tài)都寫(xiě)在會(huì)話(huà)上就會(huì)出現(xiàn)互相覆蓋。消息表的作用是保留 Agent 的完整對(duì)話(huà)記錄也就是每條用戶(hù)指令和 Agent 的中間決策過(guò)程。它有一個(gè) tool_logs 字段類(lèi)型是 JSON會(huì)記錄每一輪工具調(diào)用時(shí)的輸入?yún)?shù)和返回結(jié)果。開(kāi)發(fā) Agent 類(lèi)項(xiàng)目時(shí)沒(méi)有這些日志幾乎沒(méi)法調(diào)試你很難知道 Agent 當(dāng)時(shí)為什么要做某個(gè)操作。狀態(tài)流轉(zhuǎn)上我定義了一套完整的狀態(tài)機(jī)PENDING等待受理→ RUNNINGAgent 執(zhí)行中→ SUCCEEDED完成 PENDING → RUNNING → FAILED失敗任務(wù)超過(guò) 60 秒沒(méi)有任何狀態(tài)更新時(shí)服務(wù)端會(huì)強(qiáng)制把狀態(tài)置成 FAILED 并向客戶(hù)端推送超時(shí)事件。這是為了防止極端情況下的假死連接。4.5 聯(lián)調(diào)過(guò)程中如何做端到端驗(yàn)證端到端驗(yàn)證這個(gè)環(huán)節(jié)我建議做成自動(dòng)化腳本不要每次靠人工點(diǎn)頁(yè)面測(cè)。我們寫(xiě)了一個(gè)小的 Go 腳本直接模擬客戶(hù)端流程上傳圖片、創(chuàng)建會(huì)話(huà)、提交任務(wù)、接受 SSE 事件、校驗(yàn)最終圖片 URL 是否返回 200。跑通之后再打開(kāi)頁(yè)面驗(yàn)證視覺(jué)交互。實(shí)際聯(lián)調(diào)時(shí)最容易忽略的是圖片在跨環(huán)境傳輸后的狀態(tài)。同一張圖在本地測(cè)試是正常的但上傳到 OSS 之后可能因?yàn)樵L(fǎng)問(wèn)權(quán)限、防盜鏈、CORS 配置等原因?qū)е?Agent 后端無(wú)法正常拉取圖片。所以我在服務(wù)端專(zhuān)門(mén)寫(xiě)了一個(gè)“圖片預(yù)檢”環(huán)節(jié)每次 Agent 收到圖片 URL 后會(huì)先做一次 HEAD 請(qǐng)求確認(rèn)可訪(fǎng)問(wèn)如果不可訪(fǎng)問(wèn)就直接失敗并提示重新上傳。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 Agent 無(wú)限循環(huán)調(diào)用工具怎么辦這個(gè)我前面提到過(guò)總輪次上限但實(shí)際項(xiàng)目中還有一種更隱蔽的情況雖然單輪不會(huì)卡死但模型會(huì)在相鄰的兩輪之間反復(fù)橫跳。比如先調(diào)用了一次背景替換發(fā)現(xiàn)結(jié)果不滿(mǎn)意又調(diào)用了一次恢復(fù)原圖的工具然后再次調(diào)背景替換形成一個(gè)死循環(huán)。我在提示詞和代碼里做了雙重防護(hù)。提示詞里增加了“如果你發(fā)現(xiàn)自己即將重復(fù)執(zhí)行已經(jīng)做過(guò)的操作說(shuō)明當(dāng)前工具結(jié)果不滿(mǎn)足預(yù)期應(yīng)該直接返回 error 或 done”。代碼里則增加了“工具調(diào)用指紋”去重如果 Agent 在最近 3 輪里對(duì)同一個(gè)圖片、同一個(gè)工具、相似參數(shù)執(zhí)行了 2 次系統(tǒng)會(huì)自動(dòng)攔截并詢(xún)問(wèn)是否需要中止。5.2 SSE 連接總是掛斷進(jìn)度推送不穩(wěn)定SSE 掛斷的問(wèn)題后來(lái)定位出來(lái)原因有三層。第一層是需要心跳機(jī)制。代理層如果沒(méi)有數(shù)據(jù)流動(dòng)空閑連接會(huì)被斷開(kāi)。所以我每 15 秒發(fā)一條event: heartbeat的注釋消息保持連接活躍。第二層是代理層的緩沖。必須在中間件或 Nginx 明確關(guān)閉 response buffering否則數(shù)據(jù)到達(dá)不了瀏覽器。第三層是內(nèi)存泄漏。有些版本的 Golang SSE 庫(kù)在廣播事件時(shí)如果不處理客戶(hù)端斷開(kāi)的 channel會(huì)導(dǎo)致 goroutine 堆積。穩(wěn)定以后我把整條 SSE 推送鏈路做了本地壓力測(cè)試。模擬 50 個(gè)并發(fā)連接同時(shí)在線(xiàn)觀察 10 分鐘確認(rèn)沒(méi)有 goroutine 泄漏后才放心上線(xiàn)。5.3 大模型返回 JSON 偶爾解析失敗解析失敗是 Agent 開(kāi)發(fā)中最常見(jiàn)的坑。大模型返回的內(nèi)容里偶爾會(huì)混入額外的解釋文字或者 JSON 外層包了 Markdown 代碼塊。最開(kāi)始我直接對(duì)原字符串做 json.Unmarshal失敗率很高后來(lái)做了三層解析容錯(cuò)。第一層是做字符串清洗去掉所有 Markdown 標(biāo)記和第一個(gè)花括號(hào)之前的所有字符。第二層是嘗試自動(dòng)修復(fù)比如未閉合的數(shù)組和對(duì)象標(biāo)記。第三層是解析失敗時(shí)把錯(cuò)誤信息回傳給大模型讓它自己修正輸出。這一步效果非常明顯連續(xù)重試兩次后解析失敗率幾乎降到了零。有一個(gè)值得注意的細(xì)節(jié)給大模型回傳錯(cuò)誤信息時(shí)要明確告訴它“上一次的返回中包含了多余的文本請(qǐng)只返回 JSON不要其他內(nèi)容”否則它很容易繼續(xù)沿襲上一次的錯(cuò)誤格式。5.4 圖片方向、格式和 EXIF 問(wèn)題的坑手機(jī)上傳的圖片普遍存在 EXIF 反轉(zhuǎn)問(wèn)題。就是說(shuō)用戶(hù)拍照時(shí)手機(jī)是橫著的但圖片本身經(jīng)過(guò)旋轉(zhuǎn)處理后才正常顯示。如果后端拿到圖片后直接做處理出來(lái)的結(jié)果可能是橫的或者顛倒的。這個(gè)問(wèn)題在 Web 端偶爾出現(xiàn)在移動(dòng)端幾乎百分百觸發(fā)。后來(lái)我在所有圖像工具的第一道處理里加了一個(gè)“圖像標(biāo)準(zhǔn)化”流程讀取 EXIF 信息、根據(jù) Orientation 字段做旋轉(zhuǎn)矯正、統(tǒng)一轉(zhuǎn)成 RGB 三通道、刪除透明通道、將最長(zhǎng)邊縮放到 2048px。做完標(biāo)準(zhǔn)化之后所有下游模型拿到的都是規(guī)格一致的圖片模型因?yàn)檩斎氤叽绮灰恢乱l(fā)的隨機(jī)問(wèn)題少了很多。5.5 不同模型對(duì)輸入和輸出的要求不一致本地 Stable Diffusion 模型和商業(yè) API 的輸入限制差異很大。有的模型要求圖片最小邊長(zhǎng)不低于 512px有的模型又限制最大解析度。圖像標(biāo)準(zhǔn)化流程解決了大部分問(wèn)題但還是有極少數(shù)圖片處理完以后生成的圖片分辨率過(guò)低。我們?cè)谀P途W(wǎng)關(guān)層為每個(gè)模型配置了“輸入約束”和“輸出約束”。網(wǎng)關(guān)在調(diào)用模型前會(huì)根據(jù)約束做一次檢查比如判斷當(dāng)前圖片的寬度是否低于模型最低要求低了就用智能超分先放大確保模型輸入符合預(yù)期。5.6 移動(dòng)端真機(jī)測(cè)試時(shí)才發(fā)現(xiàn)的內(nèi)存暴漲問(wèn)題這個(gè)坑是在移動(dòng)端出現(xiàn)的。Uniapp 在真機(jī)上連續(xù)處理幾張 2048px 的大圖時(shí)內(nèi)存占用一路飆升最后直接白屏。排查發(fā)現(xiàn)是在圖片預(yù)覽組件里沒(méi)有釋放歷史圖片資源。后來(lái)我們把移動(dòng)端的圖片預(yù)覽全部改為懶加載模式并且每次切換圖片時(shí)手動(dòng)回收不再可見(jiàn)的圖片對(duì)象。真機(jī)調(diào)試這個(gè)事情經(jīng)驗(yàn)就是一定要準(zhǔn)備一臺(tái)中低端 Android 手機(jī)做測(cè)試很多性能問(wèn)題在高端機(jī)上根本復(fù)現(xiàn)不出來(lái)。最后的一點(diǎn)體會(huì)這個(gè)項(xiàng)目最大的收獲不是模型調(diào)得多好而是深刻理解了 Agent 工程化到底是做什么模型負(fù)責(zé)理解和生成但工程負(fù)責(zé)邊界、容錯(cuò)和確定性。用戶(hù)能不能穩(wěn)定地用上這個(gè)功能取決于你給 Agent 畫(huà)了多清晰的邊界、做了多完善的兜底而不是模型本身有多聰明。最后分享一個(gè)個(gè)人偏好開(kāi)發(fā)這種帶狀態(tài)和循環(huán)的系統(tǒng)一定要把所有 Agent 決策日志落庫(kù)。我們最初只把最終結(jié)果存下來(lái)了結(jié)果模型一跑偏很難判斷是哪個(gè)環(huán)節(jié)出了問(wèn)題只能靠猜。后來(lái)把每一輪的原始輸入輸出、工具調(diào)用參數(shù)、異常信息全部記錄下來(lái)調(diào)試效率直接翻倍。以后再做 Agent 類(lèi)項(xiàng)目我會(huì)把日志體系當(dāng)成基礎(chǔ)設(shè)施一樣在項(xiàng)目第一天就搭好。這個(gè)項(xiàng)目做完以后我還在想能不能把任務(wù)編排的邏輯抽出來(lái)做一個(gè)通用的 Agent 工作流腳手架到時(shí)候再跟大家分享。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
女生自91网站| 色偷偷综合91久久噜噜| 一区二区播放| 日韩性爱再线视频| 精品一久久久| 影音先锋中文字幕日本好一区二区| 欧美色棕合| 天天cao在线| 亚洲av国产av综合av卡| 激情五月婷婷综合| 啊啊啊啊啊好舒服视频| 在线观看一级α片刺激高潮视频| 天天做天天爽| 五月天精品| 精品亚洲国产成人av网站| 天天肏美女| 国产精品伦理| 极品尤物在线观看| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 91国产美女丝袜足交精品视频| 日日夜夜模| 亚洲不卡三级手机播放| 日韩乱码Av| 亚洲的天堂网| 簧片免费看视频| 伦理片秋霞免费影院| 日韩成人精品中文字幕| 亚洲综合色图欧美| 曰韩av中文字幕专区| 色情婷婷久久五月天| J?P?NESEHD熟女熟妇伦| 禁十八久久| 天天激清| 欧美A√综合网 | 国产最新小视频在线播放下载| 97亚洲性爱| 丝袜AV一区二区三区| 激情综合五月| 日本成人免费一区二区三区| 久久视频,这里只有精品| 天堂中文日本在线观看| 日天天九九天堂666| 亚洲高潮少妇| 中文字幕97| 伊色综合天堂色97| CCYY草草影院地址入口| 伊蕉97蜜桃97狠狠综合干| 国产二区三区免费视频| 亚洲AV不卡在线观看尤物| 国产丝袜欧美在线视频| 啊啊啊在线看| 男人的天堂.com| 亚洲一区二区三区在线激情| 豆1无夜无码| 色爱三区| 久9精品| 区一二区日韩亚洲乱码av电影| 午夜亚洲WWW湿好大| 夜精品久无码| 亚洲熟妇极品| 亚洲最大成人a毛毛片| 青青伊人加勒比海| 九月丁香婷婷| 久久首页| 91性网| 嗯嗯啊啊啊好舒服| 久九九九九九九九热| 亚洲Av诱惑| 免费观看有码高清视频| 强奸乱伦AV网址| 美女天天干| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 国产综合永久精品日韩鬼片| 精品久久无码午夜福利| 亚洲综合图文| 婷婷久草| 天天看天天在线精品| 中文字幕av片| 欧美天堂日韩三级国产传媒| 日韩AV无码中文一区二区| 狠狠爱夜夜| 夜夜操夜夜爽夜夜高潮| 亚洲丝袜二区| 牛牛aV| 一本色道综合久久欧美| 蜜臀AV一区二区三区| 国产精品9999| 97超碰精品成| 亚洲欧美一区二区不卡视频播放| 中文字幕艹艹| 久久伊人五月天| 翔田千里Av在线| 极品人妻少妇综合| 综合自拍| 鸥美极品| 日本高清免费一本视频在线观看| 99精品丰满人妻无码| 91处女视频在线观看| 久久久久久国产无码精品| 精品免费一区二区三区在线亚洲人成| 亚洲天天艹| 国产欧美精选激情视频| 久久综合国产精品国产| 九九九九精品| 丰满人妻一区二区三区免费 | 另类专区加勒比| 亚洲情色电影网| 欧美精品1区2区3区| 亚洲欧美综合| 色小视频蜜乳| 丰满人妻一区二区三区四区| 国产在线视频午夜精华在| 综合熟妇一区二区三区| 亚洲性猛| 午夜福利在线合集| 热久久99999| 亚欧美天堂在线| 国产AV高清AV无码| 国产亚洲色婷婷久久99精品91葵花宝典| 精品国模无码| 欧美日韩国产中文精品字幕自在自线,| 玖玖爱免费观看视频| 亚洲va有码在线天堂| 人人操人人爽人人操人人| 69一区二区三区| 亚洲黑人在线| 久久国产成人精品国产成人亚洲| 大香蕉在线视频15| 久久久精品成人国产| 99热只有这里有精品| 久草福利在线资源站| 精品一级毛片在线观看| 亚洲天堂五月天国产| 国产精品一二三区18| 亚洲影院365| 国产亚洲深夜激情| 在线欧美69V免费观看视频| 日韩亚洲精品一区二区| 日韩视频精品在线观看| 亚洲日韩精品久久久久一区壹牛| 欧美 日韩 亚洲 春色| AV乱伦国产| 亚洲在线网站| 免费的很黄很污的全部视频| 丁香五月av| 性色一线| 人人操人人精品影片| av天堂加勒比| 无码人妻精品酒店| 日韩欧美大力操| 欧美日韩一区二区三区四区蜜桃| 日韩精品99999| 欧洲天天在线| 九九九九免费高| 亚洲AV色图一区| 男人精品区| AV乱伦专区| 中文字幕123| 男人的天堂网免费| 嗯嗯啊啊视频一区二区三区| 久久三区四区| 精品久久久久久AV无码| 97色干| 操人妻丝袜高跟| 91激情网| www.91色| 96免费视频在线| 啊啊啊啊好疼视频| 久久久久久久强迫| AV无码久久久精品| 欧美日韩一干二干| 亚洲欧美在线丝袜| 自拍偷拍 高清无码| 91人妻Pr| 亚洲AV不卡在线观看尤物| 国产久9| 欧美成人免费在线观看| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 九九黄色网| 婷婷亚洲综合| se,,,亚洲欧美| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 日本高清一区二区在线| 国产欧美日韩臀| 丝袜美腿91| 中国AAAAAA黄色片| 五月丁香婷婷色| 久久久久亚洲一区女同性恋中文字幕| 色婷婷亚洲婷婷| 偷拍 亚洲| 欧美,日韩,中文,另类| 精品国产一区探花在线观看| 青青草一本道福利视频| 精品国产一区二区三区在线播出| 超碰在线国产| 欧美白嫩女HD| 亚洲欧美另类激情小说| 美女尤物福利视频| 2020中文字幕在线观看| 五月丁香激情综合| 亚洲精品国产熟女久久久| 东京热一区二区中文字幕| 做爱A级亚欧| yazhousetuoumei| 男人综合网| 婷婷五月天色色| jiujiujiujingpin| av网站国产主播在线| 无码av永久免费专区网站| 情色日播放AV| 日本成人在线不卡一区二区三区| 五月色网| 92大香蕉| 国产亚州精品美女久久久免费| 欲色影视综合吧| 夜夜爽夜夜爽| 91原创在线观看| 少妇久久久久久| 亚洲高清无码免费观看视频| 亚州五月| 欧美亚综合色图| 高潮9999外国| 67194国产| 成年人黄色小视频网站| 国产第11页| 91色堂| 乱伦熟妇一区二区| 亚洲综合图文| 日韩人妻大香蕉| 久久久五月天| a在线观看| 老司机免费视频在线91| 午夜福利免费福利视频| 亚洲第一男人天堂| 天天射影院| 天天cao在线| 久久久艹艹艹| 国产精品国产亚洲区艳妇糸列| 夜夜操av亚洲一区二区| 香蕉视频精品亚洲一区二区三区在线播| 极品尤物女神在线观看| 亚洲国产精品久久久久婷婷老年| 亚洲欧洲偷拍一区| 欧美高清18A片| 精品人妻视频一区二区三区蜜桃视频| 精品人妻一区二区视频| 97久久超碰日韩精品| 色婷婷影视| 亚洲色阁| 久久九九热| 成人怡红院| 99色色网| 精品无码久久久久久久久果冻糖心| 中文啪啪视频| 国产黄片精品在线| 97国产|免费| 日韩伦理久 久久 清纯| 激情人妻另类| 久久五月婷| 97在线视频免费| 富二代亚洲精品99| 黄色网址在线免费观看| 密臀在线一区尤物| 天天舔九色婷婷| 久久亚洲av成人无码国产| 97日亚洲欧美| 小骚逼被操的爽不爽| 国产a级午夜毛片| 日本孕妇一区二区视频操逼免费看 | 9Ⅰ超碰| 天天综合色电影| 亚洲色系另类精品国产| 97视频播放| 熟女网站最新| 亚洲97资源| 99操视频| 超碰免费人妻人人| 成人性交免费视屏| 久久一区二区加油站| www.色婷婷色综合| 99亚洲国产精品色一区二区三区| 97欧美日韩综合| 欧美亚州综合图片| 麻豆久久久久久久久丝袜| 亚洲国产一级精品毛一级精品看免费视频 | 2003天天干夜夜操| 麻豆AV短剧| 99热91| 欧美性爱1080p| 性天堂| 超碰97人妻自拍| 欧美综合网1| 婷婷五月天久久精品视频一区二区三区 | 婷婷久月| 欧美强奸乱| 国产亚洲精品无码三区| 超碰97人人cao| 91在线免费精品视频| 亚洲综合色图欧美| 性欧美体内射精| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 蜜臀av中文字幕| 九九九九热| www.成人无码| 97操碰| 超碰97欧美日韩| 97精品久久久久久久| 亚洲 欧美都市激情| 欧美国产日韩高清在线| 亚洲码专区| 91三级理论片播放器| 97爱爱爱| 成全动漫视频观看免费下载| 亚洲色图亚洲| 秋霞网无码| 久久久久亚洲| 日韩乱伦AⅤ| 青春草莓视频在线观看网址| 探花精品 一区二区| 人妻少妇精品久久久久久久| 色婷婷国产精品一区在线观看| 在线综合网| 国产真实子伦对白| 亚洲最新中文字幕免费| 超碰成人国产| 欧美亚洲综合色| 中文字幕一区 二区三四五 区日 日骚| 激情综合五| 又黑又大又粗| 97久久超碰国产网站| 天天干天天日天天射黄色片| 四虎在线播放| 欧美自拍偷拍免费观看| 成人三级片无码| 激情婷婷| 香蕉一区二区三区在线视频| 18一区二区三区| 夜夜国产一区| 国产AV天美传媒一区二区三区 | 无码区蜜乳| 黄色AAAAA欧美| 亚洲av强奸乱伦| 日韩免费人妻色情网站| laoshunv91| 国产精品对白自产拍| 99在线精品视频| 国产无码精品久久久久久| 国产成年女人免费视频播放a| 97色妞| 超碰97在线中文| 91操熟妇| 久久女人| 91足交| 开心激情站| 91九色丨国产丨爆乳| 久草热制服丝袜在线观看| aV中文麻| 亚洲色系另类精品国产| 色精品极品| 亚洲……91| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 影音先锋一区二区在线资源| 中出在线视频| 青青草久草| 国产日韩区| 婷婷五月天影院| 人妻在线中出视频| 麻豆熟妇乱妇熟色A片在线看| 亚洲黄色| 午夜精品五区| 蜜伊人色综合97| 九九九九九九精品| 国产精品自在自拍视频| 国产家庭乱伦表演| 搡老人老9丨女老熟人| 亚洲无码99| 色欲人妻一区二区在线| 亚洲日韩天堂| 久久一区二区高清免费| 九九九九九九亚洲| 精品久| 精品在线观看视频在线| 97超碰人操| 成人女人国产| 久久粉色| www.超碰在线| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 欧美国产操逼| 永久免费av无码网站国产app| 日韩丝袜二区| 爱丝福利| 一区不卡在线观看av| 久综合网| 欧美综合自拍成人自拍第二十页| 日韩一级二级三级| 婷婷丁香在线| 好湿好紧视频| 欧美性生活免费网| 草蕉影视亚洲无码| 国产无马在线| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 色女网日韩| 亚洲综合色图欧美| 东京热av男人的天堂| 啊啊啊啊啊在线| 亚洲综合五月天| 凹凸 69堂 在线播放| 国产女生在线| 久久9精品网站| 91操人| 久久偷偷色综合蜜桃| 伊人久久综合影院| 97精品在线| av网站在线看| 人人爽夜夜玩视频| 精品超碰国产| 大香蕉啪啪啪| 清纯唯美激情| 思思热国产在线视频| 国产精品suv一区| 人妻一区二区三区视频| 亚洲91亚洲| 另类亚洲一区二区三区| 色爱综合网欧美| 91精品微拍福利| 国产人妻一区二区三区欧美毛片| 日本性爱网址| 美女高潮国产高清| 97爱爱影院| 99精品视频在线观看免费| 亚洲男人天堂2| 色九区| 精品性爱| 99热国产| 亚洲 图片 综合91| A V视频日本| 蜜桃午夜视频一区二区 | 欧美成人A天堂片在线观看| 超碰激情808| 久久久久99999| 在线视频一区二区传媒| 粉嫩不卡一区二区性爱| 97免费视频在线| 十八禁网站在线| 91搞逼视频| 男人干美女| 91美女视频在线| 四虎精品永久在线观看| 欧洲无码一区二区| 91日产欧美| 欧美 日韩第一性色| 99久久99久久免费精品蜜臀| 国产亚洲欧美每日在线| 欧美亚洲一级在线观看| 少妇贴图| 欧美亚洲AN| aa片毛片| 国产偷人妻精品一区二区在线| 中文字幕在线观看二区三区| 东京热一区二区中文字幕| 欧美玖玖爱免费玖玖| 99热这里| 免费看A片毛毛片在线播| 国产黄a三级三级三级av在线看| 999综合网| 亚洲区限制级| 操高情无码| 啊啊啊网站| 97精品在线| 亚洲国产一级中文综合久久天堂在线免费观看| 香蕉久久国产AV一区二区| 2024年最新色情网站在线观看| 国产精品老师| 亚洲欧美日韩制服另类| 亚洲天天自拍| 911粉嫩人妻| 久久69| 97干天天| 夜夜狠狠躁日日躁色视频| 欧美激情五月天| 亚洲最大AV网| 免费精品人妻一区二区三| 亚洲图片小说欧洲| 精品久久久久久久久久久久| 天天日天天爽| 欧美一区二区福利在线| 又粗又长又大国产不卡| 91丝袜在线播放| 春色综合免费| 国内97干免费看| 熟妇最新先锋一二三区| 屌逼麻豆| 色色亚洲| 美女诱惑爱爱| 久操综合在线| 中亚av| 亚洲精品第一| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 乱欲视频| 免费精品无码一级毛片牛牛影视| 麻豆一区二区AV天美| 日韩欧美天堂| 青青草中出视频 | 99精品综合久久久久五月天| 97久久天天综合色天天综合色电影 | 色欧美天天| 国产九九九九九九| 人妻黑丝袜电影| 91麻豆一二三区| 91在线免费观看处女| 亚州操操穴网| 91天天综合网,天天综合网| 日韩熟女精品无码专区一区二区| 最新加勒比丝袜在线| 啊啊啊用力在线观看| 国产一级αv免费看片| 在线观看国产黄色| 五月丁香激情啪啪| 麻豆2区1区天美| 欧美黄色图片| 国产噜噜噜噜噜久久久久久久久| 97精品97久久| 国际精品久久久| 欧美色偷偷| 亚洲精品国产熟女久久久| 久久人体一区二区| 亚洲色婷婷综合久久久久中文| 亚洲一区二区AV| 日韩精品在线放| 手机在线中文字幕国产| 无码少妇精品一区二区60岁老人| 天天操夜夜操狠很操| 国产一级操B视频| 欧美啪啪女女| 亚洲18禁| 久久噜| 诱惑网综合| 男人久久天堂| 黄片不用下载在线观看| 亚洲一欧洲中文字幕在线| 老司机天天操| 久肏视频字幕| 日本熟妇人妻中出视频| 天天精品| 性欧美体内射精| 丰满熟女人妻一区二区三五十一路| 九九热国产| 少妇熟女1区2区3区| 久久国产成人精品国产成人亚洲| 激情综合二| 日日狠狠久久偷偷色综合免费| 亚洲精品丝袜| 天躁夜夜躁2021| 91精品91久久久中77777| 伊人专区一区二区三区| 日韩精品黄片免费观看| 人人摸人人入| 日韩激情小说一区二区| 欧美专区日本专区| 在线人妻熟女一区二区三区四区五区| 九九九九九九免费视频| 日韩免费av片高清无码| 成人短视频在线观看| 亚洲国产精品久久久男人的天堂| 国产精品不卡少妇白| 91精品久久久久五月天精品| 久久久18| 欧美综合色综合| 午夜爽爽爽| 极品美女福利在线观看| 激情文学欧美| 91青青草| 日韩人妻资源在线看| 欧美,亚洲,日韩,v,天堂,手机在线观看| 91四海无码日韩欧美| 超碰在线香蕉| 啊啊啊在线观看免费视频| 久久久一区二区| 国产日韩欧美中文在线播放 | 久久久久久久久国产| 国产高清午夜成人在线观看| 好吊妞转入那个网| 99re这里只有| 欧 美 自 拍 偷 拍| 中日韩欧美精品无码AⅤ一区二区| 亚洲综合有玛| 亚洲电影中字一区二区| 精品人妻一区二区三区-国产精品| 春色91| 色婷婷激一区二区三区| 国产一区二区三区中文字幕| 精品国产乱子伦一区二区三区,精品一| 操我无码| 亚洲综合 欧美| 一本一道vs波多野结衣| 男人的天堂在线| 三级特黄60分钟播放| 青青草乱入乱欲视频在线观看| 久久婷婷五月| 九九激情网| 人人看欧美性爱| 中文字幕av色| 蜜臀99久久精品久久久久久| 东北女人操比视频| 偷拍五区| 亚洲男人在线观看天堂| 91av熟女人妻| 久草网站免费在线观看| 色色福利| 中文字幕 人妻不满 在线视频| 国产亚洲 中文欧美久久| 国产美女高潮视频| 人人做人人妻人人夜视频| 美女爽爽爽刺痛洞洞| 国产精品久久久三级无码| 天天综合91入口| 殴美大黄片| 另类欧美综合| 91日韩在线| 日本道人妻久久久在线不卡色视频| 亚洲精品亚洲人成人网| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 国产麻豆福利av在线播放| 亚洲日韩美女中文字幕乱| www.99色| 91麻豆天美国产| 人人澡人人澡人人| 国产午夜精品在线观看| 播播亚洲小说亚洲| 99热免费| 亚洲人人夜夜澡人人爽| 啪啪视频免费在线观看| 久久精品中文字幕无码l| 亚洲色图91欧美日韩| 最新精品久久蜜桃 | 玖玖爱综合网| 日本影视久久免费| 国产家庭乱伦网址| 91色黑人少妇| 色97欧美| 波多野结衣一级视频| 欧美爱国产综合、| 亚洲色欲天天天堂色欲网女| 九色 蝌蚪 熟女自 | 久久综合久色欧美综合狠狠| 久久九九99| 96超碰网| 最近二区三区视频大全| 亚洲自拍天堂| 人妻AV在线| 九九九九精品一区| 欧美第一页| 亚洲中文字幕网| 最新精品久久蜜桃| 中文字幕97| 99人人干| www欧美91| 东京热精品97综合网| 色色激情| 亚洲黄色网址视频| 亚洲图片欧美91N| 国产精品久久久无码AV网站| 精品少妇999| 亚洲女人毛茸茸91| 精品九九九九九九九九九| 99无码精品| 日本一区二区成人在线| 国产v片在线免费观看| 精品免费囯产一区二区三区| 果冻传媒A片一二三区| 午夜精品久久久久| 啊啊啊好湿国产一二| 天天爽爽爽爽| 国产日韩欧美三级片| 粉嫩不卡一区二区性爱| 自拍偷拍亚洲熟女妇人精品| 欧美一级黄色免费专区| 久久久新亚洲AV| 久久午夜色播影院免费高清| 操一对老熟妇爽上天视频| 久久影视二区三区行押| 日本三级韩国三级美三级91| 超碰98综合网| 少妇精品久久久| 老师充足的奶水小说| 欧美亚男人的天堂| 一区二区三区日韩欧美| 国产精品九9| 中文一区二区婷婷视频| 中文字幕视频在线观看一区二区| 国语人妻精彩刺激| www鬼畜国产男人的天堂| 暖暖精品二区三区观看| 久久婷婷一区二| 日韩亚洲美州欧洲综三区一品在线| 天天插天天干| 好吊妞转入那个网| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 夜夜夜久久| 日本在线不卡一二区| 熟女精品一区二区三区| 97精品久久| 啊啊啊啊啊好大好舒服想要| 美女被啪到深处抽搐视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日韩成人综合网| 久久亚洲av成人无码国产| 可以看的av| 高清不卡国产| 麻豆国产av网| 欧美亚洲se91| 97精品一区二区视频在线观看| 蜜臀久久99精品久久久久久成人小说| 国产精品久久久久久久久久久久久久吹 | 欧美gv在线观看| 日韩在线一区高清在线| 人人操人人干xxx| 情趣丝袜无码操逼视频| 成人久久无码www| 曰韩操B| 亚洲中文字幕av | 国产超碰AV在线精品| 日韩在线观看字幕精品| 成人欧美日超碰| 99热精品在线播放| 一级人妻性爱视频| 亚洲图片激情综合另类| 国产精品人人爽人人做可爱福利| 中文字幕精品资源在线| 大奶啊啊好爽| 欧色性第一页| 夜夜骑操视频| 亚洲有码视频二区| 大香蕉强奸乱伦| 人人看人人摸人人色| 久久9亚洲| AV在线播放网址| 超清中文乱码字幕| 日本一区二区三区四区免费观看| 丰满人妻一区二区三区免费,| www.一本大99| 夜夜欧美 | 少妇高潮喷水无套久久久久久| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 一区二区三区免费岛国片| 92性色国产午夜福利在线661 | 91成人在线免费视频| 强奸乱伦大香蕉| 欧美激情欧美精品| 91路www| 97这里有精品| 岛国视频一二三区| 亚洲熟女国产综合另类| 91麻豆天美国产欧美高潮| 国产女大学生AV| 精品亚洲成人免费在线| 98福利在线视频| 人妻夜夜爽天天爽麻豆三区网站| 96久久精品一二三区色欲| 国产极品粉嫩馒头一线天av| 四虎av在线| 天天舔天天日天天射| 啊啊啊啊啊在线观看网址 | 精品性爱一二三区| 欧美一区二区一级岛国大片| 变态综合色| 亚洲91射| 青青伊人加勒比海| 玖玖视频在线资源一区二区三区| 亚洲综合欧美| 国产美女激情| 殴美牲| 99色色网| 久久亚洲婷婷| 少妇高潮对白在线观看| 日韩av不卡在线看| 欧美区亚洲区偷拍区| 亚洲偷拍欧美激情| 91色宗合| 亚洲图片偷拍视频区| 97精品视频网站| 亚洲日本激情| 久久精品国产99国产精品亚洲| 东京热AV男人的天堂| 青娱乐国产精品| 秋霞福利网| 国产精品免费久久久久久久久久| 在线观看 99热| 亚洲老司机123专区| 色欲人妻一区二区在线| 大香蕉综合| 黄色大片一区二区密桃丝袜| 一道本久久棕合爱| 色婷婷影视| 综合激情五月丁香| 色色综合网站| 色婷婷六月| 午夜αv| 亚州操操穴网| 午夜啪| 天美传媒在线一区| 欧美经典一区二区三区| 国产婷婷一区| 九九精品99| 色妇91| www.99在线| 久久精品无码一区二区三区| 又黑又大又粗| 久久av无码| 少妇色综合| 一起草精品人妻| 青青草公开在线免费不卡视频| 一区二区激情国产熟女 | 天天综合香 ld视频| 在线综合 亚洲 欧美中文字幕| 97视频在| 欧洲熟妇xxXx欧美老妇裸体 | 台湾佬中文娱乐自偷自拍| 日本黄色精品专区网站| 青青草字幕AV| 亚洲国产一区二区三区在线 | 久久熟女人| av天堂加勒比| 蜜桃久久久久久久| 成人网站 免费观看| 极品美女嘿咻| 久久九九一区二区三区成人| 欧美日韩操操操| 亚洲猛交| 久久超碰亚洲人| 国产又大又硬又长又粗| 五月天亚洲网| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 99这里都是精品| 日本熟女不卡视频| 五十路成人在线视频二区三区| 美女黄频a美女大全免费皮| 91碰碰碰| 亚洲欧美日韩免费观看| 精品九九九九九九九九九| 狠狠色色| 国产欧美日韩一区二区三区| 婷婷九月国产| 亚洲情色五月天| 亚洲第一无码播放立川理惠| 国产白丝网站| 99国产精品免费| 麻豆国产尤物AV| 日韩Va亚洲va欧美Ⅴa久久| 9精品久久久久| 天天操人人操骚逼网站| 2020视频1区2区3区| 特级特黄一级毛片免费| 91人妻在线视频| 99re在线视频国产| 亚洲熟妇图片| 六月丁香久久| 污污汅18禁网站在线永久免费观看| 老女人老91妇女老热女| 欧洲综合视频| 99re久久| 亚洲啪啪视频一区二区| 免费岛国一级片| a啊啊啊啊啊啊啊啊一区二区| 午夜福利区| 一区二区激情国产熟女| 欧美啪啪女女| 亚洲高清国产理伦片| 小电影欧美91| 日韩无码AB| 久久久影院| 99在线免费视频| 91精品丝袜在线观看| 又大又大又大又粗爽高潮观看 | 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 成全在线观看免费观看| 天天肏夜夜肏| 久久9精品网站| 综合色拍| 玖玖综合色| oumeisetu综合| 欧美午夜熟妇黑人精品91| 亚洲色图激情小说| 亚洲性爱无码乱伦av| 少妇69中文| 日韩欧美加勒比| 亚码激情| 天天综合网一91网| 操操AV电影| 国模精品一区二区三区苹果色戒| 亚洲成A∨人影院在线欢看| 国语国产操逼伊人AV网| 美女极品一区二区三区| 亚洲黄色视频在线观看视频| 精品无码久久久久久久久果冻糖心 | 亚洲资源网| 日本精品免费一区二区三区四区| 久久精品国产免费观看99| 国产野战露脸在线播放| 国产51色综合久久免费| 国产午夜激片Av毛片不卡| 亚洲国产麻豆一区二区三区| 不卡一区二区日本视频| 超碰成人最新最好看| 日本精品高清一二区一本到| 成人av福利在线观看| 俄罗斯一区二区视频在线观看| 香蕉热人人精品| 操逼视频亚洲| 黑人操一区二区| 日本 欧美 国产一区| 五月婷婷五月天| 97视频在线观看播放与子乱对白在线……| 伊人99热| 国产suv精品一区二区四区999| 日韩传媒在线| 国产成人天堂| 亚洲久草AV色图| 国产400孕妇孕交群| 日本一区二区亚洲综合| 999久久久免费精品国产牛牛| 亚洲精品三区在线观看| 日本色色色视频| 九九在线精品| 人妻精品综合中文字幕在线 | 2024人人操人人摸| 操少妇很爽av| 欧美内射少妇| 玖玖爱伊人玖玖爱| 天天色欧美| 久热伊人| 91在线免费观看处女| 麻豆国产原创AV色哟哟| 北条麻妃性愛视频| 亚洲资源吧| 欧美日韩大香蕉| 3d成人精品一区二区| 激情看片网站| 97色诱| 亚洲欧美变态| 综合久久99| 三级特黄60分钟播放| av一区二区三区 中文| 四虎永久在线精品免费网址| 欧美精品偷拍| 人妻熟妇一区二区三区| 国产精品探花色| 色色婷婷五月天| 在线天堂999| 蜜汁欧美| 久久精品久久九九精品| 加勒比大香蕉视频在线| 九九成人精品| 校园春色第一页| 国产精品无码av嫩草| 夜夜肏2021| 久久妇| 天堂69亚洲精品中文字| 91精品久久久久久77777| 欧美72网页| 大香蕉伊人75| 男女激情黄色网址| 亚洲综合影片| 欧美激情1区| 乱伦Av网| 亚洲综合图文| 亚洲性网| 99在线观看| 国产视频大全| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 97操B| 一本久道在线综合视频| 国产乱码久久| 一二三区视频在线观看| 综合亚洲网| 国产91精品在线免费| 欧美自拍偷拍免费观看| 69视频福利导航| 亚洲中文字幕熟女| 国产玖玖| av橘色网站| 青草青草久热| 久久精品中文| 午夜视频久久久久一区| 狠狠久久亚洲欧美专区| 久久超碰天天| 18禁超污无遮挡无码免费网| 老女人碰碰在线碰碰视频| 91搡老女人老妇女老熟女歌词翻译| 国产精品国产拍高清AV| 麻豆天美AV传媒第一页| 最近2019中文字幕国语免费版| 97香蕉人人乳| 欧美极品美女aaaaaa级黄片| 久草视频制服诱惑| 亚洲av青草久久一区二区| 激情五月天色色| 97操碰| 日本99久久| 天天天肏屄肏屄肏屄欧美欧美| japan日本高清乱xxxx| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 干妹子| 美国日韩黄色片| 密臀在线免费观看| 丁香五六月啪啪| 久草色悠悠在线视频| 亚洲无码成人精品| 精品久久人妻成人网| 亚洲天天影视色综合| 人人爱人人操人人性| 亚洲综合色在线| 偷窥自拍亚洲天堂网爆| 久久精品日韩专区免费观看| 日韩丝袜二区| 91n处女在线观看| 丁香五月天激情综合| 欧美性性性| 久无码| 久久免费99精品久久久久久| 男人久久精品| 丰满人妻无码一区二区三区| 欧美日日人人天天| 五月天婷婷基地| 啪啪视频免费在线观看| 水野优香在线观看| 午夜成人爽爽爽爽A片李冰冰| 超碰99热中文字幕| 操我无码| 熟妇视频一区二区三区在线| 性欧美另类高清| 中文字幕乱码人妻二区三区| 久久久精品中文字幕麻豆| 亚洲av强奸乱伦| 亚洲男人在线观看天堂| 97在线国产精品| 欧美日本中字另类在线| 天天操天天干美女网址导航| 99久在线精品99re8热视频在线| 日韩精品影视| 免费久久一级毛片大黄| 欧美熟妇精品黑人巨大一二三区| 在线视频97| 按摩中文字幕| 先锋影音av先锋一区| 少妇特黄一区二区三区| 四虎国产精品永久在线囯在线| 91九久| 久久av无码| 91男人天堂网| 五月丁香啪啪网| 野狼福利社区| 亚洲综合射| 午夜男女爽爽爽在线视频| 久久久久成人网| 热久久99999| 殴美大黄片| 亚洲国产97| 人人爽人人精品乱人伦AV| 日韩熟女操逼| 2019午夜福利视频| 日日夜夜天天| 人妻啪| 亚洲丝袜诱惑| 蜜桃久久久久久久久久久久| 女人爽到高潮潮喷18禁网站| 国产自制av蜜乳| 国产精品午夜精品| 97久久精品国产| 国产又色又爽又舒服的三级视频| 久久久久久久久久9| 色香综合天天影视综合 | 日韩精品操少妇| 69精品人人人人| 五十路六十路七十路熟婆| 精品人妻av区天天看片| 热久日综合| 伊人天堂在线| 91超碰人人操| 国内毛片婷婷六月色| 欧美AB在线| 天天欲望网| 色阁阁AV综合网| 伊人AAA| www.色五月| 爆操无码| 99久久精品国产高潮| 做爱A级亚欧| 亚洲精品尤物yw在线影院| 天天视频黄| 91天天综合| 91欧洲国产成人久久精品网站| 亚洲男人在线观看天堂| 国产久9| 亚州欧美在线| 999久久久久久久久| 亚洲精品久久一区二区三区蜜桃臀| 日韩噜噜69| 一区二区三区成人| 青青伊人加勒比海| 天欧美在线| 亚洲九九视频在线观看| 欧美啪啪啪91| 天天综合~91| 天天综合亚洲综合| 少妇综合| 蜜乳AV免费观看| 国产精品毛片?v一区二区三区| 极品综合| 探花激情视频| 嗯嗯啊中文字幕| 大香蕉十区| 亚洲高清在线se| 蜜臀AV一区二区三区| A 天堂| 国产精品一二三在线看| 18啪啪手机免费性爱| 乱伦日本色图AⅤ| 黄污污污污| 欧美国产成人在线| 青青草华人在线欧美在线| 天久久久噜噜噜久久国产精品爽爽| 国产精品高潮久久久无码| 黑人美精品 A片| 日本精品不卡一二三区| 大香蕉操久久| 91精品少妇搡搡搡| 91人妻在线视频| 大香蕉久| 一区黄二区黄| 日本免费一区二区不卡| 无遮挡男女激烈动态图| 亚洲一区二区三区四区视频| 夜夜操老骚逼视频网站| 国产成人精品午夜福利| 97免费视频在线观看视频| 婷婷超| 99热精品在线| 色拍偷亚洲| 四虎国产精品永久入口| 欧美男人一区| 天堂精品一区| 中文字幕交换人妻| 韩国女主播青草福利视频| 麻豆伊人网| 综合亚洲欧美精品日韩?v| 色99视频| 熟妇人妻一二三区免费| 国产一区二区a毛片| 国精品一区二区三| 少妇蹲下露出大唇5| 综合色色网| 99re在线视频这里只有精品| 日本成人A片免费看| 国产欧美一区二区| 亚洲在线A| 99九九久久| 偷拍导航视频网站| 五月丁香激情综合| 国产91丝袜 在线播放|