日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

后端工程師視角:用三元組、工具調(diào)用與錯(cuò)誤處理構(gòu)建健壯AI Agent

后端工程師視角:用三元組、工具調(diào)用與錯(cuò)誤處理構(gòu)建健壯AI Agent 1. 從后端工程師的視角看Agent不只是“智能體”最近“Agent”這個(gè)詞火得不行各種AI智能體、自動(dòng)化代理的框架和教程層出不窮。作為一個(gè)在后端領(lǐng)域摸爬滾打了十來(lái)年的老碼農(nóng)我最初看到這些概念時(shí)第一反應(yīng)其實(shí)是有點(diǎn)“懵”的。什么“智能體”、“自主決策”、“任務(wù)分解”聽(tīng)起來(lái)很高級(jí)但落到代碼層面它到底是個(gè)啥難道不是我們后端天天在寫的那些服務(wù)、調(diào)度器和狀態(tài)機(jī)嗎后來(lái)我花了不少時(shí)間去研究從LangChain到AutoGPT再到一些開(kāi)源的Agent框架。我發(fā)現(xiàn)用后端開(kāi)發(fā)的思維去理解Agent事情會(huì)變得異常清晰和親切。Agent的核心本質(zhì)上就是一個(gè)具備特定能力、能感知環(huán)境、能執(zhí)行動(dòng)作并處理反饋的“服務(wù)進(jìn)程”。這不就是我們后端系統(tǒng)里一個(gè)設(shè)計(jì)良好的微服務(wù)或者一個(gè)后臺(tái)任務(wù)調(diào)度器該有的樣子嗎今天我們不談那些高大上的理論就從最樸素的“后端思維”出發(fā)把Agent這個(gè)黑盒子拆開(kāi)看看里面的核心架構(gòu)到底是怎么運(yùn)轉(zhuǎn)的。我會(huì)重點(diǎn)聚焦在三個(gè)我認(rèn)為最核心、也最體現(xiàn)后端工程化思想的組件上三元組狀態(tài)管理、工具調(diào)用服務(wù)編排和錯(cuò)誤處理系統(tǒng)韌性。你會(huì)發(fā)現(xiàn)理解了這三塊你不僅能看懂Agent甚至能自己動(dòng)手搭一個(gè)更健壯、更可控的Agent出來(lái)。2. 核心基石用“三元組”思維重構(gòu)Agent的狀態(tài)管理在分布式系統(tǒng)和復(fù)雜業(yè)務(wù)邏輯中我們?nèi)绾蚊枋鲆粋€(gè)實(shí)體的當(dāng)前狀況后端常用的方法是定義狀態(tài)機(jī)State Machine或者使用一個(gè)包含關(guān)鍵屬性的上下文對(duì)象Context Object。Agent的“三元組”思想與此異曲同工它提供了一個(gè)極其簡(jiǎn)潔而強(qiáng)大的模型來(lái)刻畫Agent在任一時(shí)刻的“快照”。2.1 什么是Agent的三元組簡(jiǎn)單來(lái)說(shuō)Agent的三元組指的是(Thought, Action, Observation)。這不是一個(gè)冰冷的理論而是一個(gè)動(dòng)態(tài)的工作循環(huán)單元。Thought思考這是Agent的“內(nèi)部狀態(tài)”或“決策依據(jù)”。它不是一個(gè)模糊的想法而應(yīng)該是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)??梢岳斫鉃楹蠖朔?wù)處理請(qǐng)求時(shí)的“內(nèi)部上下文”或“決策邏輯的輸出”。例如一個(gè)訂票Agent的Thought可能是{“user_intent”: “book_flight”, “parsed_info”: {“departure”: “上?!? “arrival”: “北京”, “date”: “2023-10-01”}, “next_step”: “search_flights”}。在后端這類似于一個(gè)工作流引擎中當(dāng)前任務(wù)節(jié)點(diǎn)的輸出和傳遞給下一個(gè)節(jié)點(diǎn)的參數(shù)。Action行動(dòng)基于ThoughtAgent決定要執(zhí)行的具體操作。這個(gè)操作通常是調(diào)用一個(gè)“工具”Tool。例如對(duì)應(yīng)的Action可能是{“tool_name”: “flight_search_api”, “parameters”: {“from”: “上?!? “to”: “北京”, “date”: “2023-10-01”}}。這完全對(duì)應(yīng)了后端服務(wù)中的一個(gè)“服務(wù)調(diào)用”或“API調(diào)用”指令。Observation觀察執(zhí)行Action后從環(huán)境或工具返回的結(jié)果。例如調(diào)用航班搜索API后返回的JSON數(shù)據(jù){“flights”: […], “status”: “success”}。在后端這就是一個(gè)下游服務(wù)或數(shù)據(jù)庫(kù)查詢的響應(yīng)。為什么這個(gè)三元組如此重要因?yàn)樗鼘gent不可控的“思考”過(guò)程變成了一個(gè)可觀測(cè)、可記錄、可調(diào)試的數(shù)據(jù)流。每一次循環(huán)Thought - Action - Observation都會(huì)產(chǎn)生一條日志這讓我們可以像排查后端接口調(diào)用鏈一樣去追溯Agent的決策路徑。2.2 后端工程中的三元組實(shí)踐在實(shí)際的后端架構(gòu)中我們其實(shí)一直在不自覺(jué)地使用類似三元組的概念。在消息隊(duì)列消費(fèi)者中消費(fèi)者從隊(duì)列取到一條消息Observation經(jīng)過(guò)業(yè)務(wù)邏輯處理Thought然后可能調(diào)用另一個(gè)服務(wù)或?qū)懭霐?shù)據(jù)庫(kù)Action并等待結(jié)果新的Observation來(lái)決定是確認(rèn)消息還是重試。在工作流引擎中每一個(gè)節(jié)點(diǎn)接收輸入Observation執(zhí)行節(jié)點(diǎn)邏輯Thought調(diào)用某個(gè)服務(wù)或腳本Action并將輸出作為下一個(gè)節(jié)點(diǎn)的輸入新的Observation。在狀態(tài)機(jī)中當(dāng)前狀態(tài)可以類比為Thought的某種聚合和接收的事件Observation共同決定要執(zhí)行的動(dòng)作Action和遷移到的下一個(gè)狀態(tài)新的Thought。實(shí)操心得如何設(shè)計(jì)一個(gè)好的Thought這是三元組里最需要設(shè)計(jì)的地方。Thought不能太“重”包含所有歷史信息臃腫低效也不能太“輕”信息不足無(wú)法決策。我的經(jīng)驗(yàn)是結(jié)構(gòu)化堅(jiān)決使用JSON等結(jié)構(gòu)化數(shù)據(jù)而不是自然語(yǔ)言描述。這便于程序解析和傳遞。聚焦當(dāng)前目標(biāo)Thought應(yīng)清晰包含“我當(dāng)前要解決什么問(wèn)題”和“我已經(jīng)掌握了什么信息”。包含元信息可以加入step_count當(dāng)前是第幾步、max_steps最大步數(shù)限制、retry_count對(duì)當(dāng)前Action的重試次數(shù)等控制信息防止Agent陷入死循環(huán)。提示在實(shí)現(xiàn)時(shí)可以將整個(gè)三元組序列一個(gè)對(duì)話或任務(wù)的歷史作為“上下文”Context保存下來(lái)這類似于后端會(huì)話Session或業(yè)務(wù)流程實(shí)例Process Instance的概念。3. 核心能力將“工具調(diào)用”視為服務(wù)編排與API聚合Agent自己并不創(chuàng)造新能力它的強(qiáng)大在于能夠“使用工具”。這和后端開(kāi)發(fā)中的“服務(wù)編排”Service Orchestration和“API聚合”API Gateway思想完全一致。一個(gè)復(fù)雜的業(yè)務(wù)接口后端可能會(huì)調(diào)用用戶服務(wù)、訂單服務(wù)、支付服務(wù)等多個(gè)下游接口來(lái)完成。Agent也是如此它通過(guò)組合調(diào)用各種工具可以視為一個(gè)個(gè)微服務(wù)來(lái)完成復(fù)雜任務(wù)。3.1 工具Tool的本質(zhì)標(biāo)準(zhǔn)化的能力接口一個(gè)設(shè)計(jì)良好的工具應(yīng)該像一個(gè)設(shè)計(jì)良好的API接口明確的輸入輸出必須有清晰的參數(shù)定義和返回格式。例如一個(gè)calculator工具輸入是{“expression”: “string”}輸出是{“result”: “number”}。功能單一一個(gè)工具只做一件事并且做好。search_web工具就負(fù)責(zé)搜索send_email工具就負(fù)責(zé)發(fā)郵件。這符合微服務(wù)的“單一職責(zé)”原則??砂l(fā)現(xiàn)性Agent需要知道有哪些工具可用。這通常通過(guò)一個(gè)“工具注冊(cè)表”或“工具描述清單”來(lái)實(shí)現(xiàn)。清單里會(huì)包含工具的名稱、描述、參數(shù)Schema等。這就像后端的服務(wù)注冊(cè)中心如Eureka, Nacos。// 一個(gè)工具的描述示例 { “name”: “get_weather”, “description”: “獲取指定城市的當(dāng)前天氣信息”, “parameters”: { “type”: “object”, “properties”: { “city”: { “type”: “string”, “description”: “城市名稱例如北京” } }, “required”: [“city”] } }3.2 工具調(diào)用的流程從意圖到執(zhí)行當(dāng)Agent決定要調(diào)用一個(gè)工具時(shí)其內(nèi)部流程和后端網(wǎng)關(guān)調(diào)用下游服務(wù)非常相似意圖解析與工具選擇Agent根據(jù)Thought決定需要什么能力如“用戶想知道天氣”然后從工具注冊(cè)表中匹配最合適的工具get_weather。這類似于后端網(wǎng)關(guān)根據(jù)路由規(guī)則選擇目標(biāo)服務(wù)。參數(shù)組裝根據(jù)Thought中的信息和工具的參數(shù)定義組裝出完整的調(diào)用參數(shù){“city”: “北京”}。這里可能涉及參數(shù)轉(zhuǎn)換和默認(rèn)值填充。安全與權(quán)限校驗(yàn)在執(zhí)行調(diào)用前應(yīng)檢查當(dāng)前Agent是否有權(quán)限調(diào)用此工具參數(shù)是否安全如防止SQL注入或惡意請(qǐng)求。這是后端API網(wǎng)關(guān)的核心功能之一。執(zhí)行調(diào)用以同步或異步方式實(shí)際調(diào)用工具。工具可能是一個(gè)本地函數(shù)、一個(gè)HTTP API、一個(gè)數(shù)據(jù)庫(kù)查詢甚至是對(duì)另一個(gè)大模型的請(qǐng)求。結(jié)果標(biāo)準(zhǔn)化接收工具的原始返回并將其處理成Agent能理解的標(biāo)準(zhǔn)化Observation格式。如果工具調(diào)用失敗超時(shí)、錯(cuò)誤等也需要生成一個(gè)代表“錯(cuò)誤”的Observation。踩坑實(shí)錄工具調(diào)用的常見(jiàn)問(wèn)題工具描述不準(zhǔn)工具的描述或參數(shù)Schema寫得不清楚導(dǎo)致Agent無(wú)法正確調(diào)用。這就像API文檔寫錯(cuò)了調(diào)用方必然出錯(cuò)。解決方案像寫API文檔一樣嚴(yán)格定義工具并使用JSON Schema進(jìn)行校驗(yàn)。工具不可用或超時(shí)這是分布式系統(tǒng)的常態(tài)。解決方案必須為工具調(diào)用設(shè)置合理的超時(shí)時(shí)間和重試機(jī)制。在Observation中明確區(qū)分“工具返回業(yè)務(wù)錯(cuò)誤”和“工具調(diào)用本身失敗”。工具組合的復(fù)雜性當(dāng)需要連續(xù)調(diào)用多個(gè)有依賴關(guān)系的工具時(shí)邏輯會(huì)變得復(fù)雜。解決方案借鑒后端工作流引擎的思路在Thought中顯式地管理子任務(wù)狀態(tài)和依賴關(guān)系而不是依賴大模型一次性規(guī)劃所有步驟。4. 生命線像構(gòu)建分布式系統(tǒng)一樣設(shè)計(jì)Agent的錯(cuò)誤處理任何不處理錯(cuò)誤的系統(tǒng)都是玩具。對(duì)于Agent這種需要自主運(yùn)行、可能調(diào)用多個(gè)不穩(wěn)定外部服務(wù)的系統(tǒng)來(lái)說(shuō)健壯的錯(cuò)誤處理不是加分項(xiàng)而是生命線。后端開(kāi)發(fā)中我們處理服務(wù)超時(shí)、重試、降級(jí)、熔斷的經(jīng)驗(yàn)在這里可以完全復(fù)用。4.1 Agent可能遇到的四層錯(cuò)誤思考層錯(cuò)誤大模型本身“胡言亂語(yǔ)”輸出了無(wú)法解析的Thought或者做出了明顯不合理、不合規(guī)的決策。例如Thought中指定的tool_name在注冊(cè)表中不存在。工具調(diào)用層錯(cuò)誤這是最普遍的錯(cuò)誤包括網(wǎng)絡(luò)超時(shí)、接口返回4xx/5xx錯(cuò)誤、返回?cái)?shù)據(jù)格式不符合預(yù)期等。觀察解析層錯(cuò)誤工具返回的結(jié)果Observation可能非常復(fù)雜或混亂Agent在解析和理解這些結(jié)果時(shí)可能出現(xiàn)偏差。流程控制層錯(cuò)誤Agent陷入死循環(huán)不斷重復(fù)相同操作、任務(wù)長(zhǎng)時(shí)間無(wú)進(jìn)展、或違反了預(yù)設(shè)的業(yè)務(wù)規(guī)則如預(yù)算超標(biāo)。4.2 構(gòu)建錯(cuò)誤處理防線監(jiān)控、重試與熔斷第一道防線輸入輸出校驗(yàn)與結(jié)構(gòu)化在Thought生成后、Action執(zhí)行前加入一層校驗(yàn)。確保Action中的工具名、參數(shù)格式是合法的。這類似于API網(wǎng)關(guān)的參數(shù)驗(yàn)證??梢允褂幂p量級(jí)的規(guī)則引擎或簡(jiǎn)單的模式匹配來(lái)實(shí)現(xiàn)。第二道防線工具調(diào)用的彈性策略重試對(duì)于網(wǎng)絡(luò)抖動(dòng)或瞬時(shí)故障導(dǎo)致的失敗應(yīng)立即進(jìn)行重試。重試策略如指數(shù)退避至關(guān)重要避免雪崩。超時(shí)控制每個(gè)工具調(diào)用必須有獨(dú)立的超時(shí)設(shè)置防止一個(gè)慢工具拖死整個(gè)Agent。熔斷與降級(jí)如果某個(gè)工具連續(xù)失敗可以暫時(shí)將其“熔斷”標(biāo)記為不可用并在Thought中反映這一點(diǎn)。Agent可以選擇備用工具或向用戶返回“該服務(wù)暫不可用”的友好提示。第三道防線流程看門狗這是Agent獨(dú)有的、非常重要的機(jī)制。你需要一個(gè)獨(dú)立的“看門狗”邏輯來(lái)監(jiān)控Agent的運(yùn)行狀態(tài)最大步數(shù)限制防止無(wú)限循環(huán)。在Thought中維護(hù)step_count超過(guò)閾值則強(qiáng)制終止任務(wù)并生成一個(gè)“任務(wù)超時(shí)”的最終Observation。重復(fù)動(dòng)作檢測(cè)記錄最近N次Action如果發(fā)現(xiàn)完全相同的Action被重復(fù)執(zhí)行且未推動(dòng)任務(wù)進(jìn)展應(yīng)中斷并嘗試替代方案。關(guān)鍵狀態(tài)檢查在每一步之后檢查是否違反了核心業(yè)務(wù)約束如“總花費(fèi)不能超過(guò)100元”。第四道防線優(yōu)雅的失敗與用戶交互不是所有錯(cuò)誤都需要Agent在后臺(tái)死磕。對(duì)于某些錯(cuò)誤尤其是經(jīng)過(guò)重試和降級(jí)后仍無(wú)法解決的最好的策略是“向上匯報(bào)”——即生成一個(gè)請(qǐng)求人類協(xié)助的Observation。例如“調(diào)用支付網(wǎng)關(guān)失敗原因可能是網(wǎng)絡(luò)問(wèn)題。已重試3次。是否嘗試其他支付方式或取消訂單” 這需要你在設(shè)計(jì)Agent的交互流程時(shí)就預(yù)留“人工接管”的接口。一個(gè)錯(cuò)誤處理的代碼片段思路class RobustAgent: def execute_action(self, action): tool_name action[“tool_name”] params action[“parameters”] # 1. 校驗(yàn) if tool_name not in self.tool_registry: return self._create_error_observation(f“未知工具{tool_name}”) # 2. 帶重試和超時(shí)的調(diào)用 max_retries 3 for attempt in range(max_retries): try: # 設(shè)置單次調(diào)用超時(shí) result self._call_tool_with_timeout(tool_name, params, timeout10) # 3. 結(jié)果標(biāo)準(zhǔn)化 return self._standardize_observation(result) except TimeoutError: if attempt max_retries - 1: return self._create_error_observation(f“工具{tool_name}調(diào)用超時(shí)”) time.sleep(2 ** attempt) # 指數(shù)退避 except ToolExecutionError as e: # 工具返回的業(yè)務(wù)錯(cuò)誤直接封裝 return self._create_error_observation(f“工具執(zhí)行失敗{str(e)}”) except Exception as e: # 其他未預(yù)料錯(cuò)誤 log.error(f“調(diào)用工具{tool_name}異?!? exc_infoe) if attempt max_retries - 1: return self._create_error_observation(“系統(tǒng)內(nèi)部錯(cuò)誤請(qǐng)稍后重試”)5. 實(shí)戰(zhàn)搭建一個(gè)具備后端工程化思想的簡(jiǎn)易Agent框架理論說(shuō)再多不如動(dòng)手搭一個(gè)。我們不依賴復(fù)雜的LangChain就用最樸素的Python代碼實(shí)現(xiàn)一個(gè)具備上述核心思想的Agent骨架。你會(huì)發(fā)現(xiàn)它和一個(gè)簡(jiǎn)單的異步服務(wù)編排引擎非常像。5.1 定義核心數(shù)據(jù)模型首先我們定義清晰的數(shù)據(jù)結(jié)構(gòu)這是所有穩(wěn)定后端系統(tǒng)的基礎(chǔ)。from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field class Thought(BaseModel): 思考狀態(tài)結(jié)構(gòu)化的內(nèi)部上下文 goal: str Field(description“當(dāng)前要完成的總目標(biāo)”) step: int Field(default1, description“當(dāng)前步驟序號(hào)”) max_steps: int Field(default10, description“最大允許步驟數(shù)”) known_info: Dict[str, Any] Field(default_factorydict, description“已收集到的信息”) next_action_intent: str Field(description“下一步打算做什么的意圖描述”) class Action(BaseModel): 要執(zhí)行的動(dòng)作即調(diào)用哪個(gè)工具、傳什么參數(shù) tool_name: str parameters: Dict[str, Any] class Observation(BaseModel): 執(zhí)行動(dòng)作后的觀察結(jié)果 status: str # “success”, “error”, “need_human” data: Optional[Dict[str, Any]] None message: Optional[str] None # 成功或錯(cuò)誤的詳細(xì)信息 class AgentStep(BaseModel): 一個(gè)完整的三元組步驟記錄用于日志和調(diào)試 step_id: int thought: Thought action: Optional[Action] None observation: Optional[Observation] None5.2 實(shí)現(xiàn)工具管理器工具管理器扮演著服務(wù)注冊(cè)中心的角色。import inspect from functools import wraps class ToolRegistry: def __init__(self): self._tools: Dict[str, dict] {} def register(self, func): 裝飾器將函數(shù)注冊(cè)為工具 sig inspect.signature(func) params_schema { “type”: “object”, “properties”: {}, “required”: [] } for name, param in sig.parameters.items(): param_info {“type”: “string”} # 簡(jiǎn)化處理實(shí)際應(yīng)根據(jù)annotation生成 params_schema[“properties”][name] param_info if param.default inspect.Parameter.empty: params_schema[“required”].append(name) self._tools[func.__name__] { “function”: func, “description”: func.__doc__ or “”, “parameters_schema”: params_schema } wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper async def execute(self, tool_name: str, parameters: Dict) - Observation: if tool_name not in self._tools: return Observation(status“error”, messagef“Tool ‘{tool_name}’ not found.”) tool_info self._tools[tool_name] func tool_info[“function”] try: # 這里可以加入?yún)?shù)校驗(yàn)根據(jù)schema、權(quán)限檢查等 result await func(**parameters) if inspect.iscoroutinefunction(func) else func(**parameters) return Observation(status“success”, data{“result”: result}) except Exception as e: # 這里可以區(qū)分不同類型的異常進(jìn)行更精細(xì)的錯(cuò)誤處理 return Observation(status“error”, messagef“Tool execution failed: {str(e)}”) # 示例工具定義 tool_registry ToolRegistry() tool_registry.register def get_current_time(timezone: str “UTC”) - str: “”“獲取指定時(shí)區(qū)的當(dāng)前時(shí)間。”“” from datetime import datetime import pytz tz pytz.timezone(timezone) return datetime.now(tz).strftime(“%Y-%m-%d %H:%M:%S”) tool_registry.register def calculator(expression: str) - float: “”“計(jì)算一個(gè)簡(jiǎn)單的數(shù)學(xué)表達(dá)式。支持 , -, *, /?!薄啊?# 警告實(shí)際生產(chǎn)環(huán)境必須對(duì)表達(dá)式做嚴(yán)格的安全過(guò)濾防止代碼注入 allowed_chars set(“0123456789-*/(). ”) if not all(c in allowed_chars for c in expression): raise ValueError(“Expression contains invalid characters”) try: return eval(expression) except Exception as e: raise ValueError(f“Calculation error: {str(e)}”)5.3 實(shí)現(xiàn)Agent核心循環(huán)與錯(cuò)誤處理這是Agent的“大腦”和“神經(jīng)系統(tǒng)”包含了狀態(tài)管理和錯(cuò)誤處理的核心邏輯。class SimpleAgent: def __init__(self, tool_registry: ToolRegistry, llm_client): # llm_client是一個(gè)模擬的大語(yǔ)言模型調(diào)用接口 self.tool_registry tool_registry self.llm llm_client self.history: List[AgentStep] [] async def run(self, initial_goal: str) - Dict[str, Any]: 運(yùn)行Agent直到完成任務(wù)或達(dá)到最大步數(shù)。 current_thought Thought( goalinitial_goal, step1, known_info{}, next_action_intent“分析任務(wù)目標(biāo)” ) while current_thought.step current_thought.max_steps: print(f“\n Step {current_thought.step} ) print(f“Thought: {current_thought.next_action_intent}”) # 1. 基于當(dāng)前Thought決定下一步Action (這里用LLM或規(guī)則引擎) action await self._decide_action(current_thought) if action is None: # 決策失敗可能是LLM返回了無(wú)法解析的內(nèi)容 return {“status”: “error”, “message”: “Failed to decide next action.”} print(f“Action: Call {action.tool_name} with {action.parameters}”) # 2. 執(zhí)行Action獲取Observation observation await self.tool_registry.execute(action.tool_name, action.parameters) print(f“Observation: {observation.status} - {observation.message or observation.data}”) # 3. 記錄這一步 step_record AgentStep( step_idcurrent_thought.step, thoughtcurrent_thought.model_copy(), actionaction, observationobservation ) self.history.append(step_record) # 4. 檢查是否成功、是否需要人工介入、是否出錯(cuò) if observation.status “need_human”: return {“status”: “pending_human”, “history”: self.history, “message”: observation.message} elif observation.status “error”: # 錯(cuò)誤處理根據(jù)策略決定重試、換方案還是失敗 if not await self._handle_error(current_thought, action, observation): return {“status”: “failed”, “history”: self.history, “error”: observation.message} # 如果handle_error返回True表示已處理如重試?yán)^續(xù)循環(huán) continue # 5. 基于Observation和當(dāng)前狀態(tài)生成下一步的Thought (這里用LLM或規(guī)則引擎) next_thought await self._update_thought(current_thought, action, observation) if next_thought is None: return {“status”: “error”, “message”: “Failed to update thought.”} # 6. 檢查任務(wù)是否完成例如Thought中標(biāo)記goal_achieved為True if getattr(next_thought, “goal_achieved”, False): return {“status”: “success”, “history”: self.history, “result”: next_thought.known_info} current_thought next_thought current_thought.step 1 # 循環(huán)結(jié)束達(dá)到最大步數(shù) return {“status”: “max_steps_exceeded”, “history”: self.history} async def _decide_action(self, thought: Thought) - Optional[Action]: 決策邏輯。這里簡(jiǎn)化處理實(shí)際應(yīng)集成LLM或復(fù)雜的規(guī)則引擎。 # 示例一個(gè)非常簡(jiǎn)單的基于意圖的規(guī)則決策 intent thought.next_action_intent.lower() if “time” in intent: return Action(tool_name“get_current_time”, parameters{“timezone”: “Asia/Shanghai”}) elif “calculate” in intent or “math” in intent: # 這里需要從thought.known_info或更復(fù)雜的解析中獲取表達(dá)式 # 僅為示例 return Action(tool_name“calculator”, parameters{“expression”: “3 5 * 2”}) else: # 無(wú)法決策返回一個(gè)請(qǐng)求幫助的Action或者調(diào)用一個(gè)“clarify”工具 # 更合理的做法是這里集成LLM調(diào)用 # 模擬LLM返回一個(gè)錯(cuò)誤 return None async def _update_thought(self, old_thought: Thought, action: Action, observation: Observation) - Optional[Thought]: 更新?tīng)顟B(tài)邏輯。這里同樣需要集成LLM。 # 簡(jiǎn)化將結(jié)果存入known_info并設(shè)置一個(gè)簡(jiǎn)單的下一步意圖 new_thought old_thought.model_copy() new_thought.known_info[f“step_{old_thought.step}_result”] observation.data if action.tool_name “get_current_time”: new_thought.next_action_intent “時(shí)間已獲取任務(wù)完成” new_thought.goal_achieved True # 假設(shè)獲取時(shí)間就是目標(biāo) elif action.tool_name “calculator”: new_thought.next_action_intent “計(jì)算完成任務(wù)結(jié)束” new_thought.goal_achieved True else: new_thought.next_action_intent “分析上一步結(jié)果并決定下一步” return new_thought async def _handle_error(self, thought: Thought, failed_action: Action, error_obs: Observation) - bool: 錯(cuò)誤處理策略。返回True表示錯(cuò)誤已處理可繼續(xù)False表示致命錯(cuò)誤應(yīng)停止。 # 簡(jiǎn)單策略如果是calculator工具的參數(shù)錯(cuò)誤嘗試修正一次示例 if failed_action.tool_name “calculator” and “invalid characters” in error_obs.message: print(f“檢測(cè)到計(jì)算表達(dá)式錯(cuò)誤嘗試修正...”) # 這里可以嘗試清理表達(dá)式或使用備用表達(dá)式 # 本例中我們只是記錄并繼續(xù)實(shí)際應(yīng)更新thought和action # 例如將known_info中的某個(gè)標(biāo)記設(shè)為True讓_decide_action下次選擇其他路徑 thought.known_info[“calculator_failed”] True return True # 錯(cuò)誤已處理可以繼續(xù)下一輪循環(huán)但本輪循環(huán)的action已經(jīng)失敗thought未更新下次循環(huán)會(huì)基于舊的thought決策這可能有問(wèn)題 # 對(duì)于其他錯(cuò)誤我們暫時(shí)無(wú)法處理返回False讓Agent停止 return False5.4 運(yùn)行示例與調(diào)試# 模擬一個(gè)LLM客戶端實(shí)際應(yīng)替換為OpenAI、文心一言等API調(diào)用 class MockLLMClient: async def generate_thought(self, history): # 模擬LLM生成Thought這里返回固定值 return Thought(...) async def generate_action(self, thought): # 模擬LLM生成Action return Action(...) # 初始化并運(yùn)行 async def main(): llm MockLLMClient() agent SimpleAgent(tool_registry, llm) result await agent.run(“幫我計(jì)算一下3加5乘以2等于多少”) print(f“\n最終結(jié)果: {result}”) # 輸出歷史記錄用于調(diào)試 print(“\n 執(zhí)行歷史 ) for step in agent.history: print(f“Step {step.step_id}:”) print(f“ Thought: {step.thought.next_action_intent}”) if step.action: print(f“ Action: {step.action.tool_name}”) if step.observation: print(f“ Observation: {step.observation.status}”) # 運(yùn)行 import asyncio asyncio.run(main())這個(gè)簡(jiǎn)易框架清晰地展示了一個(gè)Agent如何圍繞“三元組”進(jìn)行狀態(tài)流轉(zhuǎn)如何通過(guò)工具管理器調(diào)用外部能力以及如何在核心循環(huán)中嵌入錯(cuò)誤處理邏輯。你可以看到_handle_error函數(shù)就是你的熔斷、降級(jí)和重試策略的入口點(diǎn)。而tool_registry.execute方法則是工具調(diào)用的統(tǒng)一安全門。6. 從“能用”到“好用”高級(jí)模式與工程化考量當(dāng)我們搭建起一個(gè)基礎(chǔ)可運(yùn)行的Agent后下一步就是考慮如何讓它更可靠、更高效、更易于管理和擴(kuò)展。這完全就是后端系統(tǒng)從“Demo”到“生產(chǎn)級(jí)”的演進(jìn)過(guò)程。6.1 支持復(fù)雜任務(wù)的工作流與子任務(wù)分解簡(jiǎn)單的線性“思考-行動(dòng)”循環(huán)對(duì)于復(fù)雜任務(wù)是不夠的。一個(gè)“規(guī)劃國(guó)慶旅行”的Agent需要先查天氣、再訂機(jī)票、然后訂酒店可能還需要查詢當(dāng)?shù)毓ヂ?。這些步驟之間有依賴關(guān)系訂酒店最好在確定目的地和日期之后也可能并行執(zhí)行查天氣和查攻略可以同時(shí)進(jìn)行。解決方案在Thought中引入任務(wù)棧或工作流引擎任務(wù)棧Thought中可以維護(hù)一個(gè)task_stack。當(dāng)主任務(wù)被分解為子任務(wù)時(shí)將子任務(wù)壓棧。當(dāng)前任務(wù)完成后再?gòu)棾鱿乱粋€(gè)任務(wù)。這類似于程序執(zhí)行的調(diào)用棧。集成工作流引擎對(duì)于極其復(fù)雜的場(chǎng)景可以直接將Agent作為工作流引擎的一個(gè)“智能節(jié)點(diǎn)”。工作流引擎如Airflow、Temporal負(fù)責(zé)定義任務(wù)DAG、調(diào)度和重試而Agent節(jié)點(diǎn)負(fù)責(zé)執(zhí)行其中需要“智能”的步驟如“根據(jù)用戶偏好從10個(gè)結(jié)果中推薦3個(gè)酒店”。這樣持久化、狀態(tài)恢復(fù)、并行化等難題就交給了成熟的引擎來(lái)處理。6.2 記憶與上下文管理避免“金魚腦”大模型有上下文長(zhǎng)度限制Agent也不能無(wú)限記住所有歷史。如何讓Agent擁有“長(zhǎng)期記憶”和“短期工作記憶”向量數(shù)據(jù)庫(kù)作為長(zhǎng)期記憶這是目前的主流方案。將重要的歷史交互如用戶偏好、已執(zhí)行的成功操作、學(xué)到的知識(shí)轉(zhuǎn)換成向量存入像Pinecone、Chroma這樣的向量數(shù)據(jù)庫(kù)。當(dāng)需要相關(guān)信息時(shí)通過(guò)向量相似度檢索召回。這相當(dāng)于后端系統(tǒng)的“緩存”或“歸檔數(shù)據(jù)庫(kù)”。Thought的摘要與提煉不要將原始的、冗長(zhǎng)的Observation全部塞進(jìn)下一次的Thought。而是設(shè)計(jì)一個(gè)“摘要”工具或步驟將冗長(zhǎng)的結(jié)果提煉成關(guān)鍵信息。例如搜索返回了10條航班信息可以摘要為“找到10個(gè)航班最早一班是XX最便宜一班是YY價(jià)格范圍是ZZ?!?這大大節(jié)省了上下文空間也提高了思考效率。分層記憶結(jié)構(gòu)可以設(shè)計(jì)會(huì)話級(jí)記憶本次對(duì)話、任務(wù)級(jí)記憶當(dāng)前復(fù)雜任務(wù)、用戶級(jí)記憶用戶長(zhǎng)期偏好。不同級(jí)別的記憶有不同的存儲(chǔ)和檢索策略。6.3 可觀測(cè)性與調(diào)試給Agent裝上“黑匣子”一個(gè)行為不可預(yù)測(cè)的Agent是可怕的。我們必須能監(jiān)控、記錄和調(diào)試它。結(jié)構(gòu)化日志Agent的每一個(gè)步驟三元組都必須被完整、結(jié)構(gòu)化地記錄下來(lái)。日志應(yīng)包含時(shí)間戳、會(huì)話ID、步驟ID、完整的Thought/ Action/ Observation數(shù)據(jù)、耗時(shí)、錯(cuò)誤信息等。這比打印文本日志強(qiáng)大得多便于后續(xù)分析和重放。追蹤與鏈路為每個(gè)用戶會(huì)話或任務(wù)生成唯一的trace_id并貫穿所有的工具調(diào)用。這樣當(dāng)工具調(diào)用失敗時(shí)你可以通過(guò)trace_id在后端各個(gè)微服務(wù)的日志中串聯(lián)起完整的調(diào)用鏈快速定位問(wèn)題。可視化調(diào)試界面開(kāi)發(fā)一個(gè)簡(jiǎn)單的Web界面能夠?qū)崟r(shí)查看Agent的執(zhí)行歷史以流程圖或時(shí)間線形式并能手動(dòng)編輯或回退到某一步的Thought重新執(zhí)行。這對(duì)于開(kāi)發(fā)和排查復(fù)雜問(wèn)題至關(guān)重要。6.4 性能與成本優(yōu)化Agent的思考調(diào)用大模型和工具調(diào)用調(diào)用API都可能很昂貴、很慢。緩存對(duì)于確定性較高的工具調(diào)用如查詢某個(gè)靜態(tài)信息、計(jì)算固定表達(dá)式結(jié)果可以緩存。對(duì)于LLM的思考如果相同的Thought在相同上下文中總是產(chǎn)生相同的Action也可以考慮緩存。但要注意緩存的有效性和安全性。異步與并行如果多個(gè)工具調(diào)用之間沒(méi)有依賴關(guān)系一定要并行執(zhí)行。asyncio.gather()是你的好朋友。這能顯著降低任務(wù)的總耗時(shí)。LLM調(diào)用優(yōu)化思維鏈CoT壓縮在將歷史對(duì)話喂給LLM生成下一步Thought時(shí)可以對(duì)之前的CoT進(jìn)行壓縮或總結(jié)只保留精華。模型分級(jí)不是每一步思考都需要用最強(qiáng)大、最貴的模型。可以設(shè)計(jì)一個(gè)路由策略簡(jiǎn)單決策用小模型復(fù)雜規(guī)劃再用大模型。提前停止如果Agent已經(jīng)明確達(dá)到了終止條件如成功、失敗、需要人工介入就不要再調(diào)用LLM做無(wú)謂的“下一步思考”了。7. 總結(jié)與個(gè)人體會(huì)走完這一趟從后端視角拆解Agent的旅程我的最大感受是Agent開(kāi)發(fā)本質(zhì)上是“智能”與傳統(tǒng)“軟件工程”的深度融合。大語(yǔ)言模型提供了前所未有的自然語(yǔ)言理解和生成能力但它不穩(wěn)定、不可控、成本高。而軟件工程尤其是后端分布式系統(tǒng)領(lǐng)域積累的幾十年經(jīng)驗(yàn)——模塊化、接口標(biāo)準(zhǔn)化、狀態(tài)管理、錯(cuò)誤處理、可觀測(cè)性——正是用來(lái)約束和賦能這種“智能”使其變得可靠、可用、可維護(hù)的關(guān)鍵。不要被“智能體”、“自主”這些詞嚇到。當(dāng)你開(kāi)始動(dòng)手時(shí)請(qǐng)時(shí)刻記住狀態(tài)是核心用“三元組”清晰地定義和記錄狀態(tài)這是所有邏輯的基礎(chǔ)。工具是手腳像設(shè)計(jì)微服務(wù)API一樣設(shè)計(jì)你的工具明確、健壯、可復(fù)用。錯(cuò)誤是常態(tài)假設(shè)一切都會(huì)出錯(cuò)并為此設(shè)計(jì)層層防線。重試、降級(jí)、熔斷、超時(shí)這些分布式系統(tǒng)的老套路在Agent世界里一樣好使。可觀測(cè)性是生命線沒(méi)有日志、沒(méi)有追蹤、無(wú)法重現(xiàn)問(wèn)題的Agent就像在黑暗中閉眼開(kāi)車。我自己的幾個(gè)項(xiàng)目從最初的“一把梭”調(diào)用GPT到現(xiàn)在擁有完整的狀態(tài)機(jī)、工具庫(kù)、錯(cuò)誤恢復(fù)和監(jiān)控面板穩(wěn)定性和用戶體驗(yàn)有了質(zhì)的提升。這條路沒(méi)有捷徑就是把這些后端工程的基本功扎實(shí)地應(yīng)用到Agent的架構(gòu)中去。希望這篇基于后端思維的長(zhǎng)文能給你帶來(lái)一些不一樣的、更落地的啟發(fā)。下次當(dāng)你再看到那些炫酷的Agent演示時(shí)不妨想想它的“三元組”在哪里流轉(zhuǎn)它的“工具調(diào)用”失敗了會(huì)怎樣它的“錯(cuò)誤處理”防線有幾層。想明白了這些你離自己構(gòu)建一個(gè)生產(chǎn)可用的Agent就不遠(yuǎn)了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91综合网站| 精品久久久无码| 亚洲综合色在线| www.久久| 国产三级多多影院2022国产AA一级毛片无码 | 不卡在线一区,精品一区二区三区中| 亚洲视频精选| 日韩成人人妻网站| 国产熟女精品区| 亚洲色色色| 久久精品国产亚洲AV成人直播| 国产精品久久久| 久久久91福利姬| 日韩AV色图| 亚洲啪啪性视频| 成人免费看吃奶视频网站| 久久精品操| 欧美日韩亚洲天堂网| 久操黄色视频| 91色艳| 网页导航五月天免费一二三区| 国产一级舔足在线观看| 嗯嗯不要 视频| 精品人妻一区二区蜜桃视频 | 亚洲97超碰| 干妹子| 嗯嗯啊啊视频一区二区三区| 淫色网综合| 天天日天天舔天天喷天天射| 校园春色制服丝袜中文字亚洲 | 日韩欧美女求操每天更新| 国产1727欧美| 青青操视频在线| 久久亚洲不卡一区二区三区| 人人澡人人爽人人精品| 日韩99神马视频播放片在线播放| 亚洲精品男人的天堂| 亚洲一区二区三区AV无码| 九色精品视频导航1| av网站免费线看| 日韩中文字墓| www.91逼逼.com| 久久久久久久久久va| 亚洲一区中文精品| 人妻 丝袜美腿 中文字幕| 性爱综合一区二区| 特级丰满少妇一级AAAA爱毛片| 亚洲精品尤物yw在线影院| 人人操人人插人www| 成人免费视瓶| 99热网站| 手机不卡视频不卡在线一二三区| 天天碰操中国年青熟妇| 精品乱码在线观看| 91天天| 一区二区中文| 日韩黄片视频试看| 黄片在线免费在线观看| 激情综合网激情五月天| 久久大香蕉手机高清视频| 欧美日韩大陆黑人少妇99| 欧美亚洲厕所精品偷拍91 | 日韩性爱网址| 91人妻丝袜无码| 国产精品久久久777| 欧美激色| 免费a v| 久久riav中文精品| 久超碰在| 天天影视综合色| 狠狠操使劲操| 天天精品| Julia Annxxxxx| 偷拍 亚洲 欧美| 国产日韩无码一区二区三区久久区| 日本人妻中文字幕精品| 91在线页| 97射欧美| 人人干人人操人人..com| 91超级碰碰碰| 欧美视频激情久久久久久| 一本色道久久综合狠狠操| www.av家庭乱伦| 91在线视频观看国产| 极品色www影院| 欧美18禁91| 人伦四五区| 日本色色视频网站| 农村妇女一级二级三级视频| 欧美高潮| 亚洲中文日韩欧美大香蕉视频| 欧美性特| 青青草原香蕉日本Ap| 99久久久无码精品国产人| 99色天堂| 亚洲国产中文字幕| 91精品久久久| 老熟女熟妇| 加勒比海人人操超碰在线| 亚洲 欧美 手机在线观看| 91人妻丝袜无码| 日本2020一区二区| av天堂5| 综合 青草 伊久久 影院 综合| 色原狠狠天天天| 国产91乱伦| 好湿好紧好爽 视频| 久久香蕉国产线看观看亚洲女人| 亚洲一区日韩| 情色图区| 国产99 中文字幕日韩小视频| 97一区二区蜜臀| 欧美情色亚洲| 大香蕉520| 亚欧美综合网。| 高潮毛片无遮挡高清免费| 校园春色 男人天堂| 久久久久人| 欧美性爱免费短视频| 欧美中文字幕男人天堂久久精品| 欧美一二三| 婷婷亚洲天堂| 亚洲一区日韩精品中文字幕 | 96精品久久久| 伊人色综合网电影 | 天天操夜夜操| 欧美日韩97| 日韩精品.久久精品.AV女优.天美传媒| 青娱乐91| 一区二区久久天天干狠狠| 熟女人妻一区二区三区| 97超级久久强资源| AV一起草在线| 啊啊啊啊啊好舒服视频| 免费一级欧美片片线观看| 青青青草原| 激情婷婷五月天| 91天堂网| 欧美精品双插| 性爱精品一区| 久久春色| 二级毛片| 久久草草欧美精品| 无码最新| 久久精品久| 欧美999| 国产精品毛片?v一区二区三区| 天天影视射综合网| 国产浮力影院第1页| 欧美97爱| 91美女视频。| 超碰到97情色| 97中文字幕色| 久操大香蕉| 黄色高清无码无码破解免费暗网| 9久9久| 日本熟妇色熟妇在线视频播放| 99re9在线| 日韩亚洲中文字幕在线| 啪啪性爱免费视频| 欧美熟妇精品黑人巨大91| 好舒服视频| 偷拍在线观看视频| 超碰碰97| 97er欧美性| 人妻在线臀日韩| 五月天激情国产综合婷婷婷| 91热爆在线| 97干在线| 久久久工口| 校园春色之综合网| 欧美国产视频| 人妻色情天天操| 久草电影网| 99热国产精品| 妇女一区二区三区| 国产精品无码久久久久2025| 乱伦一区二区三区‘| 国产精品激情久久久久久久| av天堂5| 久久国产视频性吧 | 欧美色999| 屁股久久久久久久久久| 日日操夜夜操天天操免费观看麻豆| 97在线视频网站| 国内精品久久人妻性色av| 综合五月婷婷亚洲一区| 东北黄色电影| 老司机午夜福利视频一区二区| 超碰久草| 久久91精品国产9丨久久分亭| 久热大香蕉| 青青草视频在线观看一区二区| 中文字幕视频免费| 九九九九亚洲| 日韩久久.一级黄色片| 91五月天| 中文久久96| 日韩99999| 亚洲av无码成电影在线播放| 欧美做爰无码A片视频| 精品亚洲俞拍视频一区| 欧洲久久一二线| 自拍鲍鱼一区在线高清观看免费| 天天操女人| 少妇蜜汁| 国产黄色 A 片免费看| 亚州一区二区| 99精品欧美一区二区三区桃色| 亚洲中文字幕妇伦久久| 操一对老熟妇爽上天视频| 欧美操逼视频二区| 亭亭在线资源| 黑人白女精品一区| 久久久精品91八戒| 精品传媒在线一区| 视频在线观看免费一区二区三区| 操老熟女AV| 丝袜无码a片| 成人免费性爱视视| 久久精品国产亚洲AV高级北京| 欧美色交| 91天美传媒精品| 在线人成亚洲视频免费观看| 欧美97免费| 欧美97视频| 亚洲av无码成人精品国产| 久久国产精品熟女人妻| 国产精品久久久久久夜夜夜| 日本一区二区成人在线| 国产极品美女高潮无套在线观看| 国产精品午夜福利| 国产视频三区四区| 91国产精品在线看| 日韩一999精品| 九九热在线视频| 亚洲精品免费中文字幕| 日本精品免费一区二区三区四区| 欧日a| 高清国产精品福利网站| 成人老鸭窝人人在线视频| 欧美日韩色综合网| 一区二区乱码福利| julia ann久久| 伊人精品久久网站| 欧洲免费一区二| 色色色热| 97人人干人人操| 亚洲九九九| 色哟哟国产精品免费网址| 欧洲性爱无码区| 老熟女综合| 91精品国产91熟女| 东京热激情视频一二三区| 九九无码视频| 91视频精品| 99这里有精品| 欧美色图中文字幕| 日韩欧美中文字| 日产中文字幕2020| 欧美高清性猛交| 91老熟女逼| 日韩精品区二区三区不卡| 亚洲超碰在线| 熟妇在线视频一区二区| 91狠| 亚州高清av| 亚洲熟女乱色一区二区三区久久久 | 久久色激情一区二区三区| 四虎午夜影院| 激情干在线| 色五月婷婷麻豆在| 国产精品成久久久久午夜午夜| 又黄又粗又硬又长又大| 在线情色电影 91大| 久久九操在线观看| 91天天| 蜜乳AV.COM| 欧美国产欧美在线观看| 无遮挡猛进视频免费无限观看| 黄片无码在线制服| 日韩人妻大香蕉| 成人熟女视频一区二区三区| 亚州久久9| 久久熟女嫩草成人片免费| 99久久精品无码一区二区毛片免费| 九九热久久99精品re| 日韩激情中文字幕有码| 伊人97色天使| 久久三| 97超碰人人模人人拍人人| 视频黄站| 智利AV在线网| 日本色色色视频| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 青青三级视频| 韩国毛片一区二区三区| 啪啪啪大香蕉| 香蕉久久精品| 91亚洲人| 欧美色图97| 欧美综合亚洲综合| 亚洲成人无码影院| 99re不伦| 亚洲图片91| 丝袜人妻av一区二区| 日本色色视频网站| 欧美黄页在线| 精品传媒在线一区| 国产福利精品最新在线| 91 国产丝袜在线放观看| 亚洲风情综合网| 欧洲黄色网| 中国女人内射6XXXXX| 98色网| 97青娱乐超碰久久| 欧美资源| 国产精品一区二区在钱播放| 少妇无码999| 天天视频综合在线观看视频| 草b在线 | 日韩欧美字幕亚洲一区二区| 麻豆人妻少妇在线免费观看| 国内精品嫩模A∨私拍小视频| 日韩精品1区2区中文字幕| 日韩中文字幕熟妇人妻| 欧美天天综合在线| 日韩有码免费视频| 97这里只有精品| 亚洲精品欧美专业| 亚洲天堂中文字| 大香蕉在线86| 在线看片国产精品每日更新| 夜夜嗨免费视频| 国产精品午夜高潮呻吟久久av| 玖玖爱综合| 日韩免费簧片| 欧洲与亚洲欧美精品中文字幕| 国产精品成人无码a v毛片| 天天天天天天天天综合| 超碰成人国产| 久久人妻少妇| 国产91美女高潮| 午夜a成v人电影| 久久妇| 综合婷婷| 91美女在线观看| 天天欧美色| 性久久久| 色图综合网| 伊人久久久日韩一区| 国产一在线观看| 欧美极品| 日韩欧美偷拍美女视频| 伊人久久88国产女| 肉嘟嘟www视频在线观看高清| 天堂亚洲欧美| 91日产欧美| 五月丁香综合激情| 成人av福利在线观看| 久久久极品| 狠狠图片青青草| 欧美一级黄片免费播放| 日韩欧美加勒比| 狠狠色五月亚洲91| 大香蕉天天看妹子| 亚洲中文制服诱惑| 亚洲综合春色| 国产 热久久久久国产精品| 激情五月天中文字幕色| 99精品九九九九九九| 人妻一区二区三区| 欧美亚洲日韩人妻在线观看| 久久婷婷一区二| 玖玖资源视频一区二区三区| 婷婷五月影院| 日本福利二区视频| 亚洲日韩精品在线播放| 伊人操你| 96久久久久| 一本色道熟妇| 日韩av电影网站| 青青国产在线拍揄自揄拍| 久草精品热视| 久久99手机免费视频| 动漫片子网站3黄| 激情五月天综合网| 天天操女人| 亚洲夜色在线| 久久色情| 翔田千里av一区二区三区| 熟妇xxxxx性春色| 国产一区二区三区免费视频在性观看| 97色伦97色伦国产欧美| 亚洲欧美自拍偷拍| 成年女人黄网站| 中文字幕日本久久| 不卡啪啪视频| 青青草日韩无码| 97精彩视频网站| 久久αⅴ| 97干色天堂| 激情五月天社区| 97欧美色综合| 欧美伦乱爱| 熟妇人妻一区二区三区| 色综合久久夜色精品国产天堂| 97啪啪| 婷婷综合久久| 伊人991| 美女91网| 久草精品国产99| 破苞ⅩXXX性无码动漫无码| 亚洲福利中文字幕在线| 9精品在线| 亚洲情色 无码专区| 日本一区二区亚洲综合| 一级啊性爱在线视频| 丁香五月天婷婷姐| 亚洲国产97在线精品一区| 亚洲第一页第二页激情| 丁香五月激情综合| 97超碰欧美手机在线| 欧美天天综合| 国产成人网| 大香蕉综合| 91亚洲人| 另类欧美综合| 偷看洗澡一二三区美女| 操逼短片| 综合免费无码中文| 美女久久久久久久| 日本孕妇一区二区视频操逼免费看 | 日韩av情韩国爱禁区av一区二区| 你懂的在线观看区国产| 欧美天天拍| 亚洲乱妇p22| 亚洲五月天激情| 欧美se综合| 日韩A优精品在线观看| 午夜精品久久久久久久99热影院| 人人操人人色网| 亚洲色91C| 在线观看一卡二卡| 久久东京热久久| 中文字幕jul-617人妻熟女| 国产污视频麻豆传媒一区二区| 欧美淫乱视频| 天天干天天干天天干| 国产自偷| 激情文学网伊人| 夜夜夜夜久久久久| 日韩精品人妻中文字幕有码午| 亚洲精品久久久久毛片A片拉屎 | 九九九九97| 亚洲熟女乱色一区二区三区| 男人下部插入女人下部| 日韩视频中文字幕| 一摸二插三插| 校园春色之综合网| 91社操逼| 小电影欧美91| 天堂av2019| 日本操逼视频不卡直接放| 欧洲一区二区三区免费| 丁香五月天啪啪| 日本中文字幕不卡视频| 嗯嗯啊啊啊好舒服| 中文字幕 人妻不满 在线视频| 亚洲精品国产无码高清| 老熟女综合网| av亚洲天堂资源网站| 免费A V在线播放| 一本大道久| 亚洲欧美爆| 国产精品一区午夜福利| 久久一区二区三区四区五区| 国产情色第一第二页在线观看| 久久婷婷色| 女人午夜视频777| 成人乱人伦一区二区| 日少妇视频| 丰满熟妇大乳做爰| 亚洲情色婷婷五月天| 91社区拍啪人妻| 一区二区三区国产精产| 丁香五月天堂网| 中文自拍欧美影视| 午夜福利在线合集| 欧美精品久久久久久久丰满| 少妇久久| 九色黄站| 男人的天堂久久久| 欧美日韩亚洲天堂| 97天天插| 色偷偷综合91久久噜噜| 亚洲,欧美,综合网| 好看的91视频| 日本淫乱女一区二区三区视频| 一区二区三区四区五区久久久久久| 97视频在线免费播放| 欧美 亚洲 另类 综合| 亚洲性猛交| 一直超碰| 久久有码视频| 伦理第一页| 神马久久久久久| 日韩欧美亚欧在线视频| 高清国产性猛交xxxx乱大交| 顶级丝袜熟女一区二区三区| 国产欧美一区激情交| 操逼日韩无码| 91网18| 亚洲脚交| 亚洲图片激情小说| 亚洲综合一区二区| 欧美日韩黄片精品在线| 99热这里只有精品8| 大但人体久久久久| 色五月AV在线| 91视频伊人| 麻豆啪啪啪视频| 国产白领连续中出在线观看| 骚逼高潮久久精品| 992这里有精品| 女人18精品一区二区三区| 中文字幕老熟妇黄色视频| 亚洲精品一二三四区| 成熟熟女国产精品一区二区| 亚洲图片视频小说| 成人精品久久久午夜福利| 亚洲最新中文字幕免费| 97人人操人人干| 日本中文字幕熟妇| 国产精品无码久久久久2025| 五月天激情小说| 国产蜜臀在线| www.99中文字幕| 久久发布国产伦子伦精品| 凹凸 69堂 在线播放| 天天色天天干天天爱| 亚洲91极品| 香蕉国产97| 一区二区三区激情在线观看| 99久热精品99re6热| 日夜伊人网| 色五月av| 久久精品国产亚洲5555| 中文一区二区婷婷视频| 国产精品不卡一区二区三区av| 国产伦乱91| 激情情色五月天| 久久99网站| 久操频道免费在线呗看| 亚洲精品无码少妇久久| 免费在线视频97| 国色天香av| 精品黄色电影| 3028国产精品| 日韩啪啪啪视频| 日本人妻最新在线中| 农村妇女一级二级三级视频| 97超碰欧美精品| 色色综合网站| 人人操人人插 - 百度 - 百度| 欧美日韩淫加| 日本www操操操| 久久精品99| 狠狠干综合| 国产综合色精品在线观看| 熟妇人妻一区二区三区| 两性综合网| 性色综合网| 欧美18禁91| 欧美日韩国产中文精品字幕自在自线| 超碰久久网| 亚洲成人在线播放| 一区操逼| 中国人高清www色视频免费| 亚洲另类久操网| 欧美日韩岛国大片在线观看| 清纯唯美亚洲综合| 大香蕉92| 美日韩一二三区| 欧美精品另类人妖xxxx| 日韩精品在线放| 色婷婷一区二区三区久久| 少妇天堂网络| 99re6国产精品99re在线| 丁香五月色情| 午夜福利成人免费视频| 人人操人人爽人人操人人| 精品妇操一区二区三区| 麻豆精品三区视频| 亚洲不卡av在线| 色嘟嘟人妻天堂网| 激情文学网伊人| 日韩激情中文字幕有码| 亚洲av性爱电影| 啊啊啊慢点| www.91视频网| 久夜操| 国内外毛片在线观看| 色天堂综合| 后入 亚洲 美女 射| 日本熟妇一区二区三区| 国产成人无码久久精品| 欧美精品1区2区3区| 天天干天天狼在线视频| 九月丁香婷婷色| 亚洲码在线中文在线观看| 黑人美精品 A片| 国产强奸乱伦xd| 大香蕉www.超碰| 国产精品久久99日日| 日韩乱伦影音先锋| 五月天婷精品激情| 精品v日韩欧美国产| 国产 亚洲 丝袜 制服| 粉嫩不卡一区二区性爱| 色综合91| 97网址97| 欧美牲| 精品人妻中文字幕4399| av最新免费中文字幕| 亚洲成人av电影在线| 精品中文字幕一区二区l - 百度| 777AV电影| 亚洲色五月| 国产精品不卡一区二区三区| 91性网| 岛国视频一二三区| 久久久久成人蜜桃精品| 激情小说亚洲视频| 四虎免费在线观看| 天天操人人操狠狠插| 97最新在线播放视频| 欧美亚洲激情小说| 欧美最大综合网| 超碰在线一区二区| 五月天婷婷色| 亚av顶级裸体一区二区三区四区五区 | 秋霞鲁丝午夜无码一区二区三| 精品午夜福利| 粉嫩在线一区二区懂色| 91色伦综合| 日韩欧美性吧婷婷乱伦大香蕉| 手机在线人成免费视频| 国产男女无套97| 亚洲中文字幕熟女| 99精品无码| 啊啊啊啊嗯嗯在线久久久| 欧美日韩精品一区二区三区高清| 国产青一二三| 男人的天堂视频精品乱在线| 欧美成人性爱视频大全| 天操天操夜操夜月月年年操操| 五十路三区在线| 一区,二区,三区视频| 国产91精品福利在线| 日日躁夜夜躁狠狠躁超爽| 中文字幕123| 伊人玖玖网| 深爱五月婷婷| A 在线网址| 黄片免费视频2019| 国产呦精品系列在线观看| 亚洲性综合| www.久久最新地址| 久久网亚洲| 亚洲va综合va国产va中文| 久久久一区二区三区四区五区| 色九九九九久| 欧美一二三级精品在线| 亚洲素人网| 激情色播| 被窝影院午夜看片无码| 天美一区在线| 亚洲激情网一二三四区| 手机午夜电影神马久久| 日韩欧美水蜜桃人妻| 久久久久久AⅤ无码免费肉站| 日韩综合97p| 中文字幕55555| 人人干人人操人人..com| 91性情| 97超碰色屌| 韩国一级婬片A片AAAAA| 黄片www视频免费| 岛国不卡超碰护士AV在线播放| 91视频综合网| 男人的天堂VA在线| 欧美综合综合| 欧美很很操视频| 久久久555| 成 人片 黄色大片| 蜜桃久久一区| www.高清无码诱惑一区.com | 91亚洲不卡一区| 人妻系列无码专区中文有码| 久久精品一区二区三区四区五区| 国产亚洲日本| 强奸少妇AV导航网| 久久婷综合| 久久一区二区高清免费| 精品人妻一二三| 久久华人网| 丝袜综合| 天天欧美色| 这里都是精品在线观看| 成人免费看吃奶视频网站| 色臀AV| 欧美亚洲国产日本在线,久久精品国产| 熟妇在线视频一区二区| 五月婷婷丁香中文字幕| 奇米四色影视777久久久| 男人的天堂2018| 天天综合网在线91| 精品国产乱码久久久久久日本公司| 九九九久千久久激情蜜桃在线看 | 夜夜爽77777| 97色干| 国产二区三区粉嫩在线| 又黄又爽在线观看视频| 自偷自拍的亚洲视频| 国产精品极品美女视频| 为用户提供免费看黄网址在线观看| 校园春色五月天| 992视频一区| 91视频女生| 午夜精品久久久久久久99| 性爱欧美五月| 色娱乐色呦呦夜夜夜夜av| 欧美色图亚洲特色| 超碰性爱97| 久久嫩草国产成人一区| 久久久不能久久久久| 五月天春色激情网| 欧美亚男人的天堂| 日本不卡高清免v欧美日韩在线观看| 天天日天天插| 日韩AV电影网站| 久久超碰爱| 夜夜夜久久| 少妇与黑人高潮在线| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 亚洲综合校园春色| 97伦乱| 美女黄色91| 91 丝袜在线播放| 翔田千里A片一区二区| 97超碰人人模人人拍人人| 国产亚洲精品一区二区三区| 欧美特大AA级黄片| 无码操逼网| 麻豆国产96在线| 九九这里只有精品| 久久久久久久久久久久久久9999| 亚洲男人天堂2012| 熟女高潮合集-永久久久-成人AV | 国产精品白领在线观看 | 国产熟女二区| 爱丝福利| 超碰95| 日本免费中文字幕在线| 91狼人| 免费观看有码高清视频| 久久人人爽爽爽人久久久| 99蜜桃臀久久久欧美精品网站| 亚洲欧美综合网站| 91五十路| 老熟女乱子伦中文字幕一区二区| 欧美 亚洲 偷拍自拍| 国产亚洲一黄| 免费成人在线熟妇网| 国产精品伦理| 久久黄片国产一区二区| 午夜精品久久久久久久99蜜桃一| 一区二区三区在线资源| 亚洲91网站| 97碰碰色| 成人亚欧免费视频| 日本人体九九九九九九| 老熟妇一区二区三区啪啪| 欧美性夜| 激情综合二| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国产又粗又长视频| 亚洲激情综合另类男同| 五月天综合网| 亚洲色图 图片| 激情色图| 91精品丝袜在线观看| 91天美传媒精品| 不卡视频一区蜜桃视频| 国模不卡| 欧美亚洲20p| 亚洲国产天堂| 人人操,操人人| 日本丝袜美腿人妻九九| 日日不卡av| 天天视频综合在线观看视频| 亚洲精品丝袜| 淫淫综合网| 久久精品国产亚洲AV片多多| 亚洲少妇诱惑| 亚州男人天堂| 操美女高潮抽搐白浆| 最新av在线| 国产一级舔足在线观看| 男人的天堂啪啪| 国产中午字一暮区| 久久国产性爱| 男人 天堂 日 亚洲| 26uuu久久| 69超碰综合| 97国产|免费| 午夜福利视频在线一区| 我中文字幕6区| 亚洲国产欧美一区二区潘金莲 | 国产黄色视频久久| 欧美第一页性| 97天堂| 天美传媒国产原创中文字幕亚洲欧美另类 | 人妻精品视频一区二区三区| 五月色综合| 综合五月天| 日本综合色图| 97超碰欧美手机| 老色鬼成人精品视频下载大在线观看| 黄片在线免费在线观看| 另类天堂| 超碰在线免费一区二区三区| 丁香色五月 97干| 屌逼麻豆| 狠狠爱大香蕉| 亚洲不卡AV在线| 91综合熟女| 97超碰色五月| 国产内射爽爽大片| 九九久久久久久爱| 在线人成亚洲视频免费观看| 日本丝袜美腿人妻九九| 免费观看网黄| 亚洲成人妻日韩在线| 天天操天天射天天日| 偷拍色图| 99热这里只有精品地址| 久操电影网| 久久香蕉国产传媒一区剧情天美| 超碰97亚洲| 一区二区三区四区姦女| 宅男影院久久久,99| 97免费视频在线观看视频| 日本韩欧美在线播放a| 国产伊人精品在线| 粉嫩国产精品久久粉嫩| 性爱网站一区二区| 午夜精品久久久久久久| 99热成人| 日本操逼aaaaa| 91女优在线观看| 激情五月天婷婷| 亚洲一区二区三区在线激情| 伊蕉97蜜桃97狠狠综合干| 插日本熟女视频| 伊人九九九| 精品十三区| 婷婷深爱五月| 欧美性xxxxx狂欢| 热热色色综合| 中文字幕五区| 熟女五十路一区二区三| 精品1区2区3区| 久久精品老司| www久久久| 天天躁日日躁AAAAXXXX国产| 日本不卡中文| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 亚洲少妇喷视频看| 九月激情婷婷| 91亚洲人| 欧美人人天天网| 夜色五月天| 亚洲高清无码在线桃色| 欧美超碰97| AV天黑人| 美女啪欧美一区| 色优久久| 国产AV激情无码久久无码| 日本女人久久久| 加勒比人妻综合| 久久99国产综合精品女同| 久久性爱大全| ,成人免费啪啪视频| 一区二区三区一亚洲中文字幕、综合区灬 | 欧美极品女人的天堂| 99在线无码精品秘 入口黑人| 欧美激情专区| 91天天综合在线观看| 九九热视频这里只有精品| 亚洲人妻av| 上海一级黄片| 天天射天天操天天干天天吃2018 | 亚洲国产欧美中日韩成人综合视频| 永久免费观看的毛片的网站| 日韩欧美三级| 国产99999久久精品| n1038 一二三区| 97色五月天完| 五月天开心网| 亚欧性爱在线无码| 日本女优在线视频福利| AA级电影三区| 97超碰人人操人人操| 78精品在线| 热G综合热G中文| 国产成人精品一区| 久久超碰、| 日本午夜福利视频| 亚洲AV成人精品网站在AV| 欧美色图校园春色| 伊人嫩草| 职场同事知名国产国产精品久久欧美日韩| 超碰97在线 欧美 国产| 青青草九九九九九| 东京热激情视频一二三区| 99综合| 91丨九色丨东北熟女| 婷婷色影院| 激情看片网站| 国产三级日产三级韩国三级| 国产理论视频在线播放| 伊人久久在线视频观看| 91精品女厕偷拍视频| 大香蕉视频一二三区| 人人贴人人摸| 在线一道啪| 乱伦AVxx| 性色av婷婷久久一区二区点复制| 色官网在线| 色狠狠综合| 99热在线观看| 91N五十路| 诱惑人妻欧美一区在线播放| 麻豆激情综合| 久久久九九| 欧美色97| 色激情综合网站| 欧美日韩性爱电影在线| 强奸国产在线| 岛国精品视频在线观看 | 欧美性五月| 青青青在线高清视频在线一二三四区| 欧美日韩亚洲天堂| 明星性猛交ⅹxxx乱大交| 成人av在线播放| 大色综合网| 亚洲无码色| 97硬碰| 天天情欲宗合网| 中文字幕视频在线观看| 91福利网在线观看| h4610国产人妻| 婷婷91| 成人熟女视频一区二区三区| 伊人国产视频| 美女91网址| 人妻另类 专区 欧美 制服| 色网在线视频观看免费| 精品超碰国产| 久久久久久久久久久97| 日韩不卡网操逼中文字幕日韩| 插插综合网天天影视网| 国产毛片片精品天天看视频| 日本免费人成视频播放120秒| 国产超碰| 久久精品老司| 久久国产精品一区二区| 日B操| 操人无码| 吉川爱美亚洲二区在线| 欧美色图20P| 麻花豆传媒剧国产MV出差| 久久九色| 乱久久久| 色姑娘综合网| 日韩不卡a级视频专区| 天天看片天天爽| 99久在线精品99re8| 色吧 综合| 天天看,天天做| 亚欧中文字幕在线视频| 久久东京热成人| 国产精品久久久久亚洲av| 一区二区三区在线资源| 久久久久无码一妻区| 私人尤物在线精品不卡| 精品亚洲国产成人AV制服丝袜| 中文字幕片| 一区二区视频在看| 精品在线观看视频在线| 好看的91视频| 九九九九精品| 色色热| 久草成人影片| 亚洲精品无码成人久久久99| 中文字幕加勒比海高清无码免费视频| 欧美日韩精品久久久久东北老熟妇| 91色人妻| 炮色五月| 精品亚洲天堂| 国产高潮AA片免费看| 亚熟hd视频在线| 亚洲欧美国产va在线播放频| 天天操夜夜操| 色97欧美| 一区在线国产播放| 91熟女少妇| 特级毛片特黄久久免费看| 鸥美插入视频| 三级日韩一区二区三区| 青青草日逼视频| 免费a v| 99久久久无码| 超碰午夜| 精品人妻一区二区三区-国产精品| 久久99九九九九6666免费观看软件| 爆操无码| 天天综合网视频91| 欧美日韩岛国大片在线观看| 加勒比色综合| 亚洲砖码砖专无区2023| 午夜无码熟妇丰满人妻| 永久免费发布性爱网| 欧美日韩亚洲五月天婷婷| 午夜乱轮操逼视频免费看| 物尤视频一区二区| 国产精品99精品视频网站| 精产国品一区二三产品| 午夜a成v人电影| 99精品伊人| 午夜福利精品| 色欧美色交综合| 色5月婷婷| 国产97亚洲| 刺激性视频黄页| 美女露胸露屁股| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 密桃99999| 97人人草| 日本αv| 国产精品另类| 国产一区二区三区精品观看啪| 成人久久久精品| 精品国产久热在线观看| 国产97av| 偷窥自拍亚洲色图| 少妇厨房愉情理伦片bd在线观看| 日韩久久艹| 无码高清专| 91久久国产精品| 91人妻人人妻| 日本性爱欧美性爱| 亚洲天堂久| 夜色五月天| 午夜无遮挡男女啪啪视频| 丝袜美女诱惑 91 视频| 国产精品自产拍在线观看社区| 狠狠躁伊人中文字幕| 99爱久久视频频| 中日韩熟女| 无码78| 久久爱超碰网| 亚洲另类在线观看| 国产一区二区免费福利片| 久久人妻无码毛片A片麻豆| 五月丁香激情综合| 9国产超碰| 99热这里只有精品1| 亚洲精品819| 男人a天堂手机在线版| 久操免费观看| 日韩视频小说在线观看| 色9999日韩国产| 欧美日韩另类在线| 亚洲中文字幕av | 蜜桃臀AV在线| 日本三级小说中文字幕| h无码动漫在线观看| 精品亚洲| 亚洲脚交| 91高跟美女在线播放| 99无码精品| 欧美另类综合久久| 欧美性爱第1 页| 69丨亚洲丨精品丨入口免费播放| 国产天美欧美| 欧美性爱在线无码| 伊人黄色片| 丝袜美腿亚洲| 日韩欧美久久婷婷网站| 亚洲色图国产另类| 亚洲色图久久精品蜜| 在线可观看的黄色网址| 亚洲码在线中文在线观看| 夜夜夜爽www精品视频| 老女人碰碰在线碰碰视频| 东北女人av| 综合五月婷婷| 国产AV无码AV| 国产精品永久免费10000| 亚洲国产精品无石码久久| 亚洲91射| 九七人妻在线| 91美女在线视频| 日本天天人人狠狠在线日美女 | 国产呦精品系列在线观看| 欧美第五页| 激情综合网一盗摄| 97色色国产视频| 嗯~啊~快点 死我视频| 男人的天堂啪啪| 久久婷综合| 亚洲一区中文字幕一区| 亚洲最大的综合性av| 日本三级一区二区 在线| 中文字幕第9页萱萱影音先锋| 诱惑网综合| 91第一页| 在线欧美69V免费观看视频| 国产 日韩,欧美 自拍| 亚洲天堂2020| 人人妻人人爽| 欧美92| 天综合网欧美| 日本精品一区二区三区四区的功能| 欧美在线|亚洲| 国模久久在线| 欧美色道啊| 尤物视频新赏网鲜网色诱网| 91精品操美女| www久久精品| 中韩中文字幕在线观看| 黑丝制服中文字幕| 欧美熟妇色| 78超碰| 精品无码久久久久久久杏吧| a'v在线资源| WWW.操逼.COM| 一级岛国大片| 国产精品嫩草影院免费| 三级网色| 十八禁视频网站| 人妻AV 中文字幕的| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | av黄图片在线观看| 日日狠狠久久偷偷色综合免费| 日韩性爱视频免费在线| 亚洲欧洲网站免费观看|