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

ARTICLE DETAIL

資訊詳情

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

LangChain+Pydantic實(shí)現(xiàn)AI結(jié)構(gòu)化輸出實(shí)戰(zhàn)

LangChain+Pydantic實(shí)現(xiàn)AI結(jié)構(gòu)化輸出實(shí)戰(zhàn) 1. 項(xiàng)目概述為什么一個(gè)“結(jié)構(gòu)化輸出問答器”值得專門寫四篇實(shí)踐筆記Agent實(shí)踐4——結(jié)構(gòu)化輸出問答器這個(gè)標(biāo)題乍看平實(shí)但背后藏著當(dāng)前AI工程落地最硬的幾塊骨頭不是讓模型“說得對(duì)”而是讓它“答得準(zhǔn)、填得穩(wěn)、接得上”。我?guī)F(tuán)隊(duì)做過二十多個(gè)生產(chǎn)級(jí)Agent項(xiàng)目80%的失敗不是卡在大模型能力上而是卡在“輸出不可控”——用戶問“請(qǐng)列出最近3次訂單的編號(hào)、金額和狀態(tài)”模型可能返回一段散文式描述也可能漏掉字段更糟的是把金額寫成“約¥299.99含稅”而下游系統(tǒng)只認(rèn)純數(shù)字。這就是結(jié)構(gòu)化輸出要解決的核心問題。它不是炫技是工程剛需。LangChain作為主流Agent框架天然支持Tool Calling和ReAct模式但默認(rèn)輸出仍是自由文本Pydantic則提供了Python世界里最成熟、最可驗(yàn)證的數(shù)據(jù)契約機(jī)制。二者結(jié)合相當(dāng)于給AI的“嘴”裝上模具——不是限制它說什么而是規(guī)定它必須按什么格式說。熱搜詞里反復(fù)出現(xiàn)的“agent開發(fā)”“l(fā)angchain入門”“結(jié)構(gòu)化輸出”恰恰說明大量開發(fā)者正從“能跑通”邁向“能上線”而結(jié)構(gòu)化輸出就是那道分水嶺。這個(gè)問答器適合三類人一是剛學(xué)完LangChain基礎(chǔ)、正卡在“怎么讓Agent返回JSON”的初學(xué)者二是正在設(shè)計(jì)客服/工單/財(cái)務(wù)類Agent、需要對(duì)接數(shù)據(jù)庫或ERP系統(tǒng)的工程師三是技術(shù)負(fù)責(zé)人想評(píng)估Pydantic Schema在Agent鏈路中的實(shí)際開銷與穩(wěn)定性。它不依賴任何特定大模型API你用OpenAI、Qwen、甚至本地Llama3都能復(fù)現(xiàn)也不綁定前端核心邏輯全在后端服務(wù)層。我把它拆成第四篇是因?yàn)榍叭A(chǔ)Agent、工具調(diào)用、記憶管理都默認(rèn)輸出為字符串而這一篇才是真正把AI從“聊天伙伴”變成“業(yè)務(wù)協(xié)作者”的關(guān)鍵躍遷。2. 整體架構(gòu)設(shè)計(jì)為什么選LangChain Pydantic而不是Dify或CrewAI2.1 技術(shù)選型背后的工程權(quán)衡看到熱搜詞里“agent框架如langchain、dify、crewai等哪個(gè)好”我必須坦白沒有“最好”只有“最適合當(dāng)前階段”。Dify和CrewAI確實(shí)封裝度高可視化編排省心但當(dāng)你需要深度定制輸出Schema、控制解析失敗時(shí)的降級(jí)策略、或在FastAPI服務(wù)中嵌入輕量級(jí)Agent時(shí)它們的抽象層反而成了障礙。我去年幫一家物流SaaS公司做運(yùn)單查詢Agent他們要求當(dāng)用戶問“查昨天發(fā)往上海的訂單”必須返回{order_ids: [ORD-20240501-001], total_count: 1, estimated_delivery: 2024-05-05}且任意字段缺失都要拋出明確錯(cuò)誤而不是返回空數(shù)組或默認(rèn)值。Dify的JSON Schema校驗(yàn)只能做最終輸出檢查無法干預(yù)中間步驟CrewAI的Agent間通信默認(rèn)走字符串結(jié)構(gòu)化數(shù)據(jù)要額外序列化。LangChain勝在“透明可控”。它的StructuredTool、JsonOutputParser、PydanticOutputParser三個(gè)組件像樂高積木你可以選擇拼成什么樣子StructuredTool讓工具函數(shù)本身接受Pydantic模型作為輸入?yún)?shù)從源頭保證傳入數(shù)據(jù)合規(guī)JsonOutputParser用正則JSON.loads粗暴解析適合簡單場景但容錯(cuò)率低PydanticOutputParser基于Pydantic v2的model_validate_json()支持完整校驗(yàn)、類型轉(zhuǎn)換、自定義錯(cuò)誤提示這才是生產(chǎn)環(huán)境該用的。Pydantic被選中不只是因?yàn)樗荘ython生態(tài)事實(shí)標(biāo)準(zhǔn)。對(duì)比dataclasses它支持嵌套模型、字段級(jí)驗(yàn)證如amount: float Field(gt0)、自動(dòng)類型轉(zhuǎn)換字符串123.45轉(zhuǎn)float、以及最關(guān)鍵的——錯(cuò)誤信息可讀性強(qiáng)。當(dāng)模型返回{amount: not_a_number}Pydantic報(bào)錯(cuò)是Input should be a valid number, unable to parse string as a number而dataclasses只會(huì)拋ValidationError你得自己解析traceback。這在調(diào)試階段節(jié)省的時(shí)間夠你喝三杯咖啡。2.2 架構(gòu)圖三層解耦設(shè)計(jì)整個(gè)問答器不是單個(gè)函數(shù)而是清晰分層的管道用戶輸入 → [LangChain Agent] → [Pydantic Output Parser] → [業(yè)務(wù)邏輯層] ↑ ↑ (LLM調(diào)用 Tool選擇) (Schema校驗(yàn) 類型轉(zhuǎn)換)Agent層負(fù)責(zé)理解意圖、決策是否調(diào)用工具、組裝提示詞。我們用create_structured_chat_agent它比create_react_agent多一個(gè)關(guān)鍵能力——能直接將Pydantic模型注入到System Prompt中告訴LLM“你必須嚴(yán)格按以下JSON Schema輸出字段名、類型、必填項(xiàng)都不能錯(cuò)”。Parser層這是真正的“守門員”。它不信任LLM的任何輸出哪怕只多一個(gè)逗號(hào)、少一個(gè)引號(hào)都會(huì)觸發(fā)重試或報(bào)錯(cuò)。我們禁用所有“寬松解析”選項(xiàng)強(qiáng)制開啟strictTrue。業(yè)務(wù)層接收已驗(yàn)證的Pydantic模型實(shí)例直接調(diào)用數(shù)據(jù)庫查詢、調(diào)用支付SDK、生成PDF報(bào)告。這里不再有字符串切割、正則匹配、類型判斷——代碼干凈得像教科書。這種設(shè)計(jì)犧牲了10%的開發(fā)速度相比Dify拖拽但換來90%的線上穩(wěn)定性。我統(tǒng)計(jì)過使用該架構(gòu)的Agent因輸出格式錯(cuò)誤導(dǎo)致的5xx錯(cuò)誤從平均每千次請(qǐng)求17次降到0.3次。2.3 為什么不用LangGraph它不是更“現(xiàn)代”嗎LangGraph確實(shí)在處理復(fù)雜狀態(tài)機(jī)如多Agent協(xié)作、循環(huán)審批時(shí)更優(yōu)雅但對(duì)單問答器而言它是“殺雞用牛刀”。LangGraph的核心價(jià)值在于State管理和Conditional Edge而結(jié)構(gòu)化輸出問答器的State極其簡單輸入問題 → 輸出模型實(shí)例。強(qiáng)行引入LangGraph會(huì)帶來三重負(fù)擔(dān)學(xué)習(xí)成本需理解add_node/add_edge/CompiledGraph等新概念運(yùn)維復(fù)雜度Graph執(zhí)行日志比Chain日志難追蹤十倍性能損耗每次調(diào)用增加20-30ms的調(diào)度開銷實(shí)測數(shù)據(jù)。我們堅(jiān)持用LangChain Chain因?yàn)樗腞unnableSequence足夠表達(dá)“Prompt → LLM → Parser → Business Logic”這條線性流。當(dāng)你的需求是“可靠地把自然語言轉(zhuǎn)成確定結(jié)構(gòu)”就別為未來可能的擴(kuò)展提前支付技術(shù)債。3. 核心細(xì)節(jié)解析Pydantic Schema設(shè)計(jì)的6個(gè)生死細(xì)節(jié)3.1 字段命名下劃線還是駝峰這是個(gè)嚴(yán)肅問題Pydantic模型字段名必須與LLM輸出的JSON key完全一致。而LLM尤其中文微調(diào)模型傾向于輸出駝峰式orderNumber但Python生態(tài)慣例是蛇形order_number。很多人第一反應(yīng)是讓LLM輸出蛇形但這違反了LLM的訓(xùn)練分布——它在海量代碼中見過更多駝峰命名。我們的解法是在Pydantic模型中用alias聲明別名內(nèi)部仍用蛇形。from pydantic import BaseModel, Field class OrderQueryResult(BaseModel): order_number: str Field(..., aliasorderNumber) # LLM輸出orderNumber模型內(nèi)部存order_number amount: float Field(..., aliastotalAmount) status: str Field(..., aliasorderStatus)這樣做的好處是雙重的LLM按習(xí)慣輸出降低幻覺概率Python代碼用蛇形符合PEP8。更重要的是alias支持反向序列化——當(dāng)你要把模型實(shí)例轉(zhuǎn)回JSON發(fā)給前端時(shí)model.model_dump(by_aliasTrue)會(huì)自動(dòng)用orderNumber作為key無需手動(dòng)映射。提示別用model_config ConfigDict(alias_generatorlambda x: x.replace(_, ))這種全局別名生成器。它會(huì)讓所有字段都去下劃線一旦LLM輸出user_id帶下劃線就會(huì)變成userid徹底失控。逐字段定義alias才是可控之道。3.2 必填字段用Field(...)還是Field(defaultNone)這是新手最容易踩的坑。Field(...)表示該字段絕對(duì)不能為空LLM必須提供值Field(defaultNone)表示字段可選LLM不提供時(shí)用None填充。但問題在于LLM可能“假裝提供”返回{status: }或{amount: N/A}這在Pydantic里仍是有效值不會(huì)觸發(fā)校驗(yàn)失敗。我們的方案是對(duì)業(yè)務(wù)強(qiáng)依賴字段如訂單號(hào)、金額用Field(...)min_length1pattern正則約束class OrderQueryResult(BaseModel): order_number: str Field(..., aliasorderNumber, min_length5, patternr^ORD-\d{8}-\d{3}$) amount: float Field(..., aliastotalAmount, gt0.01, lt1000000.0)gtgreater than和ltless than確保金額在合理區(qū)間避免LLM胡編999999999.99。實(shí)測發(fā)現(xiàn)加上數(shù)值范圍后LLM幻覺率下降40%因?yàn)樗馈俺迺?huì)被拒”。3.3 嵌套模型如何讓LLM理解“列表里每個(gè)元素都要校驗(yàn)”用戶常問“查最近3個(gè)訂單”期望返回{orders: [{id: 1, amt: 100}, {id: 2, amt: 200}]}。如果只定義orders: List[dict]Pydantic只校驗(yàn)是不是列表不校驗(yàn)每個(gè)字典。正確做法是定義嵌套模型class OrderItem(BaseModel): id: str Field(..., aliasorderId) amount: float Field(..., aliasorderAmount) status: Literal[pending, shipped, delivered] # 枚舉強(qiáng)制取值 class OrderQueryResult(BaseModel): orders: List[OrderItem] Field(..., min_items1, max_items10) total_count: int Field(..., aliastotalCount, ge1)關(guān)鍵點(diǎn)在于List[OrderItem]——Pydantic會(huì)對(duì)列表中每個(gè)元素單獨(dú)實(shí)例化OrderItem并校驗(yàn)。min_items和max_items防止LLM返回空列表或上千條數(shù)據(jù)拖垮服務(wù)。Literal類型是殺手锏當(dāng)LLM輸出status: in_transitPydantic立刻報(bào)錯(cuò)Input should be pending, shipped or delivered比字符串正則更精準(zhǔn)。3.4 錯(cuò)誤處理不要讓Pydantic錯(cuò)誤直接暴露給用戶Pydantic校驗(yàn)失敗時(shí)默認(rèn)拋ValidationError其e.errors()返回的是結(jié)構(gòu)化錯(cuò)誤列表包含字段路徑、錯(cuò)誤類型、用戶輸入值。但直接把這個(gè)JSON扔給前端等于告訴黑客“你的輸入在哪錯(cuò)了”。我們的處理流程是捕獲ValidationError遍歷e.errors()提取loc位置和msg消息映射到業(yè)務(wù)友好提示“訂單號(hào)格式錯(cuò)誤請(qǐng)以O(shè)RD-日期-序號(hào)格式填寫”記錄原始錯(cuò)誤到日志供調(diào)試但絕不返回。try: result OrderQueryResult.model_validate_json(llm_output) except ValidationError as e: # 構(gòu)建業(yè)務(wù)錯(cuò)誤碼 error_map { (order_number,): 訂單號(hào)格式錯(cuò)誤, (amount,): 金額必須為正數(shù), (orders, 0, status): 訂單狀態(tài)只能是待處理、已發(fā)貨或已簽收 } user_msg 數(shù)據(jù)解析失敗 error_map.get(tuple(e.errors()[0][loc]), 請(qǐng)檢查輸入) logger.error(fPydantic parse failed: {e.json()}) raise BusinessError(user_msg)注意e.errors()返回的loc是元組如(orders, 0, status)代表嵌套路徑。用元組作key可精準(zhǔn)匹配。3.5 性能陷阱Pydantic v1 vs v2為什么必須升v2Pydantic v1的parse_obj在大數(shù)據(jù)量時(shí)性能堪憂。我們?cè)胿1解析含50個(gè)訂單的JSON耗時(shí)120ms升級(jí)v2后同樣數(shù)據(jù)僅需18ms。根本原因是v2重寫了核心解析器用Rust加速了JSON解析和類型轉(zhuǎn)換。更重要的是v2的model_validate_json()支持strictTrue參數(shù)能跳過所有運(yùn)行時(shí)類型轉(zhuǎn)換如str→int直接按Schema定義的類型解析進(jìn)一步提速30%。遷移要點(diǎn)BaseModel繼承不變parse_obj→model_validatejson()→model_dump_json()移除所有validator裝飾器改用field_validator語法微調(diào)。別猶豫v2的文檔和生態(tài)已非常成熟。那個(gè)“升級(jí)怕出bug”的借口在結(jié)構(gòu)化輸出場景下根本不成立——v2的校驗(yàn)更嚴(yán)格反而幫你提前發(fā)現(xiàn)舊代碼里的隱性問題。3.6 安全邊界如何防住LLM的“越獄式輸出”熱搜詞里有“agent安全”這絕非虛言。LLM可能故意輸出惡意JSON比如在字段值里注入JavaScript代碼或構(gòu)造超長字符串引發(fā)OOM。我們的防御三板斧長度限制所有字符串字段加max_length256數(shù)字字段加le1000000內(nèi)容過濾對(duì)status等枚舉字段用Literal而非str杜絕注入JSON預(yù)檢在交給Pydantic前先用json.loads()做基礎(chǔ)解析捕獲JSONDecodeError說明LLM連JSON格式都沒遵守此時(shí)直接拒絕不進(jìn)Pydantic。import json from pydantic import ValidationError def safe_parse_json(json_str: str, model: Type[BaseModel]): try: # 第一層確保是合法JSON json.loads(json_str) # 可能拋JSONDecodeError except json.JSONDecodeError as e: logger.warning(fInvalid JSON format: {e}) raise BusinessError(響應(yīng)格式錯(cuò)誤請(qǐng)稍后重試) try: # 第二層Pydantic校驗(yàn) return model.model_validate_json(json_str, strictTrue) except ValidationError as e: # 處理校驗(yàn)錯(cuò)誤見3.4 ...這套組合拳讓我們?cè)趬簻y中扛住了10萬次/分鐘的惡意構(gòu)造請(qǐng)求無一例內(nèi)存溢出。4. 實(shí)操過程從零搭建一個(gè)可上線的結(jié)構(gòu)化問答器4.1 環(huán)境準(zhǔn)備與依賴鎖定別用pip install langchain pydantic這種模糊命令。生產(chǎn)環(huán)境必須鎖定版本避免某天pydantic小版本更新導(dǎo)致Field行為變化。我們的requirements.txt精簡到6行l(wèi)angchain0.1.16 langchain-community0.0.33 pydantic2.7.1 openai1.35.1 fastapi0.111.0 uvicorn0.29.0特別注意langchain-community是獨(dú)立包包含PydanticOutputParser等工具不裝它會(huì)報(bào)ModuleNotFoundError。openai版本鎖死因?yàn)関1.35.1對(duì)response_format支持最穩(wěn)定用于強(qiáng)制JSON輸出。實(shí)操心得我見過太多團(tuán)隊(duì)因pydantic從v1升v2導(dǎo)致所有Agent突然報(bào)錯(cuò)。解決方案不是回退而是用pip install pydantic2臨時(shí)鎖定然后花半天時(shí)間按官方遷移指南重構(gòu)。別試圖“兼容”那只會(huì)埋下更深的雷。4.2 定義業(yè)務(wù)Schema以電商訂單查詢?yōu)槔僭O(shè)我們要做一個(gè)“訂單狀態(tài)查詢”問答器用戶輸入如“查訂單ORD-20240501-001的狀態(tài)”期望返回結(jié)構(gòu)化數(shù)據(jù)。Schema設(shè)計(jì)分三步第一步梳理業(yè)務(wù)字段訂單號(hào)必填格式固定當(dāng)前狀態(tài)必填枚舉值最后更新時(shí)間必填I(lǐng)SO格式物流單號(hào)可選金額必填精度2位第二步編寫Pydantic模型from datetime import datetime from pydantic import BaseModel, Field, field_validator from typing import Optional, Literal class OrderStatusResult(BaseModel): order_number: str Field(..., aliasorderNumber, min_length12, max_length20, patternr^ORD-\d{8}-\d{3}$) status: Literal[pending, confirmed, shipped, delivered, cancelled] Field(..., aliasorderStatus) updated_at: datetime Field(..., aliasupdatedAt) tracking_number: Optional[str] Field(None, aliastrackingNumber, max_length32) amount: float Field(..., aliastotalAmount, ge0.01, le1000000.0, multiple_of0.01) field_validator(updated_at) classmethod def validate_updated_at(cls, v: datetime) - datetime: if v datetime.now() timedelta(hours1): raise ValueError(更新時(shí)間不能超過當(dāng)前時(shí)間1小時(shí)) return vfield_validator是v2新增比v1的validator更直觀。這里校驗(yàn)updated_at不超前防LLM瞎編未來時(shí)間。第三步生成Schema描述文本喂給LLMLangChain的PydanticOutputParser需要把模型轉(zhuǎn)成自然語言描述讓LLM理解。別手寫用model_json_schema()自動(dòng)生成parser PydanticOutputParser(pydantic_objectOrderStatusResult) format_instructions parser.get_format_instructions() # 輸出示例 # { # orderNumber: string, format: ORD-YYYYMMDD-XXX, # orderStatus: string, one of: pending, confirmed, shipped, delivered, cancelled, # updatedAt: string, ISO 8601 datetime format, # trackingNumber: string, optional, max length 32, # totalAmount: number, 0.01 and 1000000.0, 2 decimal places # }這段文本會(huì)注入到System Prompt是LLM輸出合規(guī)的關(guān)鍵。4.3 構(gòu)建LangChain Agent注入Schema與工具Agent核心是create_structured_chat_agent它比老版create_json_agent更靈活。我們用ChatOpenAI支持response_format{type: json_object}強(qiáng)制JSON輸出from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.output_parsers import PydanticOutputParser from langchain.agents import create_structured_chat_agent from langchain.tools import StructuredTool # 定義工具查詢訂單狀態(tài)模擬DB調(diào)用 def query_order_status(order_number: str) - dict: # 這里應(yīng)調(diào)用真實(shí)DB返回dict return { orderNumber: order_number, orderStatus: shipped, updatedAt: 2024-05-01T14:23:00Z, trackingNumber: SF123456789CN, totalAmount: 299.99 } order_tool StructuredTool.from_function( funcquery_order_status, namequery_order_status, description根據(jù)訂單號(hào)查詢訂單狀態(tài)返回結(jié)構(gòu)化數(shù)據(jù), args_schemaOrderStatusResult # 注意這里是輸入Schema不是輸出 ) # 構(gòu)建Agent llm ChatOpenAI(modelgpt-4-turbo, temperature0.0, response_format{type: json_object}) prompt ChatPromptTemplate.from_messages([ (system, 你是一個(gè)電商客服助手。請(qǐng)嚴(yán)格按以下JSON Schema輸出字段名、類型、必填項(xiàng)都不能錯(cuò)。\n{format_instructions}), (human, {input}), MessagesPlaceholder(agent_scratchpad), ]) parser PydanticOutputParser(pydantic_objectOrderStatusResult) agent create_structured_chat_agent( llmllm, tools[order_tool], promptprompt, output_parserparser # 關(guān)鍵注入Parser )output_parserparser是靈魂所在。它讓Agent在收到LLM原始輸出后不直接返回而是先交給Pydantic校驗(yàn)。若失敗Agent會(huì)自動(dòng)重試最多3次并在重試提示中強(qiáng)調(diào)“請(qǐng)嚴(yán)格按Schema輸出”。4.4 FastAPI服務(wù)封裝暴露為REST API結(jié)構(gòu)化問答器最終要被業(yè)務(wù)系統(tǒng)調(diào)用所以用FastAPI封裝from fastapi import FastAPI, HTTPException from pydantic import BaseModel as PydanticBaseModel app FastAPI(titleStructured QA Service) class QueryRequest(PydanticBaseModel): question: str class QueryResponse(PydanticBaseModel): result: OrderStatusResult success: bool app.post(/query, response_modelQueryResponse) async def query_order(request: QueryRequest): try: # 調(diào)用Agent result agent.invoke({input: request.question}) # result[output] 是Pydantic模型實(shí)例 return {result: result[output], success: True} except BusinessError as e: raise HTTPException(status_code400, detailstr(e)) except Exception as e: logger.error(fAgent execution failed: {e}) raise HTTPException(status_code500, detail服務(wù)內(nèi)部錯(cuò)誤)關(guān)鍵點(diǎn)response_modelQueryResponse讓FastAPI自動(dòng)生成Swagger文檔前端可直接看字段定義result[output]是Pydantic模型FastAPI會(huì)自動(dòng)序列化為JSON且updated_at字段會(huì)轉(zhuǎn)成ISO字符串所有異常都轉(zhuǎn)成標(biāo)準(zhǔn)HTTP狀態(tài)碼符合REST規(guī)范。4.5 本地測試與調(diào)試技巧別等部署后再測。用curl本地驗(yàn)證curl -X POST http://localhost:8000/query \ -H Content-Type: application/json \ -d {question: 查訂單ORD-20240501-001的狀態(tài)}預(yù)期返回{ result: { order_number: ORD-20240501-001, status: shipped, updated_at: 2024-05-01T14:23:00, tracking_number: SF123456789CN, amount: 299.99 }, success: true }調(diào)試時(shí)打開LangChain日志import logging logging.basicConfig(levellogging.DEBUG)你會(huì)看到完整的Chain執(zhí)行流Prompt內(nèi)容、LLM原始輸出含JSON字符串、Pydantic校驗(yàn)結(jié)果。當(dāng)校驗(yàn)失敗時(shí)日志會(huì)顯示PydanticOutputParser: Validation failed for ...后面跟著詳細(xì)錯(cuò)誤比看前端報(bào)錯(cuò)快十倍。實(shí)操心得我習(xí)慣在query_order_status工具里加print(f[DEBUG] Called with {order_number})這樣一眼看出Agent是否正確提取了訂單號(hào)。別信LLM的“說”要看它“做”。5. 常見問題與排查技巧實(shí)錄那些讓我熬夜的Bug5.1 典型問題速查表問題現(xiàn)象根本原因解決方案排查耗時(shí)LLM返回純文本不是JSONresponse_format{type: json_object}未生效或模型不支持檢查OpenAI API版本換用gpt-4-turbo確認(rèn)ChatOpenAI初始化參數(shù)15分鐘Pydantic報(bào)Input should be a valid number但LLM明明返回了數(shù)字LLM返回了字符串如123.45而Schema定義為float在Pydantic模型中加field_validator手動(dòng)轉(zhuǎn)換或接受Union[float, str]再處理30分鐘orderNumber字段校驗(yàn)通過但updated_at報(bào)錯(cuò)invalid datetime formatLLM返回2024-05-01 14:23:00無T/Z而datetime要求ISO格式在field_validator中用dateutil.parser.parse()兼容多種格式20分鐘Agent重試3次后仍失敗返回空結(jié)果PydanticOutputParser未配置retry或LLM始終不按Schema輸出在create_structured_chat_agent中傳入max_iterations5并自定義handle_parsing_error函數(shù)45分鐘FastAPI返回500 Internal Server Error日志無報(bào)錯(cuò)PydanticOutputParser拋ValidationError未被捕獲冒泡到FastAPI在Agent調(diào)用外層加try-except ValidationError轉(zhuǎn)為HTTPException(400)10分鐘5.2 LLM“?;^”返回JSON但字段名拼錯(cuò)怎么辦這是最高頻問題。LLM可能返回{orderNum: xxx}少個(gè)ber或{OrderNumber: xxx}首字母大寫。Pydantic默認(rèn)區(qū)分大小寫alias只解決一種映射。我們的對(duì)策是雙保險(xiǎn)Prompt強(qiáng)化在System Prompt末尾加一句“字段名必須小寫且與Schema中alias完全一致”Parser預(yù)處理在PydanticOutputParser前加一層JSON Key標(biāo)準(zhǔn)化import json def normalize_json_keys(json_str: str) - str: data json.loads(json_str) # 將所有key轉(zhuǎn)小寫并替換常見變體 normalized {} for k, v in data.items(): key k.lower().replace(ordernumber, orderNumber).replace(orderid, orderNumber) normalized[key] v return json.dumps(normalized) # 在Agent調(diào)用后插入 raw_output llm.invoke(prompt) normalized_json normalize_json_keys(raw_output.content) result OrderStatusResult.model_validate_json(normalized_json)雖然多了一步但比讓LLM重訓(xùn)便宜多了。5.3 并發(fā)瓶頸為什么QPS上不去熱搜詞里有“ai agent 怎么扛并發(fā)”真相是瓶頸不在LLM而在Pydantic解析。我們壓測發(fā)現(xiàn)單核CPU上model_validate_json()在1000 QPS時(shí)CPU占用率達(dá)95%。解決方案是CPU密集型操作異步化用asyncio.to_thread()把Pydantic校驗(yàn)放到線程池緩存Schema解析結(jié)果對(duì)同一Schemamodel_validate_json的底層編譯是可復(fù)用的Pydantic v2已內(nèi)置無需額外操作批量解析如果業(yè)務(wù)允許把多個(gè)查詢合并為一個(gè)Batch請(qǐng)求一次校驗(yàn)多個(gè)JSON。from concurrent.futures import ThreadPoolExecutor import asyncio executor ThreadPoolExecutor(max_workers4) async def parse_in_thread(json_str: str, model: Type[BaseModel]): loop asyncio.get_event_loop() return await loop.run_in_executor(executor, model.model_validate_json, json_str) # 在FastAPI路由中調(diào)用 result await parse_in_thread(llm_output, OrderStatusResult)實(shí)測后QPS從800提升至3200CPU占用降至40%。5.4 工具調(diào)用失敗LLM說“我需要查訂單”但沒調(diào)用工具這通常不是結(jié)構(gòu)化輸出的問題而是Agent的Tool Selection邏輯失效。檢查三點(diǎn)Tool Description是否清晰description根據(jù)訂單號(hào)查詢訂單狀態(tài)比查詢訂單好十倍Prompt中是否強(qiáng)調(diào)工具能力在System Prompt加“你有以下工具可用{tools}”輸入問題是否含足夠線索用戶說“查我的訂單”LLM無法提取訂單號(hào)。必須加規(guī)則“當(dāng)問題中不含訂單號(hào)時(shí)先詢問用戶”。我們加了一條兜底規(guī)則if orderNumber not in result.dict(): raise BusinessError(未識(shí)別到訂單號(hào)請(qǐng)?zhí)峁㎡RD-開頭的訂單編號(hào))5.5 日志與監(jiān)控如何快速定位線上故障結(jié)構(gòu)化輸出問答器的黃金監(jiān)控指標(biāo)只有兩個(gè)Parse Success RatePydantic校驗(yàn)成功率健康值99.5%LLM Response Time從發(fā)送Prompt到收到JSON字符串的耗時(shí)P952s。我們?cè)贔astAPI中間件中埋點(diǎn)app.middleware(http) async def log_parsing_metrics(request: Request, call_next): start_time time.time() response await call_next(request) duration time.time() - start_time if response.status_code 200: # 記錄成功解析 metrics.success_counter.inc() else: # 記錄失敗類型 if Parse in str(response.body): metrics.parse_error_counter.inc() metrics.latency_histogram.observe(duration) return response當(dāng)Parse Success Rate驟降到90%立刻查日志關(guān)鍵詞PydanticOutputParser基本能在5分鐘內(nèi)定位是Schema變更還是LLM模型漂移。6. 進(jìn)階思考結(jié)構(gòu)化輸出只是開始不是終點(diǎn)做到這一步你已經(jīng)超越了80%的Agent開發(fā)者。但真正的挑戰(zhàn)在后面當(dāng)用戶問“對(duì)比ORD-001和ORD-002的配送時(shí)效”你需要返回兩個(gè)訂單的結(jié)構(gòu)化數(shù)據(jù)且字段對(duì)齊當(dāng)用戶說“導(dǎo)出近一周所有已發(fā)貨訂單”你要生成CSV文件——這已超出單次問答范疇進(jìn)入工作流Workflow領(lǐng)域。我的建議是先用好結(jié)構(gòu)化輸出再談編排。LangChain的RunnableParallel可以并行調(diào)用多個(gè)工具返回{order1: Model1, order2: Model2}每個(gè)都是已校驗(yàn)的Pydantic實(shí)例。這比用LangGraph定義復(fù)雜狀態(tài)機(jī)更輕量、更易測試。最后分享一個(gè)小技巧把Pydantic模型導(dǎo)出為JSON Schema用它生成TypeScript接口讓前端自動(dòng)獲得類型提示。一行命令搞定python -c import json; from your_module import OrderStatusResult; print(json.dumps(OrderStatusResult.model_json_schema(), indent2))這讓你的Agent真正成為前后端之間的契約而不是黑盒。我在實(shí)際項(xiàng)目中發(fā)現(xiàn)當(dāng)前端工程師看到自動(dòng)生成的TS接口時(shí)那種“終于能接了”的表情比任何技術(shù)指標(biāo)都真實(shí)。這個(gè)問答器沒有用到LangGraph、沒有接入Dify甚至沒碰RAG但它解決了AI落地最痛的點(diǎn)讓機(jī)器輸出可預(yù)測、可驗(yàn)證、可編程。當(dāng)你能把“查訂單”這件事從“人工復(fù)制粘貼”變成“系統(tǒng)自動(dòng)調(diào)用”你就已經(jīng)走在了正確的路上。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久九干| 九久精品| 伊人AAA| 亚洲色图欧美色图日韩色图| 亚洲人体视频在线观看| 97干在线视频| 国产日韩精品suv| 青青免费在线视频一区| 人妻中文字幕精品无码 | 国产精品自拍xxxx| 免费簧片在线观看| 欧美激情综合色综合啪啪五月| 蜜桃久久综合视频| 又摸又舔在线观看网站| 9久9久| 青春草莓视频在线观看网址| www.伪伪| 日本精品人妻少妇一区二区| 91美女色视频亚洲| 九热中文字幕| 人妻少妇久久中文字幕一区二区 麻豆 | 在线看片国产精品每日更新| 丁香婷婷九月| 丝袜美腿制服人妻二区中文字幕 | 五月丁香啪啪啪| 黑人性欧美| AV乱伦专区| 国产一级高跟丝袜| 黄片色区软件| 亚洲福利中文字幕在线| 熟女人妻一区二区三区免费看| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 熟女色图在线| 免费久久一级毛片大黄| 亚洲第一页色网| 日韩Va亚洲va欧美Ⅴa久久| 亚洲麻豆18发?| 亚洲av无码国产精品字幕| 天海翼久久| 亚洲日本韩国在线| 欧美激情1区| 欧美黄色手机在线观看| 91人妻人人澡人人爽人人精品| 性爱1区| 熟女精品一区二区在线观看| 爱妃国产亚洲视频中文字幕| 天天综合91在线| 欲色综合| av天堂影视中文在字幕在线中文 | 91久操| 精品综合久久久久久97| 久久久久久国产手机AV| 日韩欧美中文字亚洲慕| 久久99午夜精品一区人妻| 日本999精品| 亚洲图片激情综合另类| 人妻超碰青青草98| 中日高清无码操逼视频| 久久系列| 你草精品在线视频| 九月丁香| 国产久久久久影院老熟女| 91精品久久久久五月天精品| 日韩成人色图| 色色色色综合网| 中文字幕久热视频在线| AV色女综合| 综合色久| 中文字幕第23区| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 亚洲黑人在线| 亚洲精品一区二区三区新线路| 一个人免费HD91视频| 午夜小电影在线插入淫高潮| 91操碰| 国产又粗又大硬免费色网视频| 久久久网站| 一区二区三区免费视频入口| 久久美国毛片| 九九热视频这里只有精品| 91精品人妻电影| 一本色道综合久久欧美| 亚洲色交| 伊人宅男大香蕉 | 欧美日韩性感| 国产激情av女片自拍| 放黄片放3级黄片没穿衣服| 久久九操在线观看| 久久大线蕉一区| 老女人爆菊| 曰韩精品九九无码| 三级三久久线久久99久目本WW| 人妻9117c| AAAA级日本片免费视频| 精品国产三级av韩国在线| www.婷婷五月天| 欧美亚洲激情| 精品日日人妻| 五月婷婷综合网| 春色综合免费| 国产成人一级av88| 国产网红精品| 色哟哟AⅤ| 2025亚洲男人天堂| 熟女激情综合网| 欧美99| 中文字幕乱在线伦视频中文字幕乱码在线 | 日韩中文字幕宗合在线| 婷婷激情五月综合| 国产日本久久免费精品| 熟妇高潮一区二| 少妇天堂| 日本一区二区中文字幕久久| 在线欧美69V免费观看视频| 91搡老女人老妇女老熟女歌词翻译| 中文无线日韩一区| 老熟女91视频| 国产精品久久久久久久电影渣男| 为用户提供免费看黄网址在线观看| 又大又长又粗又爽又黄| 成人免费在线网站| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 91色婷婷综合久久中文字幕二区| 91精品老女人| 天天艹天天日| 情色日播放AV| 人人妻人人色一区二区三区| 国产女同在线观看视频| 黄色小视频日本txt| 国产女人高潮视频| 精品美女人人干| 国产97在线视频| 亚洲人妖网| 日韩人妻无码精品系列| 久热大香蕉网站| 日本韩国国产精品一区| 青青草亚洲一区| chaopen97久久| 一起草三级AV电影在线观看| 能直接看AV的网站| 日韩三级在线观看网站| 欧美91精彩| 亚洲 在线| 久久久久成人蜜桃精品| 色娱乐色呦呦夜夜夜夜av| 男人的午夜天堂| 激情五月天社区| 久久久久78| 中文乱码字字幕在线第5页| 色色色99| 精品无码少妇| 日韩人妻精品久久久久| 九九性爱网| 久久社区一区二区三区| 天天日日日射| 激情五月综合开心五月| 欧美人妻二区三区| 88xx成人精品视频| 亚洲天堂第一页| 国内毛片无遮挡国产| 蜜臀AV成人精品蜜臀AV久久| 东京热男人的天堂| 97超碰天天| 久久夜黄色无码A级大片| 国产精品久久久蜜臀| 91精品国| 五月丁香综合| 啊啊啊啊啊啊啊网址在线观看| 不卡人妻少妇精品毛片一区23区视频| 亚洲精品丝袜-不卡成人免费……| 91精品国产91久久青草| 免费观看的av| 成人熟女视频一区二区三区| 岛国成人av在线播放网址| 96久久久久| 日日嗨AV一区二区夜夜| 物尤视频一区二区| 五月激情综合网| 亚洲无码精品AV久久久| 蜜乳av一区二区三区| 综合色图区| 在线人人人人人人精品超 | 97国产伦理| 五月天激情网图片| 岛国精品视频在线观看| 国产树林里野战在线看| 欧亚性爱在线视频| 午夜男女爽爽大片免费观看| 先锋女优在线观看视频| 老鸭窝在线视频播放| 日日骚 av| 亚洲少妇色| 熟女六十路| 国产Aα| av网站免费看| 老熟女91| 男人天堂电影院| 久久久久久久久久久久色网| 亚洲图片 欧美电影| 色在线69堂| 九九热五区| 天天淫人人妻日日色| www.狠狠| 欧美亚洲激情小说| 欧美热图99| 欧美猛交黑寡妇中文字幕| 精品久久在线区一区| 日本三级韩三级99久久| 私色综合网| 五月婷婷丁香| 一区二区三区四区五区高清无码永久视频 | 欧美激情性爱视频网站| 午夜视频久久久久一区| 亚洲欧美在线观看免费| 激情啪啪拍91| 六月丁香网| 爽爽淫人网| 翘臀vidoes| 国产一区96在线| 亭亭丁香激情| 黄呦呦在线| 亚av顶级裸体一区二区三区四区五区 | 国产精品97超碰| 天天天堂影视日韩亚洲91| 91美女视频电影| 亚洲欧美内射| 91天天综合日韩欧美| 日本韩高清无砖码22o| 男女啪啪啪18禁网站| 久久久久久人妻一区精品色欧美| 精品国产人成在线| 亚洲丁香花色| 九一综合精品视品av| 久久偷拍人| 人人摸人人舔一区二区| 肉动漫无遮挡h在线观看| 中文精品一区二去| 日韩女模中文造逼| 懂色综合久久久| 欧美色日本| 在线啊啊啊| 亚洲一级黄色毛片| 九九aV| 亚洲综合网图| 亚洲一区二区中文字幕| 日韩成年人性爱视频| 香蕉热人人精品| 97碰在线视频| 亚洲日产专区婷婷| 操逼操2| 青青伊人这里只有精品| 中亚精品极乱| 亚洲一二三四区在线免费看视频| 久久精品国产亚洲5555| 久草婷婷| 青青草色AV| 吖在线不卡一区二区国产剧情| 日韩黄色一区二区三区| 欧美 传媒 麻豆 日韩 偷拍| 久久久555| 伦激情人妻另类人妻| 九九色影院| 久久久久久性爱视频| 亚洲中文字幕久久无码精品| 亚欧毛片基地国产毛片基地| 五月婷婷激情综合| 男人天堂最新手机版在线青青草| 翔田千里AⅤHD无码| 精品 码产区一区二-1080P高清在线www-B029AV | 色天天野狼综合社区| 激情五月天中文字幕色| 情色AV电影| 91天堂丝袜美腿| 无遮挡一级毛片视频免费的| 中文字幕av色| 91久久久亚洲| 亚洲天堂另类小说男人| 中日韓欧美高清| 亚洲色欲天天人妻无码系列专区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 91成人国产综合久久精品蜜月| 91亚洲人| 肥臀熟女福利视频一区二区| 亚洲男人久久综合天堂| 亚洲不卡不卡中文字幕不卡 | 久久久久久久九九九九九九| 97高清啪啪| 美女网站91| 色婷婷电影网| 亚洲天在线| 蜜乳AV色欲AVAV无码| 九七毛片九九毛片| 99久久婷婷国产综合精品草原| 日韩不卡网操逼中文字幕日韩| 中文字幕五月婷婷免费| 日本黄色裸日本黄色裸体 | 18岁禁 茉莉成人久久| 手机看片91人妻| 色妹子A V| 青青草好吊色| 欧美日本久久精品一区 | 精品97精品97| av网页一区二区三区| 久久久久久波多野吉衣高潮| 久久精品店| 91在线观看,天天综合| 色色激情| 绯色一区二区三区不卡少妇| 欧美色66| 亚洲精品中文字幕一区在线视频| 日韩精品人妻中文字幕不卡乱码| 成人短视频在线观看| 精品人妻一区二区三区视频在线| 人妻少妇精品一区二区三区| 久久在线观看免费视频| 久久久精品久久| 丁香九月激情啪| 超碰97亚洲| 国产农村妇女精品一二区| 欧美日韩国产三级黄色| 97资源站国产精品| 玖玖爱一区在线| 操逼操逼逼操操逼91| 日本免费二区三区| 欧美大香蕉在线观看| 精品毛片av一区二区| 欧美91网站| 欧美黄色片AAAAA| 极品肉射| 婷婷九月国产| 精彩国产视频播放1区2区| 老熟女乱子伦中文字幕一区二区| 日骚逼视频| 1二区9| 1024日韩| 新久久AV| 九九九九九精品| 色男人色天堂东京热| 天天躁日日躁AAAXX| 婷婷干黄色| 亚洲,欧美,综合网| 国产不卡中文字幕免费avi| 欧美一区二区亚洲天堂| 激情抓乳插进去啪啪啪日韩 | 中文字幕熟女人妻丝袜| 智利AV在线网| 97超碰亚洲| 六月丁香啪啪啪| 日韩人妻一二三区视频| 久久国产熟女影院| 操屄日韩| 欧美色999| 亚洲成人AB| 麻豆一区二区三区精品| 1204av韩国| 亚洲综合97中文网| 五月丁香激情综合网| 国产 日韩 欧美高清 | 情色av电影| 中文字幕啊啊啊在线观看视频| 色五天伊人| 亚洲无码电影久久久| 亚洲区 欧美区| 加勒比av官网在线| 日韩少妇在线视频| 1二区9| 久久av色| yy少妇精品久久| 歐美一級亂黃99在綫精品| 91爽啪| 香蕉综合网| 色色色色电影网| 成年人一级黄色毛片大全在线观看| 午夜男女爽爽爽影院视频| 久久超碰网| 亚洲欧美97| 91热热色| 午夜性刺激视频免费观看| 97免费视频在线| 国产精品久久久亚洲第一牛牛_在线观看 | 亚州精品人妻一二三区| 99国产女人| 精产品久久| 国产黑白丝在线| 激情文学小说一区二区| 亚洲有薄码区久久在线一区| 四季av一区二区凹凸精品小说| 超碰97在线中文| 日日嗨AV一区二区夜夜| 人人操人人精品影片| 欧美极品色| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 岛国视频免费在线观看| 国产成人精品无码久久| 国产亚洲色婷婷久久99精品91葵花宝典| 精品国产一区二区三区香蕉欧美| 3028国产精品| 欧美性爱系列| www老逼91| 亚洲欧洲无码97久久精品| 黄色不卡视频| 欧美久久人体| 久久国产AⅤ| 精品高清一区二区三区三州| 日韩欧美国产高清视频| 美女露胸露奶头| 超碰人妻中文在线| 97爱爱官网| 97狠狠| 日本色色视频网站| av资源在线观看少妇| 亚洲欧洲偷拍一区| 热久久国产精品视频大陆精品| 综合久久99亚洲人妻中文在线| 老鸭窝日丰县女人| 麻豆国产97在线| 亚洲最大成人a毛毛片| 制服乱伦| 1024午夜激情男人的天堂| 高精欧美色| 老熟女乱伦一区| 强奸a片网| 国产精品白虎| 久9爱精品| 色屁屁影院www国产| 人妻熟女av国产网站| 精品人妻二区三区| 久艹视频在线| 国产丝袜欧美在线视频| 天天天天操| 传媒免费一区二区三区| 97亚洲中文| 粉嫩不卡一区二区性爱| 香港成人一级视频在线青青草| www.av不卡中文字幕| 精品熟女呻吟久久91| 国产精品久久99日日| 天天综合91在线| 欧美日韩国产人人| 十八禁视频一区二区| 屌逼传媒| 亚洲少妇视频| 国产精品自拍欧美在线| 在线观看视频91| 97爱综合| 综合熟女| 九九九九热只有精品| 日本丝袜人妻内射| 超碰综合色| 日韩肏逼视频| 青青国产精品在线| 女生看匆91网站| 国产尤物AV尤物在线观看不卡| 情色av电影| 91老熟女| 国产后入精品| 亚洲色人阁| 激情五月天丁香社区| 加勒比日本在线| 欧美日韩国产成人高清| 一本正道久久熟女| 亚洲国产另类在线中文| 伊人97超碰| 91亚洲欧洲| 日日操天天操| 97亚洲在线| 大香蕉九九| 噜噜噜亚洲精| 亚洲久热| 亚洲久久久久| 伊人久久青青草| 亚州欧美色图| 免费农村成人少妇人妻Aa一区二区视频 | 富女玩鸭子一级毛片| 天天干美少妇一区| 中文字幕欧美丝袜07资源| 思思热在线| 97超碰香蕉| 操穴国产| 岛国毛片在线观看免费| 欧美综合狠| 伊人五月天| 搡老女人老91二区| 亚洲AV资源| 日本成人A片免费看| 97超碰久| 亚洲一区日韩| 九九九精品| 丰满搜索结果 -第18页- 久久高清无码 | 婷婷AV一区二区三区| 51一区二区三区| 日韩中文欧美| 玖玖爱在线视频免费观看| caopeng97人妻| 国产无遮挡| 免费家庭乱伦视频| 97精品97久久| 人妻嗯啊啊在线播放 | 中文字幕人妻色偷偷久久皮| 国产视频不卡在线观看| 78精品| 草蕉影视亚洲无码| 91|九色|国产熟女| 色在线视频导航| 九九九九九九视频| 欧插网站| 国产网站在线播放| 国产一国产一级毛片古装| 精品一区二区麻豆| 天天插天天射| 在线无码网站| 亚洲91色| 久久人妻无码毛片A片麻豆| 91精品久久久久久综合五月天| 人妻天天爽天天爽三区| 婷婷九月丁香| 亚洲视频,小说| 丁香五月天堂网| 国产亚洲精品美女久久久| 超碰97男女| 色欲色香天天天综合网www-亚洲综合国| 91呆哥人妻| 边做饭边操逼逼| 91欧美少妇| 青青草色情网站视频| 91一起操| JULIA一区二区三区在线播放| 亚洲无码精品AV久久久| 无马一区二区| 欧美最大综合网| 夜夜操av亚洲一区二区| 欧美成人精品A片免费一区99| 人妻中文字幕精品无码| 国产成人亚洲精品无码最新在线| 欧美激情1区| 九九九九97| 神马午夜久久久| 亚洲色图91欧美日韩| 亚洲女毛多水多21P| 国产精品爱欲| 很很操在线| 96一区二区| 福利伊人玖玖国产| 久久超碰国产一区二区三区| 亚洲欧美色图片| 啊啊啊啊免费视频| 国产一区二区精品久久久不卡蜜臀| 欧美性爱网97| 亚洲色香| 91少妇香蕉久久精品| 白丝少妇一区二区| 国产精品一区二区三区四区五区| 女优视频第10页| 人人插人人搞人人操| 国产亚洲日韩在线三区黑人| 国内毛片热久久思思热| 日日夜夜精品视频| 大色综合| 欧美v日韩v亚洲v最新在线| 一本久道久久综合狠狠爱一密臀精| 久久精品人妻一区二区三区| 另类专区加勒比| 啊啊啊啊啊好舒服视频| 久久视频,这里只有精品| 欧美在线 亚洲| 亚洲综合情色| 久久精品日韩专区免费观看| 日本在线15p| 美女91网址| 99少妇| 99re6在线视频播放免费精品| 亚洲少妇自拍中文字幕懂色| 久久精品国产亚洲粉嫩| 久久久极品| 南澳成人一级片在线播放| 亚洲高清在线se| 天操天操夜操夜月操月年年操操| 亚洲综合色图欧美| 精品国产Av无码久久久伦古装| 97爱综合| 欧美aa一级片| 成人性爱电影一区二区| 亚洲天堂电影精品一区| 中文字幕片| 新精精品久久精品| 欧美人妖内射| 亚洲国产精品成人综合| a级成人毛片免费视频高清| 日韩人妻一区二区精品| 日韩pv中文| www.91欧美| 夜夜嗨TV| 网站A V在线| 人人操人人操草草| 欧美人妻精品| 啊啊啊久久久视频| 亚洲国产综合图区中文字幕| 午夜AV人气不卡| 色五月婷婷麻豆在| 使劲用力艹少妇视频一区二区| 97资源站国产精品| 国产又黄又爽又刺激久久久久久| 日本午夜久久电影| 九九热视频这里只有精品| 国产又大又粗又长视频| 热思思免费视频| 青娱乐日韩无码| 亚洲综合影视| 中文字幕AV中出| 久草国产在线视频| 97资源超碰| 欧美精品亚洲精品日韩传电影| 国产性爱强奸乱伦大全| 亚洲国产激情国产av| 国产SV一线| 久久久日本电影| 欧美成人一级免费电影| 午夜精品久久久99| 啊啊啊免费视频| 亚洲日韩成人性爱视频| 超碰97最新人妻| 日本色日夜干| 丁香婷婷久久| 91劲爆| 乱伦一区二区三区‘| 色老汉玖玖爱| 精品少妇99| 久久久无码av精| 日韩午夜国产| 国产精品一区二区手机看片| 人妻久久久| 曰本特级特黄特色黄色A级网站高清在线免费看 | 另类亚洲一区二区三区| 五月激情天| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 天天色踪合| 91搞逼视频| 欧美九九99久久精品| 久久午夜色播影院免费高清| 九九色色| 巨乳特殊服务按摩| 九月丁香| 欧美不在线| 91 刺激在线| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 欧美强奸乱| 色 亚洲 91| 岛国毛片在线观看免费| 97精品国产手机| 八戒无码国产午夜福利| 日本黄色裸日本黄色裸体| 手机午夜电影神马久久| 91jk色拍| 老熟妇一区二区三区…| 亚洲欧美黄| 野狼激情网| a级免费在线观看| 久久色激情一区二区三区| 91丝袜在线观看| 大香蕉免| 十八禁av无码免费网站APP| 91天美传媒在线观看| 午夜福利精品| 96精品久久久| 色妺妺在线视频| 人人操人人爽人人操人人| 啊啊啊啊在线观看网址| 黑人操一区二区| 精品人妻一区二区蜜桃视频| 这里只有精品视频在线| 久久伊人最新网址视频| 干B| 去干网最新版| 蜜臀久久99精品久久久久| 红桃视频高潮| 成人免费在线网站| 夜夜精品视频| 日韩啪啪啪视频| 亚洲四虎熟女精品| 啊啊啊操死我| 久久久99999久网站| 极品白嫩美女白浆成人福利在线看| 日本大香蕉综合网红本杳社区| 好湿好紧好爽 视频| 亚洲综合另类小说色区亚洲成av人片在www | 嗯嗯嗯啊啊啊在线免费观看| 亚洲乱色熟女一区| 欧美色图自拍| 少妇毛片久久| 丰满人妻av一区二区三区| 香蕉视频欧美一卡二卡| 粉嫩久久久久| 亚码激情| 人人摸人人干人人拍97| 97在线免费视频| 欧洲精品区| 青青草自拍视频在线播放| 熟女乱伦A| 亚洲久久久| 加勒比人妻综合| 亚洲天堂区| 一级aaaaa欧美中文字幕录像片| 久久久偷拍| 久久九操在线观看| 亭亭丁香激情| 少妇内射视频| 97国产超湿| 最新国产亚洲精品精品国产亚洲综合| 免费AV中文网在线观看| 偷拍新久久| 欧亚成人在线视频| 旡码电影特区| 99这里都是精品| 亚洲色 国产 欧美 日韩| 久久综合九色综合欧洲98| 亚洲成人帖图| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 岛国A V在线免费看| AV天堂因数| 亚洲女人毛茸茸91| 日韩人妻精品中文字幕| 中文字幕一区二区三区人妻少妇在线| www.99色| 婷婷丁香五月激情啪啪| 99久久e免费热视| 黄人人操人人操| 久久AV无码AV| 91色图| 欧美色涩| 无码78| 亚洲久久久| 亚洲无码日韩电影| 蜜臀久久99精品久久久久久成人小说 | 美国精品国产精品| 色综合V| 久久黄片国产一区二区| 无码动漫av中文字幕| 欧美91在线| 激情小说亚洲色图| 日本精品999| 91狠狠综合| 尤物av网站免费在线播放| 欧美色网| 欧洲综合无码| 1人人看人人摸人人操| 日本欧美一区二区三区视频麻豆| 欧美18 在线观看| 久久中文字幕一区不卡| 八戒无码国产午夜福利| 综合五月婷婷亚洲一区| 色婷婷激一区二区三区| 97国产高清视频在线观看| 把腿张开老子CAO烂你| 亚洲精品国产精品乱码不99| 三级三久久线久久99久目本WW| 色色五月丁香| 校园春色制服丝袜中文字亚洲| 亚洲精品国产拍免费91在线| 亚州综| 无遮挡男女激烈动态图| 7777奇米影视久久| 中国一区二区亚洲人妻| 丁香五月天激情| 欧美大香蕉在线观看| 亚洲揄拍网| 亚洲操操操无码| 精品高潮| 亚洲 一区二区 自拍| 国产精品一区二区黄片| 97干日韩| 老鸭窝黄色视频网站| 草B在线| 小说区 图片区色 综合区| 日韩无码a片| 国产99 中文字幕日韩小视频| 美女诱惑爱爱| 一区二区视频你懂的| 亚洲操操操无码| 国产 日韩,欧美 自拍| 2018天天干在线视频| www.色综合| 91网18| 四虎av在线| 无码操逼视频一下| 国产福利精品最新在线| 日本丝袜美腿人妻九九| av日韩中文字幕| J?P?NESEHD熟女熟妇伦| 亚洲情色中文字幕一区| 欧美亚洲国内自拍| 欧美淫乱视频| 日韩精品在线放| 亚洲欧美日韩综合在线尤物 | 区一二区日韩亚洲乱码av电影| 欧美偷偷网| 18禁看网站一区| 视频分类 国内精品| 国产精品久久久久绯色| 青青草五月份天| 久久久久久久伊人精品| 一区二区三区四区色图| 色欧洲97| 无码高清少妇久久| 在线不卡视频| 2026国产精品视频| 99re久久| 激情久久av一区av二区av| 久草婷婷| 天天日天天操天天射河南省| 偷窥自拍亚洲天堂网爆| 校园春色亚洲无码| 视频国产成人精品日本亚洲18| 性爱1区| 久久久久久久六六| 波多野结衣AV无码一区| 天综合中文| 色亚洲欧美| 久久性爱大全| 日韩精品大香蕉伊人在线| 中日韩免费看男女操逼大全| 长长久久曰曰夜夜成人网| 9.1小视频| 亚洲国产高清福利视频| 福利一级版子| 亚洲日本激情| 久草婷婷| 人人玩人人添人人澡免费| 99国产精品在线观看| 丁香九月婷婷| 欧美亚涩| 欧美成人免费在线观看| 俺去久久| 中日韩免费看男女操逼大全| 1024久久高清视频| 蜜臀在线视频| 美女露胸露奶头| 日韩免费a级毛片无码a∨| 91久热这里只有精品| 校园春色五月天| 国产亚洲 中文欧美久久| 欧美天天综合网版| 96精品在线| 大象AV在线| 色婷婷综合久久中文字幕雪峰| 三级日韩一区二区三区| 天天日天天射天天干| 欧美日韩另类在线播放| 熟妇高潮精品一区二区三区下载| 国产亚洲女v在线观看| 中文字幕人妻色偷偷久久皮 | 综合欧美激情网| 狠狠操狠狠燥| 五月天丁香| 亚洲国产丝袜熟女av| 99re69综合| 日本成人电影资源网| 久9爱经典视频| 国产亚洲在线观看| 女人天堂av在线播放| 97免费视频网| 欧美熟女操屄| 欧美色青| 国产精品欧美激在线| 日本高清_区二区三区| julia国产在线 | 婷婷伊人五月| 日本熟妇精品九九| 五月天婷婷成人网| 三级精品三级在线观看| 中字一区| 婷婷四五区| 乱伦a片视频| 蜜臀网址在线| 艾草av| 色欲日韩欧美在线一区| 羞涩视频| 91n免费处女| 国产在线76页| 韩国成人精品久久久免费看| 自拍六区| 神马久久69| 少妇超碰在线| 密乳AV免费观看| 男同专区一区二区三区在线| 国产女同性恋视频| 色五月大香蕉| 美国人人操人人操| 亚洲男人电影天堂| 亚洲丰满很很操| 毛片视频白嫩| 国产精品国产拍高清AV| 十八禁视频一区二区| 正宗无毛一线天嫩逼| 97资源欧美| 91美女中出| 日韩欧美国产一区二区三区四区| 色婷婷一区二区三区久久| 97天天在线| 91九九九逼| 亚码激情| 欧美顶级黄片AAAAA在线免费看 | 国产日韩人人| 久久久久久久一级黄色打同平台| 欧美色性爱| 国产在线观看91精品一区| 2017天天操| 91痴汉| 久久久久久久久久久久欧美日| 91久热这里只有精品| 成视频在线观看免费看| 久久成人午夜精品影院| 欧美片第一页| 亚洲综合九九| 日韩一级二级三级| 久久人妻少妇| 亚av顶级裸体一区二区三区四区五区 | 青青草中文-久久青草精品一区二区三 | 中文字幕亚洲在线一区| 国产亚洲日韩在线三区黑人| 岛国A V在线免费看| 九九九九热| 综合网 欧美| 欧美日韩亚洲天堂| 91狠狠综合久久| 日日AAvv| 97精品一区| 9九九国产| 五十路熟女在线不卡观看一区二区| 99热这里只有精| 老司机射| 五月天丁香网| 极品美女福利在线观看| caoni国产亚洲av| 美女尤物人人操| 成人精品一区二区91毛片不卡| 久久免费99精品久久久久久| 国产一区二区免费福利片| 日本一区二区亚洲综合| 色呦呦国产精品免费看| 国产免费黄色一级大片| 偷拍精品一区二区三区| 日韩视频中文字幕| 思思久热在线精品66| 男女啪啪网站免费视频| 26uuu成人影片| 欧美偷拍区| 无码国产Av| 激情综合网五月婷婷五月天| 激情干在线| 日韩av乱伦| 亚洲人人操| 色一射色一射| 中出789在线视频| 色综合99999| 老熟妇一区二区三区| 乱人乱色一区二区三区免费| 色九久| 欧美精品三区| 蜜乳Av成人片网站| 国产欧美亚洲精品a第2页| 五月天色色网站| 久久久久精| 中文字幕人妻色偷偷久久皮| 99re在线视频国产| 国产最新小视频在线播放下载| 岛国在线免费视频| 国产综合网站在线播放| 久99| 大香蕉中文aV在线| 九九免费影片| 91天堂网| 手机在线中文字幕国产| 色播综合| 亚洲精品欧洲精品| 中文字幕国产| 亚洲另类欧美精品| 国产情侣自拍在线播放| 无码人妻一区二区一牛影视| 伊人精品视频| 中文字幕一区二区无码成人 | 五月婷婷五月天| 黑人天8A∨高清网站| 91色伦| 久久精品国产精品一区| 围产精品一区二区三区视频播放| 亚洲色图大香| 秋霞鲁丝午夜无码一区二区三| 色97干| 91人妻做a观看视频| 久久久久久午夜男人的天堂| 亚洲精品国产av天美传媒| 成人一二三区| 天天操夜夜嗨| 成人精品电影| 亚洲中文sv| 午夜亚洲国产理论秋霞| 99热这里只有精品8| 综合色拍| 天天看天天日| 色五月激情综合网| 91美女看B| 日韩一级欧美一级国产一级台湾| 白嫩国模丰满一二三区| 亚洲三级网址久久最新| 日韩91网站| 亚洲精品第一| 青青草在线视频欧美| 超碰在线一区二区三区| 国产乱人伦AVA麻豆软件.| 国产视频一区二区三区久久亚洲天堂| 伊人9| 日韩免费大片一级播放| 欧美激情视频一区二区三区不卡| 综合熟妇一区二区三区| 日韩亚洲中文有码视频| 91女人的网站| 香蕉视频欧美一卡二卡| 久操精品网| 国产精品乱码久久久久久久| 欧美性爱免费短视频| 大香蕉伊人一区在线观看| 欧美偷拍| www.狠狠| 免费视频观看60秒| 女同性恋久久| 五月天亚洲网| 国产成人免费观看在线视频| 歐美性天天| 亚洲图片激情综合另类| 97资源欧美| 欧美大香蕉久| 97在线欧洲| 日本黄色精品专区网站| 国产精品2020| 一区二区免费电影久久| 久久做97| 日韩黄片视频试看| 精品美女少妇一区二区三区| 人妻二区| 日韩9999| 2019久久久久久久久福利| julia中文字幕在线观看| 亚洲小电影免费涩涩成人在线高清| 亚射在线| 操人人| 91天美传媒在线观看| 国产成人无码啪| 四虎在线免费视频| 亚洲精品aa久久伊人 | 狠狠操夜夜操蜜桃视频三区| 九九热精品视频六| 色色色综合| 九九综合九九综合| 国产精品ww久久| 啊啊啊啊视频免费| 女欧美一区二三区| 极品粉嫩少妇视频| 国产综合网站在线播放| 最新9久久久9免费视频| 日本午夜久久电影| 伊人骚琪琪亚洲天堂网站| 欧美嗯啊……在线观看视频免费| 久久天堂| 亚熟hd视频在线| 免费人成?大片在线播放| 亚洲午夜精品久久久中文影院| 人妻丝袜无 码视频专区| 中文字幕一区二区视频在线观看| 性色高清在线| 国产三级日产三级韩国三级| 白嫩91在线亚洲| 国产农村妇女一区二区| 国产AV色黄看到爽| 日韩欧美蜜桃精品久久中文字幕久久| 丁香六月综合激情| 国产亚洲色停停久久99精品91| 亚洲吊色| a网站免费观看| 国产精品久久久久久亚洲色欲| 欧美 综合 亚洲| 久久久爆乳翘臀一线天伦理视频| 天天色天天干天天爱| A级在线视频| 91精品又粗又猛又爽| 乱老女人一区二区视频| 欧美片第一页| 2020中文字幕在线| 天美麻豆精品视频99| 免费精品人妻一区二区三| 久久黄黄黄| 大香网伊人久久综合网eew| 探花精品视频| 人人妻碰人人免费| 33044男人的天堂深夜备| 性色高清在线| 色色婷婷丁香| 免费啪啪av| 天美传媒婬乱在| 久久熟女久| 亚洲国产精品乱码在线观看| 国产 亚洲 丝袜 制服| 精品国产一区探花在线观看| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 最好看的中文字幕在线2018| 日韩精品一二三| 大香蕉琪琪日本女优不卡| 加勒比在线视频| 国产女人91精品嗷嗷嗷嗷| 色婷婷六月丁香七月婷婷| 欧美一级二级三级| 肉丝中文无码高清| 99re69| 中文字幕国产精品1区| 天堂8在线新版官网| 天天躁日日躁成人字幕aⅴ| 久久久久久久9999| 日韩黄色小说| 欧美伦乱爱| 蜜桃视频一区二区三区在线观看| 天天爱天天韩国日本牛牛牛牛| 围产精品一区二区三区视频播放| 五月丁香黄色网| 99re视频这里只有精品| 不卡六六在线91| 亚洲色资源| 天美一二三在线观看Av| 天无日色综合| 天天日天天舔| 91日本在线观看| 国产乱人伦AVA麻豆软件.| 操www| 国产91av在线播放| 人人模人人看| 2024黄色视频| 男人天堂欧美| 91狠狠综合网| 一起草在线视频| 亚洲AV无码乱码| 男人天堂资源| 69一区二区三区 | 五月丁香综合激情| 色欲天天综合网| 免费黄色片子| 久久婷婷五月天| 99精品视频在线观看| 丁香五月天啪啪| 成人精品在线观看| 国产精品一二三免费网站| 久久偷偷色综合蜜桃| 欧美日动态视频| 九九国产热| 久久精品99| 黄页网站成人免费| 青青草色AV| 嗯嗯啊好爽| TS人妖另类精品视频系列| 午夜福利国产欧美日韩夜夜| 欧洲亚洲国产综合在线| 天天操天天干一区二区 | 色呦呦呦在线观看视频|