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

ARTICLE DETAIL

資訊詳情

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

LLM購(gòu)物助手落地指南:從對(duì)話到購(gòu)物車(chē)的架構(gòu)與代碼實(shí)現(xiàn)

LLM購(gòu)物助手落地指南:從對(duì)話到購(gòu)物車(chē)的架構(gòu)與代碼實(shí)現(xiàn) 做 LLM 應(yīng)用的人十有八九遇到過(guò)同一個(gè)尷尬對(duì)話、問(wèn)答、文本總結(jié)都跑通了演示效果也很驚艷但一提到“下單”“加購(gòu)”“支付”這種真實(shí)交易動(dòng)作項(xiàng)目就卡住了。要么是模型只能在對(duì)話框里聊得熱鬧要么是業(yè)務(wù)系統(tǒng)根本不敢讓 AI 直接碰購(gòu)物車(chē)。這個(gè)“從 LLM 到購(gòu)物車(chē)”的距離恰恰是 LLM 應(yīng)用從 Demo 走向生產(chǎn)力的關(guān)鍵一環(huán)。最近在一些電商出海項(xiàng)目里我一直在研究一個(gè)非常具體的場(chǎng)景用戶在聊天窗口里說(shuō)“我想買(mǎi)一瓶 30 歐元以內(nèi)的波特酒”LLM 能理解意圖、檢索商品、把東西加進(jìn)購(gòu)物車(chē)然后讓用戶確認(rèn)結(jié)算。整個(gè)流程聽(tīng)起來(lái)不復(fù)雜但真正實(shí)現(xiàn)時(shí)會(huì)碰到工具調(diào)用、商品檢索、數(shù)據(jù)一致性、權(quán)限安全等一系列問(wèn)題。這篇文章就圍繞一個(gè)虛構(gòu)但很典型的葡萄牙電商場(chǎng)景完整拆解從 LLM 對(duì)話到購(gòu)物車(chē)操作的架構(gòu)鏈路、核心代碼和工程落地要點(diǎn)。讀完你可以自己復(fù)現(xiàn)一個(gè)最小可用的“LLM 購(gòu)物助手”也知道下一步往生產(chǎn)環(huán)境走時(shí)該注意哪些坑。1. 這篇文章真正要解決的問(wèn)題先說(shuō)清楚為什么“LLM 到購(gòu)物車(chē)”值得單獨(dú)寫(xiě)一篇文章市面上講 LLM Agent、RAG、MCP 的文章已經(jīng)很多但大多停留在一個(gè)層面——讓模型“會(huì)說(shuō)話”或者“會(huì)查資料”。而購(gòu)物車(chē)屬于交易鏈路它對(duì)準(zhǔn)確性和安全性要求完全不一樣。想象一個(gè)葡萄牙電商平臺(tái)的場(chǎng)景。用戶在聊天窗里用葡萄牙語(yǔ)說(shuō)“Preciso de um vinho do Porto até 30 euros para oferecer.”我需要一瓶 30 歐元以內(nèi)的波特酒送人。如果只是讓 LLM 回復(fù)一句“好的我?guī)湍艺摇蹦沁@個(gè)應(yīng)用毫無(wú)價(jià)值。用戶真正需要的是模型理解意圖 → 從商品庫(kù)中找到符合條件的波特酒 → 把商品加入購(gòu)物車(chē) → 返回購(gòu)物車(chē)摘要給用戶確認(rèn)。每一步都必須可執(zhí)行、可驗(yàn)證、可回滾。所以這篇文章要解決的核心問(wèn)題是LLM 如何安全地調(diào)用業(yè)務(wù)系統(tǒng)不是讓模型直接寫(xiě)數(shù)據(jù)庫(kù)而是通過(guò)受控的工具Tool/Function Calling操作購(gòu)物車(chē) API。商品知識(shí)怎么給到模型商品信息經(jīng)常變化不可能全部塞進(jìn) Prompt需要 RAG 或結(jié)構(gòu)化檢索兜底。多輪對(duì)話中的狀態(tài)管理用戶可能先問(wèn)產(chǎn)品再問(wèn)價(jià)格最后才說(shuō)“加入購(gòu)物車(chē)”Agent 怎么記住上下文。生產(chǎn)環(huán)境的安全邊界模型輸出不可控購(gòu)物車(chē)操作必須做參數(shù)校驗(yàn)、冪等和權(quán)限控制。這篇文章適合正在做 LLM 應(yīng)用開(kāi)發(fā)、想讓 AI 真正觸達(dá)業(yè)務(wù)交易的讀者也適合對(duì)電商系統(tǒng)接 AI Agent 感興趣的架構(gòu)師。如果你只是寫(xiě)對(duì)話機(jī)器人這篇文章可能偏工程化如果你想做 AI 導(dǎo)購(gòu)、智能客服、Agent 購(gòu)物助手那這篇文章正好踩在你的需求點(diǎn)上。2. LLM 到購(gòu)物車(chē)核心鏈路與架構(gòu)判斷從架構(gòu)上看“LLM 到購(gòu)物車(chē)”不是一條直線而是四層協(xié)作。我習(xí)慣把它拆成下面這張邏輯鏈路用戶消息 ↓ LLM 對(duì)話層意圖理解、多輪上下文 ↓ Agent 工具層Function Calling、工具選擇、參數(shù)提取 ↓ 業(yè)務(wù)服務(wù)層商品檢索、購(gòu)物車(chē) API、訂單服務(wù) ↓ 數(shù)據(jù)層商品庫(kù)、向量索引、購(gòu)物車(chē)存儲(chǔ)每一層干的事情完全不同想清楚之后再動(dòng)手才不會(huì)把自己繞暈。第一層LLM 對(duì)話層。這一層負(fù)責(zé)理解用戶說(shuō)了什么。它不做業(yè)務(wù)操作只負(fù)責(zé)把用戶的自然語(yǔ)言轉(zhuǎn)換成結(jié)構(gòu)化意圖。比如“我要一瓶 30 歐元以內(nèi)的波特酒”在這一層會(huì)被理解成用戶想買(mǎi)酒、有價(jià)格上限、是波特酒品類(lèi)。這一層的輸出是“意圖 關(guān)鍵參數(shù)”不是 SQL也不是購(gòu)物車(chē)操作。第二層Agent 工具層。這一層是 LLM 和業(yè)務(wù)系統(tǒng)之間的“隔離帶”。LLM 不直接訪問(wèn)數(shù)據(jù)庫(kù)或購(gòu)物車(chē)而是從預(yù)定義的工具列表中選擇合適的工具。比如search_products、add_to_cart、view_cart。LLM 要做的是給工具填參數(shù)真正執(zhí)行交給業(yè)務(wù)服務(wù)。這個(gè)設(shè)計(jì)背后的原因是模型輸出天然不穩(wěn)定必須用代碼約束模型能做的事情。第三層業(yè)務(wù)服務(wù)層。這里就是傳統(tǒng)后端開(kāi)發(fā)的地盤(pán)。商品檢索服務(wù)查數(shù)據(jù)庫(kù)或向量庫(kù)購(gòu)物車(chē)服務(wù)執(zhí)行加購(gòu)操作。這一層要做參數(shù)校驗(yàn)、權(quán)限校驗(yàn)、冪等控制它是整個(gè)鏈路的安全底線。第四層數(shù)據(jù)層。商品結(jié)構(gòu)化數(shù)據(jù)、向量索引、購(gòu)物車(chē)存儲(chǔ)。對(duì)購(gòu)物車(chē)來(lái)說(shuō)數(shù)據(jù)一致性很關(guān)鍵比如庫(kù)存不足時(shí)不能加購(gòu)商品下架時(shí)要從購(gòu)物車(chē)移除。這個(gè)架構(gòu)的直觀類(lèi)比是LLM 像一個(gè)聰明的導(dǎo)購(gòu)員它很會(huì)說(shuō)話但不能直接碰收銀臺(tái)。它把用戶的需求轉(zhuǎn)達(dá)給收銀員業(yè)務(wù)服務(wù)收銀員確認(rèn)商品、價(jià)格、庫(kù)存之后才會(huì)真正把東西放進(jìn)購(gòu)物車(chē)。有一個(gè)常見(jiàn)誤區(qū)要提前說(shuō)很多人以為讓 LLM 直接調(diào)數(shù)據(jù)庫(kù)、直接執(zhí)行 SQL 就是“LLM 到購(gòu)物車(chē)”。這在 Demo 里能跑但生產(chǎn)環(huán)境絕對(duì)不能這么做。模型生成的 SQL 一旦出錯(cuò)輕則查詢失敗重則誤操作數(shù)據(jù)。更穩(wěn)妥的做法是LLM 只負(fù)責(zé)“意圖理解 參數(shù)提取”SQL 和寫(xiě)操作全部由固定代碼完成。工具層就是這層保護(hù)網(wǎng)。3. 場(chǎng)景設(shè)計(jì)與環(huán)境準(zhǔn)備3.1 場(chǎng)景定義葡萄牙電商購(gòu)物助手為了把文章講具體我們定義一個(gè)可復(fù)現(xiàn)的場(chǎng)景。假設(shè)我們要為一個(gè)面向葡萄牙市場(chǎng)的電商平臺(tái)做一個(gè) AI 購(gòu)物助手支持以下能力用戶可以用英語(yǔ)或葡萄牙語(yǔ)描述購(gòu)物需求。助手能檢索商品目錄支持按品類(lèi)、價(jià)格區(qū)間、關(guān)鍵詞篩選。助手能查看當(dāng)前購(gòu)物車(chē)內(nèi)容。助手能把符合條件的商品加入購(gòu)物車(chē)。助手不處理支付支付環(huán)節(jié)由用戶在前端完成。商品數(shù)據(jù)我們用一個(gè) JSON 文件模擬包含葡萄牙特色商品波特酒Port Wine、葡萄牙陶瓷瓷磚Azulejos、軟木制品Cork Products、橄欖油Olive Oil等。3.2 技術(shù)選型與環(huán)境要求本文示例使用 Python 生態(tài)核心組件如下組件用途版本建議Python編程語(yǔ)言3.10FastAPI購(gòu)物車(chē)服務(wù)0.100openai 或兼容 SDK調(diào)用 LLM以官方最新版為準(zhǔn)本地或云端 LLM對(duì)話與工具調(diào)用支持 Function Calling 即可內(nèi)存數(shù)據(jù)結(jié)構(gòu)模擬商品庫(kù)和購(gòu)物車(chē)無(wú)額外依賴重點(diǎn)說(shuō)明一下 LLM 的選擇。如果你使用 OpenAI 兼容接口包括各類(lèi)國(guó)產(chǎn)大模型、本地部署模型只要模型支持 Function Calling / Tool Calling就可以跑通本文示例。如果沒(méi)有合適的 API也可以在開(kāi)發(fā)階段直接用一個(gè)模擬的“假 LLM”返回固定意圖來(lái)調(diào)試購(gòu)物車(chē)鏈路。后者我建議你至少做一次因?yàn)榘褬I(yè)務(wù)鏈路跑通和調(diào)模型是兩件事。3.3 項(xiàng)目結(jié)構(gòu)我們按下面的目錄組織代碼llm-shopping-cart/ ├── app.py # FastAPI 入口購(gòu)物車(chē) API ├── products.json # 商品數(shù)據(jù) ├── agent.py # LLM Agent 入口工具調(diào)用邏輯 ├── tools.py # 工具定義商品檢索、加購(gòu)、購(gòu)物車(chē)查詢 ├── retriever.py # 商品檢索模塊含簡(jiǎn)單 RAG 檢索 ├── config.py # 配置文件 └── requirements.txt # 依賴清單這個(gè)結(jié)構(gòu)足夠小適合學(xué)習(xí)和二次開(kāi)發(fā)。實(shí)際項(xiàng)目可以把服務(wù)拆成product-service和cart-service但原理一致。4. 核心流程拆解從用戶消息到加購(gòu)?fù)瓿稍趯?xiě)代碼之前我們先完整走一遍流程搞清楚每個(gè)環(huán)節(jié)的職責(zé)。4.1 完整交互時(shí)序一次完整的“LLM 購(gòu)物”交互可以拆成五個(gè)步驟第一步用戶發(fā)送消息。用戶在聊天窗口輸入自然語(yǔ)言需求比如“我想買(mǎi)一箱葡萄牙軟木杯墊預(yù)算 20 歐元以內(nèi)?!钡诙絃LM 理解意圖并選擇工具。系統(tǒng)把用戶消息和歷史對(duì)話一起發(fā)給 LLM同時(shí)告訴它有哪些工具可用。LLM 判斷這一步需要通過(guò)search_products工具查商品于是返回一個(gè)結(jié)構(gòu)化的工具調(diào)用請(qǐng)求包含參數(shù)query軟木杯墊,max_price20。第三步業(yè)務(wù)服務(wù)執(zhí)行工具。我們的代碼收到工具調(diào)用請(qǐng)求后執(zhí)行search_products從商品庫(kù)中檢索出符合條件的商品列表。第四步LLM 生成回復(fù)并確認(rèn)加購(gòu)。商品列表返回給 LLMLLM 組織語(yǔ)言告訴用戶“為您找到兩款軟木杯墊分別是 12 歐元和 18 歐元您想加入購(gòu)物車(chē)嗎”用戶回復(fù)“加第一款吧”。這一次 LLM 調(diào)用add_to_cart工具參數(shù)是商品 ID 和數(shù)量。第五步購(gòu)物車(chē)服務(wù)執(zhí)行加購(gòu)并返回結(jié)果。購(gòu)物車(chē)服務(wù)校驗(yàn)商品存在、庫(kù)存充足然后執(zhí)行加購(gòu)操作返回購(gòu)物車(chē)最新內(nèi)容。LLM 最后向用戶確認(rèn)“已經(jīng)將‘經(jīng)典軟木杯墊 4 件裝’加入購(gòu)物車(chē)當(dāng)前購(gòu)物車(chē)有 1 件商品合計(jì) 12 歐元?!?.2 每步的關(guān)鍵判斷這個(gè)流程最核心的架構(gòu)判斷是LLM 不直接返回購(gòu)物車(chē)操作是否成功的最終結(jié)果而是返回“我打算調(diào)用哪個(gè)工具、參數(shù)是什么”由代碼執(zhí)行并校驗(yàn)。這樣做有三個(gè)好處可控性即使 LLM 生成了錯(cuò)誤的參數(shù)業(yè)務(wù)服務(wù)可以拒絕執(zhí)行??蓪徲?jì)每次工具調(diào)用都可以記錄日志方便回溯。可回滾加購(gòu)操作是冪等的用戶取消時(shí)可以直接刪除購(gòu)物車(chē)條目。4.3 多輪對(duì)話的狀態(tài)處理購(gòu)物場(chǎng)景天然是多輪的。用戶可能在同一次會(huì)話中先搜索、再比價(jià)、再改變主意。Agent 需要維護(hù)對(duì)話歷史。最簡(jiǎn)單的方案是把歷史消息逐條發(fā)給 LLM由 LLM 自行理解上下文。復(fù)雜方案是引入記憶模塊把用戶偏好比如“喜歡 30 歐元以下的酒”存起來(lái)后續(xù)對(duì)話直接使用。文章示例采用第一種方案代碼實(shí)現(xiàn)最直接也足夠支撐演示場(chǎng)景。4.4 語(yǔ)言問(wèn)題葡萄牙語(yǔ)與英語(yǔ)混合面向葡萄牙市場(chǎng)的應(yīng)用需要處理葡英混合輸入。LLM 本身有多語(yǔ)言能力這個(gè)不用我們額外做太多工作。真正的挑戰(zhàn)在商品檢索用戶用葡萄牙語(yǔ)描述需求但商品名稱(chēng)可能是英語(yǔ)或葡萄牙語(yǔ)。解決方案是檢索時(shí)同時(shí)匹配多語(yǔ)言關(guān)鍵詞或者對(duì)商品名稱(chēng)做翻譯索引。5. 完整示例代碼實(shí)現(xiàn)下面我們逐步實(shí)現(xiàn)整個(gè)鏈路。先從購(gòu)物車(chē)服務(wù)開(kāi)始再寫(xiě)商品檢索最后把 LLM Agent 接上。5.1 商品數(shù)據(jù)先準(zhǔn)備一份模擬商品數(shù)據(jù)。文件路徑products.json。[ { id: P001, name: Classic Cork Coasters (4 pcs), category: cork, price: 12.0, currency: EUR, stock: 50, keywords: [cork, coaster, 軟木, 杯墊] }, { id: P002, name: Premium Cork Coasters (6 pcs), category: cork, price: 18.0, currency: EUR, stock: 30, keywords: [cork, coaster, premium, 軟木, 杯墊] }, { id: P003, name: Port Wine Ruby Reserve 750ml, category: wine, price: 22.0, currency: EUR, stock: 100, keywords: [port, wine, vinho, 波特酒] }, { id: P004, name: Port Wine Tawny 10 Years 750ml, category: wine, price: 35.0, currency: EUR, stock: 40, keywords: [port, wine, tawny, vinho, 波特酒] }, { id: P005, name: Portuguese Azulejo Tile Decoration, category: ceramic, price: 15.0, currency: EUR, stock: 20, keywords: [azulejo, tile, ceramic, 瓷磚] }, { id: P006, name: Extra Virgin Olive Oil 500ml, category: food, price: 9.5, currency: EUR, stock: 200, keywords: [olive, oil, azeite, 橄欖油] } ]這里的keywords字段是多語(yǔ)言檢索的關(guān)鍵。用戶說(shuō)葡萄牙語(yǔ)“vinho do Porto”我們匹配keywords里的vinho和port就能找到對(duì)應(yīng)的波特酒。5.2 購(gòu)物車(chē)服務(wù)用 FastAPI 寫(xiě)一個(gè)最小購(gòu)物車(chē)服務(wù)。文件路徑app.py。# 文件路徑app.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import Dict, List import json app FastAPI(titleLLM Shopping Cart Service) # 模擬商品庫(kù)實(shí)際項(xiàng)目請(qǐng)?zhí)鎿Q為數(shù)據(jù)庫(kù) with open(products.json, r, encodingutf-8) as f: PRODUCTS json.load(f) # 模擬購(gòu)物車(chē)key商品IDvalue數(shù)量 # 實(shí)際項(xiàng)目請(qǐng)?zhí)鎿Q為 Redis 或數(shù)據(jù)庫(kù)存儲(chǔ) CART: Dict[str, int] {} class AddItemRequest(BaseModel): product_id: str quantity: int 1 class CartItem(BaseModel): product_id: str name: str price: float quantity: int subtotal: float app.get(/products) def list_products(category: str None, max_price: float None): 商品檢索接口支持按品類(lèi)和價(jià)格過(guò)濾。 result PRODUCTS if category: result [p for p in result if p[category] category] if max_price is not None: result [p for p in result if p[price] max_price] return {products: result} app.get(/products/{product_id}) def get_product(product_id: str): 按 ID 查詢單個(gè)商品。 for p in PRODUCTS: if p[id] product_id: return p raise HTTPException(status_code404, detailProduct not found) app.post(/cart/items) def add_to_cart(req: AddItemRequest): 加入購(gòu)物車(chē)帶庫(kù)存和商品存在性校驗(yàn)。 product next((p for p in PRODUCTS if p[id] req.product_id), None) if product is None: raise HTTPException(status_code404, detailProduct not found) if req.quantity 0: raise HTTPException(status_code400, detailQuantity must be positive) if req.quantity product[stock]: raise HTTPException(status_code400, detailInsufficient stock) CART[req.product_id] CART.get(req.product_id, 0) req.quantity return get_cart() app.get(/cart) def get_cart(): 查看購(gòu)物車(chē)內(nèi)容。 items: List[CartItem] [] total 0.0 for product_id, quantity in CART.items(): product next((p for p in PRODUCTS if p[id] product_id), None) if product is None: continue subtotal product[price] * quantity total subtotal items.append(CartItem( product_idproduct_id, nameproduct[name], priceproduct[price], quantityquantity, subtotalsubtotal )) return {items: items, total: round(total, 2)} app.delete(/cart/items/{product_id}) def remove_from_cart(product_id: str): 從購(gòu)物車(chē)移除商品用于用戶取消或回滾。 if product_id in CART: del CART[product_id] return get_cart() if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)這段代碼的關(guān)鍵點(diǎn)有三個(gè)參數(shù)校驗(yàn)前置加購(gòu)前檢查商品存在性和庫(kù)存避免把無(wú)效商品寫(xiě)進(jìn)購(gòu)物車(chē)。購(gòu)物車(chē)返回結(jié)構(gòu)統(tǒng)一無(wú)論加購(gòu)、查看還是刪除都返回同樣的結(jié)構(gòu)方便 LLM 解讀。內(nèi)存存儲(chǔ)僅用于演示CART字典重啟即丟失。生產(chǎn)環(huán)境替換為 Redis 或數(shù)據(jù)庫(kù)時(shí)接口簽名可以保持不變。5.3 商品檢索模塊購(gòu)物場(chǎng)景里用戶很少直接說(shuō)商品 ID更多是用自然語(yǔ)言描述。所以我們需要一個(gè)檢索模塊把用戶描述映射到商品。最輕量的方式是關(guān)鍵詞匹配數(shù)據(jù)量大了之后換成向量檢索。文件路徑retriever.py。# 文件路徑retriever.py import json class ProductRetriever: 基于關(guān)鍵詞匹配的商品檢索器。 生產(chǎn)環(huán)境建議替換為向量檢索 關(guān)鍵詞檢索的混合方案。 def __init__(self, products_path: str products.json): with open(products_path, r, encodingutf-8) as f: self.products json.load(f) def search(self, query: str, max_price: float None): 根據(jù)查詢?cè)~和價(jià)格上限檢索商品。 query 支持中英葡多語(yǔ)言關(guān)鍵詞匹配商品名稱(chēng)、分類(lèi)和關(guān)鍵詞字段。 query_lower query.lower() results [] for p in self.products: # 將商品所有可搜索字段拼成一個(gè)文本塊 searchable_text .join([ p[name].lower(), p[category].lower(), .join([k.lower() for k in p[keywords]]) ]) # 簡(jiǎn)單匹配查詢?cè)~中的每個(gè)詞只要出現(xiàn)在可搜索文本中即命中 query_terms [term for term in query_lower.split() if len(term) 1] if all(term in searchable_text for term in query_terms): results.append(p) if max_price is not None: results [p for p in results if p[price] max_price] return results這個(gè)檢索器用all()保證查詢?cè)~全部命中避免“只要是酒就行”和“我要波特酒”混在一起。它的問(wèn)題是詞序無(wú)關(guān)、不做語(yǔ)義匹配但作為最小示例已經(jīng)足夠。生產(chǎn)環(huán)境建議的做法是用向量模型把用戶查詢和商品描述編碼成向量通過(guò)向量相似度召回候選再結(jié)合價(jià)格、品類(lèi)等結(jié)構(gòu)化條件過(guò)濾。5.4 LLM Agent 與工具調(diào)用現(xiàn)在到了最核心的部分讓 LLM 根據(jù)用戶意圖調(diào)用工具。我們使用 OpenAI 兼容的 Function Calling 接口。文件路徑tools.py和agent.py。先定義工具描述。這些描述會(huì)傳給 LLM模型根據(jù)描述決定調(diào)用哪個(gè)工具。文件路徑tools.py。# 文件路徑tools.py import json from retriever import ProductRetriever retriever ProductRetriever(products.json) TOOLS [ { type: function, function: { name: search_products, description: 根據(jù)用戶描述檢索商品。支持按關(guān)鍵詞、品類(lèi)、最高價(jià)格篩選。, parameters: { type: object, properties: { query: { type: string, description: 用戶描述的商品關(guān)鍵詞例如波特酒、軟木杯墊、vinho do Porto }, max_price: { type: number, description: 最高價(jià)格歐元用戶提到預(yù)算時(shí)使用 } }, required: [query] } } }, { type: function, function: { name: add_to_cart, description: 將指定商品加入購(gòu)物車(chē)。需要提供商品 ID 和數(shù)量。, parameters: { type: object, properties: { product_id: { type: string, description: 商品唯一 ID例如 P001 }, quantity: { type: integer, description: 購(gòu)買(mǎi)數(shù)量默認(rèn) 1 } }, required: [product_id] } } }, { type: function, function: { name: view_cart, description: 查看當(dāng)前購(gòu)物車(chē)內(nèi)容和總價(jià)。, parameters: { type: object, properties: {} } } } ] def execute_tool(name: str, arguments: dict): 執(zhí)行工具返回給 LLM 的結(jié)果。 if name search_products: results retriever.search( queryarguments.get(query, ), max_pricearguments.get(max_price) ) return json.dumps({products: results}, ensure_asciiFalse) if name add_to_cart: product_id arguments[product_id] quantity arguments.get(quantity, 1) # 調(diào)用 FastAPI 購(gòu)物車(chē)服務(wù) import requests resp requests.post( http://localhost:8000/cart/items, json{product_id: product_id, quantity: quantity} ) resp.raise_for_status() return json.dumps(resp.json(), ensure_asciiFalse) if name view_cart: import requests resp requests.get(http://localhost:8000/cart) resp.raise_for_status() return json.dumps(resp.json(), ensure_asciiFalse) raise ValueError(fUnknown tool: {name})這里我直接用requests調(diào)用本地 FastAPI 服務(wù)讓 Agent 和購(gòu)物車(chē)服務(wù)解耦。生產(chǎn)環(huán)境通常不會(huì)讓 Agent 進(jìn)程直接調(diào) HTTP可以換成內(nèi)部 RPC 或者直接注入服務(wù)層對(duì)象。但 HTTP 調(diào)用的好處是邊界清晰本地開(kāi)發(fā)調(diào)試也方便。然后是 Agent 主邏輯。文件路徑agent.py。# 文件路徑agent.py import json from openai import OpenAI from tools import TOOLS, execute_tool client OpenAI( base_urlhttps://api.openai.com/v1, # 當(dāng)?shù)鼗蚱渌嫒莘?wù)按需替換 api_keyYOUR_API_KEY # 請(qǐng)使用環(huán)境變量注入 ) SYSTEM_PROMPT 你是一個(gè)面向葡萄牙市場(chǎng)的電商購(gòu)物助手。 你可以幫助用戶搜索商品、查看購(gòu)物車(chē)、把商品加入購(gòu)物車(chē)。 你不處理支付支付由用戶在網(wǎng)頁(yè)上完成。 當(dāng)用戶要求加購(gòu)時(shí)必須使用 add_to_cart 工具。 回復(fù)用戶時(shí)使用簡(jiǎn)潔友好的語(yǔ)氣并給出商品名稱(chēng)、價(jià)格和購(gòu)物車(chē)總價(jià)。 def run_agent(user_message: str, historyNone): 運(yùn)行 Agent處理用戶消息并返回最終回復(fù)。 messages [{role: system, content: SYSTEM_PROMPT}] if history: messages.extend(history) messages.append({role: user, content: user_message}) # 最多循環(huán) 5 次防止工具調(diào)用死循環(huán) for _ in range(5): response client.chat.completions.create( modelgpt-4o-mini, # 按實(shí)際可用模型替換 messagesmessages, toolsTOOLS, tool_choiceauto, ) msg response.choices[0].message # 沒(méi)有工具調(diào)用直接返回 LLM 的文本回復(fù) if not msg.tool_calls: return msg.content # 有工具調(diào)用先把助手消息加入對(duì)話歷史 messages.append(msg) # 依次執(zhí)行每個(gè)工具調(diào)用并把結(jié)果加入對(duì)話歷史 for tool_call in msg.tool_calls: tool_name tool_call.function.name tool_args json.loads(tool_call.function.arguments) print(f[Agent] 調(diào)用工具: {tool_name}, 參數(shù): {tool_args}) result execute_tool(tool_name, tool_args) messages.append({ role: tool, tool_call_id: tool_call.id, content: result }) return 抱歉操作次數(shù)過(guò)多請(qǐng)重試。 if __name__ __main__: # 簡(jiǎn)單命令行測(cè)試 history [] while True: user_input input(你: ) if user_input.lower() in (quit, exit): break reply run_agent(user_input, history) print(f助手: {reply}) history.append({role: user, content: user_input}) history.append({role: assistant, content: reply})這段代碼的循環(huán)邏輯值得仔細(xì)看每次把用戶消息發(fā)給 LLM附帶工具定義。如果 LLM 返回tool_calls說(shuō)明它想調(diào)用工具。執(zhí)行工具后把工具結(jié)果以roletool的消息回傳給 LLM。LLM 基于工具結(jié)果生成用戶可讀的最終回復(fù)。這個(gè)“多輪工具調(diào)用”的循環(huán)是 LLM Agent 的核心模式。它允許模型根據(jù)需要連續(xù)調(diào)用多個(gè)工具比如先搜索商品再查看購(gòu)物車(chē)再?zèng)Q定加購(gòu)。5.5 配置文件與依賴最后是配置和依賴文件。文件路徑config.py。# 文件路徑config.py import os # LLM API 配置推薦用環(huán)境變量注入不要硬編碼 LLM_API_KEY os.getenv(LLM_API_KEY, ) LLM_BASE_URL os.getenv(LLM_BASE_URL, https://api.openai.com/v1) LLM_MODEL os.getenv(LLM_MODEL, gpt-4o-mini) # 購(gòu)物車(chē)服務(wù)地址 CART_SERVICE_URL os.getenv(CART_SERVICE_URL, http://localhost:8000)文件路徑requirements.txt。fastapi0.115.0 uvicorn0.30.6 openai1.40.0 requests2.32.3 pydantic2.8.2注意版本號(hào)僅供參考請(qǐng)以實(shí)際環(huán)境可用的版本為準(zhǔn)。如果模型 API 不支持 OpenAI 兼容協(xié)議你需要換成對(duì)應(yīng)廠商的 SDK但整體邏輯不變。6. 運(yùn)行結(jié)果與效果驗(yàn)證代碼寫(xiě)完之后按下面的順序啟動(dòng)和驗(yàn)證。6.1 啟動(dòng)購(gòu)物車(chē)服務(wù)pip install -r requirements.txt python app.py看到類(lèi)似輸出說(shuō)明服務(wù)啟動(dòng)成功INFO: Uvicorn running on http://0.0.0.0:8000先手動(dòng)驗(yàn)證購(gòu)物車(chē) APIcurl -X POST http://localhost:8000/cart/items \ -H Content-Type: application/json \ -d {product_id: P001, quantity: 1}預(yù)期返回{ items: [ { product_id: P001, name: Classic Cork Coasters (4 pcs), price: 12.0, quantity: 1, subtotal: 12.0 } ], total: 12.0 }這一步驗(yàn)證的是業(yè)務(wù)鏈路本身。如果購(gòu)物車(chē) API 有問(wèn)題先在這里修好再往上接 LLM。6.2 啟動(dòng) Agent 并測(cè)試對(duì)話在另一個(gè)終端運(yùn)行python agent.py然后輸入你: 我想買(mǎi)一瓶30歐元以內(nèi)的波特酒送人如果一切正常你應(yīng)該看到類(lèi)似日志[Agent] 調(diào)用工具: search_products, 參數(shù): {query: 波特酒, max_price: 30} 助手: 為您找到一款符合預(yù)算的波特酒Port Wine Ruby Reserve 750ml價(jià)格 22 歐元。需要我?guī)湍尤胭?gòu)物車(chē)嗎繼續(xù)輸入你: 加購(gòu)物車(chē)吧預(yù)期日志[Agent] 調(diào)用工具: add_to_cart, 參數(shù): {product_id: P003, quantity: 1} 助手: 已將 Port Wine Ruby Reserve 750ml22 歐元加入購(gòu)物車(chē)。當(dāng)前購(gòu)物車(chē)共 1 件商品合計(jì) 22 歐元。6.3 如何判斷是否成功一個(gè)功能完整的 LLM 購(gòu)物助手應(yīng)該滿足以下四條驗(yàn)收標(biāo)準(zhǔn)意圖識(shí)別準(zhǔn)確用戶說(shuō)“30 歐元以內(nèi)的波特酒”模型能正確設(shè)置max_price30和query波特酒/vinho。工具調(diào)用正確加購(gòu)操作使用add_to_cart而不是模型編造的 SQL 或假數(shù)據(jù)。業(yè)務(wù)校驗(yàn)生效如果用戶要加購(gòu)一個(gè)不存在的商品 ID購(gòu)物車(chē)服務(wù)返回 404Agent 能把這個(gè)錯(cuò)誤轉(zhuǎn)化成友好提示。多語(yǔ)言可用分別用中文、英語(yǔ)、葡萄牙語(yǔ)測(cè)試同一需求模型都能理解。6.4 失敗時(shí)的第一排查方向如果 Agent 不調(diào)用工具而是直接生成文本回答先檢查三點(diǎn)模型是否支持 Function Calling不是所有模型都支持確認(rèn)你用的模型和接口版本。工具描述是否清晰description寫(xiě)得不清楚模型就不知道該在什么情況下調(diào)用。消息格式是否規(guī)范尤其注意tool_call_id必須與模型返回的一致否則接口會(huì)報(bào)錯(cuò)。如果是模型調(diào)用了工具但報(bào)錯(cuò)先看execute_tool里的異常信息再檢查購(gòu)物車(chē)服務(wù)是否在運(yùn)行、商品 ID 是否真實(shí)存在。7. 常見(jiàn)問(wèn)題與排查思路把我在類(lèi)似項(xiàng)目里踩過(guò)和見(jiàn)過(guò)的坑整理成一張排查表問(wèn)題現(xiàn)象可能原因排查方式解決方案模型不調(diào)用工具只輸出文字模型不支持 Function Calling或工具描述不清晰查看模型文檔確認(rèn)功能支持打印 tools 參數(shù)檢查描述換支持 Function Calling 的模型重寫(xiě)工具 description明確“什么情況下調(diào)用”工具調(diào)用后報(bào)tool_call_id錯(cuò)誤消息記錄中 assistant 消息與 tool 消息未正確配對(duì)檢查 messages 列表中 tool 消息的tool_call_id是否與 assistant 返回一致嚴(yán)格按照 OpenAI 協(xié)議先追加 assistant 消息再逐條追加 tool 消息加購(gòu)時(shí)提示商品不存在商品 ID 是模型編造的或商品已下架查看 Agent 日志中add_to_cart的參數(shù)手動(dòng)調(diào)用/products/{id}驗(yàn)證在工具描述中強(qiáng)調(diào)“必須使用 search_products 返回的商品 ID”商品下架時(shí)返回友好提示用戶說(shuō)葡萄牙語(yǔ)檢索不到商品商品索引缺少葡語(yǔ)關(guān)鍵詞檢查products.json的keywords字段補(bǔ)充多語(yǔ)言關(guān)鍵詞或者接入翻譯 向量檢索購(gòu)物車(chē)數(shù)量不對(duì)加購(gòu)接口重復(fù)被調(diào)用查看 Agent 循環(huán)日志確認(rèn)是否多次執(zhí)行同一個(gè)工具在 Agent 循環(huán)中增加去重邏輯購(gòu)物車(chē)服務(wù)做冪等控制一次對(duì)話中工具循環(huán)次數(shù)過(guò)多模型反復(fù)調(diào)用工具但沒(méi)有收斂打印每次工具調(diào)用的參數(shù)和結(jié)果限制最大循環(huán)次數(shù)本文為 5 次檢查工具執(zhí)行結(jié)果是否足夠明確生產(chǎn)環(huán)境模型返回不穩(wěn)定沒(méi)有用溫度參數(shù)控制輸出在 API 請(qǐng)求中設(shè)置temperature0或較低值對(duì)需要工具調(diào)用的請(qǐng)求建議temperature0減少隨機(jī)性購(gòu)物車(chē)數(shù)據(jù)丟失使用了內(nèi)存存儲(chǔ)重啟服務(wù)后 CART 被清空生產(chǎn)環(huán)境換 Redis、MySQL 等持久化存儲(chǔ)這里要特別強(qiáng)調(diào)一個(gè)問(wèn)題模型編造商品 ID。這在不做檢索直接讓模型生成加購(gòu)參數(shù)時(shí)尤其常見(jiàn)。預(yù)防辦法是工具描述里明確寫(xiě)“product_id 必須來(lái)自 search_products 的結(jié)果”同時(shí)購(gòu)物車(chē)服務(wù)側(cè)必須校驗(yàn)商品是否存在。雙保險(xiǎn)缺一不可。另一個(gè)容易被忽視的問(wèn)題是重復(fù)加購(gòu)。用戶說(shuō)“把剛才那瓶酒加購(gòu)物車(chē)”Agent 可能因?yàn)樯舷挛睦斫獠粶?zhǔn)確連續(xù)調(diào)兩次add_to_cart導(dǎo)致數(shù)量翻倍。工程上可以從兩方面兜底一是在 Agent 循環(huán)里維護(hù)已執(zhí)行工具的去重集合二是購(gòu)物車(chē)服務(wù)支持“同商品合并數(shù)量”并對(duì)前端展示明確提示。8. 最佳實(shí)踐與工程建議到這里最小鏈路已經(jīng)跑通了。但真要上生產(chǎn)環(huán)境還有很多工程細(xì)節(jié)值得打磨。下面按優(yōu)先級(jí)排列。8.1 安全與權(quán)限邊界LLM Agent 能操作購(gòu)物車(chē)就意味著它擁有部分用戶權(quán)限。這里有一個(gè)不可逾越的原則Agent 代表用戶操作但必須經(jīng)過(guò)用戶確認(rèn)且不能越過(guò)權(quán)限邊界。具體落地建議加購(gòu)操作先返回給用戶確認(rèn)用戶確認(rèn)后再執(zhí)行??梢栽?Agent 的add_to_cart工具前增加一個(gè)confirm_add_to_cart的中間步驟。會(huì)話必須綁定用戶身份。購(gòu)物車(chē)不能是全局共享的每個(gè)用戶一個(gè)購(gòu)物車(chē)Agent 調(diào)用購(gòu)物車(chē) API 時(shí)帶上用戶 Token。價(jià)格、庫(kù)存等關(guān)鍵數(shù)據(jù)以服務(wù)端為準(zhǔn)不能相信 LLM 從對(duì)話歷史里記住的數(shù)字。用戶說(shuō)“剛才不是 18 歐元嗎”時(shí)助手應(yīng)該重新查商品接口確認(rèn)。涉及支付、退款、修改收貨地址等高危操作不要交給 LLM Agent。購(gòu)物車(chē)以下就是邊界。8.2 參數(shù)校驗(yàn)與冪等模型生成參數(shù)是有概率出錯(cuò)的所以業(yè)務(wù)服務(wù)必須當(dāng)作“外部不可信輸入”來(lái)對(duì)待quantity必須校驗(yàn)為正整數(shù)且不能超過(guò)庫(kù)存。product_id必須存在且商品處于上架狀態(tài)。加購(gòu)接口最好支持冪等鍵。用戶點(diǎn)擊兩次“加購(gòu)”不能加兩次??梢栽谡?qǐng)求里帶request_id服務(wù)端記錄已處理過(guò)的請(qǐng)求重復(fù)請(qǐng)求直接返回原結(jié)果。8.3 工具設(shè)計(jì)粒度要合適工具的粒度直接影響 Agent 的穩(wěn)定性和業(yè)務(wù)安全。我的經(jīng)驗(yàn)是查詢類(lèi)工具可以給模型較大自由度比如search_products允許組合多種篩選條件。寫(xiě)入類(lèi)工具要給最小權(quán)限參數(shù)盡量少并且強(qiáng)制校驗(yàn)。比如add_to_cart只接受商品 ID 和數(shù)量不接受價(jià)格、折扣這類(lèi)模型不該決定的字段。工具數(shù)量不要太多。一兩百個(gè)工具會(huì)讓模型選擇困難建議按業(yè)務(wù)域分組或者做一個(gè)“工具路由層”先粗篩再精調(diào)。8.4 可觀測(cè)性與日志Agent 的每次工具調(diào)用都應(yīng)該有完整日志包括用戶原始輸入。LLM 返回的工具調(diào)用名稱(chēng)和參數(shù)。工具執(zhí)行結(jié)果。最終返回給用戶的文本。按trace_id貫穿整條鏈路這樣線上出問(wèn)題時(shí)可以快速定位是模型理解錯(cuò)了、參數(shù)傳錯(cuò)了還是業(yè)務(wù)服務(wù)報(bào)錯(cuò)了。8.5 RAG 與商品檢索的工程化本文用了關(guān)鍵詞匹配但真實(shí)商品庫(kù)動(dòng)輒幾十萬(wàn) SKU需要更可靠的檢索方案。推薦分層架構(gòu)召回層向量檢索商品名、描述、關(guān)鍵詞的 embedding召回 Top 50 候選。精排層用價(jià)格、品類(lèi)、庫(kù)存、用戶偏好等結(jié)構(gòu)化條件過(guò)濾和排序。兜底層如果召回為空觸發(fā)“相似品類(lèi)推薦”或“向用戶說(shuō)明庫(kù)存情況”而不是讓模型自由發(fā)揮。不要指望一個(gè)檢索函數(shù)解決所有問(wèn)題。檢索質(zhì)量直接決定 Agent 的體驗(yàn)上限。8.6 多語(yǔ)言與本地化面向葡萄牙市場(chǎng)的應(yīng)用語(yǔ)言本地化不是一句“模型支持多語(yǔ)言”就完了。要做的功課包括商品數(shù)據(jù)要有en、pt等語(yǔ)言字段或者至少保證keywords覆蓋主要語(yǔ)言。用戶可見(jiàn)的商品名稱(chēng)、單位、貨幣格式要本地化。葡萄牙本地化的價(jià)格格式是22,00 €而不是€22.00這些細(xì)節(jié)會(huì)影響用戶信任感。模型 Prompt 里可以要求助手默認(rèn)使用用戶當(dāng)前語(yǔ)言回復(fù)。多語(yǔ)言場(chǎng)景下最好顯式把用戶的語(yǔ)言偏好傳到 Prompt 里而不是指望模型自己判斷。8.7 從 Demo 到生產(chǎn)的完整清單最后給一張檢查清單幫你判斷自己的 LLM 購(gòu)物應(yīng)用是否達(dá)到生產(chǎn)標(biāo)準(zhǔn)檢查項(xiàng)Demo 階段生產(chǎn)要求購(gòu)物車(chē)存儲(chǔ)內(nèi)存字典Redis/MySQL 用戶維度隔離參數(shù)來(lái)源模型直接生成業(yè)務(wù)側(cè)強(qiáng)校驗(yàn) 商品 ID 來(lái)自檢索結(jié)果加購(gòu)確認(rèn)無(wú)用戶確認(rèn)后再寫(xiě)購(gòu)物車(chē)權(quán)限控制無(wú)用戶 Token 綁定 操作審計(jì)日志無(wú)全鏈路 trace_id 日志模型選擇單一模型按場(chǎng)景區(qū)分對(duì)話模型、檢索模型、意圖識(shí)別小模型兜底策略無(wú)工具調(diào)用失敗時(shí)給出引導(dǎo)文案并上報(bào)灰度發(fā)布無(wú)小流量灰度監(jiān)控工具調(diào)用成功率和加購(gòu)轉(zhuǎn)化率9. 總結(jié)與后續(xù)學(xué)習(xí)方向這篇文章的核心是把“LLM 對(duì)話”和“購(gòu)物車(chē)操作”這兩件本來(lái)割裂的事通過(guò)四層架構(gòu)串成了一條可落地的鏈路LLM 負(fù)責(zé)理解意圖工具層負(fù)責(zé)隔離和控制業(yè)務(wù)服務(wù)負(fù)責(zé)校驗(yàn)和執(zhí)行數(shù)據(jù)層負(fù)責(zé)支撐檢索和存儲(chǔ)。整套代碼跑通之后你對(duì) LLM 應(yīng)用的理解會(huì)上一個(gè)臺(tái)階你會(huì)發(fā)現(xiàn)真正讓 AI 從“聊天”走向“交易”的不是模型本身多聰明而是工程上怎么約束它、校驗(yàn)它、審計(jì)它。購(gòu)物車(chē)只是一個(gè)縮影同樣的模式可以遷移到工單系統(tǒng)、CRM、供應(yīng)鏈等任何“需要 LLM 調(diào)用業(yè)務(wù)系統(tǒng)”的場(chǎng)景。如果繼續(xù)深入學(xué)習(xí)我建議按這個(gè)順序展開(kāi)Function Calling 進(jìn)階研究不同模型對(duì)工具調(diào)用的差異比如并行工具調(diào)用、流式輸出時(shí)的工具處理。RAG 工程化把關(guān)鍵詞檢索替換成向量檢索接入真實(shí)商品庫(kù)關(guān)注召回率和準(zhǔn)確率。Agent 框架選型在 Spring AI、LangGraph、自研編排之間做選型??蚣苣軒湍闶r(shí)間但本文的核心鏈路邏輯不會(huì)變。生產(chǎn)安全重點(diǎn)學(xué)習(xí)權(quán)限模型、操作審計(jì)、模型輸出校驗(yàn)和 fail-safe 設(shè)計(jì)。最后提醒一句不要在還沒(méi)有業(yè)務(wù)校驗(yàn)的生產(chǎn)環(huán)境直接放 Agent 寫(xiě)購(gòu)物車(chē)。先用最小閉環(huán)驗(yàn)證用戶接受度再逐步放開(kāi)權(quán)限。購(gòu)物車(chē)雖小但它是交易的第一步值得用最高標(biāo)準(zhǔn)對(duì)待。建議把本文的示例代碼 clone 下來(lái)自己跑一遍尤其是agent.py里那個(gè)工具調(diào)用循環(huán)親手改幾個(gè)參數(shù)你會(huì)比看十篇文章理解得更深。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久久婷婷精品av电影| 久久超碰97| 欧美五十路熟| 国产人伦精品一区二区三区| 青草地一本线一区二区三区| 亚欧高清在线| 狠狠爱夜夜| 国产欧美日韩在线不卡第一页| 欧亚日韩三区| 成人一级性爱| 国产农村妇女精品一二区| 久久高潮妇女视频| 91蜜桃婷婷狠狠久久综合9色| 蜜桃一区二区三区| 一本精品日本在线视频精品| 亚洲美乱| 国产性爱强奸乱伦大全| 亚洲无码99| 久久风骚城市| 天天爱天天操| 国产精品操| 人妻激情另类| 偷拍偷窥与盗摄视频专区| 五月天社区| 啊啊啊轻点在线观看| 亚洲一本大道中文字幕无码在线| 五月天亚洲网| 日本肉体xxxx裸交| 国产综合久| 亚洲精品a人片在线观看视| a片亚洲一本通视频| 偷拍三区| a啊啊啊啊啊啊啊啊一区二区| 日本中文字幕在线视频 | 国产精品视频内谢女人| 香港日本韩国人妇99www.wccm20| 亚洲网站一区二区在线| 蜜臀AV成人精品蜜臀| 日本精品中文字幕视频| 久久香蕉超碰97国产精品 | 天天干18禁| 午夜呻吟欧美| 日韩人妻一二三区视频| julia ann久久| av大香蕉| AV一起草在线| 亚洲国产精品久久久男人的天堂| 狠狠色噜噜狠狠狠狠狠色综合久久| 夜夜青青无码影院| www.狠狠| 免费看黄片现成| 国产精品第二页| 唐山老熟妇露脸啪啪叫| 98久久| 九九成人精品| 青青草天天亲夜夜操网| 91看黄片| 国产高清成人免费视频| 啊啊啊啊二区好大| 久久久人体| 激情 欧美 亚洲 小说| 日韩欧美天堂| 99操逼| 麻豆国产97在线| 91AV天堂| 精品无码一区二区| 福利在线观看一区二区| 欧美欧美啪啪视频| 四虎免费在线播放| 78p欧美| 久久久精品无码亚免费| 大象AV在线| 亚洲欧美内射| 怡春苑东京热| 欧美夜夜狠| 色视频蜜乳| 熟女啪啪视频| 97人人草| 亚洲欧美国产其他二区| 欧美Ⅴ性爱| 我中文字幕6区| 免费观看欧美日韩操逼视频| 国产偷人伦激情在线观看| 国产精品久久久午夜夜伦鲁鲁| 色穴精品| 日韩啪啪啪啪啪| 婷婷丁香五月天亚洲天堂网| 日韩乱伦AⅤ| 欧美18 在线观看| 91精品国产一区三一| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 欧美激情综合| 另类 日韩 熟女| 91亚洲欧美| 91国产丝袜白虎| 青青草成人视频在线观看二区| 丝袜六区| 亚洲高潮少妇| 香蕉久久国产AV一区二区| 国产又黄又粗的视频| 男人的天堂 在线一区| 一本大道久| 91爱看| 女同性恋一区二区三区精品视频| 在线观看黄色电话| 一级黄色性爱裸体视频| 秋霞操逼片| 精品人成视频在线观看| 大香蕉中文在线| 色九久| 97网站在线观看 | 亚洲精品国产av天美传媒| 99久久婷婷| 亚洲天堂99| 日韩成人网址| 日韩有码一区三区| 96AV精品| 亚洲欧洲精品成人| 99无码视频| 国产视频不卡在线观看| 高清在线偷拍自拍视频| 另类图片五月| 欧美精品91| 丁香五月天堂网| 99热亚洲| 亚洲淫乱骚妇AV| 少妇500双飞99| 麻豆黄四叶草网站| 性九九九九九九| 丁香7月婷婷| 欧美97网| 火箭成精品视频884必出精品| 乱欲视频| av一区二区三区四区| 18禁中文字幕| 成人性爱美曰韩| 欧美综合区| 亚洲一区中文字幕一区| 夜夜 中文视频rt| 人妻素股| 亚洲熟女性高潮久久久| 熟妇熟女亚洲天堂网| 成年人免费观看网站| 精品女同一区| 婷婷国产精品九区| 国产一区在线看| 乱老女人一区二区视频| 精品久久久久av影院| 亚洲好色人妻| 日韩精彩免费| 久久精品男人的天堂| 日韩在线观看AV| 亚洲在线观看| 国产呦精品系列在线观看| 精品日韩人妻视频| 久久九色| 天美欧美国产| 欧美小说区视频区| 亚洲欧美国产中文视频| 九九黄色网| 中文字幕一区二区三区蜜臀| 日本少妇va7777| 日本精品九九九| 啊啊啊啊免费视频| 性开放中文AV高清无码免费看| 99操视频| 国产日韩人人| 一区二区三| 视频分类 国内精品| 精品久久久久,69国产成人精| 婷婷丁香一区二区三区| 日韩黄色小说| 久久午夜鲁丝片| 久久99久久99久久99人受| 婷婷色一区| 天天日美女的B| www亚洲欧美| 亚洲AV秘 精品久久老牛影视| 日韩99神马视频播放片在线播放| av日韩在线观看电影| 免費黃色視頻觀看一| 伊人影院在线理论播放| 97国产中文| 亚川综合视频| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 天天天做天天天爱天天天爽| 熟女这里只有精品6| 五月婷婷性爱| AV色图| 日语五十路和六十路亚洲国产精品 | 黄色在线网站| 国产91精品久久久久久久网曝门| 搡老女人老熟女91| 日韩pv中文| 东京热91| 婷婷色导航| 亚洲青青草| 国产成人精品无码久久| 日本大香蕉| 国产综合色精品在线观看| 国产女人成人精品视频| 91白虎| 亚洲自拍天堂| 精品久久久久瑟瑟| 翔田千里AV无码秘 三区| 97超碰国产精品| 快灬快灬 一下爽蜜桃在线观看 | aa片毛片| 久久久久久久久久久久久久久乱码| 亚洲色图 图片| 欧美日日操| 久插综合| 欧美精品成人在线播放| 日本不卡三级网在线播放| 日日夜夜骚| 综合 亚洲 欧美| 色婷亚洲五月在线观看| 欧美性xxxxx狂欢| 夜夜操91744565| 操国产逼| 午夜久久一区二区无码中出| 天天看天天日天天操| 日韩人体偷拍| 日本性感人妻91| 熟妇艹鸡八| 一区二区三区亚洲| 综合性视频99| julia高潮后不停追击中出| 97精品网| 色诱avtt| 在线观看无码三级少妇| 求求你操操我| 强奸乱伦Av网| 欧美中字不卡| 黄色网址久久精品欧美喷水| 欧美一级久久久久久久大片动画| 亚洲男人在线观看天堂| 97色97好| 亚洲国产无码精品首页久久久| 欧美 亚洲| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 91亚.色| 99热啪啪| 中文字幕美女91| 亚洲日韩少妇一道本视频| 女人双腿搬开让男人桶| 综合网91| 欧美激情 亚洲色图| 激情久久久| 一区二区影视| 走光一区92下载| 国产67194| 日韩强奸av| 天天天操天天天爱| 欧美成人9797| 91性高| 国产成人bd在线观看| 97亚洲中文| 男人的天堂成人的社区| 国产大学生高潮在线播放| 网友自拍第一页| 天天综合网合集91| 宗合情欲网| 高清无码 国产精品| 综合情欲网| 能看的av| 91色色色| 国产成人无码啪| 97在线观| 33044男人的天堂深夜备| 2001天天操| 一级久久性爱视频| 日韩性爱毛片操骚逼| 97天天| 99.色网| 亚欧高清v| 乱伦强奸区日韩| 亚洲熟久久| 黄色AV影视| 日本 欧美 国产一区| 蜜臀久久99精品久久久久久-DVD| 绑缚麻绳人妻寝取完整版| 五月丁香成人网| 少妇人妻好深太紧了vr91| 夜夜做夜夜爽精品视频| 91在线秘 男同| 曰韩少妇无码| 东京热,男人的天堂| 五月丁香啪啪啪| 亚洲精品亚洲人成人网| 91在线/欧洲| 啊啊啊不要好疼视频| 欧美日韩亚洲五月天婷婷| 色色五月婷婷| 91九色在线| 操逼A∨| 一区二区播放| 日韩成人人妻网站| 亚洲青青草| 国产25页| 日韩视频小说在线观看| 试看福利| 久热久操| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 久肏视频字幕| 狠狠97| 91精品人妻电影| 亚洲精品蜜桃久久久久久久| 人妻熟女av国产网站| 日韩性爱啪啪视频| 夜夜欧美| 熟女精品一区二区在线观看| 久久九九网| 国产热RE99久久6国产精品首| 日韩二三区| 伊人操你| 嗯,啊。舔我逼| 日本久久综合| 怡红院视频在线| 任你爽视频| 丰满人妻一区二区三区| 色大师网站www永久网站视频| 亚州色阁| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 美女黄网| 可免费观看的av毛片中日美韩| 男人天堂2017| 福利操逼| 国产精品麻豆视频网站| 黄色网址在线免费观看| 啪一啪免费视频| 91人妻Pr| 中日韩久久人妻一区二区| 宗合情欲网| 久久久久久裸体 | 九九99久久| 一区黄二区黄| 日韩美女,国产传媒,视频一区| 试看60秒| 久久久亚洲熟妇熟女| se吧提供91精品国产91久久久久久| 老熟女乱伦一区| 强奸乱伦中文字幕AV| 国产激情综合| 亚洲天堂第一页| 色香91| 天天综合中文字幕 91| 欧美色www亚洲国产阿娇要播| 另类TS人妖一区二区三区| 久久av一级av少妇av高潮| 欧美日韩操操操| 操逼逼无码| 大香蕉免费乱伦视频| www.99热| 婷婷美人网| 激情另类激情| 国产精品成人久久一区二区三区| 97国产成人精品免费视频| av天堂影视中文在字幕在线中文 | 欧美成人AⅤ大片在线观看| 十八禁啪啦拍视频无遮挡| 日本三级韩三级99久久| 亚州Av天美传媒| 欧美组图日韩亚洲中文字幕| 婷婷久久五月| 欧美亚洲厕所精品偷拍91| 欧美激情 一区| 日本免费专区| 久久人人爽爽爽人久久久| 精品人妻视频一区二区在线播放 | 欧美九九99久久精品| 亚洲熟妇综合久久久久久| 呦呦一区| 亚洲激情在线| 91网站18+| 久久双插| 青青草原狼av| 亚洲狠狠入| 成全在线观看免费观看| 北条麻妃99精品青青久久| 天天综合网亚洲综合网| 温婉少妇玩3p| 国产亚洲色婷婷99精品91| 中文字幕欧美丝袜07资源| 看黄片视频免费| 97WW精品| 网友自拍第1页| 日本欧美国内在线| 亚洲少妇免费视频\| 欧美成人A√在线一区二区| 久久婷婷伊人| julia国产在线 | 亚洲黄色AV电影| 国产精品自拍欧美在线| 欧美日韩国产人人| 欧美精品xxxwww| av大香蕉网站| 无码 黑人一区二区三区| 按摩中文字幕| 91狠狠| 淫淫总合网| 国产中文字幕在线观看| 96久久精品一二三区色欲| 超碰98综合网| 2019天天干天天操| 一区超碰一区| 五月丁香激情综合网| 日韩电影免费网站麻豆视频| 男男H黄动漫啪啪无遮挡网站| 久久草视频污视频| 国产操操日韩三级黄| 成熟熟女国产精品一区二区| 极品尤物自安慰| 中文字幕-区二区三区四区视频中国| 色综合一本| 欧美色一二三| 欧美日韩*字幕一区| 蜜桃中文字日产乱幕4区| 亚洲麻豆av一区二区| 爱欲AV| 久久精品福利影院| 中文一区在线日| 日本高清一区二区在线| 国产精品乱码久久久| 黄片www.| 国产一国产一级毛片古装| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲中文字幕三级在线| 亚洲色人阁| 尻女朋友一夜| 亚洲一区二区三区播放在线| 亚洲欧洲小说图片视频| 国产一区二区三区视频在线看| 久久久99999久网站| 99久久久无码国产精品性男| 天天92av| 精品美女久久一二三| 国产亚洲中文不卡二区| 欧美亚州综合网图片| 久久发布国产伦子伦精品| 欧美综合1性辶| 探花精品视频| 亚洲无线码欧洲精品区别| 9ⅰ久久久天天| 怡红院视频在线| 一本色道久久天天射天天干| 国产av色网| 国产青一二三| 熟女六十路| 网站A V在线| 91天射| 婷婷综合久久| 国产一级特黄大片处女| 中文区中文字幕免费看| 蜜桃色院一区久久| 亚欧精品久久久久久久久久久| 久久久久久99AV无码免费网站| 性九九九九九九| 蜜色网色哟哟| 精品国产肉丝袜在线拍国语| 操逼逼一区视频| 欲色啪| 亚洲成人一二三区| 久久视网78| 99久久综合| 国产三级多多影院2022国产AA一级毛片无码| 淫穴高潮色图| 久草草一二三四区久久| 嗯啊免费视频| 国产强奸超碰AV| 在线只有精品| 色色婷婷丁香| 亚洲码专区| 在线性黄高清免费视频| 九九毛片这里只有精品| 亚洲欧洲无码一区夜| 二三四区精品| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 性色高清..……| AVE乱伦| 哈哈操 大香蕉| s片在线观看| 青青操在线亚洲视频观看欧美在线 | 日韩人妻一区二区| 亚洲 综合 第一页| 国产日韩精品一区二区三区| 98色网| 色五月综合网| 成人午夜无码视频| 中文字幕在线免费观看视频| 在免费jIzzjIzz在线视频| 久久久精品电影| 国产美女在线精品免费看| 性91| 青青草好吊色| 涩涩久久精品| 99国内熟女露脸视频| 天堂伊人久久| 少妇色综合| 9长久久精品| 久久久久网站-538在线视频-欧美永久乱码 | 毛片麻豆91糖心精品毛情片| 好爽,再快点啊哈嗯嗯嗯嗯| 综合色图区| 欧美亚洲丝袜人妻制服99| 91丝袜美女国产| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 操高情无码| 男女激情黄色网址| 俺去俺来也在线www| 福利在线观看一区二区| 留下AⅤ黄色片| 中国探花熟女| 九九热免费国产视频婷婷伊人| 一区二区三区激情在线观看| 婷婷五月天综合网| 九九九久千久久激情蜜桃在线看 | 91天天综合网,天天综合网| 少妇天堂网络| 韩日巨乳美女免费视频在线观看| 亚洲影视第一页| 99日视频在线免费| 国产蜜臀精品一区二区尤物| 青青草AV色| 日韩欧美蜜桃精品久久中文字幕久久| 日本幼女18+| 97资源站日韩| 欧美一区二区日韩三区| 国产麻豆福利av在线播放| 91精品黄在线观看| 熟女人妻av在线资源,黄色的资源 粉嫩国产精品久久粉嫩 | 激情综合av| 欲射影视| 老女人老91妇女老热女| 99999久久精| 高清孕妇孕交| 黑人无码一区二区| 日本天天吊| 殴洲老熟女| 国产91丝袜 在线播放| 东北熟女91| 在线毛片片免费观看| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 色5月婷婷| 亚洲最大无码中文字幕网站| AV网站高清无码在线观看| 色色婷婷五月| 大肉棒导航| 欧美激情视频一区二区| av网站在线观看了| 精品国产嫩穴视频| 神马影院午夜福利久久久| 亚洲丝袜二区在线| 三级特黄60分钟播放| 九九色热| 97超碰超欧美。| 久久国产成人精品国产成人亚洲| 人妻日日干| 日韩在线女优天天干| 加勒比综合a∨| 人人搞人人插人人操| 女人高潮抽搐喷水视频网站| 国产精品网站www| 精品久久久久久久| 中文字幕精品区先锋资源| 久久超碰、| 外国91| 欧日a| 亚洲熟女性高潮久久久| 日韩av熟女一区二区三区成人| 久久亚州大香蕉| 一起草欧美| 久久久一区二区三区四曲免费听 | 日本成人A片网站| 婷婷四五区| 欧美AB在线观看| 国产日韩区| 骚妻少妇精品性色无码四色A V| 久99热| 日韩av影片在线观看| 视频黄色国产一级| 成人5码视频| 国产精品内射婷婷一级二| 日本人妻丰满熟妇久久久久久| 亚洲有码 视频一区| 综合伊人网12色| 蜜乳av一区二区| 日产欧美电影一区二区三区| 久操91视频| 人人爱操| 亚洲s色图| 成人a级高清视频在线观看| 嫩草 人人网精品| 欧美91精品国产自产| 亚洲男人天堂Av| 91狠狠综合久久| 国产久久久久久久久一区二区| 丝袜综合色图| 狠狠中文字幕| 亚洲AV在线资源| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 成人国产精品三级A片| 欧美丝袜美女电影一二三四区| 伊人网免费视频| 午夜呻吟欧美| 国产探花日韩援交| 日韩天天本| 久久精品久久久久久久久| 亚洲精品色| 操国产高清| 午夜天堂精品久久| 91成人久久| 日日躁天天躁狠狠躁| 欧美人妻精品一区二区| 婷婷九月国产| 欧美性爱五月天| 国产日本一区二区三区蜜臀在线观看| 五月激情小说| 亚洲国产福利视频| 99综合| 日韩欧美中文字幕搭讪巨乳美人妻视频| 小泽玛利亚一二三| 天天影视色香欲综合网小说| 97在线资源| 大香蕉520| 国产午夜在线观看| 美日韩一二三区| 99色热国产视频精品| 亚洲资源一区| 欧美一二在线| 一区在线观看中文字幕| 国产操逼网站亚洲一级黄色| 日韩精品99久久久久久中文字幕| 熟女人妇一区二区三区| 国产精品福利视频| 欧美三级一级| 艹比视频国产精品| 国产传媒av天美传媒在线| 性性欧美| 久久黄黄| 约操熟妇| 日本人妻丰满熟妇久久久久久 | 黄色视频特级毛片| 久操免费在线| 后入日本1234| 在线观看综合精品亚洲| 97超碰欧美手机| 亚洲最大的黄色电影网站。 | 欧美日韩久久精品爱爱| 青女在线| 国内精品999| 黄色片大香蕉| 综合av社区| 99av| 久久久久九九九九九| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 玖玖蜜臀资源网| 婷婷五月成人| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 青娱乐黄色录像| 男人网站婷婷| 97久久精品亚洲中六字幕| 大屁股xxxxx| 中文字幕一区二区三区高清| 91欧洲国产成人久久精品网站| 亚洲第一男人天堂| 久草精品视频| 老熟妇综合| 天美国产三级传媒| 97精品综合久久| 大香蕉免费乱伦视频| 亚州综合网| 色爱亚洲| 粉嫩AV一区二区夜夜| 日本不卡一区二区三区| 精品乱子一区二区三区99| 欧美美女自慰一区二区三区| 91粉嫩萝控精品福利网站_精品影音先锋国 | 欧美日韩人妻少妇 一区二区三区| 久久嫩草国产成人一区| 看看小穴| 九九热免费国产视频婷婷伊人五月 | 美国久久一二三四| 久悠悠av| ,国产乱人伦精品一区二区三区| 五月综合色| 一级免费啪啪片| 被体育老师抱着c到高潮| 午夜偷拍久久熟女| 日本一级二级三级网站| 国产91久久九九免费精品无码| 凹凸久久人人| 一级岛国大片| 人人摸.人人色| 久久久久免费看少妇A片特黄| 亚洲激情综合另类男同| 久久久久久久久久久免费精品| 人人干黄色| 日本高清视频xxxx| 日韩人妻免费精品| 欧美性爱伊人| 一区二区三区四区免费视频| 精品偷拍13p欧美dodk视频| 国产福利在线视频网站| 欧美一区二区三区另类精品| 亚洲精品久久一区二区三区蜜桃臀| 九九人妻| 五月丁香狠狠爱| 亚欧精品久久久久久久久久久| 人妻偷拍一区二区三区| 超碰日韩美妻| 欧美淫穴| 岛国艾薇凹凸视频天堂| 视频国产欧美在线播放| 亚洲综合伊人| 无码人妻丰满熟妇奶水区毛片| www色婷婷| 精品国产91av一区二区三区| 干少妇视频| 青青草久久在线| 天天看高清麻豆| 999久久久精品国产| 天天色播亚洲综合网站| 无码一区免费在线不卡| 欧美人妻另类在线| 亚洲欧美另类少妇精品| 日韩女模中文造逼| 操逼视频亚洲| 中文字幕三四区| 亚洲精品九九九九九九| 和协影院中文字幕三区| 狠狠躁AV| 五月天综合网| 狠狠综合网| 无码在线亚洲| 性爱免费视频成人| 人人人摸人人| 日韩av在线精品观看| 性欧美91| 国产白丝网站| 校园春色美腿丝袜| 2019亚洲男人天堂| 9999久久久久| 另类成人首页一区| 亚州高清色综合| 久久超碰、| 亚洲18禁| 混色激情av| 国产一区96在线| 91色久| 手机在线看片免费人成视频| 日韩欧美tv一区二区在线观看| 欧美日韩大黄片| 被窝影院午夜看片无码| 另类成人首页一区| 99久久无色码| 黄色乱论网站| 日本不卡高清免v欧美日韩在线观看| 丰满人妻一区二区三区| 91超级碰碰碰| 在线 制服丝袜中出 人妻| 免费视频无码| 91丨国产丨白浆| 亚熟在线| 欧美日韩国产电影| 国产久久一区二区| 久男人久久| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 黄站在线免费观看| 青青草原伊人网| BBBBB97COM| 免费岛国一级片| 亚洲精品国产日韩无码AV永久免| 黄色av网站在线播放| 乱伦Av网| 成人精品在线| 大香蕉免| 欧美天堂第二区| 91在线/欧洲| 曰本熟女视频| 天天舔日美女视频| 伊人影院日本| 色噜噜精品一区二区三| 色五月网址| 日韩午夜国产| 九九九不卡| 日本熟妇浓毛hdsex| 日韩图区 偷拍| 激情一区二区三区在线观看| 超硑97精品| 国产视频第二页| 操逼视频色| 宅男影院久久久,99| 国产 v乱码一区二| 黄色二级片网站| AV男人天堂网| 亚洲AV成人精品网站在AV| 美国aaaaa一级黄片| 中日高清无码操逼视频| 欧美性后入| 亚洲男人的天堂网| 84YTCOM性无码| 亚洲,日韩,欧美,成人播放| 激情五月综合网| 欧洲小说色图视频另类| 国产激情视频一区区三区| 欧美精品xxxwww| 欧美日韩国第一区| 久久久久久人| 久久日韩精品一区二区| 亚洲图片偷拍视频区| 九久9热| 天天摸天天操视频| 国产A v无码专区| 老鸭窝亚洲毛片| 91男人综合| 中文字幕国产| 国产suv精品一区二区四区999| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 伊人991| 亚洲精品久久久久毛片A片拉屎| 亚洲成人网站在线观看| AV一二区| 亚洲天堂在线怕怕视频| 97碰在线视频| 成片免费观看视频大全| 91黑丝露脚| 91一区二匹| 亚洲图片另类| 日韩中文字幕视频在线观看| 亚洲五码一区二区三区| 国产精品对白内射| 麻豆精品A片免费观看| 四虎AV影视国产精品亚洲精品| 日韩欧美天堂| 精品视频在线观看精品| 亚洲精品毛片在线观看| 丰满人妻一区二区三区| 99久久9| 国产欧美精选自拍一区| 欧美黑人与女人91~| 福利视频网站| 色优久久| 怡春院久久| 伊人久久艹| 男人的天堂kva| 青青草公开在线免费不卡视频| 九九黄色网| 大屁股人妻女教师撅着屁股| 欧亚 另类 久| 啪啪一区| 蜜臀久久久99久久久久 | 天天热精品| 亚洲成?V人片在线观看福利| 亚州中文字幕超碰97| 成人精品久久久午夜福利| 色爱综合网欧美| 极品销魂美女一区二区| 天天肏美女| 日韩亚洲欧美中文字幕| 激激五月| 婷婷操视频| 国产精品午夜成人福利| 素人一区二区三区日韩| 91挑色欧美| 亚洲中文国际强奸字幕| 91男人天堂网| 亚洲操人| 欧美色图 色综合图| 国产不卡精品91| 欧美亚洲国产91在线| 欧美老妇女内射网址| 国产日韩在线播放av| 欧美午夜视频| 亚洲欧美一区二区三区一猛片| 久久精品一区二区三区蜜桃臀| 丁香激情五月天| 久久久999| 麻豆性爱视频在线播放| 天天天天天天天天天天干美女| 欧美日韩亚洲电影| 26uuu性| 色97欧美| 特级大荫道BBwBBwBBW| 日本 色 导航| 国产97/欧美| 天天干天天干天天| 色欲Av人妻精品一区二| 精吧天堂| 91国产精品在线看| 亚洲AV麻豆Aⅴ无码电影一 | 国产乱伦亚洲| 久艹视频在线| 熟妇女人妻呻吟久久AV| 亚洲欧美日韩免费电影| 操淫穴亚洲五月丁香| 99热国产| 超清中文乱码字幕| 天天综合欧美综合| 激情综合二| 日本色日夜干| 日日骚精品视频| 精品区9| 日操粉逼逼| 精品人妻一二三| 日本三级韩国三级美三级91| 色综合五月天| www.伪伪| 国产精品一二三| 天天天天干| 国产亚洲性生活视频播放| s片在线观看| 五月天伊人| 国产精品自在线发布| 精品成人无码| 日本蜜桃| 一二三啪啪专区| 99热9| 青娱乐日韩无码| 91香蕉国产尤物视频| 伊人宅男大香蕉| 夜夜操一区二区| 亚洲欧美另类少妇精品| 人妻一区视频| 97视频在线播放| 91欧美情色| 色老汉色| 五月天开心网| 国产乱人伦AVA麻豆软件.| 蜜乳AV.COM| 国产主播福利| 欧美视频第二页| 国产精品乱人伊人网| 五月丁香在线| 久久精品色欧美aⅴ一区二区| 亚洲人精品久久久| 久久视频少妇美女| 999狠狠综合| 9久热| 久久久一区二区三区四曲免费听| 欧美一级A片在线看视频性色| 久久侵犯人妻爽爽爽| 亚洲AV无码翔田千里网站| 青娱乐999| 国产高清自拍视频| 97超碰欧美中文字幕| 亚洲清纯综合| 精品人妻一区二区三区蜜桃视频| 久久久久9999精品九九九| 少妇69中文| 色眯眯射| 欧亚第一综合网| 鸥美插入视频| 啊啊啊啊啊在线视频| 熟女中出视频| 国产成人天堂| 欧美天堂日韩三级国产传媒| 五月丁香| 欧美色图天堂网m| 日本免费中文一区二区三区四区| 亚洲精品久| 91色鬼| 大香蕉中文201| 亚瑟国产精品久久无码| 在线观看一级α片刺激高潮视频| 伊人一级免费黄片| 国产超碰AV在线精品| 中文字幕欧美精品亚洲日韩蜜臀| 精品少妇一区二区三区| 欧美黑人与女人91| 少妇一区二区三区| 亚洲不卡三级手机播放| 亚洲一区操| 久久久新亚洲AV| 亚洲天堂五月天国产| 熟妇的味道HD中文字幕| 欧美一级特黄淫片在线观看| 激情小说图片亚洲首页| 久久久四区| 天天做天天爱夜夜爽毛片试看| wwwxxx日本爽| 欧美成人性爱视频大全| 综合婷婷| 97干色天堂| 黄色av播放免不| 美女9118禁| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | A片 AV一级在线播放观看免费| 五十路六十路七十路熟婆| 久久久久亚洲?V片无码V| 91人妻尻屄视频| av中文字幕在线熟女| 久久久久一本一区二区青青蜜月| 亚精品无码毛片一区二区三区| 黑丝制服中文字幕| 亚洲?V高清一区二区三区尤物| 国产隔壁老王影院在线| 午夜精品视频777| 大香蕉伊人亚洲| 激情小说亚洲视频| 亚洲一区二区AV| 狠狠中文字幕| 蜜臀无码视频在线观看| 日韩一级片在线看| 亚洲国产亚洲天堂| 自拍视频一区在线观看| 欧美一区二区成人一卡| 成年人网站在线免费观看| 午夜男人一级A片7777| 天天影视综合色| 女人高潮抽搐喷水视频网站| 日本天堂在线播放| 顶级丝袜熟女一区二区三区| 性爱AV天堂| 日本免费人成视频播放120秒| 91性生活久久久| 久热精品在线国产| 久久神马影院| 国产精品美女视频诱惑| 日日夜夜骚| 久久天天艹| 天天舔天天日天天射| 亚洲精品第一| 欧美在线大香999| 白嫩国模丰满一二三区| WWW美腿丝袜香蕉中文| 激情五月天社区| julia国产在线 | 久久最新免费视频23| 91精品国产91久久青草| 久久久9视频| 国产精品九九| 1769精品一区二区三区| 亚洲福利中文字幕在线| 国产女人9999| 东京热99999| www.av在线视频| 亚洲视频,小说| 视频国产欧美在线播放| 99人妻碰碰碰久久久久禁片| 少妇精品久久久八区九区| 韩国国产欧美情侣视频在线| 超碰99在线观看| 国产精品探花色| 麻豆人妻偷人精品无码视频| 偷拍三区| 俄罗斯及免费在线看| 黑人综合网| 立川理惠被中出无码| 啊啊啊啊好大好硬啊啊啊啊啊| 激情综合五月| 欧美国产操逼| 99视频只有精品| 欧美人人AAA| 日韩激情电影中文字幕| 欧美在线色| 人妻爽爽啪视频| 亭亭丁香激情| 国内黄色精品| 丰满人妻一区二区三区在线| 丁香六月婷婷久久综合| 最新日韩黄片| 久久欧美按摩999| 91亚洲人电影| 亚洲最大的黄色电影网站。| 亚洲熟妇自偷自拍另欧美| 丁香五月天激情综合| 五月激情小说| 东京太热久久久| 综合亚洲情色| 淫骚熟女一区二区三区| 91欧美综合在线| 香蕉免费一区二区三区不读| 国产精品 视频| 色超碰综合| 无码又爽又硬又激情免费视频| 国产亚洲福利第一页丝袜| 日日日日做夜夜夜夜做无码97| 97精品国产97久久久| 婷婷丁香五月天亚洲天堂网| 探花精品 一区二区| 亚洲 欧美 小说| 亚洲欧美激情在线视频| 人妻性爱一区二区| 日本 情色 1区| 97视频在| 麻豆蜜桃视频在线观看| av最新免费中文字幕| 国产精品国产亚洲区艳妇糸列| 99re只有精品| 青青草原人妻| 亚洲古典另类欧美在线| 国产精品熟女九色九色蜜臀| 亚洲国产ⅴ高清在线观看| 又大又大又大又粗爽高潮观看| 亚洲?V高清一区二区三区尤物| 久久久久9久久久久| 俄罗斯一区二区视频在线观看| 色眯眯av| 爱爱动态120秒| 一级久久久久久久久久久| 青草一区二区| AV天堂男人的天堂| 97国产成人精品免费视频| 另类图片欧美激情综合| 懂色av中文字幕一区二区三区天美 | 91青青在线| 97色欧州| 91综合网站| 亚洲AV永久无码精品成人调教| 伊人久久亚洲色欲综合网站| 色av中文字| 亚洲另类久操网| 国产玖玖| 国产青一二三| 情侣开房子拍 日韩无码 女的很漂亮| 亚洲欧洲综合视频在线| 欧美日韩在线国产在线| 亚欧成人综合影院| 成人性爱AV在线免费观看| 被窝影院午夜看片无码| 日韩性爱啪啪视频| 久久99干一本高清| 亚洲综合另类色图| 精彩久久中文| 久草线上视频免费看| 夜夜夜夜爽| A级在线视频| 中精品一区二区三区| 9 7超碰在线免费观看| 日本色婷婷| 国产精品无码论坛| 五十路六十路七十路熟婆| 尤物视频新赏网鲜网色诱网| 亚洲一区二区三区久久 亚洲一区二区| 亚洲精品一区二区三区在线播放| 无码区蜜乳| 久久伊人最新网址视频| 蜜臀99精品国产高清在线观看| 日本 免费 一区二区三区 久久香蕉| 伊人女女资源在线观看| aaa亚无码专区| 欧美超碰在线| 色九久| 欧美日本不卡在线| 青青草AV色| 亚洲男人在线观看天堂| 欧美第五页| 成人夜夜| 国产91专区| 久久久com| 中文字幕五区| 五月丁香色婷婷| 色噜噜狠狠色综合日日| 精品一区二区亚洲国产| 国产中文大片资源中文字幕| 欧美日韩另类在线播放| 国产av激情无码久久天堂| 亚洲欧洲av影音| 欧美日韩大香蕉|