99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(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 技術棧覆蓋智能代碼生成、AI 智能體、LangGraph4j 工作流與 Tool Calling 等核心能力并展示可視化編輯、一鍵部署、應用管理及智能路由的實現(xiàn)思路既有完整的前后端交互鏈路也適合作為 AI 應用平臺腳手架進一步擴展。壓縮包共 216 個文件、約 1.14MB其中 Java 后端邏輯約占 143 個文件Vue/TS 前端頁面與交互約 40 個文件另有 JSON、XML、YML、SQL 等配置腳本及 Markdown 說明目錄分層明顯便于按模塊閱讀與二次開發(fā)智能體編排、工具調用注冊、工作流節(jié)點配置等關鍵示例均包含在內。資源還結合多級存儲與 Nginx 部署給出 Prometheus、Grafana、ARMS 監(jiān)控方案并預留 Cursor Vibe Coding 協(xié)作開發(fā)入口可幫助讀者快速復現(xiàn)一套可觀測、可擴展的 AI 應用平臺骨架。已有 250 人學習下載適合正在搭建智能體、工具調用或工作流平臺的同學對照源碼梳理完整實現(xiàn)鏈路。1. 從智能體到代碼生成這個 AI 應用平臺到底在解決什么問題一個 Java 技術棧為主的團隊想上 AI 應用往往卡在同一個地方Python 生態(tài)的 LangChain 很成熟但團隊沒人愿意跨界維護兩套技術棧。這個平臺標題給出的答案很直接——用 SpringBoot3 做后端底座用 LangChain4j 接大模型用 LangGraph4j 做工作流編排再配一個 Vue3 的可視化畫布把 AI 能力變成能拖拽、能部署、能管理的產(chǎn)品。它解決的不是怎么調一次大模型接口而是怎么把智能體、代碼生成、工具調用這些能力沉淀成企業(yè)內部的標準化應用平臺。適合兩類人一是想從零構建 AI 應用平臺的架構師二是接了類似需求但不知道從哪落地的后端和前端工程師。2. SpringBoot3 LangChain4j 的工程底座選型理由與最小可運行配置2.1 為什么是 LangChain4j 而不是自研封裝或 Python LangChain先回答一個很多人糾結的問題我直接寫 OpenAI SDK 或者 Spring AI 不行嗎自己封裝 OpenAI SDK 當然能跑通對話但一旦涉及多輪對話的記憶管理、文檔的 Embedding 切分、工具的自動發(fā)現(xiàn)和調用代碼量會迅速膨脹。LangChain4j 在 Java 生態(tài)里的定位和 Python 版 LangChain 一樣把這些通用能力抽象成 ChatModel、EmbeddingModel、AiServices、Tool 這些接口你只需要替換模型廠商的依賴業(yè)務代碼基本不動。Spring AI 和 LangChain4j 之間我選了后者原因是它對 ToolCalling 和函數(shù)回調的支持更直接Tool 注解的體驗和 Java 開發(fā)者的直覺一致。LangGraph4j 的出現(xiàn)補齊了 LangChain4j 最缺的工作流編排能力——之前做復雜 Agent 只能自己手寫狀態(tài)機現(xiàn)在有官方的圖執(zhí)行引擎節(jié)點、條件邊、狀態(tài)傳遞都是聲明式的。這里要認清一個現(xiàn)實LangChain4j 的迭代速度很快API 在不同小版本之間有過調整所以工程落地時要先鎖版本不要一路上最新。2.2 SpringBoot3 工程骨架與模型接入的最小配置SpringBoot3 強制要求 JDK17 起步實際項目我建議直接用 JDK21LTS 版本虛擬線程對 AI 場景的流式輸出有幫助。創(chuàng)建一個標準的 Maven 工程關鍵依賴就三個langchain4j-spring-boot-starter、langchain4j-open-ai兼容 OpenAI 協(xié)議的服務都走這個、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 兼容接口為例國內云廠商的模型網(wǎng)關、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 設成 0.2 是代碼生成場景的推薦值溫度太高模型會自由發(fā)揮生成的東西看著像代碼但編譯不過。log-requests 和 log-responses 在聯(lián)調階段一定要開LangChain4j 會把完整的請求體和響應體打出來排查 prompt 問題和 token 統(tǒng)計都靠它。2.3 模型接入層的抽象OpenAI 兼容接口與本地模型共存實際項目里不太可能只接一家模型。我一般會在業(yè)務代碼之上加一層 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è)務代碼零改動。到了這個階段你已經(jīng)有一個能對話、能 Embedding 的 SpringBoot3 后端了下一步就是把它升級成能自主完成任務的智能體。3. 用 LangGraph4j 編排代碼生成 Agent節(jié)點、條件邊與 ToolCalling3.1 LangGraph4j 的核心概念State、節(jié)點與條件邊LangGraph4j 解決的核心問題是一個智能體不只是一次模型調用而是感知-規(guī)劃-行動-觀察的循環(huán)。你需要在代碼里顯式表達這個循環(huán)包括循環(huán)什么時候結束、狀態(tài)怎么在節(jié)點之間傳遞。它有三個基礎概念State狀態(tài)、Node節(jié)點、Edge邊。State 是一個在節(jié)點間傳遞的數(shù)據(jù)載體Node 是處理狀態(tài)的一個函數(shù)Edge 定義節(jié)點的連接關系其中一種特殊的邊叫條件邊根據(jù)當前狀態(tài)決定下一步走哪個節(jié)點。這樣設計的好處是人和模型的分工變清楚了節(jié)點里的邏輯是你寫死的確定性代碼模型只負責在節(jié)點里產(chǎn)出內容或決定走哪條條件邊。相比純提示詞驅動的 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é)點只關心它需要的字段LangGraph4j 會在節(jié)點完成后自動合并新狀態(tài)。retryCount 在這里很關鍵它控制整個工作流的終止條件避免模型陷入生成-執(zhí)行失敗-再生成的死循環(huán)。3.2 定義代碼生成工具Tool 的參數(shù)描述決定調用準確率ToolCalling 是大模型連接外部系統(tǒng)的通道。LangChain4j 的做法是用 Tool 注解標記一個 Java 方法模型根據(jù)方法名、描述和參數(shù)描述來決定什么時候調用、傳什么參數(shù)。很多人第一次寫工具方法時只寫方法名結果模型死活不調用原因就是描述信息太少模型不知道這個方法能干什么、參數(shù)應該填什么。Component public class CodeExecutionTools { Tool(執(zhí)行傳入的 Java 源碼返回編譯和運行的標準輸出如果編譯失敗則返回錯誤信息) public String runJavaCode( ToolParam(完整的 Java 源碼字符串必須包含 public class Main 和 main 方法) String sourceCode) { // 將 sourceCode 寫入臨時文件調用 javac 編譯java 執(zhí)行 // 捕獲 stdout 和 stderr超時時間設為 10 秒防止模型生成死循環(huán)代碼。 return output; } Tool(讀取項目內指定相對路徑的文本文件內容) 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 的流程是先讓模型讀需求做計劃再生成源碼然后調用工具執(zhí)行最后讓模型評審執(zhí)行結果。評審不通過且重試次數(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 你是資深后端架構師。根據(jù)需求輸出實現(xiàn)計劃要求 1. 列出需要創(chuàng)建的類及其職責 2. 標注每個類之間的依賴關系 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 保持一致。組裝工具調用要注意 langgraph4j 的機制和 LangChain4j 的 AiServices 不太一樣——工作流節(jié)點里需要你自己把 ChatModel 和工具的執(zhí)行結果串聯(lián)起來。常見的做法是復用 LangChain4j 的 AiServices把它綁定工具類后作為一個整體節(jié)點調用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 內部已經(jīng)把 ToolCalling 的消息循環(huán)封裝好了模型請求調用工具框架自動執(zhí)行工具方法再把結果回傳給模型直到模型給出最終答案。你只需要在界面接口里定義 generate 方法并標注 SystemMessage 和 UserMessage 模板即可這就是 LangChain4j 把 Java 接口變成 Agent 的標準方式。3.4 流式輸出與進度推送SSE 把過程反饋給前端工作流跑起來后如果整個操作要等 30 秒才返回前端的體驗是災難。我一般用 SSEServer-Sent Events把每個節(jié)點的執(zhí)行狀態(tài)實時推給前端。后端在節(jié)點入口往 Spring 的 SseEmitter 里寫一條進度事件前端在畫布對應節(jié)點上亮燈。LangGraph4j 本身沒有內置 SSE 支持但你可以用一個全局的 WorkflowProgressPublisher 組件節(jié)點里調用它發(fā)事件Controller 層暴露 SSE 接口訂閱。Go 的實現(xiàn)不復雜SseEmitter 存進 ConcurrentHashMap節(jié)點狀態(tài)變化時遍歷發(fā)送前端用 EventSource 接收。注意 SseEmitter 默認超時時間是 30 秒工作流超過這個時間要記得在初始化時顯式設置更長超時。4. Vue3 可視化編排從拖拽畫布到應用管理的一體化前端4.1 畫布的數(shù)據(jù)模型一個 JSON 就是一個工作流可視化編排的本質是所見即所得地編輯一個 JSON后端拿著這個 JSON 再把它翻譯成 LangGraph4j 的 StateGraph。所以前端畫布的數(shù)據(jù)模型一定要工作流對齊而不是只顧畫得好看。我維護的數(shù)據(jù)結構長這樣{ 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é)點要選模型和調參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é)點物料面板中間是畫布右側是選中節(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) // 左側物料面板的拖拽把節(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 直接綁定到右側表單組件 // 表單的每一項都是動態(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)里的復雜表單只是這個表單的結構不是人定的是用戶自己拖出來的。4.3 應用管理與一鍵部署的前后端銜接可視化編輯只是平臺的前半段后半段是應用管理和一鍵部署。后端需要提供應用維度的 CRUD 接口創(chuàng)建應用、保存畫布 JSON、發(fā)布版本、查看部署狀態(tài)。我習慣把保存和發(fā)布拆成兩個動作——保存只寫數(shù)據(jù)庫草稿發(fā)布才真正觸發(fā)構建和部署。這樣用戶頻繁調整畫布不會產(chǎn)生一堆垃圾部署記錄發(fā)布記錄表里每一行都可回滾。一鍵部署的后端實現(xiàn)是異步任務加日志流推送。收到發(fā)布請求后后端把應用 ID、畫布 JSON、模型配置打包成一個部署任務丟給線程池執(zhí)行。部署過程分四步生成后端工程骨架、寫入工作流配置、Maven 打包、Docker 構建并啟動。每一步的日志都通過 SSE 實時推給前端用戶在瀏覽器里能看到構建進度條一行一行滾動這是一鍵部署體驗的關鍵。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 的超時時間我顯式設成了 300 秒因為首次構建要拉 Maven 依賴和 Docker 基礎鏡像慢的時候能跑到 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 再轉 SseEmitter。如果非得混用就把 web-application-type 顯式設為 servlet并保證 webflux 的依賴 scope 是 provided 或完全不引入。這個坑排查起來很費時間啟動日志里看到 invalid web application 直接去查依賴樹別去改配置瞎試。5.3 反代緩沖讓流式輸出變成等半天一次性吐出來現(xiàn)象本地 flow 輸出一個字一個字蹦部署到服務器之后前端 EventSource 要等幾十秒才收到第一批內容。原因Nginx 默認開了 proxy_buffering會等后端響應全部寫完再一次性轉發(fā)給客戶端SSE 的 chunked 流式效果被徹底吞掉。這不是后端代碼的問題是網(wǎng)關層配置問題典型的上線才踩坑。解決在 Nginx 的 location 配置里加上 proxy_buffering off; 和 proxy_cache off;同時把 proxy_read_timeout 調到 300 秒以上。注意 SSE 用的是長連接心跳設置要同時照顧 Nginx 和瀏覽器兩側的超時。代碼里 SseEmitter 注釋里寫清楚必須配 Nginx 關緩沖防止部署的人不懂這個關聯(lián)關系。5.4 ToolCalling 工具參數(shù)缺失描述模型寧可拒絕也不調用現(xiàn)象日志里模型明確說需要調用工具但響應里的 tool_calls 是空的或者傳過來一個空的 JSON 參數(shù)業(yè)務側解析直接拋異常。原因大模型在不確定工具參數(shù)格式時會選擇不調用或傳入空值。而我早期寫的 ToolParam 只有參數(shù)名沒有描述模型不知道這個字符串應該填相對路徑還是絕對路徑。更隱蔽的是參數(shù)類型不匹配——工具方法聲明的是 Map模型傳過來的卻是 JSON 字符串。解決每個 ToolParam 都按格式 示例寫描述比如相對項目根目錄的文件路徑例如 src/main/java/Application.java。復雜參數(shù)不要用 Map定義成 POJO 配合 ToolParam 逐字段描述。另外要確認工具返回值轉成 String 后沒有截斷有些模型服務對 tool message 有長度限制超長返回會被丟棄表現(xiàn)為工具調用后模型沒有反應。5.5 Vue3 屬性繼承與表單校驗失效的連帶問題現(xiàn)象屬性面板里填的表單值保存后又變回原樣或者畫布的全屏按鈕在 Edge 瀏覽器里偶爾點不動鼠標點上去沒反應。原因這個現(xiàn)象和 Vue3 的組件屬性透傳機制有關。自定義組件如果根元素恰好是另一個組件外部傳入的 class、style、事件監(jiān)聽器會透傳到根組件上如果根組件內部也用 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. 進階多模型路由、鏈路追蹤與壓測驗證平臺能跑通以后下一個問題就是成本和質量。大模型 API 按 token 計費代碼生成場景一次調用動輒幾千 token全公司都用最強的 32B 模型扛不住。我一般會在網(wǎng)關層做模型路由分發(fā)而這正是多路召回思路的工程化落地——把用戶請求先做意圖分類簡單任務翻譯、格式化、解釋報錯直接落到一個輕量模型上復雜任務生成完整項目、多文件改造才轉發(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í)行耗時、模型調用的 token 消耗、工具調用的成敗全都要落日志traceId 從請求進來就生成并貫穿 SSE 和異步任務。我用的是最樸素的方案——MDC put traceIdlogback 輸出到控制臺和文件排障時按 traceId grep 一次拿到全鏈路。微服務規(guī)模大了再上 SkyWalking 也不遲單機階段別過度設計。壓測驗證重點關注兩個指標工作流單次完成時間 P95 和部署任務的并發(fā)上限。前者決定用戶體驗后者決定平臺的穩(wěn)定性。用壓測工具模擬 50 個并發(fā)用戶同時觸發(fā)代碼生成工作流觀察數(shù)據(jù)庫連接池和線程池是否成為瓶頸。LangGraph4j 的節(jié)點執(zhí)行是阻塞式的但節(jié)點之間沒有共享狀態(tài)可以放心加 Async 把無依賴的節(jié)點并行化。我自己踩過的教訓是剛開始為圖省事把所有工具方法都加上 synchronized結果多路召回一上線就串行排隊P95 從 8 秒暴漲到 40 秒。后來改成工具內部用無狀態(tài)設計只在寫文件時用臨時文件隔離壓測直接達標。這個平臺的完整落地路徑是SpringBoot3 接模型能力LangGraph4j 編排復雜工作流ToolCalling 打通系統(tǒng)邊界Vue3 把這一切變成可視化操作。到了后期你會意識到平臺最大的價值不是某一個 AI 能力而是把散落在各種腳本里的 AI 調用沉淀成了可編排、可觀測、可回滾的標準化應用。希望這些思路和踩坑記錄能幫到你少走一段我走過的彎路。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷五月天丁香综合网| 婷婷激情丁香五月天综合| 色色网站观看| 综合久久狠狠| 婷婷五月天伊人网| w婷婷五月婷婷w| 超碰在线观看9| 婷婷色中文| 五月婷婷五月色| 黄久久久| www.超碰| 久草五月天| Av在线不卡一区| 婷婷激情综合| 99热 这里只有精品 国产 日韩| 欧美色宗和激情| 午夜五月天| 91成人品| 天天爱天天操| www.色五月天.com| 久久电影4399| 成人精品一区日本无码网 | 婷婷五月性感| 久久99热这里只频精品6学生| 欧美在线看| 天堂久久精品| 亚洲无码成人性爰网| 亚洲mm免费| 午夜电影网VA内射| 99自拍网| 久婷婷视平| 青青草成人网| 激情综合4月| 一起草AV入口| 成人精品人妻| 亚洲av网站| 五月色网| 天天爽天天爽夜夜爽| 丁香婷婷影院| 色啪网| 天天肏屄夜夜爽| 欧美成人AAA片一区国产精品| 伊人9999| 青青草视频免费观看| 亚洲激情免费视频| 日本妈妈乱| 亚洲成av人影院| 99热久久这里只有精品2010| 天天综合网、天天综合色 | 天天操天天操| 激情六月天婷婷| 久操人妻| 人人做人人看人人摸| 99热全是精品| 大香蕉色婷婷伊人在线| 69精品人人人人| 九九九成人在线视频| 91综合在线观看| 99久久极情精品一区| 五月天婷婷乱| 丁香五月婷婷啪| 男女av免费看| 久久婷五月婷| 色婷婷五月天视频在线| 激情婷婷五六月天| 在线观看的av| 另类图片五月天激情| 九九久久精品| 婷婷五月天综合网| 久久婷婷五月草视频| 99玖玖免费视频| 色青青电影色五月| 色999亚洲人成色| 日日撸日日操| 天天干夜晚夜操| 天天综合天天做天天综合| 丁香五月婷婷激情中文| 亚洲网综合在线| 欧美97色| 色综合五月| 欧美丁香婷婷天天操| 五月丁香888| 人妻久久久| 啪色综合| 五月色丁香| 热99久久这里只有精品| 五月天婷婷午夜丁香| 人人综合91网| 激情婷婷22月间| 五月婷婷久久久| 婷婷丁香五月综合网上| 天天檫天天爽| 九九热视频免费的| 777丁香六月青青草婷婷综合久月| 9精品视频在线观看| 91在线操逼视频| 99色在线| 久久久97| 五月婷婷丁香综合| 婷婷五月丁香综合激情| 极品另类| 99热精品99| 色丁香婷婷| 五月天亚洲最大成人| 婷婷五月天黄色| 9热久久| 色情五月天首页| 久9久9久9久9久9久9| wwww.色婷婷| 91精品国产综合久久久不卡电影| 天堂成人A片永久免费网站| 婷婷五月天激情小说| 婷婷婷婷婷婷婷婷| 99爱视频| 六月婷婷综合激情| 五月天色综合| 欧美天天搞| 久久人妻久久| 丁香六月伊人| 国产精品人人妻人人爽| www.色擼擼.com| 五月激情精品视频| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 9 9热这里有精品| 五月天综合| 丁香五月综合| 久久99视频| 99自拍视频| 五月丁香啪啪啪| 99久久99九九九99九他书对| 五月天天天色| 欧美综合五月丁香五月天| 久久只有精| 操一区| 久久综合性| 人人摸人人操人人爽| 玖玖精品婷婷| 久久99网站| 大香蕉天堂| 97人操人免费视频| ay2区| 台湾综合丁香五月蜜桃| 色综合五月在线| 五月婷人妻| 人人干天天操五月丁香| 精品五月天| 精品久久久人妻| 人人爽天天爽| 久久婷婷五月天懂色| 婷婷天天色| 色五月婷婷在线| 九九色精品| 久久99热只有精品| 六月激情婷婷| 久久99日本精品视频免费观看| 91久女| 综合另类激情| 亚洲小电影在线观看黄999| 亚洲综合无码| 婷婷六月爽| 亚洲 无码 中文字幕 中出| 这里只有精品久| 久久思思精品| 久草大| 亚洲午夜AV| 无码 av电影| www.玖玖婷婷在线| 五月婷婷综合网| 丁香五月另类小说在线阅读| 婷婷开心青青草| 国内精品玖玖| 一本久道综合色婷婷五月| 99热这里都是精品| 在线看黄色| 丁香婷婷啪啪| 天天操夜夜肏| 色五月色五天色情网| 激情五月天色色网| 婷婷五月精品中文| 综合激情网五月激情| www.五月天。com| 日日爽日日| 久操大香蕉| 久久婷五月| 69精品人人人人人人人人人| 六月婷婷七月丁香| 五月综合在线婷婷图片| 六月婷婷综合激情| 成人网在线观看视频| 五月亭大香蕉| 热久久66| 五月丁香六月婷综合成人综合| 中文字幕日产A片在线看| 超碰99热精品在线| 99re热精品在线视频| www,婷婷五月天777me,com| 丁香桃色网| 激情五月综合网| 一二线视频 另类| 欧美日韩国产一二区| 丁香六月激情四射| 久久这里只| 99热综合色图| av人人操| 97操碰在线97| 狠狠干天天内射| 婷婷五月色情天| 五月丁香六月婷婷久久| 中文字幕无码成人电影| 久久 这里只有精品1| 九月婷婷激情| 精品少妇人妻AV无码专区偷人| 日本成人综合| 天天综合在线网| www.狠狠| 男女99免费视频| 天天天摸夜夜夜玩| 国产国产乱老熟女视频网站97| 黄色一极大片| 久久小片| 亚洲婷婷性爱| 丁香婷婷六月激情| 九九aV| 色九九九综合| 一级A片天天操夜夜操| 天天干天天日天天操| 国产精品视频网| 日日干日日s| 亚洲视色| 91怕怕网| 成人电影丁香六月天| 色婷婷基地| 日韩 中文 欧美| 婷婷中文字幕版| 香蕉综合网| 在线成人国产| 激情骚五月| 天天人人天天爽| AV人人操| 蜜臀AV在线观看| 亚洲AV网站| 色偷偷色婷婷| 丁香六月成人网| 91人妻视频| 噜噜在线| 婷婷五月天久久| 五月激情六月综合| 人人看人人97| 激情都市丁香婷婷| 影音先锋男人资源站一区二区| 五月丁香婷庭在线| 99久操视频| 色色色在线播放| 日日夜夜天天| 任我肏| 色色色在线观看| 青青999| 欧美韩日AAA网站| 五月天国产| 99色干| 九九热婷婷| 丁香婷婷综合色五月激情国产基地| 婷婷五月综合激情小说| www婷婷色| 婷婷瑟五月天久久综合| 精品成人无码A片观看香草视频| www.婷婷网| 丁香五月欧美激情| 丁香狠狠色婷婷| 国产.亚洲.欧洲视频在线| 大香焦A∨| 开心五月婷| 色五月 婷婷, 大香蕉| 变态另类色图| 停婷丁五月在线| 99.N在线视频| 五月婷婷av| 色婷婷久久综合久色综| XX色综合| 538午夜激情| 久热只有精品| 怡红院院久久| 色噜婷婷| 外国碰视频网站97| 天搞天天天天天| 色播播五月天| 色噜噜在线| 九九无毛| 99热精品观看| 亚洲精品乱码久久久久久按摩观| 国产真实乱了老女人视频| 天天撸夜夜爽| 99热 在线播放| 日韩aaaaa| 99热亚洲精品| 成人日韩欧美| 婷婷六月五月| 人妻中文av| 五月婷婷乱| 五月天丁香婷婷视频网址 | 色丁香五月婷婷| 婷婷丁香五月天在线视频| .精品久久久麻豆国产精品| 欧美熟女乱又伦| 在线播放 精品| 久久婷婷视频| 91丁香五月| 亚洲色五月| 狠狠va| 五月婷婷玖玖综合玖玖爱| se99视频| 国产片天天爽夜夜爽| 日韩丰满少妇无码内射| 日日干日日| 夫妇交换刺激做爰| 五月天久久网站| 99久久99久久| 99视频这里有精品| 婷婷噜噜| 樱花99视频| 久9久视频精品| 91九色国产熟女| 开心六月丁香五月婷婷| 五月激香蕉网| 色久丁香五| 婷婷久久综合| 欧美激情 日韩无码 婷婷 五月天| 久久婷婷丁香| 激情五月视频| 91精品91久久久中77777| 9精品久久999| 丁香五月欧美激情| 99热久草| 婷五月丁香俺| 日韩无码性爱| 国产XXXX搡XXXXX搡麻豆| 五月天激情啪啪| 色丁香久久| 久久色大香蕉| 久久99热这里只有精品| 婷婷狠狠色| 五月六月丁香激情视频| 色婷婷色| 色婷婷很很十八禁| 狠狠插狠狠插| 天天肏天天肏天天肏| 五月婷婷色男女| 99热精品99| 国产精品久久久爽爽爽麻豆色哟哟| 狠狠操天天干| 六月丁香婷婷五月| 亚洲第精品| 五月丁香久久网| www.金莲av| 婷婷五月婷婷| 99热综合在线| 五月天网站免费欧美| 思思视频精品| www.狠狠| 五月婷婷色影院| 抽插特写| 色99在线| 丁香五月天综合| 舔色婷婷| 欧美成人五月天| 天天操夜夜夜夜爽| 婷婷丁香五月天哟啪| 六月婷婷最新网址| 婷婷丁香五月天之开心少妇| 99日这里只有精品| 日日射天天射| 99热这只有| 91丨九色丨白浆秘| 91婷婷丁香五月亚洲| 欧美在线视频99| 天天操中文字幕| 日日天天干| 天天日人人爽| 婷婷六月色情| 六月婷婷影院| 婷婷天天综合| 五月婷婷免费| 五月丁香花伦理电影| 丁香婷婷精品视频| 九九久久五月天| 婷婷激情五月天小说| 日韩不卡123| 人人摸人人操人人爱| 婷婷啪啪| 99热超碰在线| 无遮挡国产高潮视频免费观看| 99热这里只有精品9| 中文字幕av在线| 丁香五月天婷婷激情| 99成人精品视频| 日日狠夜夜狠| 色狠狠色噜噜噜a天堂一区| 狠狠色无码| www.夜夜夜| 丁香五月婷婷综合视频| 婷婷五月天国产手机在线视频观看| 思思99热热热99| 任你草| 婷婷综合网站| 天天色一道本综合婷婷| 狠狠色丁香五月婷巨| 久久99网站| 大香蕉久操| 99久久9| 色噜噜综合网| 欧美激情五月天婷婷| 五月色婷婷综合色| 天天色,天天操,天天射| 五月婷婷自拍视频| 深爱五月激情| 五月婷婷六月激情| 亚洲成人综合在线| 99综合网| 热99色| 精品九九久久| 九色激情网| 五月综合丁香婷婷| 欧美va精品va老师va| 99热这里只有精品26| 丁香五月 综合| 日本本土色网第一区| 五月丁香怕怕综合| 婷婷五月天天aV| 五月婷天天搞视频| 久久人人九九| 国产激情综合五月久久| 亚洲精品一二三| 丁香99| 六月丁香婷婷色狠狠久久| 色综合中文色综合网| 亚洲天堂久久| 五月香六月婷| 综合久久综合久久| 夜精品无码A片一区二区蜜桃 | 久久五月天免费网站| 激情五月天综合网| 久久99热免费| 99久久玖玖| 99视频网| 99碰碰| 亚洲激情AV| 90色免费视频| 久久免费操| 丁香五月婷婷亚洲色图| 久热视频这里只有精品| 大香蕉精品视频| 1000部毛片A片免费观看| 97啪在线观看视频| 日韩在线观看亚洲| 激情精品久久| 天天操夜夜操| 青青草国产亚洲精品久久| 色婷婷狠狠禁久久| 五月丁香香蕉| 久色五月| www.国产色| 蜜臀久久99精品久久久久久酒店| 日本精品干| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 色99自拍| 五月丁香六月情婷婷久久| 亚洲五月天激情| 开心激情婷婷| 丁香激情五月少妇| 婷婷五月天国产手机在线视频观看| 九九亚洲视频| 久久xxxx| 热婷婷av| 婷婷五月蜜桃成人桃色丁香| 久久这里只有精品热在99| 日本一级特黄大片AAAAA级| 中文字幕日产A片在线看| 亚洲视频无| 美女五月天婷婷| 99乱视频| 内射在线CHINESE| 玖玖五月| 五月综合六月婷婷| 99性爱视频| 久久九⑨| 激情五月丁香激情综合网| 丁香五月激情啪| 婷婷五月五月丁香| 久久视频66| 日本在线va| 婷婷综合中文字幕| 久久网站观看免费欧洲国产| 久热99热| 丁香六月欧美| 久久精品永久免费| 色噜噜婷婷| 久久九九中文字幕| 亚美欧色影院| 亚洲色图欧美色图日本视频| 婷婷和五月天| 五月天丁香成人| 99久久97| 欧美性丁香色色五月天| 五月丁香色情| 99ri精品| 国产97色在线 | 日韩| 五月婷婷六月激情| 狠狠搞五月天| 色婷婷亚洲| 一级黄色操B| 操逼在线视频| 色色亚洲| www久久五月com| 欧美影院婷婷| 色伊人啪| 久久ab| 五月丁香婷婷五月色| 美女五月激情| 久机视频这只有精品| 久久五月婷婷丁香| 操一操干一干| 国产亚洲99久久精品熟女| 深爱五月中文字幕| 99网| 丁香五月天导航| 91人人操人人爱| 少妇婷婷五月天| 人人噜天天上| 日本在线观看aaa 99| 天天操,天天插| 国产乱人偷精品人妻A片| 五月天婷婷六月激情网| 亚洲成人免费在线| 在线播放成人网站| 青青草激情网| 亚洲激情亚洲激情| 99无码视频| 婷婷五月天受日本法律保护| 五月丁香五月综合欧美| 久久色五月天| 91丨九色丨东北熟女| 偷偷狠狠久久婷婷五月天| 亭亭色色五月天| 欧美久久婷婷| 久久久噜噜噜久久人妻| 婷婷五月天色丁香| 五月激情小说| 色五月婷婷丁香婷婷| 丁香五月激情图片婷婷| 思思久热6| 色五月激情图片| 激情婷婷五月天日本系列| 亚洲无码性爱| 综合成人小说婷婷| 99噜噜| 亚洲天堂爱爱| 无码四色色色| 亚洲色网址| 六月婷婷深深爱| 亚洲成人免费电影| 丁香五月激情六月综合| 丁香五月婷婷香| 五月婷婷性| 伊人久久综合| 99热碰碰| 婷婷综合| 色婷婷丁香花五月天| 激情五月亚洲| 草草影院爱爱| 99热久| 亚洲婷婷月丁香五月| 久久AAAA片一区二区| 久一这里有精品国产| 欧美性生交xXxX久久久| 婷婷五月天激情电影小说| 日本人人干| 激情小说五月天| 99久久国产成人精品| 六月成人网| 可似看的AV| 狠狠色噜噜狠狠| 91九色首页| 丁香五月天人体| 丁香五月婷婷av影院| 无码任你操| 日韩 中文 欧美| 97色色婷婷| 丁香五月激情鲁| 色五月激情综合| 五月开心久久| 色婷婷综合网站| 五月丁香综合成人社区| 亚洲天堂久久| 亚洲aV写真天天综合网久久| 青青草原亚洲天堂| 69超碰在线| 欧美激情综合色综合啪啪五月| 婷婷爱在线观看| 五月丁香| 婷婷中文字幕| 五月丁香六月婷婷综合免| 亚洲视频码| 另类在线| 99热日韩| 五月天色色激情综合| 国产成人综合电影| 99视频久久| 九九热这里只有国产精品| 亚洲AV免费国产电影| 97碰在线视频| 99热这里有精品| 久久久久久久久久久久久久人妻视频 | 能看的AV| 婷婷六月久久| www久| 日本欧美成人片AAAA| 久久这里有精品| 天天操夜夜啊| 色色色婷婷| 黑人糟蹋人妻HD中文字幕| 婷婷中文字幕| 五月天影院婷婷在线观看| 天堂网啪啪| 少妇被躁爽到高潮无码文| 天堂综合久久| 狠狠撸激情综合丁香五月天俺来啦| 无码区婷婷五月花开| 九九色婷婷五月天| 99热这里是精品| 天天天天天天操| 久久在这里有精品| 婷婷丁香97| 色情网综合| 超碰在线人妻| 粉嫩av蜜桃av蜜臀av| 综合激情深爱| 日日天天操| 五月丁香激情综合| 狠狠色丁香久久婷婷综合五月| 嫩草AV久久伊人妇女超级A| 色丁香五月天| 99亚州综合精品成人网| 五月欧美色色五月| 成人婷婷桔色| 亚洲激情av| 99热99| 搡BBBB搡BBB搡18| 丁香五月婷婷六月| www.久久综合| 久久人妻人人| 婷婷五月18永久免费视频| 久久五月人人摸| 免费看无码视频A级| 激情综合网激情五月俺也去| 色播五月婷婷| 色五月综合在线| 伊人激情综合网| 亚洲另类视频| 狠狠干狠狠干狠狠干狠狠干| 99小精品| 婷婷色五月婷婷姐妹| 4399亚洲视频| 欧美日韩成人一区二区| 丁香五月婷婷亚洲另类| 另类图片五月天婷婷| 激情5月婷婷| 亚洲欧洲中文日韩久久AV乱码| 99操视频| 久久99精品视频| 日本九九九九| 久久丁香五月天| 久久99久久99精品免观看粉嫩| 色播播婷婷| 五月天婷婷丁香蜜桃91| 五月婷婷成人网首页| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 丁香五月91| 成人网站免费在线播放| 性色婷婷| 97精品在线| 色婷婷免费视频| 六月婷婷色色色| 9999热在线免费观看| 日韩无码人妻一区二区| 丁香五月激情综合婷综| 五月激情射| 琪琪色热色色| 五月天久久婷婷| 热九九精品| 超碰AV在线| 九九热这里只有精品7| 五月综合激情婷婷六月色窝| 少妇高潮呻吟A片免费看软件| 能看的AV| 丁香五月天AV在线 | 深爱激情五月天婷婷网| 9久热这里只有精品| 激情五月天色婷婷| 五月丁香啪啪网| 成人五月天视频| 亚洲无码99| 激情婷婷丁香五月天| 天天摸天天肏| 亚洲成人网站在线观看| 99∨VTV| 爱久久小说下载网| 丁香五月天堂亚洲社区| 97干在线观看| 狠狠干婷婷| 激情99。| 丁香五月在线看| 色五月综合资源推荐| 任我肏| 色婷婷综合网站| 精品久久久久成人码免费动漫 | 91欧美日韩综合| 亚洲精品国产成人AV在线| 久久五月天大美女| 天天爽人人爽| 99色在线观看免费| 国产SUV精品一区二区6| 97操碰98| 伊人久久大香蕉网| 五月丁香久久综合| 丁香婷婷五月基地| 婷婷射图| 丰满少妇猛烈A片免费看观看| 狠狠色综合图片| 婷婷综合影院| 99视频内射三四| 久久久久久综合五月婷婷| 久久天天| 成人精品在线| 激情婷婷丁香色五月| 欧美99热| 五月花综合视频| 综合久久9| 成人国产欧美大片一区| 91色吧网| 五月婷婷六月爱| 色噜噜狠噜噜视频| 中文字幕无码人妻少妇免费视频| 亚洲精品444久久久久久| 色综合九九| 亚洲AV成人无码久久精品老人法拉利| 超碰免费大香蕉| 欧美丰满熟妇BBB久久久| 九九人人看| 亚洲色婷婷婷婷人人爽| 色五月激情网| 色婷婷成人做爰A片免费看网站| 欧美婷婷丁香五月| 亚洲欧洲色色| 婷婷在线视频| www.色五月| 99综合一区| 亚洲激情 久久| 色播五月| 人妻内射一区二区在线视频| 五月天激情四射网站| 精品综合久久久久久五月天| 色99色| 色六月 婷婷| 99热精品在线| 日日色综合| 亚洲国产无线乱码在线观看| 九九re精品视频在线观看| 天插天啪天啪天啪| 婷婷激情四射| 婷婷自拍| 怡红院精品视频久久久久久久久| www久久99| 9久热视频| 五月婷婷五月天激情视频| 人人干人人看| 日韩精品视频中文字幕| 久久婷网| 在线1青婷| 国自产拍偷拍精品啪啪一区二区| 一区视频网站| 天天插,天天射| 风流少妇A片一区二区蜜桃 | 久久五月婷婷视频| 久草xx性爱视频| 五月丁香色综合| 97久人人| 色视频五月天| 欧美久久一级内射wwwwww.| 九九av| 激情啪啪五月| 色色色五月| 五月婷婷深爱六月| 九月婷婷综合| 99久久婷婷国产综合| 色五月婷婷亚洲最大| 欧美天堂婷婷日韩| 天天综合插插| 久久婷婷热| 色婷操逼| 久99在线视频| av操一操| 精品久久艹| 90色免费视频| 五月激情丁香五月宗合| 久久婷婷亚洲| 这里只有精品视频222| 日本三久久| 日韩美一级毛卡片| 深爱1激情网| 色五月 婷婷, 大香蕉| 天天草婷婷五月| 91久久久久久| 五月色婷婷亚洲| 国产成人99久久亚洲综合精品| 成人Av在线大片| 99热这里只有精品在线| 色综合久久无码| 婷婷射婷婷舔| www.99.色| 毛片新网地| 中国无码av| 五月婷婷免费在线观看| 精品一二三区久久AAA片| 五月视频日本免费观看| 五月天婷婷基地| 欧日韩AV| 99精品无码| 激情综合五月色在线| AA丁香综合激情| 丁香丁香激情网| 99热精品在线| 亚洲色欲欧美一区二区三区| 婷婷五月天小说| 婷婷丁香五月天欧美| 天天日天天插| 97干婷婷五月天| 无码 av电影| 五月综合激情视频| 久9久视频精品| 色丁香六月| 久久久噜噜噜www成人| av狠狠操| 色天堂在线| 超碰精品在线| 秋霞黄色一级久久| 欧美丰满熟妇BBB久久久| 就爱干 在线| 激情五月天天| 欧美xx激情视频在线观看| 99热99| 亚洲不卡欧洲| 色 免费网站视频| 婷婷在线视频| 国际国外精品欧洲南美洲专区无码不卡| 超碰在线网站9| 久久成人综合五月天| 九九色婷婷五月天| 激情五月六月婷婷| 香蕉久久国产av一区二区| 亚洲午夜AV| 色爱99| 免费碰碰视频久| 婷婷开心久久| www,色婷婷| 久久99网| 日韩AV色色色| 成人做爰A片免费看视频| 五月丁香婷婷中文网| 日韩精品一区二区刘| 操九色| 亚洲激情无码久久| 在线看AV| 五月丁香婷婷色色色| 久久9久| 99久久性爱| 五月天婷婷伊人| 婷婷黄色五月| 亚洲av骚货| 五月天激情日色在线| 欧美人人超级碰| 操操自拍| 99热6这里之有精品| 国产真实乱了老女人视频| 五月五婷婷| 五月婷婷欧美| 黄色热99| 99操免费视频| 丁香久月| 五月婷婷久久综合| 五月天久久网站| 色99日韩| 婷婷99综合| 五月天丁香久久| 另类小说五月天综合| 日本欧特黄色刺激一区影视久精品无码| www激情| 色性日本| 99re免费精品视频| 99精品成人无码A片观看金桔| 激情五月丁香六月综合AVXXXX| 综合大香蕉| 九月丁香久久网| 欧美三级欧美一级| 色欲日日躁| 一本色道久久88加勒比—| 色色色综合| 99热免费| 色婷婷六月精品| 台湾无码A片一区二区| 香蕉97碰碰碰欧美| 亚洲综合99| 五月丁香婷婷三级| 26UUU| 九九久久高清| 国产做爰视频免费播放| 国产精品VA在线| 婷婷丁香五月视频| 色射7856五月天激情四射| 婷婷伊人綜合中文字幕| 99热成人精品网站| 色激情综合狠狠婷婷| 大香AV| 69凹凸成人综合网| 99热在线观看精品| 丁香五月婷婷日本| 夜夜爽日日躁| 久久久8| 欧美色偷偷大香| 九九这里只有精品| 久久婷婷五月丁香网| 五月 婷婷 成人| 久久杏爱视频| 亚洲综合婷婷五月| 狠狠爱丁香婷| 99∨VTV| 五月丁香久久综合| 五月色俺婷婷| 五月天婷亚洲天综合网综合| 色婷婷久久综| 91打屁股免费看| 综合网亚洲| 台湾无码A片一区二区| 日夜夜久久| 天天操天天操综合| 九九色综合| 任我鲁这里有精品视频| 狠狠色中色| 艳妇野外情欲放荡HD| 第五色婷婷| 五月色丁香| 91精品国产综合久久密臀| 天天狠天天狠| 色播六月| 射琪琪| 亚洲天堂青草| 色五月婷婷7777| 深爱五月婷婷| 激情五月婷婷视频一区二区三区| 人人妻人人澡| 五月丁香六月婷婷色日| 91精品综合久久久久久五月丁香| 色婷婷香蕉丁丁网| 狠狠色丁香99| WWW·天天操·视频?| 亚洲天堂爱爱| xxxx久| 久久婷婷内射| 日本久久99久久| 五月天伊人久久| 亚洲第一成人无码A片| 色婷婷影视| 爱久综合| 伊人久久大香线蕉av一区| 狠狠高潮精品亚洲1| 亚洲VA在线| 色色婷婷综合网| 五月天激情日色在线| 激情黄色五月天| 久er7久热| 欧洲激情五月天婷婷| 深爱 五月天| 狠狠草天天草| www色婷婷久久综合久色| 激情黄色小说色五月| 久久九九玖玖| 久久免费9| 婷婷九月激情| 玖热精品综合视频| 思思色播| 六月婷婷六月天天在线免费| 五月开心婷婷极品激情| 激情婷婷丁香五月天小说| 99色在线| 热久久77777| 五月婷婷开心色伊人| 婷婷五月天,影院| 丁香伊人综合| www.26uuu.com亚洲电影| AAA亚洲AV| 丁香六月爱综合| 日韩精品无码99| 婷婷六月久久综合导航| 婷婷无码五月天| 婷婷五月在线视频| 九九精品自拍| 五月丁香五月综合欧美| 午夜大香蕉| 人妻日日日| 色五月美女| 九九九九九九综合| ww久久| 激情久久四色| 3pAV| 婷婷娱乐丁香综合网| 五月社区婷婷激情| 丁香成人色情五月天| 79精品视频| 五月天天综合| 婷婷深爱五月| 搡BBBB搡BBB搡18 | 日韩精品VIP| 久久网日本| 五月情四婷婷| 热99只有里视频| 9l视频自拍九色9l视频在线观看| 99精品在线观看视频| 精品欧美一区二区三区久久久 | 大香蕉人人人| 中文字幕在线观看视频www| 激情综合网激情五月网| 五月婷婷在线视频观看| 激情文学久久| 99五月香婷婷丁香在线视频| 性爱111111| 黄色AAAAAAA| 亚洲啪啪视频| 五月婷庭丁香在线| 五月婷婷婷婷| 九九伊人网| 黄桃AV无码免费一区二区三区| 色婷婷另类| 97香蕉碰碰人妻国产欧美| 色狠狠六月| 亚洲成人婷婷| 99热精品无码| 玖玖婷婷五月天毛片| 强伦轩人妻一区二区电影| 五月丁香婷婷AV天堂| 色在线视频网2025| 五月天婷婷激情在线色图| 婷婷丁香18| 国产精典视频在线观看| 天天做天天爰天天爽天天无遮挡| 99视频在线精品免费观看2| 91久操| 黄色片avv| 棕合影院色色| site:901-07.com| www,av好吊操| 激情综合网五月天| 欧美精品狠狠色丁香婷婷| 影音先锋天天日| av在线超清中文| 99久久网站| 亚洲色色色| 狠狠干在线| 精品九九视频| 美日韩成人| 亚洲无码影片| 人妻久久久久| 五月婷婷六月情| 久久无码成人| 狼人久草| 久久人人妻| 综合色图婷婷| 91丨九色丨东北熟女| 五月综合激情视频在线| 97在线观看| 操99| 欧洲色色| 久久这里只有精品视频15| 婷婷五月天最新综合你懂的| 六月丁香啪啪啪| 99热在线极品极品| 操操操www.com| 五月婷婷天堂| 青青草Avb在线| 六月婷婷激情小说网| 色综合99| 色五月激情| 人人操五月天| 婷婷丁香18| 婷婷丁香高潮了| 婷婷丁香人妻天天爽| 五月丁香五月丁香五月丁香五月丁香91| 五月婷深深爱激情网| 超碰免费在线| 91婷婷在线| 五月丁香影院| 99ri国产精品| 激情影院内射| 精品人妻一区二区三区四区不卡在| 九九99热| 婷婷成人五月天成人文学| 人碰人人人玩91| 五月社区婷婷激情| 国产午夜精品AV一区二区麻豆| 人人操AV| 性色婷婷| 色婷婷偷拍| 就爱射中文字幕资源网| 国产午夜精品一区二区三区四区| 婷婷五月天视| 成功精品影院| 九月影院義母在线播放| 91人操| 色婷婷先锋| 五月天伊人网| 另类丁香综合| 亚洲这里只有精品| 奇米四色五月天| 色五月成人网| 丁香五月大香蕉在线99| 色婷婷色情| 亚洲无AV在线中文字幕| 婷婷丁香五| 99热在线观看| 夜夜涩涩涩| 色一情一乱一乱一区91Av| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 久久加勤综合| 五月婷婷我| 亚洲永远av在线播放| 99热九九在线| 亚洲无码影音| 思思国产99| 国产91资源在线| 小视频一区 | 色色综合网站| 五月丁香六月婷婷综合在线| 天天爱天天操| 无码一区二区日韩| 精品人妻伦九区久久AAA片| 好吊丝aV| 夫妇交换刺激做爰| 涩涩婷婷五月| 日韩有码一区| 九九色色| 亚洲av日韩无码| 另类专区在线| 97人人操人人爽| 亚洲综合在线播放| 久久久91| 人人人人人人人人人草| 99精品在线| 婷婷五月天最新综合你懂的| 婷婷丁香成人| 婷婷成人网五月天| 中文字幕成人| 96人人操人人操人人| 亚洲婷婷五月天| 色久五月| 亚洲人人艹| 99色综合网| 六月婷婷俺也去| 九九在线热九九在线热99热| 五月色天情| 综合久久高清| 色狠狠综合| 天天做天天视天天谢| 色五月激情五月| 五月丁香六月激情综合欧美| 无码网| 婷婷五月天777| 在线理论片| 激情五月婷婷丁香综合网| 久久精品综合色| 91热在线| 婷婷五月丁香狠狠| 婷婷九九色| 色五月色图| 九九热亚洲中文在线观看免费| 中文字幕在线免费看线人| 91精品综合久久久久久五月丁香| 操九色| 亚洲综合激情五月久久| 丁香五月亚洲综合| 国产九九一区二区三区| 久久五月天婷婷| 五月色丁香婷婷中文字幕| 六月婷婷日| 美日韩成人| 99色激| 91婷婷视频| 久久婷婷色综合| 婷婷久久国产视频| 婷婷六月成人| 操97| 五月天激情婷婷小说| 玖玖婷婷综合| 五月天婷婷色色| 淑女丝袜bi操逼123| 欧美激情丁香五月| 五月 婷 久| 色综合色五月| 婷婷五月天熟妇| 激情综合在线观看| av一级棒av| 少妇搡BBBB搡BBB搡毛茸茸 | 777久久精品| www.99热这里精品| 拍真实国产伦偷精品| 激情5月婷婷| 丁香午月AV中文字幕| 久久免费干| 亚洲综合色网| 色婷婷五月天视频在线| 五月天婷婷xxx| 久久丁香九| 欧美99| 五月丁香成人网| 婷婷五月 丁香六月| 五月丁香成年黄色| 中国女人内射6XXXXX| 婷婷日欧美在线观看| 久久五月丁香综合17C| 色五月婷婷在线| 日本韩国视频在线观看社区免费的9| 天天天天天天操| 天天色综合色| 久久综合综合久久| 日噜噜色| 亚洲精品一区中文字幕乱码| 狠狠色成人影片| 婷婷五月天熟妇| 久久狠狠欧美| 99er热精品视频| 亚洲欧洲中文日韩久久AV乱码| 激情四射婷婷| 狠狠色噜噜狠狠| 久er7久热| 九热久| 日本操B片| 777精品久无码人妻蜜桃| www999日韩精品| 色五月婷婷激情| 色七色九九| 91超碰在线观看| 91人人妻人人操| 黄色录像网点| 天天色综网| 日日干日日| 成人五月天视频播放| 综合激情网| 丁香激情久久| 一二区成人电影| 精品国婬伦V无码久久久| 激情丁香五月| 色色色婷婷| 色婷婷六月天在线| 26uuu亚洲欧美另类| 天堂AV三级| 大香蕉精品视频| 97碰成超视频免费视频| 国产精品 的国产| 岛国在线观看91|