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

ARTICLE DETAIL

資訊詳情

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

Agent應用開發(fā)中SSE流式渲染的設計與實踐

Agent應用開發(fā)中SSE流式渲染的設計與實踐 1. 項目概述Agent應用開發(fā)與渲染不是“前后端分工”而是“智能流與呈現(xiàn)流”的耦合設計“Agent應用開發(fā)和渲染之間關系的思考”這個標題乍看像一個技術哲學命題但在我過去三年深度參與7個生產(chǎn)級AI Agent產(chǎn)品涵蓋客服調度、金融投顧、工業(yè)設備巡檢、教育陪練四類場景的實踐中它根本不是抽象討論——而是一個每天都在發(fā)生的、直接影響用戶是否愿意多停留3秒、是否愿意點擊第二次、是否愿意為服務付費的關鍵工程現(xiàn)實。核心關鍵詞Agent、應用開發(fā)、渲染、SSE、text/event-stream已經(jīng)精準錨定了問題域我們正在構建的不再是傳統(tǒng)Web應用里“后端吐JSON、前端拼DOM”的靜態(tài)協(xié)作模型而是一個持續(xù)演進的智能體Agent與動態(tài)響應的用戶界面Rendering之間如何建立低延遲、高保真、可中斷、可追溯的雙向數(shù)據(jù)通道。這直接決定了Agent的“呼吸感”——用戶能否實時感知到Agent在思考、在檢索、在調用工具、在組織語言也決定了系統(tǒng)的“可控感”——當Agent卡在某個步驟時前端能否立刻給出明確反饋而不是讓用戶面對一個轉圈的空白頁干等。我見過太多團隊把Agent邏輯寫得天花亂墜結果渲染層只用一個div{response}/div硬塞導致用戶看到的是“一段最終答案”而非“一次可信的思考過程”。這種割裂讓Agent從“助手”退化成“黑盒計算器”。所以這不是“開發(fā)”和“渲染”誰更重要的問題而是必須把二者視為同一枚硬幣的兩面Agent是大腦渲染是神經(jīng)末梢與肌肉——沒有神經(jīng)信號的傳遞再強的大腦也無法驅動行為沒有大腦的指令再靈敏的末梢也只是無意義的抽搐。本文面向所有已能寫出基礎Agent鏈路比如用LangChain調通LLM API、但正被“用戶說‘怎么沒反應’‘感覺很慢’‘不知道它在干嘛’”這類反饋困擾的開發(fā)者。你不需要是前端專家也不必精通底層渲染引擎但必須理解數(shù)據(jù)如何從Agent的決策節(jié)點毫秒級、結構化、可調試地抵達用戶眼前。接下來的內容全部基于真實壓測數(shù)據(jù)、線上日志分析和用戶眼動實驗不講虛的。2. 核心設計邏輯為什么SSE是Agent應用渲染的“默認解”而非WebSocket或輪詢2.1 從用戶心智模型出發(fā)Agent的“思考過程”天然具備單向流特征我們先拋開技術選型回到用戶最樸素的體驗預期。當用戶向Agent提問“幫我對比iPhone 15和華為Mate 60的影像能力并推薦適合旅行攝影的機型”他期待看到什么絕不是3秒后彈出一個完整PDF報告。他期待的是第1秒看到“正在分析手機參數(shù)…”狀態(tài)提示第2秒看到“已檢索到iPhone 15 Pro主攝規(guī)格4800萬像素…”同時旁邊小圖標顯示“正在訪問蘋果官網(wǎng)”過程透明第3秒看到“華為Mate 60 Pro影像數(shù)據(jù)加載中…”進度條走到70%進度感知第4秒看到“調用圖像處理工具生成樣張對比…”工具調用可視化第5秒看到最終結論段落逐句浮現(xiàn)每句后帶一個小勾?結果分步確認這個過程本質是一個由Agent內部狀態(tài)機驅動的、不可逆的、按時間序展開的事件流Event Stream。每個事件Event包含類型status/tool_call/llm_response/chunk、內容text/payload、時間戳、可選的元數(shù)據(jù)如tool_id、chunk_id。它天然符合“單向推送、有序、不可變”的特性。而WebSocket雖然也支持流式但它設計初衷是雙向全雙工通信需要客戶端和服務端都維護連接狀態(tài)、處理消息ACK、應對網(wǎng)絡抖動重連對Agent這種“我只管發(fā)、你只管收”的輕量級場景屬于過度設計。我曾在一個電商Agent項目中強行用WebSocket替代SSE結果發(fā)現(xiàn)連接管理代碼量增加3倍且80%的邏輯用于處理“心跳包超時”“消息重復投遞”“客戶端斷連重連”等與Agent核心邏輯無關的問題當Agent因調用外部API如支付網(wǎng)關阻塞時WebSocket連接會因超時被Nginx主動關閉導致整個流中斷用戶看到“連接已斷開”而SSE的retry機制會自動重連并從斷點續(xù)傳前端渲染層需要額外編寫狀態(tài)同步邏輯確保UI狀態(tài)如按鈕禁用/啟用與WebSocket消息隊列嚴格一致極易出現(xiàn)競態(tài)條件Race Condition比如用戶在Agent還在思考時就點了“取消”但取消指令和思考中的中間結果同時到達前端無法確定執(zhí)行順序。提示SSE的retry: 3000毫秒是黃金參數(shù)。實測表明3秒重連間隔既能覆蓋99.2%的瞬時網(wǎng)絡抖動基于CDN邊緣節(jié)點日志又不會因重連過于頻繁給服務端造成壓力。低于2秒CDN緩存未失效即重連可能拿到舊數(shù)據(jù)高于5秒用戶感知到明顯卡頓。2.2 SSE協(xié)議層優(yōu)勢瀏覽器原生支持、HTTP兼容、零配置穿透SSEServer-Sent Events是W3C標準所有現(xiàn)代瀏覽器Chrome 6、Firefox 6、Safari 5.1原生支持無需引入任何第三方庫。它的底層就是HTTP/1.1這意味著零配置穿透企業(yè)防火墻絕大多數(shù)企業(yè)內網(wǎng)只開放80/443端口且允許HTTP流量。WebSocketws://和長連接如gRPC-Web常被安全策略攔截而SSE走https://api.example.com/agent/stream和普通API請求完全一樣運維同學連白名單都不用加。我在某銀行項目中客戶IT部門明確拒絕開放WebSocket端口但SSE接口當天就通過了安全審計。天然支持HTTP緩存與CDNSSE響應頭可設置Cache-Control: no-cache確保不緩存敏感數(shù)據(jù)同時CDN如Cloudflare能智能緩存SSE連接的初始握手階段HTTP 200響應頭將連接建立時間從平均320ms降至80ms。我們對比過直連后端 vs 經(jīng)CDN代理首字節(jié)時間TTFB提升4倍。服務端實現(xiàn)極簡以Python FastAPI為例核心代碼僅需15行from fastapi import Response import asyncio app.get(/agent/stream) async def stream_agent_response(query: str): async def event_generator(): # 步驟1發(fā)送狀態(tài)事件 yield event: status\ndata: {message: 正在啟動分析流程}\n\n await asyncio.sleep(0.5) # 模擬Agent初始化 # 步驟2發(fā)送工具調用事件 yield event: tool_call\ndata: {tool: search_api, query: iPhone 15 Pro camera specs}\n\n await asyncio.sleep(1.2) # 模擬API調用 # 步驟3發(fā)送LLM流式響應逐token for token in [根據(jù), 官方, 資料, , iPho, ne, 15, Pro]: yield fevent: llm_chunk\ndata: {json.dumps({token: token})}\n\n await asyncio.sleep(0.1) return Response( event_generator(), media_typetext/event-stream, headers{ Cache-Control: no-cache, X-Accel-Buffering: no, # Nginx關鍵配置禁用緩沖 Connection: keep-alive } )這段代碼清晰展示了SSE的核心event:定義事件類型data:攜帶JSON序列化數(shù)據(jù)\n\n分隔事件。服務端無需管理連接池、無需處理二進制幀只需按需yield字符串。而同等功能的WebSocket實現(xiàn)需引入websockets庫編寫連接管理、心跳、錯誤恢復等數(shù)百行代碼。2.3 渲染層的“流式消化”如何讓前端不卡死、不丟幀、不錯亂SSE的挑戰(zhàn)不在服務端而在前端如何高效、穩(wěn)定地消費事件流。很多團隊失敗在于前端用fetch().then(res res.body.getReader())手動讀取流結果發(fā)現(xiàn)read()返回的Uint8Array需要自己解析event:和data:還要處理跨事件的數(shù)據(jù)粘包如一個TCP包里含兩個完整事件代碼臃腫且易出錯。正確姿勢是擁抱瀏覽器原生EventSourceAPIconst eventSource new EventSource(/agent/stream?query encodeURIComponent(userQuery)); // 監(jiān)聽特定事件類型 eventSource.addEventListener(status, (e) { const data JSON.parse(e.data); updateStatusUI(data.message); // 更新狀態(tài)欄 }); eventSource.addEventListener(tool_call, (e) { const data JSON.parse(e.data); showToolLoading(data.tool, data.query); // 顯示工具調用動畫 }); eventSource.addEventListener(llm_chunk, (e) { const data JSON.parse(e.data); appendToResponseArea(data.token); // 追加到響應區(qū)支持光標閃爍效果 }); // 全局錯誤處理非網(wǎng)絡錯誤而是服務端主動發(fā)送error事件 eventSource.addEventListener(error, (e) { if (e.eventPhase EventSource.CLOSED) { console.log(SSE連接已關閉); } else { console.error(SSE錯誤:, e); } });EventSource自動處理連接建立與重連遵循retry頭事件解析自動分割event:/data:/id:數(shù)據(jù)解碼UTF-8網(wǎng)絡中斷后的無縫續(xù)傳服務端需配合發(fā)送id:注意EventSource不支持自定義HTTP Header如Bearer Token因此認證必須放在URL參數(shù)如/stream?tokenxxx或Cookie中。我們采用JWT Cookie方案既安全又免去前端每次構造Header的麻煩。3. 渲染架構拆解從“純文本流”到“可交互的智能界面”3.1 渲染層的三層抽象事件接收器Receiver、狀態(tài)協(xié)調器Orchestrator、視圖渲染器Renderer將Agent的輸出流轉化為用戶界面不能簡單地“收到什么就渲染什么”。我們采用三層架構確保可維護性與擴展性事件接收器Receiver職責唯一——監(jiān)聽EventSource將原始事件{type: llm_chunk, data: {...}}轉換為標準化的內部事件對象{type: LLM_CHUNK, payload: {token: hello}, timestamp: 1712345678901}并注入全局事件總線如mitt。它不關心業(yè)務邏輯只做協(xié)議轉換。狀態(tài)協(xié)調器Orchestrator這是核心大腦。它訂閱事件總線根據(jù)事件類型和上下文決定UI狀態(tài)如何變遷。例如收到TOOL_CALL事件 → 設置isToolRunning true觸發(fā)“工具加載中”動畫收到TOOL_RESULT事件 → 檢查tool_id是否匹配當前運行的工具 → 若匹配設置isToolRunning false并觸發(fā)LLM_RETHINK事件收到LLM_CHUNK事件 → 將token追加到currentResponse字符串 → 若token是標點。則觸發(fā)SENTENCE_COMPLETE事件通知Renderer可進行語法高亮。它像一個交通指揮中心確保每個事件都被正確路由、狀態(tài)被準確更新、副作用如播放音效、記錄日志被適時觸發(fā)。視圖渲染器Renderer純粹的UI組件。它只接收來自Orchestrator的狀態(tài)快照如{status: analyzing, response: 正在..., isToolRunning: true}并用聲明式方式React/Vue渲染。它不發(fā)起任何網(wǎng)絡請求不處理事件只做“狀態(tài)到DOM”的映射。這種分層讓調試變得極其簡單當用戶反饋“狀態(tài)沒更新”我們直接檢查Orchestrator的日志當“文字顯示錯亂”我們聚焦Renderer的DOM操作當“連接頻繁斷開”我們審查Receiver的EventSource配置。我們在某教育Agent項目中通過在Orchestrator中添加console.timeLog(orchestration)定位到一個LLM_CHUNK事件處理耗時達120ms因同步執(zhí)行了復雜Markdown解析將其移至Web Worker后UI幀率從32fps提升至58fps。3.2 “思考過程”的可視化超越純文本的4種關鍵渲染模式Agent的渲染價值90%體現(xiàn)在對“思考過程”的具象化表達上。我們總結出4種經(jīng)過用戶測試驗證的高效模式狀態(tài)脈沖Status Pulse用微動效表示Agent活躍。不是簡單的“加載中…”文字而是一個環(huán)形進度條寬度隨status事件中的progress字段動態(tài)變化背景色從淺藍idle→ 淡黃thinking→ 橙色tool_call→ 綠色done漸變每次收到新事件進度條末端產(chǎn)生一次微小的“水波紋”擴散動畫CSSkeyframes。用戶眼動實驗顯示這種脈沖比靜態(tài)文字提升37%的“感知響應速度”。工具調用卡片Tool Card當Agent調用搜索、數(shù)據(jù)庫、API等工具時渲染一個可折疊的卡片div classtool-card div classtool-header 搜索引擎/div div classtool-queryiPhone 15 Pro camera specs/div div classtool-progress加載中... span classprogress-bar/span/div div classtool-result v-ifresult已獲取12條結果/div /div卡片右上角有“×”按鈕用戶可隨時點擊取消該工具調用需服務端支持cancel_tool指令。這賦予用戶掌控感避免“被Agent拖著走”。流式響應高亮Streaming Highlight對LLM生成的文本按語義單元句子、短語分塊渲染并實時語法高亮名詞產(chǎn)品名、參數(shù)→ 藍色粗體動詞“支持”、“搭載”、“優(yōu)于”→ 綠色數(shù)值“4800萬”、“f/1.78”→ 橙色比較級“更強”、“更優(yōu)”→ 紅色下劃線。實現(xiàn)上我們用span classtoken nouniPhone 15 Pro/span包裹每個語義單元CSS控制樣式。用戶反饋高亮讓信息密度提升閱讀效率提高2.3倍。思考路徑圖譜Thought Graph對于復雜多步推理如“先查參數(shù)→再比價格→最后綜合推薦”在側邊欄渲染一個動態(tài)圖譜節(jié)點[參數(shù)查詢]→[價格對比]→[綜合推薦]邊箭頭表示流向顏色表示狀態(tài)灰色未開始/黃色進行中/綠色完成懸停節(jié)點顯示該步驟的輸入、輸出、耗時。這讓用戶一眼看清Agent的“思維地圖”極大提升信任度。3.3 關鍵參數(shù)與性能邊界SSE流的吞吐、延遲與內存控制SSE不是萬能的必須設定合理邊界否則會壓垮前端。我們基于百萬級日志統(tǒng)計給出硬性參數(shù)參數(shù)推薦值依據(jù)單事件最大長度≤ 4KBChrome對單個data:字段的解析有性能拐點超過4KB時EventSource.onmessage回調延遲從1ms升至15ms事件發(fā)送頻率≤ 20 events/sec高于此值iOS Safari的EventSource會出現(xiàn)事件丟失WebKit Bug #252134我們通過服務端節(jié)流throttling強制限制前端事件隊列深度≤ 100 events防止內存泄漏。當隊列滿時丟棄最老的status事件非關鍵保留llm_chunk和tool_result關鍵超時重連上限5次指數(shù)退避1s, 2s, 4s, 8s, 16s平衡用戶體驗與服務端壓力。第5次失敗后前端顯示“網(wǎng)絡異常請重試”并提供一鍵重連按鈕這些參數(shù)不是拍腦袋定的。例如“20 events/sec”我們用chrome://tracing錄制了不同頻率下的主線程占用10Hz時JS執(zhí)行時間穩(wěn)定在3ms/frame25Hz時因EventSource內部事件循環(huán)競爭JS執(zhí)行時間飆升至18ms/frame導致UI卡頓。因此我們在服務端Agent框架中內置了RateLimiter中間件class SSEThrottler: def __init__(self, max_rate20): self.rate_limiter TokenBucket(max_rate, 1.0) # 每秒20個token async def wait_if_needed(self): while not self.rate_limiter.consume(): await asyncio.sleep(0.05) # 等待50ms再試所有事件發(fā)送前必須await throttler.wait_if_needed()確保前端永遠在舒適區(qū)運行。4. 實操全流程從零搭建一個支持思考過程可視化的Agent應用4.1 環(huán)境準備與依賴安裝精簡到極致的最小可行棧我們摒棄所有“全家桶”方案選擇最輕量、最可控的技術組合后端Agent RuntimePython 3.11 FastAPI 0.111 LangChain 0.1.16 LiteLLM統(tǒng)一LLM API前端Rendering LayerVanilla JavaScript無框架 Tailwind CSS原子化CSS EventSource原生部署Docker Nginx反向代理SSE優(yōu)化為什么不用Next.js/Nuxt因為它們的SSR/SSG會破壞SSE的流式特性——服務端渲染完HTML再推流用戶看到的是“空白頁等待”而非“實時流”。我們必須讓EventSource連接在HTML加載后立即建立。安裝命令一行搞定# 后端 pip install fastapi[all] langchain litellm uvicorn # 前端僅需一個index.html無構建步驟 # 創(chuàng)建public/index.html內容見下文4.2 后端Agent服務可復用的SSE流式響應模板創(chuàng)建main.py這是核心from fastapi import FastAPI, Request, HTTPException, BackgroundTasks from fastapi.responses import Response, JSONResponse from pydantic import BaseModel import json import asyncio import logging from typing import AsyncGenerator, Dict, Any app FastAPI() # 模擬Agent核心邏輯實際應替換為LangChain Chain class AgentExecutor: async def execute(self, query: str) - AsyncGenerator[str, None]: # 步驟1發(fā)送啟動狀態(tài) yield event: status\ndata: {message: 正在啟動分析流程, progress: 0}\n\n await asyncio.sleep(0.3) # 步驟2模擬工具調用搜索 yield event: tool_call\ndata: {tool: search, query: query, id: search_001}\n\n await asyncio.sleep(0.8) # 步驟3模擬工具結果 yield event: tool_result\ndata: {tool_id: search_001, result: [iPhone 15 Pro: 4800萬像素主攝, Huawei Mate 60 Pro: 5000萬像素超光變主攝]}\n\n await asyncio.sleep(0.2) # 步驟4LLM流式生成逐詞 response_words [根據(jù), 對比, 分析, , iPho, ne, 15, Pro, 在, 影, 像, 方, 面, 更, 加, 注, 重, 視, 頻, 拍, 攝, , 而, 華, 為, Ma, te, 60, Pro, 則, 擅, 長, 靜, 態(tài), 抓, 拍, 。, 對, 于, 旅, 行, 攝, 影, , 若, 你, 側, 重, 視, 頻, 記, 錄, , 推, 薦, iPh, one, 15, Pro, , 若, 偏, 好, 高, 清, 靜, 態(tài), , 則, 華, 為, Ma, te, 60, Pro, 更, 適, 合, 。] for i, word in enumerate(response_words): # 每5個詞發(fā)送一個chunk事件模擬真實LLM token流 if i % 5 0: yield fevent: llm_chunk\ndata: {json.dumps({token: .join(response_words[max(0,i-4):i1])})}\n\n await asyncio.sleep(0.05) # 控制流速 # 步驟5發(fā)送完成狀態(tài) yield event: status\ndata: {message: 分析完成, progress: 100}\n\n app.get(/agent/stream) async def stream_agent_response(request: Request, query: str): # 從請求頭或Cookie提取用戶ID用于日志追蹤 user_id request.headers.get(X-User-ID, unknown) # 初始化Agent執(zhí)行器 executor AgentExecutor() async def event_generator(): try: async for event in executor.execute(query): yield event except Exception as e: # 發(fā)送錯誤事件前端可捕獲 yield fevent: error\ndata: {json.dumps({code: AGENT_ERROR, message: str(e)})}\n\n logging.error(fAgent execution failed for user {user_id}: {e}) return Response( event_generator(), media_typetext/event-stream, headers{ Cache-Control: no-cache, X-Accel-Buffering: no, # 關鍵禁用Nginx緩沖 Connection: keep-alive, Access-Control-Allow-Origin: *, # 開發(fā)環(huán)境生產(chǎn)環(huán)境請設具體域名 } ) if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0:8000, port8000, reloadTrue)關鍵細節(jié)說明X-Accel-Buffering: no是Nginx的魔法開關。默認Nginx會緩沖SSE響應直到4KB或1秒導致前端“等很久才看到第一個事件”。加此頭強制Nginx立即轉發(fā)。event: error事件是容錯關鍵。當Agent內部出錯如LLM API超時不關閉連接而是推送錯誤事件前端可優(yōu)雅降級如顯示“暫時無法處理請稍后重試”。user_id日志追蹤便于線上問題排查。4.3 前端渲染頁面100行代碼實現(xiàn)專業(yè)級思考過程可視化創(chuàng)建public/index.html!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleAgent思考過程可視化/title script srchttps://cdn.tailwindcss.com/script style keyframes pulse { 0% { opacity: 0.6; } 50% { opacity: 1; } 100% { opacity: 0.6; } } .pulse { animation: pulse 1.5s infinite; } .tool-card { transition: all 0.2s ease; } .tool-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .token-noun { color: #3b82f6; font-weight: bold; } .token-verb { color: #10b981; } .token-number { color: #f59e0b; } .token-comparative { text-decoration: underline wavy red; } /style /head body classbg-gray-50 min-h-screen div classmax-w-4xl mx-auto p-4 h1 classtext-2xl font-bold text-gray-800 mb-2智能分析助手/h1 p classtext-gray-600 mb-6輸入問題觀察Agent的思考全過程/p !-- 輸入?yún)^(qū) -- div classmb-6 input idqueryInput typetext placeholder例如對比iPhone 15和華為Mate 60的影像能力... classw-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 button idsubmitBtn classmt-2 bg-blue-600 hover:bg-blue-700 text-white px-6 py-3 rounded-lg font-medium transition 開始分析 /button /div !-- 狀態(tài)脈沖區(qū) -- div idstatusBar classflex items-center mb-6 p-4 bg-white rounded-lg shadow-sm div idpulseDot classw-3 h-3 bg-blue-500 rounded-full mr-3 pulse/div span idstatusText classtext-gray-700等待輸入.../span /div !-- 響應區(qū) -- div idresponseArea classbg-white rounded-lg shadow-sm p-4 min-h-[200px] div idresponseContent classprose prose-sm max-w-none/div /div !-- 工具調用區(qū) -- div idtoolArea classmt-6 space-y-3/div /div script let eventSource null; let currentResponse ; let toolCards {}; // 狀態(tài)協(xié)調器處理事件更新狀態(tài) function handleEvent(event) { const data JSON.parse(event.data); switch(event.type) { case status: document.getElementById(statusText).textContent data.message; if (data.progress 100) { document.getElementById(pulseDot).className w-3 h-3 bg-green-500 rounded-full mr-3; } break; case tool_call: const toolId data.id || tool_${Date.now()}; toolCards[toolId] { element: createToolCard(data.tool, data.query, toolId), status: running }; document.getElementById(toolArea).appendChild(toolCards[toolId].element); break; case tool_result: if (toolCards[data.tool_id]) { toolCards[data.tool_id].status done; const card toolCards[data.tool_id].element; card.querySelector(.tool-progress).textContent 已完成; card.querySelector(.tool-result).textContent 已獲取${data.result.length}條結果; } break; case llm_chunk: currentResponse data.token; document.getElementById(responseContent).innerHTML highlightText(currentResponse); // 滾動到底部 document.getElementById(responseArea).scrollTop document.getElementById(responseArea).scrollHeight; break; case error: alert(Agent錯誤: ${data.message}); closeEventSource(); break; } } // 創(chuàng)建工具調用卡片 function createToolCard(toolName, query, toolId) { const div document.createElement(div); div.className tool-card bg-gray-50 p-3 rounded border border-gray-200; div.innerHTML div classflex justify-between items-start div div classfont-medium text-gray-800${getToolIcon(toolName)} ${toolName}/div div classtext-sm text-gray-600 mt-1${query}/div /div button onclickcancelTool(${toolId}) classtext-xs text-red-500 hover:text-red-700取消/button /div div classmt-2 flex items-center div classtool-progress text-sm text-gray-500加載中.../div div classml-2 w-16 h-1.5 bg-gray-200 rounded-full overflow-hidden div classh-full bg-blue-500 rounded-full animate-pulse/div /div /div div classtool-result text-sm text-green-600 mt-1 hidden/div ; return div; } function getToolIcon(toolName) { const icons { search: , database: ?, api: }; return icons[toolName] || ??; } // 文本高亮函數(shù) function highlightText(text) { return text .replace(/(iPhone \d|Huawei Mate \d|Pro|Ultra)/g, span classtoken-noun$1/span) .replace(/(支持|搭載|優(yōu)于|強于|弱于|適合|推薦)/g, span classtoken-verb$1/span) .replace(/(\d萬|f\/\d\.\d|\dMP)/g, span classtoken-number$1/span) .replace(/(更.*?|最優(yōu)|最強|最佳)/g, span classtoken-comparative$1/span); } // 取消工具調用 window.cancelTool function(toolId) { if (toolCards[toolId] toolCards[toolId].status running) { fetch(/agent/cancel?tool_id${toolId}) .then(() { toolCards[toolId].status cancelled; toolCards[toolId].element.querySelector(.tool-progress).textContent 已取消; }); } }; // 啟動Agent流 document.getElementById(submitBtn).onclick function() { const query document.getElementById(queryInput).value.trim(); if (!query) return; // 關閉舊連接 closeEventSource(); // 創(chuàng)建新EventSource eventSource new EventSource(/agent/stream?query${encodeURIComponent(query)}); // 綁定事件 eventSource.addEventListener(status, handleEvent); eventSource.addEventListener(tool_call, handleEvent); eventSource.addEventListener(tool_result, handleEvent); eventSource.addEventListener(llm_chunk, handleEvent); eventSource.addEventListener(error, handleEvent); // 錯誤處理 eventSource.onerror function() { console.error(EventSource connection failed); document.getElementById(statusText).textContent 連接失敗請檢查網(wǎng)絡; document.getElementById(pulseDot).className w-3 h-3 bg-red-500 rounded-full mr-3; }; }; // 關閉連接 function closeEventSource() { if (eventSource) { eventSource.close(); eventSource null; } // 清空UI currentResponse ; document.getElementById(responseContent).innerHTML ; document.getElementById(toolArea).innerHTML ; document.getElementById(statusText).textContent 等待輸入...; document.getElementById(pulseDot).className w-3 h-3 bg-blue-500 rounded-full mr-3 pulse; } /script /body /html實操心得高亮邏輯要輕量我們用正則而非復雜NLP庫因為highlightText()在每次llm_chunk事件中執(zhí)行必須保證1ms。正則/(iPhone \d)/g比new RegExp(iPhone \\d, g)快3倍V8引擎優(yōu)化。取消按鈕的實現(xiàn)前端點擊“取消”發(fā)送/agent/cancel?tool_idxxx請求服務端需有對應接口終止后臺任務如asyncio.cancel(task)。這是用戶掌控感的核心。滾動到底部scrollTop scrollHeight是必須的否則長響應會“消失”在視口外。但要注意頻繁設置scrollTop會觸發(fā)重排reflow我們用requestAnimationFrame做了節(jié)流但此處為簡化省略。4.4 Nginx部署配置讓SSE在生產(chǎn)環(huán)境穩(wěn)如磐石創(chuàng)建nginx.confupstream agent_backend { server 127.0.0.1:8000; } server { listen 80;
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
极品国产内射| 乱伦av麻豆| 最新国内自拍av免费| 日韩av一级黄片| 天天爽天天操| 久操国产在线| 亚洲中文字幕网| 啊啊啊啊啊啊啊啊啊啊在线观看| 自拍偷拍 日韩欧美| 国产亚州日韩欧美看片| 在线电影亚洲色图| 韩国一级AAA| 在线女人91| 蜜臀久久99精品久久久久| 九九九热| 丝袜美腿诱惑亚洲欧美视频在线观看 | 国产第二页| 欧美黄色手机在线观看| 91在线欧色| 校园激情狠狠四射| 激情AV| 国产97/欧美| 色婷婷六月丁香七月婷婷| 久久久草成人网站久久久草成人久久久草久久久 | 色臀AV| av天堂5| 狠色婷婷久久一区二区三区_| 国产乱子伦一区二区三区在线观看| 天天操天天射天天日| 精品久久久久瑟瑟| AVE乱伦| 激情丁香婷婷| 久久精品噜噜噜成人看免欧美大片| 欧美日韩性爱精品| 女生看匆91网站| 99久久9| 亚洲区小说| 久久精品久久九九精品| 欧美青青视频| 亚洲精品第一| 亚洲毛片久久| 日本一二区免费| 在线午夜成人无码视频| 精品久久大胆人体| 日韩人妻一区二区精品| 欧美综色欧| 激情五月天综合网| 国产JDAV无码视频在线观看| 男女激情中文字幕| 婷婷视频在线免费观看| 日夜精品| AV一二区| 久久欲| 色九九综合AV| 日本黄 R色 成 人网站| 亚洲天天在线| 日本最新免费韩国1区2区视频播放| 嫩呦国产一区二区三区AV| 佐山爱中文字幕| 国产精品69人妻无码久久久| 国产天美传媒精品| 国产精品色| 久久超碰com| 亚洲情色图片区| 无码精品蜜桃一区二区三区ww| 亚洲区小说| 欧美激情总合网| 亚洲精品国产无码高清| 超碰 av 女人天堂| 爱爱动态120秒| 永久免费av无码网站国产app | 热久久这里只有精品| 精品国产乱码久久久A| 看看小穴| 中文一区在线视频| 亚洲精品 欧美精品| 人妻中文字幕日韩电影| 国产一区二区在线播放量| 在线亚洲丝袜视频网站| 欧美亚洲综合色| 色综合国产在线观看| 丝袜亚洲91| 乱伦AVxx| 91在线精品一区二区三区| 久久噜| 狠狠干,狠狠操| 欧美中文字幕日韩在线| 女人香蕉久久毛毛片精品| 亚洲精品丝袜| 久久久com| 国产精品日本无码A片| 国产精品久久久久久久久久二区三区| 97WW精品| 久久99视频| 亚洲国产成人精品999| 丰满少妇精品一区二区| 精精夜夜| hd成人一区二区在线| 久久午夜色播影院免费高清| 一区二区视频你懂的| 欧美日韩999| 在线人成亚洲视频免费观看| 精品蜜乳AV免费观看| 亚洲美腿丝袜香蕉影视欧美成人| 久久精品老司| www.99在线| 在线中文字幕| 天天欧美| 大色网久久| 情色五月天网| 草b在线| 睡产熟女乱伦| 影视综合无码少妇| 亚洲伊人成综合成人网| 精品传媒在线一区| 欧美亚州综合网图片| 精品视频久久区| 超碰色大香蕉| 日韩精品第3页| 日本三级一区二区 在线| 久久伊人在线五区| 日本伦乱九九九综合| 日本有码久久| 九九久久精品| 人妻少妇久久中文字幕一区二区 麻豆 | AV在线性爱| 久热一区二区| 97chaopengongkai| 午夜传煤十二区精品| 综合激情一一91| 亚州日韩97| 欧美午夜色妇色鬼| 中文字幕日韩精品一区二区三区| 亚洲码和欧洲精品激情系列| 婷婷五月天成人网| 久久男人的天堂国产| 国产精品探花视频| 51一区二区三区| 免费αⅴ在线观看| 色就色综合| 国产美女口爆吞精视频| 久久激情亚洲精品无码?V| 黄色在线网站| 色哟哟 日韩精品| 日本一区二区中文字幕久久| 久久岛国| AAAA级日本片免费视频| 国产精品高潮呻吟av久久4虎| 99无码狠狠久久| 另类图片综合| 中文字幕五月婷婷免费| 东北女人操比视频| 婷婷丁香一区二区三区| 亚洲999综合| 东北女人| 大屁股熟女一区二区三区| 国产亚州高清国产拍精| 99热婷婷一区二区三| 老熟乱一区二区三区四区| 欧美色图99| 91人精品妻入口| 超碰色男人操熟女| 久久东京国产精品视频| 成人免费不卡在线视频| 国产亚洲99久久精品| 爱射综合| 中文字幕av久久爽Av| 久偷拍| 大香蕉啪啪啪啪在线| 老熟妇一区二区三区啪啪| 欧美日韩中国x| 91男人综合| 女同性恋中文字幕| 国产h小视频在线观看免费| 另类TS人妖一区二区三区| 亚洲精品xxx| 操屄不卡视频| 天天享受天天看| 另类小说五月天| 久久国产精品,久久国产| 都市激情人妻一区二区青青操视频| 久久久成人精品| 蜜臀99久久精品| 91天美| 人妻偷拍一区二区三区| 中文字幕在线观看视频www| 欧美专区第一页| 国产成人主播| 久夜视频| 色色色色日本| 亚洲精品久久久久久久久豆丁网| 色诱avtt| 国产精品扒开腿做爽爽爽视频| 国产无码精品久久久久久| 嫩呦国产一区二区三区AV| 人人天天干干| 中文幕97| 极品人妻少妇综合| av绯色| 欧美色偷拍 | 久久东京热久久| 色噜噜国产精品视频一区二区| 久久性爱视频免费看| 果冻国产精品麻豆成人av| 啊啊啊com| 91少妇通奸网站| 欧美成人一级麻豆| 综合久久婷婷| 97就爱干| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 一级免费啪啪片| 国产suv精品一区二区四| 久久99久久99精品天美传媒棢·纸:. | 欧美大香蕉同搞| 天天日夜夜| 蜜桃臀AV在线| 草草影院日本第一页| 曰韩欧美国产传媒麻豆第一区| 干b在线性社区| 午夜精品久久久久久久久久久久久 | 国产在线视视频有精品| 不卡六六在线91| 伊人久久综合影院| 欧美亚洲国产自久久| 日本二三四区| 久久老子无码午夜伦不卡| 白丝在线一区| 国产一区二区精品久久99| 熟妇高潮一区二区免费视频| 丰满少妇一区二区三区免费看| 婷婷深爱五月| 欧美色图91p| 思思热国产高清| 天天射影院| 老司机福利社视频在线观看| 精品一区二区人妖| 久久人妻一区二区三区高清| 国产女性无套 免费观看| 天天干2019| 噜噜噜噜久久久精品免费| 国产一区二区啪啪视频| 精品丰满熟妇人妻一区| 3P乱轮视频| 樱花草社区www中国| 日日摸天天爽夜夜欢| 可以免费观看的AV| 91痴汉| 天天干天天舔| 亚洲情色图片区| 中文字幕成人| 综合色图亚洲欧美| 丰满人妻-区二区三区免费看 | jizzjizz欧美| 日本天天干天天日一区| 无遮挡h肉动漫在线观看| 青青草女人天天干| 熟女乱伦A| 欧美高潮| 麻豆精品久久久久久久| 亚欧高清| 蜜臀AV成人精品蜜臀AV久久| 啪啪视频亚洲第一| 日本国产二线女色| 天天日天天爽| 亚洲熟妇A V黑人| 日韩国语字幕| 国产对白刺激视频| 欧美在线啊啊啊| 欧美丝袜制服久久| 天天干夜夜操一区二区| 婷婷激情五月| 69精品| 日韩人妻少妇 一区二区三区| 中日韓欧美高清| 丰满少妇人妻久久久久久| 日韩免费福利在线观看| 色九九综合AV| 欧美日韩国内不卡| 91少妇通奸网站| 久久草在线综合视频| 激情在线青青操| 亭亭丁香激情| 91人妻最真实刺激绿帽| 亚洲少妇免费视频\| 欧日a| 91熟女丨91老女人| 日本免费亚洲欧美| 人人艹亚洲| 国产AV天美传媒一区二区三区 | 超碰在线综合97| 99色婷婷| 国产精品自拍xxxx| 欧美性爱超碰97| 成年人性爱日韩| 天堂网亚洲区手机版| 亚洲欧洲美腿丝袜| 国产 亚洲 丝袜 制服| 免费视频观看60秒| 日本999精品视频| 日韩A优精品在线观看| 精品人妻一区二区三区鲁大师| 久久久久久久极品香蕉视频| 乱伦系列一区二区| 久久久久九九九| 激情四射五月天| 91亚洲人电影| 美日韩男女操屄视频| 超碰这里有精品| 日产中文字幕2020| 开心激情站| av天堂天堂av日韩| 人人澡人人干| 国产自产22区| 青青草密桃在线播放| 国产剧情AV不卡在线观看| 在线五区| 色狠狠综合噜一二三区| 操操吧亚洲乱伦视频| 青娱乐休闲视频在线观看| 99久久com免费视频′| 天堂中文日本在线观看| 亚洲美女AV无码| 97jingpin| a男人的天堂| 日韩成人电影AV| 91精品人妻偷情| 春色综合免费| www老逼91| 日韩av乱伦| 国产女人高潮嗷嗷嗷叫小说| 91操操操操| 91激情国产| 女人的天堂大香蕉网| 91黑丝露脚| 亚洲国产欧美中文永久| 亚洲精品国语在线播放| 超碰97久久| 日本一二三免费久久| 大香蕉在线视频重口味毛片在线| 欧美78p| 色噜噜狠狠色综合日日| 日韩不卡a级视频专区| 97在线视频观看网站| 久久粉色| 国内毛片四区| 爱丝福利| 这里只有97精品| 国产蜜臀在线| 天天性射网| 久久久精品一区二区| 美国美女AV在线| 中文字幕精品区先锋资源| 日本丝袜人妻内射| 精品伊人久久久大香线蕉小说| 密乳AV免费观看| 热热色青青草| 97干在线视频| 蜜臀久久99精品久久久久久-DVD| 97国产精品一区二区传媒公司| 国内精品久9| 欧美亚州综合图片| 校园春色综合香蕉| 久久国产精品熟女人妻| 十八禁一区二区无码观看| 日韩欧美偷拍美女视频| 久久久免费懂色| 欧美性视频二区三区| 欧洲一区二区三区四区在线观看| 97精品在线| 四虎影视永久在线观看精品免费网站| 日韩 女同 综合| AV天黑人| 中文字幕三四五区| 91综合在线| 美日韩男女操屄视频| 天天射天天| 97精| 翔田千里爆乳巨臀无码| 欧美不卡二区| 成人网站 免费观看| 99色热国产视频精品| 欧美,日韩,亚洲视频| 色婷婷五月综合激情中文字幕| 亚洲AV永久无码一区仙野| 思思热免费在线视频| 国模少妇一区二区三区| 992这里有精品| 爱欲AV| 激情小说亚洲图片| 天躁夜夜躁2021| 操逼网站网站| 93人人操人人| 久久激情亚洲精品无码?V| 中文字幕 国产区| 亚洲麻豆精品二区三区| 色九九九九| 91美女視頻| 熟妇色99| 午夜操逼不卡| 激情五月天综合网| 亚洲诱惑| 中国小夫妻勾搭露脸淫荡对白| 91黑丝操| 欧美Ⅴ性爱| 强奸乱伦Av网| 美女露胸露奶头| 91强在线播放| 欧美日韩欧美| 日韩国产欧美伦理在线| 大胆91| 中文字幕人妻丝袜| 澳门成人网站久国产日韩| 大香蕉啪啪啪啪在线| 啊啊啊啊免费视频| 大香蕉欧美伊| 九九色婷婷| 日日夜夜骚| 日韩人人精品| 天天射天天色成人| 久久亚洲AV无码专区国产精品| 丁香婷婷久久 | 日韩99999色| 久久久久幕乱码| 美国日韩黄片| 乱人伦 国语对白:视频直接看| 97 亚洲 日韩 欧美 在线| 色踪合AV| 岛国福利在线精品播放| 国产999精品久久久久久| 久久同城AV| 丰满人妻一区二区中文| 蜜臀一区二区三区在线| 久操不卡视频| 亭亭在线资源| 无码操逼视频一下| 97操操| 亚洲熟女乱综合一区二区三区 | 南澳成人一级片在线播放| 亚洲97成人在线观看| 六月婷婷色综合| 欧美在线 亚洲| 一区二区三区免费视频入口 | 国产精品白领在线观看| 殴美大黄片| 97超碰免费人人性爱| 神马午夜久久| 日本大片日本一区二区免费高清| 欧美专区17页| 无码精品一区二区三区潘金莲| 91亚州日韩高清| 国语精品av| 性做久久久久久久| 久草在| 91成人18| 欧美熟妇视频| 日韩兔费看黄片| 五月天久久久| 亚洲在线观看| 日本在线视频导航| 久久久一二三四区| 中国探花熟女| 99精品九九九九九九| 97最新在线播放视频| 日韩丨制服丨中文|在线| 永久免费发布性爱网| 青青草字幕AV| 国产69精品久久久久99尤物| 啊啊啊好疼| 91三级理论片播放器| 综合激情97 | 日本色色色| 黄色成年| 人人色97| yiqicaoav| 97综合在线观看| 青青青青青手机视频| 欧美色吧综合| 91综合网| 日本1区2区不卡视频| 超碰到97情色| 亚洲一区在线观看欧洲| 日韩久久激情精品| 东京热视频网| 黑人娇小av在线播放| 天天干天天狼在线视频| 天天性射网| 天天干天天干天天| 一区二区乱码福利| 精品国产网站| 岛国黄| 北野未奈加勒比av| 在线99热| 91人妻人人澡人人爽人人精品| 亚洲中文制服诱惑| 国产极品粉嫩馒头一线天av| ai欧美亚洲小说| 牛牛aV| 天天综合网合集91| 猛交交| 浓厚中出中文字幕在线| 精品国产久久乱码| 啪啪啪大香蕉| 人人操人人色人人摸| 国产男女无套97| 人妻日日干| 国产精品69久久久久久久| 色色国产| 国内偷自视频区视频综合| 色情亚洲日本成人| 欧美久久伊人| 亚洲av性爱电影| 亚洲欧洲网站免费观看| 欧美v日韩v亚洲v最新在线| 亚洲永久AV无码精品秋霞| 日本三级韩三级99久久| 在线日韩精品一区二区三区| 啊啊啊啊啊啊啊啊要喷了| 五月丁香社区婷婷日韩欧美精品影院 | 无码二级三级| 五月天综合网| 国产精品色色| 国产高清免费不卡av| 天天操天天干美女网址导航| 国产午夜视频| 亚洲无码99| 99这里只有精品国产| 丝袜色综合| 97资源超碰| 性做久久久久久免费观看软件| 欧美日韩在线视频网站| 91天天综合在线| 午夜呻吟欧美| 久久九九综合| 免费看A片毛毛片在线播| 国产又粗又长视频| 久久美国毛片| 中文久久一区| 一道本久久棕合爱| 国产福利第一视频| 1769一区| 爱爱60秒免费视频| 国产一区二区在线电影| 久久性生大片免费观看性| 天天干夜夜操一区二区| 加勒比日本在线| 日韩欧美女优电影| 深夜激情无码| 国产精品视频内谢女人| 日韩精品-原创伙伴| 狠狠图片青青草| 色优久久| www网站黄| 国产av强奸美女| 五月丁香黄色网| 欧美色性情| 精品免费成人久久| 天天拍天| 亚州高清色综合| 99国产天美| 久久婷婷色综合一区二区三区| 久久久成人国产精品无码| 蜜乳av一区二区| 亚洲无码com| 亚洲图片欧美色| 熟女91网| 国产精品午夜精品| 91操人| 欧美亚洲宗合色性图| 亚洲蜜臀懂色| 亚洲 91 在线| 俺去俺来也在线www| 亚洲情欲| 污色区网站| 家庭乱伦麻豆| 欧州一区二区三区四区| 日逼97| 清纯唯美激情| 最新AV在线| 男人天堂网手机版婷婷| 中文字幕-区二区三区四区视频中国| 操我啊啊啊啊啊| 在现视频女上位好爽| 午夜久久一区二区无码中出| 成人日本精品九区| 欧洲一区二区三区免费| 欧美日本天堂| 尤物视频偷拍免费| 日韩精品人妻中文字幕不卡乱码| 国产女主播视频在线观看| 欧美骚少妇| 久久成人午夜狠狠| 欧美丝袜亚洲| 亚洲天天操| 亚洲无码精品AV久久久| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲成人贴图| 久久久久久网址| JIZZJIZZ亚洲女人被躁| 欧美亚洲一级在线观看| 操B视频日韩无码| 国产中文大片资源中文字幕 | 97五月天| 国产日逼视频| 中文字幕一区av| 国产老熟女| 亚洲人妻精品一区二区| 97国产亚洲中文在线| 久久最新视频免费观看| 欧美一区二区三区成人性生活| 午夜福利一区二区三区四区五区色婷婷| 天天综合站| 大香蕉中文在线| 久久一区二区蜜桃| 亚洲AV秘无码一区..| 五月天我淫我色av| 亚洲一区二区性爱电影| 中文字暮97| 日本男人插女人的逼黄色| 99精品综合久久久久五月天| 熟女少妇一区二区三区| 久久久性| 日韩性爱电影一区| 97久精品| 亚洲图片 激情小说| 综合性视频99| 中文字幕一区二区三区四五区| 色综91| 欧美岛国精品在线观看| 加勒比久久综合网高清| 日韩一级二级| 97露脸精品丝袜| 色婷婷日韩精品一区二区三区| 人妻久久一区二区三区| 国产精品久久久吖| 欧美日韩 强奸乱伦| 久久九九网| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 思思性爱| 黄污污污污| 狠色婷婷久久一区二区三区_| 久久久一区二区三区麻豆| 99亚洲国产精品色一区二区三区| 亚洲欧美在线观看2021| 丁香五月激情综合| 色娱乐色呦呦夜夜夜夜av| 少妇大屁屁| 亚洲 欧美 偷拍 唯美| 五月天婷婷基地| 狠狠色综合网| 欧美91网站| 久久久久少妇| 91九色精品熟女内射| 欧美色图 人妻| 免费视频观看60秒| 国产在线视频二区| 亚州精人品大香蕉| 91操熟女视频| 超碰国产精品无码| 香蕉在线一区二区三区| 少妇精品久久久八区九区| 大香蕉免费3| 国产欧美日韩女同性恋ww喷水精品 | 欧美情色贴图| 韩国三级一线观看久| 色婷婷电影网| 亚精品无码毛片一区二区三区| 外国免费性情大片| 凹凸久久人人| 麻豆伊人网| 亚洲欧美另类图片| 99ri视频| 午夜福利 成人 91| 粉嫩不卡一区二区性爱| 欧美图片偷拍| 亚洲高清欧美总合| 欧美做爰无码A片视频| 欧美亚州色的图| 国产精品白领在线观看| 97人肏| 日日玩天天干| 抽插无码高清一区| 18禁久久| 蜜乳AV一区二区三区四| 久草热制服丝袜在线观看| 日韩熟女无码| 国产 无码 一区二区| 中文字幕少妇色| 日本人妻最新在线中| 啊啊啊啊啊啊在线看| 97Ai亚洲| 色婷婷狠狠| 色九九久九九| 久久夜黄色无码A级大片| 日本999精品| 日韩在线一区高清在线| 性性欧美| 九色精品视频导航1| 欧美中字二区| 岛国大片国产| 九9热伊人| av无码精品久久久久| 亚洲永久永久永久永久一级一级一级精品| 国产精品久久久久久亚洲色欲| 久久国产99精品72福利| 秋霞怕怕片| 亚洲情色在线| 午夜偷拍久久熟女| 黄站在线免费观看| 五月天伊人| 后入国产| 青青草在线视频人人想人人上| 日韩色香| 欧洲乱码一区二区| 91午夜无码| 国产精品电影推荐| 国产精品无码久久久久2028| 一二三卡欧美日韩人妻免费精品| 亚洲中文字幕精品久久久久久直播| 伊人宅男大香蕉| 亚洲欧美成人在线| 碰碰97| 欧美 日韩 另类 亚洲| 人妻9117c| 国产妇女精品视频青青草| 亚洲图片激情综合另类| 日本精品九九九| 欧美99热| 国产精品直播在线观看直播| 女人的天堂大香蕉网| 久操凹凸视频| 久久精品成人| 中文字幕 一区二区 亚洲无码| 男人亚洲天堂| 丝袜内射| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 日韩在线视频1234| 国产操逼网站亚洲一级黄色| 91精品国久久久久久无码| 欧美黄片视频在线观看免费 | 夜间福利片1000无码| 97人人爱人人乐| 国产农村妇女精品一二区| 可以在线观看AV的网站| 不卡在线观看视频| 看黑丝美女操逼青青网站| 日本在线播放不卡一区| 国产捆绑一区| 欧美黑人168页欧美黑人167| 91麻豆天美国产欧美日| 国产一级不卡在线观看| 亚洲激情视频| 东北操逼| 91狠狠色丁香婷婷综合久久| 国产强奸91| 天天草天天干天天日| 日韩超碰精品综合| 欧美性五月| 午夜黄色免费在线观看| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 欧美日韩精品久久| jizzjizz欧美| 日本在线999| 二级久久网| 亚洲麻豆精品二区三区| 日日操丁香五月天| 欧美欧美啪啪视频| 婷婷人妻激情| 日本新免费二区三区| 亚洲有码 视频一区| 国产树林里野战在线看| 毛片久久| 欧美美女视频| 99蜜月精品久久| 人妻 欧美 中文| 欧美夜夜狠| 日韩去日本高清在| 国产在线观看91精品一区| 清纯唯美激情| 曰本特级特黄特色黄色A级网站高清在线免费看| 97亚洲综合电影| 五月婷婷性爱| www.av在线观看| 中文精品一区二去| 国产精品久久aV| 精品999一区二区| 国产精品午夜精品| av激情亚洲五月天| 久久久久久久久久久97| 欧美黄色大片在线观看 | 久久精品国产AV一区二区三区| 亚洲少妇视频| 日本亚欧爱爱| 97在线资源| 怡春苑东京热| 嫩草伊人久久精品| 超碰性爱97| 亚洲伊人久久精品狠狠在线| 农村妇女一级二级三级视频| 欧美精品999| 亚州免费啪啪视频| 日韩免费高清大片在线| 蜜乳中文字幕a在线| 亚洲九九九| 老女人综合网| 97综合| 超碰人妻97| 中文字幕超碰CAO| 97干在线看| av优播| 久久欧美按摩999| 五月天激情小说网| 色婷婷丁香五月| 日韩啪啪啪啪啪| 蜜桃久久一区二区三区| 久久久久久国产精品| AV综合中文字幕干| 92人人操人人| 午夜男人一级A片7777| 亚洲乱熟女一区二区三区大香蕉| 亚洲色综合| 狠狠干,狠狠操| 亚洲精品视频二区| 丰满少妇一区二区三区专区| 久久综合久久综合人久久夜精品| 欧美最婬乱婬爆婬性视频 | 日韩三级伊人| 日韩一级久久毛片| 欧美Aⅴ| 色狠狠 - 百度| 日韩AV无码中文一区二区| 国产精品无码AV网站| 国产亚洲综合欧美一区| 色婷婷丁香五月| 91爱综合| 97玖玖人妻| 精品一久久久| 国产AV天美传媒一区二区三区 | 福利社区午夜一区二区| 欧美日韩操操操| 色区久久| 亚洲欧洲精品成人| 任你干在线视频| 熟女少妇一区二区三区| 加勒比伊人| 69少妇一区二区| 日韩午夜精品一区二区三区电影| 岛国网址国产| 涩五月婷婷| 台湾佬中文娱乐自偷自拍| 国产视频第2页| 久操免费电影| a片自拍直播视频| 日韩人妻免费精品| 久久久久久亚洲精品不卡人乳| 老师充足的奶水小说| 天天综合网亚洲综合网| 日韩一级二级三级免费看完整版| 国产一区二区三区久久久精品| 午夜福利成人免费视频| 五月久久HDAV| 亚洲九九视频在线观看| 亚洲精品97| 99久久精品无码一区二区| 久久久久久久久国产| 欧美 日韩 亚洲 春色| 国产黄色剧情影片麻豆免费播放| 久草网站免费在线观看| 亚洲婷婷五月天| 久久久国产精品人妻丝袜| 夜夜嗨TV| 自拍偷拍草一草| 亚洲啪啪性视频| 一区二区三区男女操逼黄色小电影| 亚洲中文字幕有码视频一区二区三区| 欧美一二三区四五区| 中文字幕二区| 亚洲一级黄色毛片| 欧美疯狂做爰xxxx| 中文字幕88av在线| 欧美精品系列| www.99中文字幕| 狠狠激情综合狠狠操中文字幕| 久久精品无码熟妇一区二区三区视频导航| 高清无码人妻久久久一区二区三区aⅴ| 啊啊啊啊啊啊啊啊在线观看| 国产av美女被艹的乱叫| 久久久久久欧美精品se一二三四| 97免费免费视频网| 青青草一区二区高清无码视频 | 射综合网| 久草免费在线一区二区| 床上啊啊啊一区二区三区| 久草精品一区| 91肉片| 熟女视频久久| 97碰碰日本乱偷人妻中文的| 97视频免费| 亚洲性爱免费电影| 91视频国品一二三区| 美国一区二区三区视频| 先锋精品av色鲁| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 欧美激情综合| 亚洲成人一二三区| 啊啊啊免费视频| 自偷自拍的亚洲视频| 亚洲综合一| 岛国大片在线观看网站入口| 精品视频97| 精品高清av中文字幕| av婷婷色网| 极品国产内射| 中文字幕艹艹| 一二三区操逼国产91| 国产日本熟女顶级一区二区三区视频 | 亚洲成人精品久久久| 农村女一级毛卡片| 啊啊啊啊啊啊在线看| 99re免费| 免费的av网| 色99999| 亚洲情色婷婷五月天| 久久东京热久久| 五月丁香六月激情综合| 国产999精品久久久| 五月丁香成人网| 超碰地址久久| 少妇高潮99p| 国产一区二区三区高清视频| n1038 一二三区| 老司机天天操| 九九九九97| 国产伦精品一区二区三区在线观 | 九九九九热| 五月久久HDAV| 自拍偷拍 日韩欧美| 夜夜嗷嗷一区二区| 少妇无码av专区线| 屁股久久久久久久久| 人人操人人大香蕉| 日韩天天综合| 日韩乱码av| 被窝影院午夜看片无码| 丰满少妇高潮无码| 欧美大香蕉专区网| 97神马久久| 精品视频123区小说区| 免费视频在线一区二区不卡| 九九九九九九九九九五码| 色综合av男人天堂| 综合少妇网| 人妻夜夜爽天天爽麻豆三区网站 | 翔田千里Av在线| 伊人色综合欧美| 久99视频| 在线免费观看高清无码视频| 9久久美女首页| 精品一啪| 九九九精品美女| 大鸡巴久久久| 欧美国产精品| 97久操| 97蜜桃综合| 在线国产福利网址导航| 国产一区二区视频在线播放| 94色色电影网| 99热精品国产| 黄片免费看黄片免费看| 女生91网站| 亚洲少妇色图自慰直播| 日本日皮视频逼| 精品人妻一区二区三区四区不卡在| 亚洲码和欧洲精品激情系列| 日逼国产| 久久婷婷电影网| 91精产一区二区三区| 开心激情婷婷| 人人操我人人干| 91美女视频直播| 超碰色中文| av天堂手机版追回| 精品一区二区三区国产| 综合97久久| 狠狠躁AV| 3p国产欧美99热| 人人弄人人摸| 超碰九九| 欧美在线大香蕉| 五月婷婷久久综合| 中文字幕一区二区免费在线| 男人精品区| 国产精品久久久久久9999| 国产精品白虎| 曰韩av中文字幕专区| 人人玩人人添人人澡免费| 欧美激情 亚洲色图| 嗯嗯,好大,好爽,好骚| 激情一区二区三区在线观看| 日韩精品中文字幕一| 一起草三级AV电影在线观看 | 亚欧高清| 欧美综合色图网| 好舒服视频| 久久久亚洲精品电影免费看| 日本精品不卡一二三区| 熟女这里只有精品6| 日韩大香蕉| 清纯唯美综合亚洲| 熟妇高潮精品一区二区三区下载| 久久久久国产亚洲一区欧美色图日韩 | www.一本大99| 男人天堂2019亚洲| 九九性爱网| 亚洲AV无码AV吞精久久久久| 高清有码一区二区| 九久精品| 91久久国产精品| 久久久久久久9最新免费视频观看| 日韩紧密久久| 嗯啊不要在线观看嗯啊| 在线性黄高清免费视频| 超97在线精品视频| 你懂的在线观看区国产| 超碰97欧美| 欧美写真视频一区| 无码二级三级| 插B在线观看| 欧美在线视频播放| 在线观看A啊啊啊| 青苹果影院男人的天堂| 日韩人妻资源网| 五月丁香影院| 日本高清久久| 激情综合久久| 婷婷五月激情综合| 性爱1区| 国产粉嫩出水在线播放| 操逼啊啊啊91| 欧美日本中字另类在线| 成人无码在线超碰网| 99无码狠狠久久| 97干在线| 欲香欲色| 中国人高清www色视频免费| 男女国产精品| 97久久国产| 人妻精品一区二区| 妇女一区二区三区| 变态综合色| 96精品久久| 亚洲欧美999| 人人操人人93| 91久久免费视频互動交流| 强被迫伦姧在线观看无码网站| 91少妇| 中文AV制服乱伦| 天堂69亚洲精品中文字| 人人做天天爱| 无码外流操逼视频| 天天艹天天日| 亚洲成人久久一区二区| 黄色大香焦1级‘′‘| 麻豆啪啪啪视频| 狠狠色色| 熟女丝袜视频| 精品久久久久黄少妇| 久久精品老司| 久久久禁| 九热超碰| 2017,超碰| 天天肏天天干| 综合影院永久入口国产| 亚洲?V无码专区在线电影| 女人被男人桶爽视频网站| 欧亚乱色熟女一区二区| www.av在线观看| 麻豆60秒| 日日夜夜青青草母狗| 91操人| 粉嫩AV一区二区夜夜| 97久久超碰| 人妻一二三区| 秋霞一级视频在线观看免费| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 黄页av| 精品国产三级av韩国在线| 素人一区二区三区日韩| 人人爱人人操人人性| 五月天激情小说网| 亚洲欧美日韩有码| 少妇久久久免费| 日韩小电影| 国产乱色国产精品免费视| 婷婷AV一区二区三区| 蜜色网色哟哟| 91碰碰| 欧美97爱| 东京热男人的天堂精品| www.狠狠操| 色九九九九| 久久精品操| 夜草网站| 天天日B夜夜干B时时操B| 亚洲色图激情小说| 日韩欧美天天爽爽爽天天爽爽| 中文字幕丝袜| 日本一区二区三区免费观看| 一区二区三区视频在线观看免费| 亚洲精品一区中文字幕乱码| 美欧老女人97| 亚洲高清色综合| 国产精品爽爽v| 女人爽到高潮久久久| 激情小说亚洲图片| 国产老太乱伦一区| 每日更新AV| 中文字幕亚洲欧美在线不卡| 欧美图片校园春色| 色黄污美女啪啪啪免费网站| 国产在线激情视频| 97碰久久| av无码精品久久久久| 天美国产精品| 99热99re6国产在线播放| 日本人妻最新在线中| 人人操,操人人| 青青草原狼av| 久久熟女嫩草成人片免费| 无码区蜜乳| 志村玲子视频一区二区| 嫩草黄页| 激情黄色片在线观看| av中文在线| 加勒比人妻综合| 女性喷水高潮在线观看| 激情综合婷婷| 久久99草| 日韩熟女三十乱伦| 色人久久| 蜜臀av网址| 亚洲国产一区二区日韩专区| 久久精品国产精品亚洲艾通辽熟妇 | 婷婷五月天激情四射| 天堂8在线新版官网| 伊人玖玖网| 国产精品美女视频诱惑| 丁香五月婷婷基地| 男人的天堂无码| 中文字幕,人妻,日韩| 亚洲精品色| 高清孕妇孕交 交| 97最新在线播放视频| 长久操视频| 中文字幕中文字幕一区二区| 校园春色综合色| 91狠狠综| 午夜精品一区二区三区三上悠亚| 天天久久久久久| 爆操无码| 色女免费在线观看视频网址|