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

ARTICLE DETAIL

資訊詳情

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

LangChain4j+LangGraph4j:Java AI應用平臺實戰(zhàn)

LangChain4j+LangGraph4j:Java AI應用平臺實戰(zhàn) 簡介面向全棧 AI 應用開發(fā)者的工程示例與平臺源碼包聚焦 Spring Boot 3 LangChain4j Vue 3 技術(shù)棧覆蓋智能代碼生成、AI 智能體、LangGraph4j 工作流與 Tool Calling 等核心能力并展示可視化編輯、一鍵部署、應用管理及智能路由的實現(xiàn)思路既有完整的前后端交互鏈路也適合作為 AI 應用平臺腳手架進一步擴展。壓縮包共 216 個文件、約 1.14MB其中 Java 后端邏輯約占 143 個文件Vue/TS 前端頁面與交互約 40 個文件另有 JSON、XML、YML、SQL 等配置腳本及 Markdown 說明目錄分層明顯便于按模塊閱讀與二次開發(fā)智能體編排、工具調(diào)用注冊、工作流節(jié)點配置等關(guān)鍵示例均包含在內(nèi)。資源還結(jié)合多級存儲與 Nginx 部署給出 Prometheus、Grafana、ARMS 監(jiān)控方案并預留 Cursor Vibe Coding 協(xié)作開發(fā)入口可幫助讀者快速復現(xiàn)一套可觀測、可擴展的 AI 應用平臺骨架。已有 250 人學習下載適合正在搭建智能體、工具調(diào)用或工作流平臺的同學對照源碼梳理完整實現(xiàn)鏈路。1. 從智能體到代碼生成這個 AI 應用平臺到底在解決什么問題一個 Java 技術(shù)棧為主的團隊想上 AI 應用往往卡在同一個地方Python 生態(tài)的 LangChain 很成熟但團隊沒人愿意跨界維護兩套技術(shù)棧。這個平臺標題給出的答案很直接——用 SpringBoot3 做后端底座用 LangChain4j 接大模型用 LangGraph4j 做工作流編排再配一個 Vue3 的可視化畫布把 AI 能力變成能拖拽、能部署、能管理的產(chǎn)品。它解決的不是怎么調(diào)一次大模型接口而是怎么把智能體、代碼生成、工具調(diào)用這些能力沉淀成企業(yè)內(nèi)部的標準化應用平臺。適合兩類人一是想從零構(gòu)建 AI 應用平臺的架構(gòu)師二是接了類似需求但不知道從哪落地的后端和前端工程師。2. SpringBoot3 LangChain4j 的工程底座選型理由與最小可運行配置2.1 為什么是 LangChain4j 而不是自研封裝或 Python LangChain先回答一個很多人糾結(jié)的問題我直接寫 OpenAI SDK 或者 Spring AI 不行嗎自己封裝 OpenAI SDK 當然能跑通對話但一旦涉及多輪對話的記憶管理、文檔的 Embedding 切分、工具的自動發(fā)現(xiàn)和調(diào)用代碼量會迅速膨脹。LangChain4j 在 Java 生態(tài)里的定位和 Python 版 LangChain 一樣把這些通用能力抽象成 ChatModel、EmbeddingModel、AiServices、Tool 這些接口你只需要替換模型廠商的依賴業(yè)務(wù)代碼基本不動。Spring AI 和 LangChain4j 之間我選了后者原因是它對 ToolCalling 和函數(shù)回調(diào)的支持更直接Tool 注解的體驗和 Java 開發(fā)者的直覺一致。LangGraph4j 的出現(xiàn)補齊了 LangChain4j 最缺的工作流編排能力——之前做復雜 Agent 只能自己手寫狀態(tài)機現(xiàn)在有官方的圖執(zhí)行引擎節(jié)點、條件邊、狀態(tài)傳遞都是聲明式的。這里要認清一個現(xiàn)實LangChain4j 的迭代速度很快API 在不同小版本之間有過調(diào)整所以工程落地時要先鎖版本不要一路上最新。2.2 SpringBoot3 工程骨架與模型接入的最小配置SpringBoot3 強制要求 JDK17 起步實際項目我建議直接用 JDK21LTS 版本虛擬線程對 AI 場景的流式輸出有幫助。創(chuàng)建一個標準的 Maven 工程關(guān)鍵依賴就三個langchain4j-spring-boot-starter、langchain4j-open-ai兼容 OpenAI 協(xié)議的服務(wù)都走這個、langgraph4j-core。下面這個 pom 片段是經(jīng)過驗證的最小集合properties java.version21/java.version spring-boot.version3.3.5/spring-boot.version /properties dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-spring-boot-starter/artifactId /dependency dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-open-ai/artifactId /dependency !-- LangGraph4j 建議掛在 langchain4j 同一版本族下避免接口不匹配 -- dependency groupIdcom.langchain4j/groupId artifactIdlanggraph4j-core/artifactId /dependency /dependencies注意 langchain4j 和 langgraph4j 的 groupId 不一樣前者是 dev.langchain4j后者是 com.langchain4j。版本號我刻意沒寫死因為這兩個庫的版本更新頻繁直接查 Maven 倉庫選最新穩(wěn)定版即可但一定要檢查 langgraph4j 依賴的 langchain4j-core 版本和你項目里的保持一致否則運行時會出現(xiàn) NoSuchMethodError。模型接入配置走 SpringBoot 的配置文件這里以 OpenAI 兼容接口為例國內(nèi)云廠商的模型網(wǎng)關(guān)、Ollama、vLLM 部署的本地模型都能通過這個方式接入langchain4j: open-ai: chat-model: base-url: ${LLM_BASE_URL:http://localhost:8000/v1} api-key: ${LLM_API_KEY:sk-local} model-name: ${LLM_MODEL:qwen2.5-coder:32b} temperature: 0.2 max-tokens: 4096 log-requests: true log-responses: true embedding-model: base-url: ${LLM_BASE_URL:http://localhost:8000/v1} api-key: ${LLM_API_KEY:sk-local} model-name: ${EMBEDDING_MODEL:bge-m3}base-url 通過環(huán)境變量注入這樣同一個 jar 包在開發(fā)、測試、生產(chǎn)環(huán)境不用改配置。temperature 設(shè)成 0.2 是代碼生成場景的推薦值溫度太高模型會自由發(fā)揮生成的東西看著像代碼但編譯不過。log-requests 和 log-responses 在聯(lián)調(diào)階段一定要開LangChain4j 會把完整的請求體和響應體打出來排查 prompt 問題和 token 統(tǒng)計都靠它。2.3 模型接入層的抽象OpenAI 兼容接口與本地模型共存實際項目里不太可能只接一家模型。我一般會在業(yè)務(wù)代碼之上加一層 ModelRouter按場景路由到不同模型意圖識別用便宜的小模型代碼生成用能力強的 32B 以上模型Embedding 固定用一個。LangChain4j 的 ChatModel 接口天然支持這種抽象你只需要在配置類里聲明多個 BeanConfiguration public class ModelConfig { Bean Primary public ChatModel mainChatModel(Value(${llm.main.model}) String model) { return OpenAiChatModel.builder() .baseUrl(http://localhost:8000/v1) .apiKey(sk-local) .modelName(model) .temperature(0.2) .build(); } Bean public ChatModel fastChatModel(Value(${llm.fast.model}) String model) { return OpenAiChatModel.builder() .baseUrl(http://localhost:8000/v1) .apiKey(sk-local) .modelName(model) .temperature(0.1) .maxTokens(1024) .build(); } }Primary 注解保證默認注入的是能力最強的那個模型需要快模型的地方用 Qualifier(fastChatModel) 顯式指定。這個做法的好處是后續(xù)接 Anthropic 或 Gemini 時只要再實現(xiàn)一個 ChatModel Bean業(yè)務(wù)代碼零改動。到了這個階段你已經(jīng)有一個能對話、能 Embedding 的 SpringBoot3 后端了下一步就是把它升級成能自主完成任務(wù)的智能體。3. 用 LangGraph4j 編排代碼生成 Agent節(jié)點、條件邊與 ToolCalling3.1 LangGraph4j 的核心概念State、節(jié)點與條件邊LangGraph4j 解決的核心問題是一個智能體不只是一次模型調(diào)用而是感知-規(guī)劃-行動-觀察的循環(huán)。你需要在代碼里顯式表達這個循環(huán)包括循環(huán)什么時候結(jié)束、狀態(tài)怎么在節(jié)點之間傳遞。它有三個基礎(chǔ)概念State狀態(tài)、Node節(jié)點、Edge邊。State 是一個在節(jié)點間傳遞的數(shù)據(jù)載體Node 是處理狀態(tài)的一個函數(shù)Edge 定義節(jié)點的連接關(guān)系其中一種特殊的邊叫條件邊根據(jù)當前狀態(tài)決定下一步走哪個節(jié)點。這樣設(shè)計的好處是人和模型的分工變清楚了節(jié)點里的邏輯是你寫死的確定性代碼模型只負責在節(jié)點里產(chǎn)出內(nèi)容或決定走哪條條件邊。相比純提示詞驅(qū)動的 AgentLangGraph4j 讓整個流程可觀測、可 debug、可回放——這正是生產(chǎn)環(huán)境最需要的東西。下面定義一個代碼生成工作流的狀態(tài)類型public interface CodeGenState { GraphStateDTOString requirement GraphStateDTO.string(requirement); GraphStateDTOString plan GraphStateDTO.string(plan); GraphStateDTOString sourceCode GraphStateDTO.string(sourceCode); GraphStateDTOString execResult GraphStateDTO.string(execResult); GraphStateDTOInteger retryCount GraphStateDTO.int32(retryCount); GraphStateDTOBoolean passed GraphStateDTO.bool(passed); }每個節(jié)點只關(guān)心它需要的字段LangGraph4j 會在節(jié)點完成后自動合并新狀態(tài)。retryCount 在這里很關(guān)鍵它控制整個工作流的終止條件避免模型陷入生成-執(zhí)行失敗-再生成的死循環(huán)。3.2 定義代碼生成工具Tool 的參數(shù)描述決定調(diào)用準確率ToolCalling 是大模型連接外部系統(tǒng)的通道。LangChain4j 的做法是用 Tool 注解標記一個 Java 方法模型根據(jù)方法名、描述和參數(shù)描述來決定什么時候調(diào)用、傳什么參數(shù)。很多人第一次寫工具方法時只寫方法名結(jié)果模型死活不調(diào)用原因就是描述信息太少模型不知道這個方法能干什么、參數(shù)應該填什么。Component public class CodeExecutionTools { Tool(執(zhí)行傳入的 Java 源碼返回編譯和運行的標準輸出如果編譯失敗則返回錯誤信息) public String runJavaCode( ToolParam(完整的 Java 源碼字符串必須包含 public class Main 和 main 方法) String sourceCode) { // 將 sourceCode 寫入臨時文件調(diào)用 javac 編譯java 執(zhí)行 // 捕獲 stdout 和 stderr超時時間設(shè)為 10 秒防止模型生成死循環(huán)代碼。 return output; } Tool(讀取項目內(nèi)指定相對路徑的文本文件內(nèi)容) public String readFile( ToolParam(相對項目根目錄的文件路徑) String filePath) { return FileUtil.readUtf8String(filePath); } }ToolParam 里的描述會作為參數(shù)說明拼進模型請求的 tools 定義里描述越具體模型傳參的準確率越高。我踩過的坑是參數(shù)描述太模糊模型把文件路徑傳成 test.java而實際要傳 src/test/java/Test.java。這個環(huán)節(jié)沒捷徑每個工具都要站在模型的角度寫清楚這個參數(shù)應該是怎樣的格式。3.3 組裝可執(zhí)行的工作流plan → 生成 → 執(zhí)行 → 評審有了狀態(tài)和工具就可以組裝工作流了。這個代碼生成 Agent 的流程是先讓模型讀需求做計劃再生成源碼然后調(diào)用工具執(zhí)行最后讓模型評審執(zhí)行結(jié)果。評審不通過且重試次數(shù)沒超限就帶著錯誤信息回到生成節(jié)點重新生成。Service public class CodeGenWorkflow { private final ChatModel chatModel; private final ToolExecutor toolExecutor; public CodeGenWorkflow(ChatModel chatModel, ToolExecutor toolExecutor) { this.chatModel chatModel; this.toolExecutor toolExecutor; } public StateGraphCodeGenState buildGraph() { StateGraphCodeGenState graph new StateGraph(CodeGenState.SPEC); graph.addNode(planner, this::planNode); graph.addNode(codegen, this::codeGenNode); graph.addNode(executor, this::executeNode); graph.addNode(reviewer, this::reviewNode); graph.setEntryPoint(planner); graph.addEdge(planner, codegen); graph.addConditionalEdge(executor, this::needFix, Map.of(true, codegen, false, reviewer)); graph.addEdge(reviewer, StateGraph.END); return graph; } private MapString, Object planNode(MapString, Object state) { String requirement (String) state.get(requirement); String prompt 你是資深后端架構(gòu)師。根據(jù)需求輸出實現(xiàn)計劃要求 1. 列出需要創(chuàng)建的類及其職責 2. 標注每個類之間的依賴關(guān)系 3. 計劃不超過 200 字 需求%s .formatted(requirement); String plan chatModel.generate(prompt); return Map.of(plan, plan); } }condition 邊是 LangGraph4j 的核心needFix 方法返回 true 時回到 codegen 節(jié)點false 時進入 reviewer 節(jié)點。這樣模型生成錯了也不怕executor 節(jié)點拿到的編譯錯誤會被拼進新一輪生成的 Prompt形成錯誤反饋-重新生成的閉環(huán)。注意節(jié)點函數(shù)的入?yún)⒑头祷刂刀际?Map變量名要和狀態(tài)定義時的 key 保持一致。組裝工具調(diào)用要注意 langgraph4j 的機制和 LangChain4j 的 AiServices 不太一樣——工作流節(jié)點里需要你自己把 ChatModel 和工具的執(zhí)行結(jié)果串聯(lián)起來。常見的做法是復用 LangChain4j 的 AiServices把它綁定工具類后作為一個整體節(jié)點調(diào)用private MapString, Object codeGenNode(MapString, Object state) { CodeGenerator agent AiServices.builder(CodeGenerator.class) .chatModel(chatModel) .tools(new CodeExecutionTools()) .build(); String requirement (String) state.get(requirement); String plan (String) state.get(plan); String lastError state.get(execResult) null ? : (String) state.get(execResult); String code agent.generate(requirement, plan, lastError); return Map.of(sourceCode, code); }這里 AiServices 內(nèi)部已經(jīng)把 ToolCalling 的消息循環(huán)封裝好了模型請求調(diào)用工具框架自動執(zhí)行工具方法再把結(jié)果回傳給模型直到模型給出最終答案。你只需要在界面接口里定義 generate 方法并標注 SystemMessage 和 UserMessage 模板即可這就是 LangChain4j 把 Java 接口變成 Agent 的標準方式。3.4 流式輸出與進度推送SSE 把過程反饋給前端工作流跑起來后如果整個操作要等 30 秒才返回前端的體驗是災難。我一般用 SSEServer-Sent Events把每個節(jié)點的執(zhí)行狀態(tài)實時推給前端。后端在節(jié)點入口往 Spring 的 SseEmitter 里寫一條進度事件前端在畫布對應節(jié)點上亮燈。LangGraph4j 本身沒有內(nèi)置 SSE 支持但你可以用一個全局的 WorkflowProgressPublisher 組件節(jié)點里調(diào)用它發(fā)事件Controller 層暴露 SSE 接口訂閱。Go 的實現(xiàn)不復雜SseEmitter 存進 ConcurrentHashMap節(jié)點狀態(tài)變化時遍歷發(fā)送前端用 EventSource 接收。注意 SseEmitter 默認超時時間是 30 秒工作流超過這個時間要記得在初始化時顯式設(shè)置更長超時。4. Vue3 可視化編排從拖拽畫布到應用管理的一體化前端4.1 畫布的數(shù)據(jù)模型一個 JSON 就是一個工作流可視化編排的本質(zhì)是所見即所得地編輯一個 JSON后端拿著這個 JSON 再把它翻譯成 LangGraph4j 的 StateGraph。所以前端畫布的數(shù)據(jù)模型一定要工作流對齊而不是只顧畫得好看。我維護的數(shù)據(jù)結(jié)構(gòu)長這樣{ nodes: [ { id: n1, type: agent, label: 代碼生成, config: { model: qwen2.5-coder:32b, temperature: 0.2 } }, { id: n2, type: tool, label: 執(zhí)行器, config: { toolName: runJavaCode } }, { id: n3, type: condition, label: 評審通過, config: { condition: review.passed true } } ], edges: [ { source: n1, target: n2, label: normal }, { source: n2, target: n3, label: normal }, { source: n3, target: n1, label: false }, { source: n3, target: end, label: true } ], global: { maxRetry: 3, timeoutSeconds: 120 } }node 的 config 字段是給屬性面板用的每個節(jié)點的類型不同配置項也不同。agent 節(jié)點要選模型和調(diào)參tool 節(jié)點要選工具名和入?yún)?。后端解析這個 JSON 時按 type 分發(fā)到不同的節(jié)點工廠這樣就實現(xiàn)了一次編排、到處執(zhí)行。4.2 節(jié)點面板、連線和屬性表單的 Vue3 實現(xiàn)Vue3 實現(xiàn)拖拽畫布選 vue-flow 最省力它對 Vue3 Composition API 支持得很好節(jié)點拖拽、連線、縮放的交互開箱即用。核心組件結(jié)構(gòu)是左側(cè)一個節(jié)點物料面板中間是畫布右側(cè)是選中節(jié)點的屬性表單三個區(qū)域的數(shù)據(jù)流都匯到一個 reactive 對象上script setup import { ref, reactive, computed } from vue import { VueFlow, useVueFlow } from vue-flow/core import vue-flow/core/dist/style.css import AgentNode from ./nodes/AgentNode.vue import ToolNode from ./nodes/ToolNode.vue const nodes ref([]) const edges ref([]) const selectedNode ref(null) // 左側(cè)物料面板的拖拽把節(jié)點類型寫進 dataTransfer // 畫布 drop 事件里根據(jù)類型創(chuàng)建節(jié)點對象。 function onDragStart(event, type) { event.dataTransfer.setData(application/flow-type, type) event.dataTransfer.effectAllowed move } function onDrop(event) { const type event.dataTransfer.getData(application/flow-type) const position project({ x: event.clientX, y: event.clientY }) nodes.value.push({ id: node-${Date.now()}, type, position, config: defaultConfig(type) }) } // 選中節(jié)點后它的 config 直接綁定到右側(cè)表單組件 // 表單的每一項都是動態(tài)渲染的節(jié)點類型決定渲染哪些字段。 const selectedConfig computed(() selectedNode.value?.config || {}) /script核心思路就兩條節(jié)點類型決定默認配置和屬性表單的渲染字段選中節(jié)點和屬性表單之間用 selectedNode 單例綁定。屬性表單這里有一個 Vue3 動態(tài)增刪表單項的經(jīng)典需求——agent 節(jié)點的環(huán)境變量是不定長的我直接用 v-for 渲染一組 key-value 輸入框添加和刪除按鈕只操作數(shù)組的 push 和 splice配 deep 監(jiān)聽同步到畫布節(jié)點的 configdiv v-for(env, index) in selectedConfig.envs :keyindex classenv-row input v-modelenv.key placeholder環(huán)境變量名 / input v-modelenv.value placeholder值 / el-button typedanger clickselectedConfig.envs.splice(index, 1)刪除/el-button /div el-button clickselectedConfig.envs.push({ key: , value: })添加環(huán)境變量/el-button這個表單項的增刪改查全在 reactive 對象上完成Vue3 的代理機制保證畫布節(jié)點同步刷新。整體畫布在工作中就是一個后臺管理系統(tǒng)里的復雜表單只是這個表單的結(jié)構(gòu)不是人定的是用戶自己拖出來的。4.3 應用管理與一鍵部署的前后端銜接可視化編輯只是平臺的前半段后半段是應用管理和一鍵部署。后端需要提供應用維度的 CRUD 接口創(chuàng)建應用、保存畫布 JSON、發(fā)布版本、查看部署狀態(tài)。我習慣把保存和發(fā)布拆成兩個動作——保存只寫數(shù)據(jù)庫草稿發(fā)布才真正觸發(fā)構(gòu)建和部署。這樣用戶頻繁調(diào)整畫布不會產(chǎn)生一堆垃圾部署記錄發(fā)布記錄表里每一行都可回滾。一鍵部署的后端實現(xiàn)是異步任務(wù)加日志流推送。收到發(fā)布請求后后端把應用 ID、畫布 JSON、模型配置打包成一個部署任務(wù)丟給線程池執(zhí)行。部署過程分四步生成后端工程骨架、寫入工作流配置、Maven 打包、Docker 構(gòu)建并啟動。每一步的日志都通過 SSE 實時推給前端用戶在瀏覽器里能看到構(gòu)建進度條一行一行滾動這是一鍵部署體驗的關(guān)鍵。PostMapping(/api/apps/{appId}/deploy) public SseEmitter deploy(PathVariable Long appId, RequestBody DeployRequest request) { SseEmitter emitter new SseEmitter(300_000L); deployService.submit(appId, request, emitter); return emitter; }SseEmitter 的超時時間我顯式設(shè)成了 300 秒因為首次構(gòu)建要拉 Maven 依賴和 Docker 基礎(chǔ)鏡像慢的時候能跑到 3 分鐘以上。前端 EventSource 創(chuàng)建后要監(jiān)聽 readyState 變化部署完成后主動 close 連接避免無效連接占滿 Tomcat 線程。5. 從開發(fā)到上線的常見問題排查5 個高頻踩坑點5.1 SpringBoot 版本與 JDK 版本不匹配導致注解掃描失敗現(xiàn)象項目啟動后報 ClassNotFoundException: jakarta.servlet.http.HttpServlet或者 swagger 頁面打不開接口全 404。原因SpringBoot3 用的是 Jakarta EE 規(guī)范包名從 javax.* 改成了 jakarta.*。如果你的本機 JDK 是 8 或 11Maven 編譯時用了低版本 source/target生成的字節(jié)碼指向老的 javax 包運行時必然找不到類。還有一種情況是依賴里混入了 javax.servlet-api 的老傳遞依賴把包名污染了。解決JDK 鎖到 17 或 21在 pom 里顯式聲明 spring-boot-maven-plugin 的 jvmArguments 為 --add-opens java.base/java.langALL-UNNAMED防止反射告警。排除所有 javax.servlet 開頭的依賴改用 spring-boot-starter-web 統(tǒng)一管理。排查命令是 mvn dependency:tree看是否有老 servlet 傳遞進來。5.2 WebFlux 與 WebMVC 沖突SSE 流式輸出起不來的元兇現(xiàn)象后端加了 SSE 接口后項目啟動直接報 SpringApplicationApplicationContextException: Invalid web application: spring.main.web-application-typenone或者 SSE 接口永遠掛起不返回。原因LangChain4j 的流式響應在部分版本里默認依賴 WebFlux 的 Flux 類型引入 spring-boot-starter-webflux 后和原來的 spring-boot-starter-web 打架。Spring 容器檢測到兩個 WebApplicationFactory直接不知道用哪個只能報錯。解決確定自己用的是 Servlet 棧還是響應式棧。我用 Servlet 棧做 SSE就別引 webfluxLangChain4j 流式輸出用 StreamingChatModel 接口阻塞式訂閱 Flux 再轉(zhuǎn) SseEmitter。如果非得混用就把 web-application-type 顯式設(shè)為 servlet并保證 webflux 的依賴 scope 是 provided 或完全不引入。這個坑排查起來很費時間啟動日志里看到 invalid web application 直接去查依賴樹別去改配置瞎試。5.3 反代緩沖讓流式輸出變成等半天一次性吐出來現(xiàn)象本地 flow 輸出一個字一個字蹦部署到服務(wù)器之后前端 EventSource 要等幾十秒才收到第一批內(nèi)容。原因Nginx 默認開了 proxy_buffering會等后端響應全部寫完再一次性轉(zhuǎn)發(fā)給客戶端SSE 的 chunked 流式效果被徹底吞掉。這不是后端代碼的問題是網(wǎng)關(guān)層配置問題典型的上線才踩坑。解決在 Nginx 的 location 配置里加上 proxy_buffering off; 和 proxy_cache off;同時把 proxy_read_timeout 調(diào)到 300 秒以上。注意 SSE 用的是長連接心跳設(shè)置要同時照顧 Nginx 和瀏覽器兩側(cè)的超時。代碼里 SseEmitter 注釋里寫清楚必須配 Nginx 關(guān)緩沖防止部署的人不懂這個關(guān)聯(lián)關(guān)系。5.4 ToolCalling 工具參數(shù)缺失描述模型寧可拒絕也不調(diào)用現(xiàn)象日志里模型明確說需要調(diào)用工具但響應里的 tool_calls 是空的或者傳過來一個空的 JSON 參數(shù)業(yè)務(wù)側(cè)解析直接拋異常。原因大模型在不確定工具參數(shù)格式時會選擇不調(diào)用或傳入空值。而我早期寫的 ToolParam 只有參數(shù)名沒有描述模型不知道這個字符串應該填相對路徑還是絕對路徑。更隱蔽的是參數(shù)類型不匹配——工具方法聲明的是 Map模型傳過來的卻是 JSON 字符串。解決每個 ToolParam 都按格式 示例寫描述比如相對項目根目錄的文件路徑例如 src/main/java/Application.java。復雜參數(shù)不要用 Map定義成 POJO 配合 ToolParam 逐字段描述。另外要確認工具返回值轉(zhuǎn)成 String 后沒有截斷有些模型服務(wù)對 tool message 有長度限制超長返回會被丟棄表現(xiàn)為工具調(diào)用后模型沒有反應。5.5 Vue3 屬性繼承與表單校驗失效的連帶問題現(xiàn)象屬性面板里填的表單值保存后又變回原樣或者畫布的全屏按鈕在 Edge 瀏覽器里偶爾點不動鼠標點上去沒反應。原因這個現(xiàn)象和 Vue3 的組件屬性透傳機制有關(guān)。自定義組件如果根元素恰好是另一個組件外部傳入的 class、style、事件監(jiān)聽器會透傳到根組件上如果根組件內(nèi)部也用 v-bind$attrs容易產(chǎn)生事件覆蓋。比較典型的是 Element Plus 的 el-form-item 在動態(tài)渲染時label 屬性被透傳走了導致校驗觸發(fā)條件丟失表單值不更新另一種情況是畫布全屏按鈕的外層容器把 click 事件捕獲了。解決在 Vue3 組件里顯式聲明 inheritAttrs: false并手動在需要的位置綁定 $attrs避免事件和樣式透傳到意外的 DOM 節(jié)點上。動態(tài)表單項的 prop 屬性要用 index 拼接區(qū)分不要都用同一個固定字符串否則校驗狀態(tài)互相覆蓋。Edge 里點不動按鈕先懷疑是否被某個透明遮罩層擋住給按鈕加 z-index 并確保外層組件有明確的定位上下文別裸奔。注意以上五條是高頻但不是全部AI 應用平臺涉及的新依賴多、版本節(jié)奏快上線前把它當體檢列表過一遍能省出至少一個周末的排錯時間。6. 進階多模型路由、鏈路追蹤與壓測驗證平臺能跑通以后下一個問題就是成本和質(zhì)量。大模型 API 按 token 計費代碼生成場景一次調(diào)用動輒幾千 token全公司都用最強的 32B 模型扛不住。我一般會在網(wǎng)關(guān)層做模型路由分發(fā)而這正是多路召回思路的工程化落地——把用戶請求先做意圖分類簡單任務(wù)翻譯、格式化、解釋報錯直接落到一個輕量模型上復雜任務(wù)生成完整項目、多文件改造才轉(zhuǎn)發(fā)到強模型。public interface ModelRouter { String route(String intent, int estimatedInputTokens); } Component public class DefaultModelRouter implements ModelRouter { Override public String route(String intent, int estimatedInputTokens) { if (estimatedInputTokens 3000 || intent.startsWith(codegen:)) { return strong; } return fast; } }估 token 的辦法不精確但夠用中文字符按 1.5 倍估算代碼字符按 0.4 倍估算取整加余量。另外鏈路追蹤要趁早接工作流的每個節(jié)點執(zhí)行耗時、模型調(diào)用的 token 消耗、工具調(diào)用的成敗全都要落日志traceId 從請求進來就生成并貫穿 SSE 和異步任務(wù)。我用的是最樸素的方案——MDC put traceIdlogback 輸出到控制臺和文件排障時按 traceId grep 一次拿到全鏈路。微服務(wù)規(guī)模大了再上 SkyWalking 也不遲單機階段別過度設(shè)計。壓測驗證重點關(guān)注兩個指標工作流單次完成時間 P95 和部署任務(wù)的并發(fā)上限。前者決定用戶體驗后者決定平臺的穩(wěn)定性。用壓測工具模擬 50 個并發(fā)用戶同時觸發(fā)代碼生成工作流觀察數(shù)據(jù)庫連接池和線程池是否成為瓶頸。LangGraph4j 的節(jié)點執(zhí)行是阻塞式的但節(jié)點之間沒有共享狀態(tài)可以放心加 Async 把無依賴的節(jié)點并行化。我自己踩過的教訓是剛開始為圖省事把所有工具方法都加上 synchronized結(jié)果多路召回一上線就串行排隊P95 從 8 秒暴漲到 40 秒。后來改成工具內(nèi)部用無狀態(tài)設(shè)計只在寫文件時用臨時文件隔離壓測直接達標。這個平臺的完整落地路徑是SpringBoot3 接模型能力LangGraph4j 編排復雜工作流ToolCalling 打通系統(tǒng)邊界Vue3 把這一切變成可視化操作。到了后期你會意識到平臺最大的價值不是某一個 AI 能力而是把散落在各種腳本里的 AI 調(diào)用沉淀成了可編排、可觀測、可回滾的標準化應用。希望這些思路和踩坑記錄能幫到你少走一段我走過的彎路。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
人妻AV 中文字幕的| 91精品人妻五十路| 综合网91| 日本熟妇精品九九| 亚洲天堂在线怕怕视频| 色婷婷导航| 啊啊啊啊二区好大| 福利视频香蕉免费一区二区在线| 亚洲色 国产 欧美 日韩| 亚洲男人的天堂V| 亚洲男人在线观看天堂| a在线观看| 亚州熟妇精品| 99热99在线播放激情| 久久伊人青青草| 人人操,人人液| 色官网色综合| 91少妇通奸网站| 国产情侣自拍在线播放| 亚洲色交| 亚洲高清色综合| 91亚洲高清| 天无日色综合| 五月婷婷丁香六月丁香| 人妻人妻天天碰| 亚洲成人久久一区二区| 性色A∨91| 国产精品乱人伊人网| 97在线免费| 青青草吊丝| 操逼日批| 2003天天干夜夜操| 婷婷五月在线视频| 久热在线精品免费观看| 综合亚洲欧美| 九九九九九九成人| 人妻81p| 久久久工口| 色网在线视频观看免费| 久久春色| 欧美,日韩,中文,另类| 欧美日韩999| 大学生美女口爆| 丁香婷婷激情五月天无毒不卡| 激情av| 欧美人人曰人人操人人射射| 熟妇熟女一区二区三区| 九九九九九九免费视频| 欧美日韩亚洲五月天婷婷| 亚洲精品男人的天堂| 综合网欧美| 午夜精品人妻二区三区| 丰满少妇人妻久久久久久| 欧美 精品国产制服第一页| 人人澡人人澡人人| 999综合色| 成功精品影院| 成人综合久久精品色婷婷| 视频在线观看免费一区二区三区| 美女尤物人人操| 色噜噜婷婷| 久久久久久免费电影| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 无马一区二区| 欧美偷偷网| 97爱b| 做爱福利视频一区二区| 91天天综合网| 另类欧美综合| 五月丁香综合啪啪| 色五月AV在线| 欧美黄色大片在线观看 | 国产女人与拘做受视频免费| 欧美淫穴| 2017大香蕉| 久久久久亚洲Aⅴ无码| 色九月综合| 四虎免费在线观看| 国产999精品久久久久久| 欧美熟妇亚洲版| 免费人成毛片乱码| 日本九九久久99播| 伊人网青青| 91亚洲黑人| 99999久久精| 日韩黄色电影网站| 97视频在线播放| 五月激情综合网| 精品久久久久综合无码| 一本一道人妻久久一区二区三区| 91久久久久久久久18| 亚洲人人操| 一区二区视频在看| 天美传媒AV国产在线| 亚洲无码国产精品久久| 97精品人妻一二三四| 激情五月天色色网| 亚洲欧美日韩制服另类| 日韩电影天堂视频一区二区| 亚洲日韩精品在线播放| 国产精品999aaa| 色 亚洲 91| 免费a在线播放v| 日韩猛交| 亚洲 中文 欧美 日韩 在线| 精品少妇一区二区三区免费观看| 在线岛国新天堂8| 欧美人妻一区二区| 品亲网欧美品亲网| 极品色社| 亚洲人人操| 男女激烈网站最新| 97天堂| 久久久久78| 精品91摸| 97久久精品亚洲| 大香蕉免费乱伦视频| 91中文字幕| 久久久久96| 蜜桃久久久久久久| 亚洲熟妇丝袜在线观看| 亚洲无码99| 国产亚洲精品玖玖玖在线观看| 超碰九7免费| 嗯嗯啊啊好大好爽| 亚洲日本天堂| 亚洲宗合网| 久久久网一区| 欧美综合在线91| 九九亚洲精品| 日韩电影天堂视频一区二区| 日本久久综合| 欧美熟女丝袜| 后入综合久久| 麻豆精品.欧美精品.日韩精品.| 欧美天天在线| 黄页网站成人免费| 男人下部插入女人下部| 亚洲精品三| 日本高清_区二区三区| 歐美一級亂黃99在綫精品| 91精品久久综合熟女| 亚洲综合色在线| 动漫爆乳3D奶水一区在线观看| 激情五月天校园春色网| 国产1769在线| 天天亚洲| 九九九九九用不成了| 夜夜嗨一区| 亚洲欧美电影| 国产欧美日韩精品中文| 亚州欧美在线| 亚洲综合性感在线| 91色花堂| 国产久久成人| 久久久91福利姬| 国产性爱欧美性爱在线| 久久久久久久| 久综合网| 久久在肏| 精品国产一区二区三区av在线资源| 日韩av免费一级电影| 国产黄a三级三级三级av在线看| 国产亚洲禁久一区二区| 人人色人人射人人妻| 狠狠爱夜夜干| 国产1024在线播放| 中日高清无码操逼视频| 97超碰巨乳| 精品亚洲天堂| 9999免费精彩视频| 大香蕉92| 久久久久久精| 一块操欧美性爱| 欧美亚洲宗合色性图| 美女久久久久久久久久久| 搞中出久久| 欧美色图片91| 天天躁日日躁XXXXYY| 国产中出内射一区二区| 99精品视频在线观看免费| 乱色视频中文字幕| 97欧美色综合| 国产区性爱在线视频秋霞豆| 日本精品性生活久久久| 亚洲色图尤物视频| 91国内外在线| 色欲日韩欧美在线一区| 男人天堂无码| 婷婷激情五月| 富女玩鸭子一级毛片| 亚洲无套久久嗯嗯| 色吧5亚洲| 精品久一区免费| 日本一区二区亚洲综合| 熟啊v色欧美热| 日韩熟女操逼| 997色在线| 操久久久久久| xxxx网站亚洲精品| 高清无码学生妹高潮| 久久午夜伦| 很很操在线| 欧美激情色婷婷花野真衣一区二区| 91视频精品| 97精品综合久久网| 丝袜AV一二三区| 黄片国产精品一区二区| 久久系列| 久久9精品网站| 免费看美国人人爽,人人操| 日韩综合无码色欲vv| 加勒比色99999| 日韩97视频!在线| 国产在线精品偷| www.久久最新地址| 88xx成人精品视频| 日韩一区二区熟女| 亚洲91网站| 亚洲欧美综合图片| 五月天久久婷婷亚洲| 欧美传媒一区| 99e久久国产精品| www…国产操逼| 夜夜嗷嗷一区二区| 国产97亚洲| 五月天玖玖资源站| 伊人青青一区成人视频在线观看区| 久久精品99久久久久久| 97超碰精品| 色色五月天婷婷| 大香蕉92| 久操网址| 裸体美女久久久| 久热影视| 色爱欲亚洲| 欧美日韩国产成人高清| 先锋精品av色鲁| 天天天肏屄肏屄肏屄欧美欧美| 视频国产精品未满十八禁止在线观看| 欧美老熟另类| 亚洲无码国产探花在线观看| 伊人大香蕉在线| 亚洲91色| 免费一级特黄特色大片在线观看看| 安微少妇操BBB| 久久夜嗨| 天天日天天舔天天喷天天射| 日韩欧美视频青青| 中文字幕 国产 精品| 日日夜夜免费| 91欧美经典| 国产精品不卡一区二区三区| 伊人久久亚洲中文字幕| 95人妻爽爽人人做人人澡| 日韩免费三级黄片电影| 天美传媒婬乱在| 青青伊人加勒比海| 亚洲伊人久久精品狠狠在线| 操熟女91| 欧美丰满少妇xx高潮| 粉嫩国产精品久久粉嫩| 综合亚洲欧美| 成人资源中文字幕在线观看天天| 超碰97人妻自拍| 色色色欧美| 97视频620| 久久精品国产精品一区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 搡老熟女老女人老熟妇免费视频| 久视频在线观看| 七月婷婷综合| 久艹伊人精品综合在线| 色色色日本| 91精品91久久久久77777| 75大香蕉| 9超碰免费| www色色色com| 啊啊啊啊免费视频| 性色avv| 久久久精品中文字幕爱豆| 91骚妇| 香蕉婷婷| 绑缚麻绳人妻寝取完整版| 欧美天天综| 三级特黄60分钟播放| 东京热精品97综合网| 精品日韩中文在线| 青青草国产一区二区三区| 欧美亚洲另类在线蜜桃| 怡红院亚洲怡春院av| 亚洲自拍欧美国产首页网曝| 国产aⅴ无码片毛片一级网站| 久久m| 日韩成人性爱AV| 亚欧性爱无码| 欧美人人曰人人操人人射射| 免费精品人妻一区二区三| 春色综合免费| 嗯~啊~轻一点 视频| 96一区二区三区| 超碰美女97| 97在线免费| 岛国免费视频在线| 香蕉一区二区三区在线视频| 香蕉久久精品| 久操不卡视频| 99久久综合网| 亚洲色性| 欧美乱欲| 久久这里只精品| 东京热,男人的天堂| 日韩一级二级三级免费看完整版国语版 | 91精品国久久久久久无码| 静品嫩模一区二区| 精品午夜福利国产一区二区在线观看| 青青伊人这里只有精品| 人人摸人人干| dy888午夜老子影视达达兔| 亚洲另类天堂| 三级色综合| 强奸国产精品视频| 免费成人自拍视频在线| 精品97精品97| 无码人妻丰满热妇又大又粗| 97在线观看视频| 激情五月婷婷综合| 欧 美 自 拍 偷 拍| 色一射色一射| 99亚洲国产精品色一区二区三区| 亚洲图片 激情小说| 中文字幕在线高清男人的天堂| 91色人| 日本超碰在线国产一区| 午夜.DJ高清在线观看免费7| 中文字幕无码不卡啪啪| 欧洲免费一区二| 伊人久久大香线蕉无码| 九九九999久久久网站| 超碰午夜在线| 欧洲乱码视频| 99热在线观看| 日本性爱少妇| 欧美A片中文字幕| 2017天天操天天日| 欧美亚洲美少妇一区二区| 激情综合五月婷婷| 国产精品亚洲一区二区三区四区| 亚洲熟女乱色一区二区三区| 极品少妇久久久| 制服中出中文人人精品| 麻豆AV一区二区| 97婷婷色| 日韩久久激情精品| 操婢日韩| 3PAV乱伦视频| 蜜臀99久久| 久久精品无码熟妇一区二区三区视频导航 | 操淫穴亚洲五月丁香 | 久96热在线观看视频| 日本天堂在线播放| 久久99精品九九久久久婷婷| 性色高清在线| 91亚州日韩高清| 最近的最新的中文字幕视频| 日韩欧美国产一区二区三区四区 | 婷婷情色综合网| 五月丁香六月婷综合成人综合 | 在线亚洲精品久久久| 精品射1999| 久久极品一区二区| 欧洲色色| 99在线精品视频| 午夜免费福利视频一区| 亚洲精品a人片在线观看视| 中文字幕一区二区三区人妻少妇在线| 久久美女福利是上海美女| 午夜视频好爽啊| 牛牛AV人人夜夜澡人人爽| 国产熟女精品一区二区| 色激情综合网站| 日本不卡一二区| 精品少妇99| 亚洲欧洲综合| 无码人妻精品酒店| 在线播放成人高清免费视频| 天天色黄色影院天天操| 操逼天美3区| 中文字幕人成乱码熟女香港| 国产一级不卡在线观看| 乱伦Av网| 秋霞欧美性爰视频| 色婷婷成人| 亚洲色色色| 人人喜人人妻| 制服丝袜第二页| 香蕉色网| 免费视频一二三区| 在线毛片片免费观看| 人人看人人插| 久久亚洲精品成人av| 久久精品店| 大香蕉伊人久久| 黑操B| 操逼精品视频| 日本久久久精品电影| 国产9熟妇视频网站| 少妇蹲下露出大唇5| 成人精品无码| 国产曰批免费观看久久久| 91小视频| 美女黄页| 亚洲91射| 天天影视网综合少妇| 欧美色图片91| 中日韩久久久免费看| 亚州色综合| 亚洲一区二区三区不卡国产欧美| 中文字幕精品区先锋资源| 久久极品伊人| 精人妻无码一区二区三区伊人直播 | 超碰九7免费| se吧提供91精品国产91久久久久久| 狠狠中文字幕| 久久国色天香香蕉| 亚洲脚交| 国产探花日韩援交| 色五月婷婷久久| 97硬碰| 久夜操| 2017人人操,人人摸| 久久99久久99精品免视看婷婷| 啪啪视频mP4| 中文字幕乱偷人妻久久艾草网| 欧美日韩在线小说 | 国产午夜精品理论片一二三区区| 久热久操| 啊啊啊想要| 青娱乐欧美激情一区二区| 日本精品一区二区中文字幕| 裸模AV女优| 欧美日韩色| 欧美顶级黄色大片免费| 亚洲国成人情色好看电影| 国产精品农村妇女精品| 日韩国产乱子伦App| 日韩精品高清资源在线| 91色香| 久草福利在线资源站| 人妻欧美| 国产精品岛国片在线观看| 日韩超碰精品综合| 超碰欧美| 99热97| 熟妇人妻丰满久久久久久久无码| 久久一区二区三区入口| 亚洲精品白丝| 天天搞在线综合网| 欧美 亚洲 综合 制服 另类| 国产精品一区av在线| 久久久久久久少妇| 精品视频一区二区| 亚洲男人天堂2019| 欧美亚洲综合高清在线| 先锋精品av色鲁| 日比av无码| 99热超碰在线| 国产精品久久蜜乳av| 女人高潮大叫一级毛片| 日韩专区久久久| 欧美日韩性爱操大逼| 天天操天天7| 91成人在线免费视频| 亚洲日韩少妇一道本视频| 日本十八禁免费看污网站| 综合网亚| 精品人妻一区二区视频| 五月天加勒比啪| 国产成人亚洲精品无码古代早漏男 | 亚洲精品国产AV天美传媒| 偷拍精品一区二区三区| 国产精品91ai| 日韩色| 97操碰| 国产剧情一区在线观看| 亚洲中文字幕熟女| 超碰天天操你比| 国产午夜激片Av毛片不卡| 毛片99-全集电影手机免费观看完整-B029AV | 欧洲精品欧洲精品| www.99在线| 超碰在线91| 欧美精品在线观看| 色嗨嗨在线| 中文字幕熟女人妻丝袜丝| 五月婷婷六月丁香| 日韩熟女操逼| 欧美色图另类图片| 超碰激情808| 国产成人亚洲精品无码古代早漏男| 国产诱惑| 亚洲情色五月天| 又粗又长又爽在线观看| 蜜臀久久99精品久久久久久成人小说| 91在线美女| 国产精品无码av嫩草| 欧美97网| 日韩激情视频| 久久久五月天| 操日韩第| 五十路熟女人妻一区二区在线观看 | 久久久久9999精品九九九| 亚洲日本韩国在线| 亚洲第一免费视频| 久9九综合在线| 性色av一区二区| 国产毛片精品一区二区色欲黄A片| 日本黄色精品专区网站| 极品出轨视频网站| 搞中出视频在线观看| 婷婷五月天色| 日本色色色视频| 少妇久久久久久| 超碰到97情色| 91电影色诱| 天天插天天干| 亚洲第一在线视频| 白天啪啪晚上啪啪视频| 国产精品美女久久久久久网站| 蜜臀99久久精品| 97香蕉人人乳| 老女人日韩美91| 伊人五月天| 人妻 丝袜美腿 中文字幕| 夜色91| 日日躁天天躁狠狠躁| 日日夜夜青青草母狗| 91国产精品在线看| 午夜男人一级A片7777| 国产51色综合久久免费| 亚洲伊人久久综合97| 啪啪啪亚欧美视频| 少妇的嫩逼图片| 骚鸭AV| 日韩大香蕉精品在线视频| 日本欧美色| 亚洲精品一区二区日本| 天天看片青娱乐| 青青青在线高清视频在线一二三四区 | 男女国产精品| 99re99| 97免费视频在线| 高潮9999外国| 午夜啊啊| 超碰美女97| 蜜臀久久久99久久久久| 噜噜噜噜久久久精品免费| 蜜桃久久一区| 久久岛国| 日本操逼视频在线| 黄色大片免费在线| 26uuu性物| 亚洲1区2区三区高清中文字幕| 无码人妻精品一区二区中文 | 裸体1区| 欧美 亚洲 综合 制服 另类| 另类专区加勒比| 羞答答AV中文字| 亚洲精品97p| 国产精品成人午夜福利| 99国产精品| 欧洲性爱无码区| 一级二级三级黑人无码| 大香蕉黄色一级片免费看| 草草影院日本第一页| 999亚洲国产视频| 在线无码操| 色区久久| 日韩一999精品| 天天舔九色婷婷| 美女91av| 97在线观看| 日韩在线欧美精品一区二区| 秋霞无码av鲁丝片一区| 亚洲国产无码精品首页久久久| 久/久精品99看9| 小草精彩毛片| 97热视频在线观看| 九九九九九九九九九国产精品 | 国产亚洲色婷婷久久99精品91葵花宝典| 国产人妻精品一区二区三区秋霞 | 蜜乳成人AV| 国岛片视频| 激情第四色| 97 国产一区| 夜夜精品视频一区二区| 国产日韩精品suv| 欧美系列在线一区二区| 天天射网| 四季av一区二区凹凸精品小说 | 丝袜综合色图| 伊人宅男大香蕉| 久久 国产 无码| 久久久久国产无av| av麻豆啪啪| 老熟女综合| 亚洲成人久久一区二区| 丝袜内射| 久久久精选| 韩日性爱av| 大鸡巴久久久| 97亚洲色图| 国产精品一级特黄aaa大片在线观看| 激情五月天网站| 国产第11页| 伊人热综合| 欧美日韩成人在线| 欧美综合传媒| 欧美一级黄片视频在线| 丝袜性亚洲| 国产精品诱惑| 亚洲天堂99| 毛片麻豆91糖心精品毛情片| 国产亚洲精品激情| 欧美亚男人的天堂| 91综合站| 91狠狠色丁香婷婷综合久久精品| 青青操视频在线| 国产超碰AV在线精品| 亚洲色偷偷色噜噜狠狠99网| 91日韩网站| 天天干天天狼在线视频| 亚洲综合射| 国产极品精品美女视频| 九九英色视频| 天堂69亚洲精品中文字| 久热久一区二区三区| 色五月首页| 亚州精品人妻一二三区| 日韩av一级黄片| 国产成人精品一区| 欧美日本一区二区a人| 91欧美性| 亚洲强奸乱伦影视网| 91路www| 操高情无码| 欧美最大综合网| 911粉嫩人妻| 亚洲欧美校园| 可以看的av| 久久久久久久唑| 欧美综合骚| 欧美欧美啪啪视频| 综合网久久| 亚洲成人性| 久湿久久| www久久99| 9999久久久| 欧美亚洲第1页| 老司机天天操| 国产91专区| 五月丁香六月婷| 97碰久久| 国产精品网站免费| 欧美性爱视频免费一区一A | 欧美夜夜狠| 偷拍 欧美 日韩| 男人久久精品| 色综合色欲色综合色综合色综合| 欧洲亚洲少妇| 中国黑人三级片网站上区| 萌白酱自拍视频| 欧美色图另类图片| 欧美美女啪啪视频| 日本操逼二区| 九热久| 色情亚洲日本成人| 一级久久性爱视频| 97视频在线看| 色阁阁AV综合网| 97色色婷婷| 囯产精品久久久久久久久久梁医生| 大香蕉一人在线| 激情小说五月天| 天天夜躁日日躁狠狠2002| 欧美国产操逼| 人妻天天操天天爽视频免费| 久久毛卡| 一色网男人的天堂| 涩综合导航| 久久成人东京热人妻| 伊人97色天使| 免费一级视频特黄色大片| 日韩肏逼视频| 国产丁香精品露脸视频| 欧美激情 日韩精品| 在线性黄高清免费视频| 12一15性XXXX粉嫩国产| 亚洲色棕合| 国产精品亚洲四五区在线观看| 天天躁日日躁AAA片李宗瑞| 亚洲无992tv| 2019男人的天堂| 91高跟美女在线播放| 九月色婷婷| 嗯啊抽插大香蕉网页| 啊啊啊好想要| 人人操人人操人妻人| 91国产美女丝袜足交精品视频| 嗯啊不要在线| 婷婷视频在线免费观看| 在线综合 亚洲 欧美中文字幕| 亚洲区 欧美区| 色五月AV在线| 熟女网站最新| 中文字幕88av在线| 人妻日日夜夜精品| 91久久久久免| 日韩另类| 被体育老师抱着c到高潮| 国产精品视频自拍在线| 国产精品懂色tv影视免费观看| 欧美日韩国产精品久久色婷婷| 日韩图区| 狠综合网| 日韩无码AB| 啊啊啊啊啊好大好舒服想要| 小草三级久久观看| 99精品在线观看| 亚洲成人网站在线观看| 岛国成人av在线播放网址| 国产探花精品在线| 乱伦av国产| 日本性爰一道本| 亚洲精品毛片在线观看| 人人摸.人人色| 国产精品久久天天干| 国内毛片欧美香蕉精品| 国产成人91一区二区三区| 久久精品国产亚洲5555| 亚洲天堂精品日韩电影| 国产强奸无码乱伦| 丝袜人妻av一区二区| 日韩性色b| 五月天色图影视| 人妻久热在线| 老熟女熟妇| 成人A片男人的天堂| 人妻 欧美 中文| 天天射夜夜| 久久久久久久久国产| 91精品操美女| 国语精品对白| 久久久久亚洲Av无码专区老牛影视 | 天天日天天干天天操| av网站免费线看| 少妇人妻太紧太深av| 午夜久久无码1000合集| 99re国产中文字幕| 91大胆欧美| 黑人中出21连凳花野真衣| 男人的天堂欧美| 强奸熟女一区二区三区| 正宗无毛一线天嫩逼| 日本久久超碰| 日韩99精品视频综合区| 人人妻人人狠人人| 男人天堂2012| 青青草色插素人| 性高潮久久久| 国产精品人妻无码久久久互動交流| 中文字幕精品免费一区二区| 人人摸人人添人人操| 91婷婷| 青青草视频久久久久| 欧美在线视频观看一二三四区高清 | 欧洲特黄毛片免费看欧洲毛片| 日本欧美韩国国产在线| 9久热| 久久偷拍人| 插插综合网天天影视网| 26uuu成人影片| 亚洲精品美女久久久久久久久| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 日韩中文字幕宗合在线| 人妻天堂网| 国产高清免费不卡av| 五月激情综合网| 爱爱久久| 蜜臀无码视频在线观看| 国产情侣自拍在线播放| 色婷婷综合久久久久中文一区二区| 午夜精品人妻二区三区| 免费精品国偷自产在线在线 | 亚洲。天堂。日本在线观看| 欧美国产精品久久九九| 去干网最新版| 高潮嗯啊性感美女久久久| 国产精品一区二区密臀| 国产无马视频| AV高清一区| 亚州综合在线| 超碰在线人妻| 韩日精品福利视频一区不卡在线免| 中国熟妇| caoni国产亚洲av| 超碰超碰欧美| 91狠狠狠| 免费精品人妻一区二区三| 少妇 综合| 日本一线产区和二线产区伦理片| 综合 欧美 亚洲 日本| 麻豆AV一区二区| 亚洲色图欧洲| 丁香五月激情综合| 亚洲骚男同com| 欧美不卡二区| 欧美后入视频| 亚洲日本激情| 97超碰天天爱天天爱| 亚洲色图亚洲| 6080yy午夜理论三级一区二区三区无码| 精品视频久久区| 欧美经典一区二区三区| 传媒免费一区二区三区| 婷婷在线视频在线观看| 一个人在线看的黄色电影网站| 欧美天天干| 99精品网| 亚洲久久久久| 欧美亚洲激情小说| 黄色无码高清黄色无码网站| www.欧精品| 亚洲91网| 搡老女人老妇女老妇老熟女怎么读| 国产精品国产精品国产| 国产精品一区二区三区在线密挑| 欧美激情精品| 欧洲综合视频| 久久伊人最新网址视频| 久久久不能久久久久| 欧洲在线性爱视频| 天堂国产AV| 99久久久无码精品国产人| 亚洲一本色码中文字幕| 韩国成人精品久久久免费看| 激情人妻另类| 手机看片1025| 亚洲高清综合网| 欧美大码在线视频| 日韩欧美午夜一区二区| 精品一国2| 国产一区二区啪啪视频| 夜夜欢天天干| 亚州成人a∨| 亚州一区二区成人片免费| 插入粉嫩少妇视频| 99日韩| 中文字幕蜜乳av| 日韩人妻精品中文字幕| 特级丰满少妇一级AAAA爱毛片| 亚洲蜜臀精品视频久久| 美女啊啊啊啊啊啊啊| 久久久精品电影| 人妻熟女一区二区| 91色情黑丝搞鸡在线观看一区二区三区三州| 日本媚薬中文字幕在线| 综合干干干av久久久综合网 | 九一性生活免费视频| 97自拍视频在线| 亚洲人体视频在线观看| 人妻无码视频一区二区三区久久| 久久久中文| 黄片qw| 午夜噜噜噜| 欧美97在线观看| 99久久网站| 色哟哟综合| 欧美性爱超碰97| 欧美一区二区三区大综合| 国产吞精a级片激情电影| 成人国产视频在线观看| 韩日自拍| 亚洲AV资源| 日韩人妻一区二区精品| yaouchengrenav| 超碰天天去日穴| 青春草A| 激情五月天婷婷| 波多野42部无码喷潮在线观看 | 伊人久久国产免费观看视频| 欧美极度丰满熟妇hd| 伊人网免费视频| 久久久555| 成人黄页| 久久av网| 丁香激情五月天| 欧美久久伊人| 中国一级操逼视频| 免费精品无码一级毛片牛牛影视| 玖色av| 夜夜爽爽夜夜精品视频| 97玖玖人妻| 91久久婷婷| 欧美日韩国产高清在线一二三区| 久久精品一区二区一8| 2017,超碰| 久久色AV线| 久久久禁| 操操操操网黑人| 人妻在线臀日韩| 亚洲麻豆精品二区三区| 国产无马av| 日韩成人性爱AV| 无码天天操| AV一区观看| 日韩三级伦理中文字幕| 97日韩| 欧美熟妇精品黑人巨大91| 91在线丝袜| 久久综合久色欧美综合狠狠| 欧洲精品一区二区三区| 91美女在线看| 97爱爱影院| 大香蕉天天看妹子| 精品人妻夜夜草| 国产白领连续中出在线观看| 天天欧美色| 97人肏| 97天天爽| AV一二区| 欧美美女在线高潮999| 无码欧美有限公司| 亚洲最大黄网| 安徽熟妇视频| 啊啊啊不要啊啊受不了了视频在线 | 久9综合在线| 欧美成人贴图| 超碰久超碰久| 色香综合| 日本久久女同性恋视频| 欧美亚洲| 无码精品久久| 中国大陆国产高清AⅤ毛片| 日日操丁香五月天| 福利在线黄片| 九九热精品| 四虎永久在线精品免费网址| 亚洲精品一二三四区| 欧美一区二区传媒| 伊人 俄罗斯 a v| 久久久久久九九九九九九| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 9久综合网| 亚射在线| 啊啊啊啊啊啊啊在线| 成人情色综合网| 亚洲熟妇A V黑人| 老熟女乱伦片| 亚洲系列第一页| 国产成人无码网站在线视频| AA丁香综合激情| 福利风月五月天影院| 久久夜夜夜| 97超级久久| 国产又粗又大硬免费色网视频| 91丨九色丨国产丨人妻在线 | 男人天堂导航| 国产女大学生AV| 天天操天天射天天日| 国产精品一区二区黄片| 亚洲。日韩。欧美| 天堂网 主播 亚洲| 三级色影综合网| 一二三四视频中文字幕在线看| 欧美黑人精品一区二区| 欧美|91色综合| 成人欧美日超碰| 天啪| 精品人体无圣光凹凸| 99欧美| 久偷拍欧美日韩三区| 啊啊啊爽爽| japan日本高清乱xxxx| 亚洲人成网www| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 中日韓欧美高清| 在线观看亚洲专区| 国产精品青青草| 欧亚韩国999| 蜜乳成人AV| 日韩啪啪啪啪啪| 超碰在97| 国产毛片片精品天天看视频| 久久久久国产一区二| 97色欧州| 日夜伊人网| 国内自拍 日韩激情 99| 插老姨肥穴| 久久精品久久久久久久| 啪一啪免费视频| 欧美精品91| av天堂电影网| 人妻激情偷乱视三区频一区二区| 97干色天堂| 91人人操| 2018色综合天天操| 久久精品国产精品| 国产无码久久高清| 免费精品99| 亚洲交换| 午夜偷拍久久熟女| 啊啊啊啊啊好大好舒服想要| 干超碰碰熟女| 伊人色综合网| 麻豆熟妇乱妇熟色A片在线看| xxx0国产在线播放| 91网站18在线| 久久亚洲国产成人| 日韩成人色图| 麻豆成人AV| 天天日天天插| 黄色成年| 99在线精品观看99| 欧美最婬乱婬爆婬牲视频| 综合免费无码中文| 欧洲精品网| 这里只有精品视频在线观看麻豆| 麻豆黄四叶草网站| a片在线播放| 人人操天天爽| 亚洲无码国产探花在线观看| 久久久久日本视| 亚洲国产丝袜熟女av| 超91综合网| 久操精品| 黄色二级片网站| 亚洲伊人久久综合97| 蜜臀av中字字幕网站| 牛牛AV人人夜夜澡人人爽| 精品.99999| 日本黄色精品专区网站| 99re在线观看| 欧美性爱日韩性爱| 中国的操老妇女| 美女被艹尤物视频| 久艹免费| 日韩熟妇二区| 午夜舔阴达高潮视频免费看| juliaann精品熟女一区| 日本αv| 天堂伊人久久| 国产在线视视频有精品| 亚洲人妻日日日| 欧美精品另类人妖xxxx| 精品国产Av无码久久久亚洲| 美国久久一二三四| 亚洲成熟国产精品美女| 欧美最婬乱婬爆婬牲视频| 五月天激情视频| 欧美一区二区三区不卡高清视频| 99天天超碰| 欧美一级黄色18片免费看| 亚洲精品国产拍免费91在线| 91狠| 亚洲 欧美 偷拍 唯美| 久久9精品网站| 青青草日韩无码| 99re热有精品视频国产| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 青青青国产手线观看视频2| 国产成人天堂| 久色网| 影音先锋日本乱伦| 伊人久日| 在线人妻熟女一区二区三区四区五区| 岛国片在线播放| 极品美女嘿咻| 大香伊人在线一区| 91精品黄在线观看| 影音先锋每日最新资源在线观看| 熟女色综合久久| 伊人97色天使| 熟女AV一区| 亚欧日韩成人| 久九9精品| 曰韩中文人妻视频| 欧美性综合| 美女诱惑爱爱| 2019天天干天天操| 亚洲色图欧美色图另类图片| 欧美 牲| 九九热最新| 天天色黄色影院天天操| 夜夜欧美| 亚洲日韩欧美一区二区| 国产人妻精品久久久一区二区三区| 久久男人精品| 亚洲图片欧美色| 欧美淫乱视频| 亚洲区限制级| 欧美男女午夜啪啪| 成人网址在线观看| 国产大陆天天艹| 国产精品乱码久久久久| 欧美色图自拍| 亚洲在高跟鞋自慰久久在色线| 色色亚洲| 日韩AV熟女乱伦| 国产高清免费不卡av| 精品一区二区三区国产| 黄色成年| www.acm成人黄色毛片| 亚洲少妇激情视频| 97亚洲国产影视| 久久丁香| 探花精品视频| 粉嫩绯色AV一区二区在线| 樱花蜜乳av| 日韩欧美操逼xxx| 色综合加勒比| 亚洲欧美97| 熟妇女伦乱视频视频| 啊啊啊啊啊啊啊在线| 欧洲一区二区三区免费| 爱欲AV| 国产怡红院| 免费视频在线观看啊啊啊啊啊| 激情AV| 婷婷五月av| 99色在线视频| 久久久九九网站| 去干网最新版| 人妻少妇av在线观看| 中文字幕成人理论在线| 一本一道vs波多野结衣| 欧美亚洲尤物久久| 国产一区在线观看无码AV| 色翁荡息又大又硬又粗又爽| 亚洲国产精品无码AV久久久| 国产欧美在线观看免费观看| 性综合网| 亚洲**2021在线观看| 八戒午夜福利理论片| 被男人吃奶很爽的毛片| 欧美性爱第一页久久| 国产丝袜美女在线一区| 高清无码久操视频| 正在播放国产精品一区| 天天草夜夜草高潮片| 精品人妻一区| 影音先锋中文字幕日本好一区二区| 精品性爱一二三区| 色婷婷香蕉| 亚洲nv男人的天堂网| 免费人人搞97| 欧美成97爱| 欧美色图91| 欧美一区二区三区不卡高清视频|