精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Eino ADK:一文搞定 AI Agent 核心設(shè)計(jì)模式,從0到1搭建智能體系統(tǒng)

人工智能
Eino ADK 不僅僅是一個(gè)開(kāi)發(fā)框架,更是一個(gè)完整的智能體開(kāi)發(fā)生態(tài)。它通過(guò)統(tǒng)一的抽象、靈活的組合和強(qiáng)大的協(xié)作機(jī)制,讓 Go 開(kāi)發(fā)者能夠輕松構(gòu)建從簡(jiǎn)單對(duì)話機(jī)器人到復(fù)雜多智能體系統(tǒng)的各種 AI 應(yīng)用。

前言

當(dāng)大語(yǔ)言模型突破了“理解與生成”的瓶頸,Agent 迅速成為 AI 落地的主流形態(tài)。從智能客服到自動(dòng)化辦公,幾乎所有場(chǎng)景都需要 Agent 來(lái)承接 LLM 能力、執(zhí)行具體任務(wù)。

但技術(shù)演進(jìn)中痛點(diǎn)也隨之凸顯,有的團(tuán)隊(duì)因不懂如何銜接 LLM 與業(yè)務(wù)系統(tǒng),導(dǎo)致 Agent 只能 “空談”;有的因狀態(tài)管理缺失,讓 Agent 執(zhí)行任務(wù)時(shí)頻頻 “失憶”,復(fù)雜的交互流程也進(jìn)一步增加了開(kāi)發(fā)難度。

為此,Eino ADK(Agent Development Kit)應(yīng)運(yùn)而生,為 Go 開(kāi)發(fā)者提供了一套完整、靈活且強(qiáng)大的智能體開(kāi)發(fā)框架,直接解決傳統(tǒng)開(kāi)發(fā)中的核心難題。

什么是 Agent?

Agent 代表一個(gè)獨(dú)立的、可執(zhí)行的智能任務(wù)單元,能夠自主學(xué)習(xí),適應(yīng)與作出決策,主要功能包含:

  • 推理:Agent 可以分析數(shù)據(jù)、識(shí)別模式、使用邏輯和可用信息來(lái)得出結(jié)論、進(jìn)行推斷及解決問(wèn)題。
  • 行動(dòng):Agent 根據(jù)決策、計(jì)劃或外部輸入采取行動(dòng)或執(zhí)行任務(wù)來(lái)實(shí)現(xiàn)目標(biāo)。
  • 觀察:Agent 自主收集相關(guān)的信息(例如計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理或傳感器數(shù)據(jù)分析)來(lái)了解上下文,為做出明智的決策打下基礎(chǔ)。
  • 規(guī)劃:Agent 可以確定必要的步驟、評(píng)估潛在行動(dòng),并根據(jù)可用信息和預(yù)期結(jié)果選擇最佳行動(dòng)方案。
  • 協(xié)作:Agent 能夠在復(fù)雜且動(dòng)態(tài)的環(huán)境中,與他人(無(wú)論是人類還是其他 AI 智能體)進(jìn)行有效協(xié)作。

你可以把它想象成一個(gè)能夠理解指令、執(zhí)行任務(wù)并給出回應(yīng)的“智能體”。任何需要與大語(yǔ)言模型(LLM)交互的場(chǎng)景都可以抽象為一個(gè) Agent。例如:

  • 一個(gè)用于查詢天氣信息的 Agent。
  • 一個(gè)用于預(yù)定會(huì)議的 Agent。
  • 一個(gè)能夠回答特定領(lǐng)域知識(shí)的 Agent。

什么是 Eino ADK?

Eino ADK(https://github.com/cloudwego/eino)是一個(gè)專為 Go 語(yǔ)言設(shè)計(jì)的 Agent 和 Multi-Agent 開(kāi)發(fā)框架,設(shè)計(jì)上參考了 Google-ADK(https://google.github.io/adk-docs/agents/)中對(duì) Agent 與協(xié)作機(jī)制的定義。

它不僅是一個(gè)工具庫(kù),更是一套完整的智能體開(kāi)發(fā)體系:通過(guò)統(tǒng)一的抽象接口、靈活的組合模式和強(qiáng)大的協(xié)作機(jī)制,將復(fù)雜的 AI 應(yīng)用拆解為獨(dú)立、可組合的智能體單元,讓開(kāi)發(fā)者能夠像搭建樂(lè)高積木一樣構(gòu)建復(fù)雜的智能體系統(tǒng):

  • 少寫(xiě)膠水:統(tǒng)一接口與事件流,復(fù)雜任務(wù)拆解更自然。
  • 快速編排:預(yù)設(shè)范式+工作流,分分鐘搭好管線。
  • 更可控:可中斷、可恢復(fù)、可審計(jì),Agent 協(xié)作過(guò)程“看得見(jiàn)”。

無(wú)論你是 AI 應(yīng)用的新手,還是經(jīng)驗(yàn)豐富的開(kāi)發(fā)者,ADK 都能為你提供合適的工具和模式。它的設(shè)計(jì)哲學(xué)是"簡(jiǎn)單的事情簡(jiǎn)單做,復(fù)雜的事情也能做"——讓開(kāi)發(fā)者能夠?qū)W⒂跇I(yè)務(wù)邏輯的實(shí)現(xiàn),而不必?fù)?dān)心底層的技術(shù)復(fù)雜性。

核心構(gòu)建

?? ChatModelAgent:智能決策的大腦

ChatModelAgent 是 ADK 中最重要的預(yù)構(gòu)建組件,它封裝了與大語(yǔ)言模型的交互邏輯,實(shí)現(xiàn)了經(jīng)典的 ReAct(https://react-lm.github.io/)(Reason-Act-Observe)模式,運(yùn)行過(guò)程為:

  1. 調(diào)用 LLM(Reason)
  2. LLM 返回工具調(diào)用請(qǐng)求(Action)
  3. ChatModelAgent 執(zhí)行工具(Act)
  4. 將工具結(jié)果返回給 LLM(Observation),結(jié)合之前的上下文繼續(xù)生成,直到模型判斷不需要調(diào)用 Tool 后結(jié)束。

ReAct 模式的核心是“思考→行動(dòng)→觀察→再思考”的閉環(huán),解決傳統(tǒng) Agent“盲目行動(dòng)”或“推理與行動(dòng)脫節(jié)”的痛點(diǎn),以下是幾種可能的實(shí)踐場(chǎng)景:

  1. 行業(yè)賽道分析:使用 ReAct 模式避免了一次性搜集全部信息導(dǎo)致的信息過(guò)載,通過(guò)逐步推理聚焦核心問(wèn)題;同時(shí)使用數(shù)據(jù)驗(yàn)證思考,而非憑空靠直覺(jué)決策,過(guò)程可解釋,提升了生成報(bào)告的準(zhǔn)確性。
  • Think-1:判斷賽道潛力,需要“政策支持力度、行業(yè)增速、龍頭公司盈利能力、產(chǎn)業(yè)鏈瓶頸”4類信息。
  • Act-1:調(diào)用 API 獲取行業(yè)財(cái)報(bào)整體數(shù)據(jù)
  • Think-2:分析數(shù)據(jù),判斷行業(yè)高增長(zhǎng)+政策背書(shū),但上游價(jià)格上漲可能擠壓中下游利潤(rùn),需要進(jìn)一步驗(yàn)證是否有影響
  • Act-2:調(diào)用 API 獲取供需、行業(yè)研報(bào)等詳細(xì)數(shù)據(jù)
  • Think-3:整合結(jié)論生成分析報(bào)告,附關(guān)鍵數(shù)據(jù)來(lái)源
  1. IT 故障運(yùn)維:使用 ReAct 模式逐步縮小問(wèn)題范圍,避免盲目操作;每一步操作有理有據(jù),方便運(yùn)維工程師實(shí)施解決方案前的二次驗(yàn)證,為后續(xù)復(fù)盤(pán)與制定預(yù)防措施提供基礎(chǔ)。
  • Think-1:理清故障的常見(jiàn)原因,例如宕機(jī)的常見(jiàn)原因是“CPU 過(guò)載、內(nèi)存不足、磁盤(pán)滿、服務(wù)崩潰”,需要先查基礎(chǔ)監(jiān)控?cái)?shù)據(jù)
  • Act-1:調(diào)用「監(jiān)控系統(tǒng) API」查詢服務(wù)器打點(diǎn)數(shù)據(jù)
  • Think-2:判斷主因,例如 CPU 利用率異常則進(jìn)一步排查哪些進(jìn)程 CPU 占用高
  • Act-2:用「進(jìn)程管理工具」查 TOP 進(jìn)程,看是否有異常服務(wù)
  • Think-3:發(fā)現(xiàn)日志服務(wù)異常,可能是“日志文件過(guò)大”或“配置錯(cuò)誤”,需要進(jìn)一步查看日志服務(wù)的配置和日志文件大小
  • Act-3:bash 執(zhí)行命令,發(fā)現(xiàn)日志文件過(guò)大,同時(shí)配置未開(kāi)啟滾動(dòng),也未設(shè)置最大日志大小
  • Think-4:向運(yùn)維工程師提供可行的解決方案:清理日志,修改配置并開(kāi)啟滾動(dòng),重啟日志服務(wù)與應(yīng)用

ChatModelAgent 利用 LLM 強(qiáng)大的功能進(jìn)行推理、理解自然語(yǔ)言、作出決策、生成相應(yīng)、進(jìn)行工具交互,充當(dāng)智能體應(yīng)用程序"思考"的部分。您可以使用 ADK 快速構(gòu)建具有 ReAct 能力的 ChatModelAgent

import github.com/cloudwego/eino/adk


// 創(chuàng)建一個(gè)包含多個(gè)工具的 ReAct ChatModelAgent
chatAgent := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
    Name:        "intelligent_assistant",
    Description: "An intelligent assistant capable of using multiple tools to solve complex problems",
    Instruction: "You are a professional assistant who can use the provided tools to help users solve problems",
    Model:       openaiModel,
    ToolsConfig: adk.ToolsConfig{
        Tools: []tool.BaseTool{
            searchTool,
            calculatorTool,
            weatherTool,
        },
    }
})

WorkflowAgents:精密的流水線

Eino ADK 提供了專用于協(xié)調(diào)子 Agent 執(zhí)行流程的 WorkflowAgents 模式,用于通過(guò)預(yù)定義邏輯管理 Agent 的運(yùn)行方式,產(chǎn)生確定的執(zhí)行過(guò)程,協(xié)助實(shí)現(xiàn)可預(yù)測(cè)可控制的多 Agent 協(xié)作方式。您可以按需對(duì)下列模式進(jìn)行排列組合,結(jié)合 ChatModelAgent 構(gòu)造出符合自身需求的完整工作流水線:

  1. Sequential Agent:將配置中注冊(cè)的 Agents 按順序依次執(zhí)行一次后結(jié)束,運(yùn)行遵循以下原則:
  • 線性執(zhí)行:嚴(yán)格按照 SubAgents 數(shù)組的順序執(zhí)行。
  • 運(yùn)行結(jié)果傳遞:配置中的每個(gè) Agent 都能夠獲取 Sequential Agent 的完整輸入以及前序 Agent 的輸出。
  • 支持提前退出:如果任何一個(gè)子 Agent 產(chǎn)生退出/中斷動(dòng)作,整個(gè) Sequential 流程會(huì)立即終止。

? 可能的實(shí)踐場(chǎng)景有:

  • 數(shù)據(jù) ETL:ExtractAgent(從 MySQL 抽取訂單數(shù)據(jù))→ TransformAgent(清洗空值、格式化日期)→ LoadAgent(加載到數(shù)據(jù)倉(cāng)庫(kù))
  • CI / CD 流水線:CodeCloneAgent(從代碼倉(cāng)庫(kù)拉取代碼)→UnitTestAgent(運(yùn)行單元測(cè)試,用例失敗時(shí)返回錯(cuò)誤與分析報(bào)告)→CompileAgent(編譯代碼)→DeployAgent(部署到目標(biāo)環(huán)境)
import github.com/cloudwego/eino/adk


// 依次執(zhí)行 制定研究計(jì)劃 -> 搜索資料 -> 撰寫(xiě)報(bào)告
sequential := adk.NewSequentialAgent(ctx, &adk.SequentialAgentConfig{
    Name: "research_pipeline",
    SubAgents: []adk.Agent{
        planAgent,    // 制定研究計(jì)劃
        searchAgent,  // 搜索資料
        writeAgent,   // 撰寫(xiě)報(bào)告
    },
})

  1. Parallel Agent:將配置中注冊(cè)的 Agents 并發(fā)執(zhí)行,所有 Agent 執(zhí)行完畢后結(jié)束,運(yùn)行遵循以下原則:
  • 并發(fā)執(zhí)行:所有子 Agent 同時(shí)啟動(dòng),在獨(dú)立的 goroutine 中并行執(zhí)行。
  • 共享輸入:所有子 Agent 接收調(diào)用 Pararllel Agent 時(shí)相同的初始輸入。
  • 等待與結(jié)果聚合:內(nèi)部使用 sync.WaitGroup 等待所有子 Agent 執(zhí)行完成,收集所有子 Agent 的執(zhí)行結(jié)果并按接收順序輸出到 AsyncIterator 中。

? 可能的實(shí)踐場(chǎng)景有:

  • 多源數(shù)據(jù)采集:MySQLCollector(采集用戶表)+PostgreSQLCollector(采集訂單表)+MongoDBCollector(采集商品評(píng)論)
  • 多渠道推送:WeChatPushAgent(推送到微信公眾號(hào))+SMSPushAgent(發(fā)送短信)+AppPushAgent(推送到 APP)
import github.com/cloudwego/eino/adk


// 并發(fā)執(zhí)行 情感分析 + 關(guān)鍵詞提取 + 內(nèi)容摘要
parallel := adk.NewParallelAgent(ctx, &adk.ParallelAgentConfig{
    Name: "multi_analysis",
    SubAgents: []adk.Agent{
        sentimentAgent,  // 情感分析
        keywordAgent,    // 關(guān)鍵詞提取
        summaryAgent,    // 內(nèi)容摘要
    },
})


  1. Loop Agent:將配置中注冊(cè)的 Agents 按順序依次執(zhí)行并循環(huán)多次,運(yùn)行遵循以下原則:
  • 循環(huán)執(zhí)行:重復(fù)執(zhí)行 SubAgents 序列,每次循環(huán)都是一個(gè)完整的 Sequential 執(zhí)行過(guò)程。
  • 運(yùn)行結(jié)果累積:每次迭代的結(jié)果都會(huì)累積,后續(xù)迭代的輸入可以訪問(wèn)所有歷史信息。
  • 條件退出:支持通過(guò)輸出包含 ExitAction 的事件或達(dá)到最大迭代次數(shù)來(lái)終止循環(huán),配置 MaxIteratinotallow=0 時(shí)表示無(wú)限循環(huán)。

? 可能的實(shí)踐場(chǎng)景有:

  • 數(shù)據(jù)同步:CheckUpdateAgent(檢查源庫(kù)增量)→ IncrementalSyncAgent(同步增量數(shù)據(jù))→ VerifySyncAgent(驗(yàn)證一致性)
  • 壓力測(cè)試:StartClientAgent(啟動(dòng)測(cè)試客戶端)→ SendRequestsAgent(發(fā)送請(qǐng)求)→ CollectMetricsAgent(收集性能指標(biāo))
import github.com/cloudwego/eino/adk


// 循環(huán)執(zhí)行 5 次,每次順序?yàn)椋悍治霎?dāng)前狀態(tài) -> 提出改進(jìn)方案 -> 驗(yàn)證改進(jìn)效果
loop := adk.NewLoopAgent(ctx, &adk.LoopAgentConfig{
    Name: "iterative_optimization",
    SubAgents: []adk.Agent{
        analyzeAgent,  // 分析當(dāng)前狀態(tài)
        improveAgent,  // 提出改進(jìn)方案
        validateAgent, // 驗(yàn)證改進(jìn)效果
    },
    MaxIterations: 5,
})

預(yù)構(gòu)建的 Multi-Agent 范式

Eino ADK 基于日常 Multi-Agent 協(xié)作實(shí)踐中沉淀的最佳工程經(jīng)驗(yàn),為用戶提供兩種預(yù)構(gòu)建的 Multi-Agent 范式,無(wú)需從頭設(shè)計(jì)協(xié)作邏輯即可開(kāi)箱即用,覆蓋「集中式協(xié)調(diào)」與「結(jié)構(gòu)化問(wèn)題解決」兩大核心場(chǎng)景,高效支撐復(fù)雜任務(wù)的智能協(xié)作。

?? Supervisor 模式:集中式協(xié)調(diào)

Supervisor Agent 是 ADK 提供的一種中心化 Multi-Agent 協(xié)作模式,旨在為集中決策與分發(fā)執(zhí)行的通用場(chǎng)景提供解決方案,由一個(gè) Supervisor Agent(監(jiān)督者) 和多個(gè) SubAgent (子 Agent)組成,其中:

  • Supervisor Agent 負(fù)責(zé)任務(wù)的分配、子 Agent 完成后的結(jié)果匯總與下一步?jīng)Q策。
  • 子 Agents 專注于執(zhí)行具體任務(wù),并在完成后自動(dòng)將任務(wù)控制權(quán)交回 Supervisor。

Supervisor 模式有如下特點(diǎn):

  • 中心化控制:Supervisor 統(tǒng)一管理子 Agent,可根據(jù)輸入與子 Agent 執(zhí)行結(jié)果動(dòng)態(tài)調(diào)整任務(wù)分配。
  • 確定性回調(diào):子 Agent 執(zhí)行完畢后會(huì)將運(yùn)行結(jié)果返回到 Supervisor Agent,避免協(xié)作流程中斷。
  • 松耦合擴(kuò)展:子 Agent 可獨(dú)立開(kāi)發(fā)、測(cè)試和替換,方便拓展與維護(hù)。

Supervisor 模式的這種層級(jí)化的結(jié)構(gòu)非常適合于動(dòng)態(tài)協(xié)調(diào)多個(gè)專業(yè) Agent 完成復(fù)雜任務(wù)的場(chǎng)景,例如:

  • 科研項(xiàng)目管理:Supervisor 分配調(diào)研、實(shí)驗(yàn)、報(bào)告撰寫(xiě)任務(wù)給不同子 Agent。
  • 客戶服務(wù)流程:Supervisor 根據(jù)用戶問(wèn)題類型,分配給技術(shù)支持、售后、銷售等子 Agent。
import github.com/cloudwego/eino/adk/prebuilt/supervisor


// 科研項(xiàng)目管理:創(chuàng)建一個(gè)監(jiān)督者模式的 multi-agent
// 包含 research(調(diào)研),experimentation(實(shí)驗(yàn)),report(報(bào)告)三個(gè)子 Agent
supervisor, err := supervisor.New(ctx, &supervisor.Config{
    SupervisorAgent: supervisorAgent,
    SubAgents: []adk.Agent{
        researchAgent,
        experimentationAgent,
        reportAgent,
    },
})

?? Plan-Execute 模式:結(jié)構(gòu)化問(wèn)題解決

Plan-Execute Agent 是 ADK 提供的基于「規(guī)劃-執(zhí)行-反思」范式的 Multi-Agent 協(xié)作模式(參考論文 Plan-and-Solve Prompting:https://arxiv.org/abs/2305.04091?ref=blog.langchain.com),旨在解決復(fù)雜任務(wù)的分步拆解、執(zhí)行與動(dòng)態(tài)調(diào)整問(wèn)題,通過(guò) Planner(規(guī)劃器)、Executor(執(zhí)行器)和 Replanner(重規(guī)劃器) 三個(gè)核心智能體的協(xié)同工作,實(shí)現(xiàn)任務(wù)的結(jié)構(gòu)化規(guī)劃、工具調(diào)用執(zhí)行、進(jìn)度評(píng)估與動(dòng)態(tài)重規(guī)劃,最終達(dá)成用戶目標(biāo),其中:

  • Planner:根據(jù)用戶目標(biāo),生成一個(gè)包含詳細(xì)步驟且結(jié)構(gòu)化的初始任務(wù)計(jì)劃
  • Executor:執(zhí)行當(dāng)前計(jì)劃中的首個(gè)步驟
  • Replanner:評(píng)估執(zhí)行進(jìn)度,決定是修正計(jì)劃繼續(xù)交由 Executor 運(yùn)行,或是結(jié)束任務(wù)

Plan-Execute 模式有如下特點(diǎn):

  • 明確的分層架構(gòu):通過(guò)將任務(wù)拆解為規(guī)劃、執(zhí)行和反思重規(guī)劃三個(gè)階段,形成層次分明的認(rèn)知流程,體現(xiàn)了 “先思考再行動(dòng),再根據(jù)反饋調(diào)整” 的閉環(huán)認(rèn)知策略,在各類場(chǎng)景中都能達(dá)到較好的效果。
  • 動(dòng)態(tài)迭代優(yōu)化:Replanner 根據(jù)執(zhí)行結(jié)果和當(dāng)前進(jìn)度,實(shí)時(shí)判斷任務(wù)是否完成或需調(diào)整計(jì)劃,支持動(dòng)態(tài)重規(guī)劃。該機(jī)制有效解決了傳統(tǒng)單次規(guī)劃難以應(yīng)對(duì)環(huán)境變化和任務(wù)不確定性的瓶頸,提升了系統(tǒng)的魯棒性和靈活性。
  • 職責(zé)分明且松耦合:Plan-Execute 模式由多個(gè)智能體協(xié)同工作,支持獨(dú)立開(kāi)發(fā)、測(cè)試和替換。模塊化設(shè)計(jì)方便擴(kuò)展和維護(hù),符合工程最佳實(shí)踐。
  • 具備良好擴(kuò)展性:不依賴特定的語(yǔ)言模型、工具或 Agent,方便集成多樣化外部資源,滿足不同應(yīng)用場(chǎng)景需求。

Plan-Execute 模式的「規(guī)劃→執(zhí)行→重規(guī)劃」閉環(huán)結(jié)構(gòu)非常適合需要多步驟推理、動(dòng)態(tài)調(diào)整和工具集成的復(fù)雜任務(wù)場(chǎng)景,例如:

  • 復(fù)雜研究分析:通過(guò)規(guī)劃分解研究問(wèn)題,執(zhí)行多輪數(shù)據(jù)檢索與計(jì)算,動(dòng)態(tài)調(diào)整研究方向和假設(shè),提升分析深度和準(zhǔn)確性。
  • 自動(dòng)化工作流管理:將復(fù)雜業(yè)務(wù)流程拆解為結(jié)構(gòu)化步驟,結(jié)合多種工具(如數(shù)據(jù)庫(kù)查詢、API 調(diào)用、計(jì)算引擎)逐步執(zhí)行,并根據(jù)執(zhí)行結(jié)果動(dòng)態(tài)優(yōu)化流程。
  • 多步驟問(wèn)題解決:適用于需要分步推理和多工具協(xié)作的場(chǎng)景,如法律咨詢、技術(shù)診斷、策略制定等,確保每一步執(zhí)行都有反饋和調(diào)整。
  • 智能助理任務(wù)執(zhí)行:支持智能助理根據(jù)用戶目標(biāo)規(guī)劃任務(wù)步驟,調(diào)用外部工具完成具體操作,并根據(jù)重規(guī)劃思考結(jié)合用戶反饋調(diào)整后續(xù)計(jì)劃,提升任務(wù)完成的完整性和準(zhǔn)確性。
import github.com/cloudwego/eino/adk/prebuilt/planexecute


// Plan-Execute 模式的科研助手
researchAssistant := planexecute.New(ctx, &planexecute.Config{
    Planner: adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
        Name: "research_planner",
        Instruction: "制定詳細(xì)的研究計(jì)劃,包括文獻(xiàn)調(diào)研、數(shù)據(jù)收集、分析方法等",
        Model: gpt4Model,
    }),
    Executor: adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
        Name: "research_executor",
        ToolsConfig: adk.ToolsConfig{
            Tools: []tool.BaseTool{
                scholarSearchTool,
                dataAnalysisTool,
                citationTool,
            },
        },
    }),
    Replanner: replannerAgent,
})

基礎(chǔ)設(shè)計(jì)

統(tǒng)一的 Agent 抽象

ADK 的核心是一個(gè)簡(jiǎn)潔而強(qiáng)大的 Agent 接口:

type Agent interface {
    Name(ctx context.Context) string
    Description(ctx context.Context) string
    Run(ctx context.Context, input *AgentInput, options ...AgentRunOption) *AsyncIterator[*AgentEvent]
}

每個(gè) Agent 都有明確的身份(Name)、清晰的職責(zé)(Description)和標(biāo)準(zhǔn)化的執(zhí)行方式(Run),為 Agent 之間的發(fā)現(xiàn)與調(diào)用提供了基礎(chǔ)。無(wú)論是簡(jiǎn)單的問(wèn)答機(jī)器人,還是復(fù)雜的多步驟任務(wù)處理系統(tǒng),都可以通過(guò)這個(gè)統(tǒng)一的接口加以實(shí)現(xiàn)。

異步事件驅(qū)動(dòng)架構(gòu)

ADK 采用了異步事件流設(shè)計(jì),通過(guò) AsyncIterator[*AgentEvent] 實(shí)現(xiàn)非阻塞的事件處理,并通過(guò) Runner 框架運(yùn)行 Agent:

  • 實(shí)時(shí)響應(yīng):AgentEvent 包含 Agent 執(zhí)行過(guò)程中特定節(jié)點(diǎn)輸出(Agent 回復(fù)、工具處理結(jié)果等等),用戶可以立即看到 Agent 的思考過(guò)程和中間結(jié)果。
  • 追蹤執(zhí)行過(guò)程:AgentEvent 額外攜帶狀態(tài)修改動(dòng)作與運(yùn)行軌跡,便于開(kāi)發(fā)調(diào)試和理解 Agent 行為。
  • 自動(dòng)流程控制:框架通過(guò) Runner 自動(dòng)處理中斷、跳轉(zhuǎn)、退出行為,無(wú)需用戶額外干預(yù)。

靈活的協(xié)作機(jī)制

Eino ADK 支持處于同一個(gè)系統(tǒng)內(nèi)的 Agent 之間以多種方式進(jìn)行協(xié)作(交換數(shù)據(jù)或觸發(fā)運(yùn)行):

  • 共享 Session:單次運(yùn)行過(guò)程中持續(xù)存在的 KV 存儲(chǔ),用于支持跨 Agent 的狀態(tài)管理和數(shù)據(jù)共享。
// 獲取全部 SessionValues
funcGetSessionValues(ctx context.Context)map[string]any


// 指定 key 獲取 SessionValues 中的一個(gè)值,key 不存在時(shí)第二個(gè)返回值為 false,否則為 true
funcGetSessionValue(ctx context.Context, key string)(any, bool)


// 添加 SessionValues
funcAddSessionValue(ctx context.Context, key string, value any)


// 批量添加 SessionValues
funcAddSessionValues(ctx context.Context, kvs map[string]any)


  • 移交運(yùn)行(Transfer):攜帶本 Agent 輸出結(jié)果上下文,將任務(wù)移交至子 Agent 繼續(xù)處理。適用于智能體功能可以清晰的劃分邊界與層級(jí)的場(chǎng)景,常結(jié)合 ChatModelAgent 使用,通過(guò) LLM 的生成結(jié)果進(jìn)行動(dòng)態(tài)路由。結(jié)構(gòu)上,以此方式進(jìn)行協(xié)作的兩個(gè) Agent 稱為父子 Agent:


// 設(shè)置父子 Agent 關(guān)系
funcSetSubAgents(ctx context.Context, agent Agent, subAgents []Agent)(Agent, error)


// 指定目標(biāo) Agent 名稱,構(gòu)造 Transfer Event
funcNewTransferToAgentAction(destAgentName string) *AgentAction
  • 顯式調(diào)用(ToolCall):將 Agent 視為工具進(jìn)行調(diào)用。適用于 Agent 運(yùn)行僅需要明確清晰的參數(shù)而非完整運(yùn)行上下文的場(chǎng)景,常結(jié)合 ChatModelAgent,作為工具運(yùn)行后將結(jié)果返回給 ChatModel 繼續(xù)處理。除此之外,ToolCall 同樣支持調(diào)用符合工具接口構(gòu)造的、不含 Agent 的普通工具。


// 將 Agent 轉(zhuǎn)換為 Tool
funcNewAgentTool(_ context.Context, agent Agent, options ...AgentToolOption)tool.BaseTool

中斷與恢復(fù)機(jī)制

Eino ADK 提供運(yùn)行時(shí)中斷與恢復(fù)的功能,允許正在運(yùn)行中的 Agent 主動(dòng)中斷并保存其當(dāng)前狀態(tài),并在未來(lái)從中斷點(diǎn)恢復(fù)執(zhí)行。該功能為長(zhǎng)時(shí)間等待、可暫停或需要外部輸入(Human in the loop)等場(chǎng)景下的開(kāi)發(fā)提供協(xié)助。

  • Agent 內(nèi)部運(yùn)行過(guò)程中,通過(guò)拋出含 Interrupt Action 的 Event 主動(dòng)通知 Runner 中斷運(yùn)行,并允許攜帶額外信息供調(diào)用方閱讀與使用。
  • Runner 通過(guò)初始化時(shí)注冊(cè)的 CheckPointStore 記錄當(dāng)前運(yùn)行狀態(tài)
  • 重新準(zhǔn)備好運(yùn)行后,通過(guò) Resume 方法攜帶恢復(fù)運(yùn)行所需要的新信息,從斷點(diǎn)處重新啟動(dòng)該 Agent 運(yùn)行
// 1. 創(chuàng)建支持?jǐn)帱c(diǎn)恢復(fù)的 Runner
runner := adk.NewRunner(ctx, adk.RunnerConfig{
    Agent:           complexAgent,
    CheckPointStore: memoryStore, // 內(nèi)存狀態(tài)存儲(chǔ)
})


// 2. 開(kāi)始執(zhí)行
iter := runner.Query(ctx, "recommend a book to me", adk.WithCheckPointID("1"))
for {
    event, ok := iter.Next()
    if !ok {
       break
    }
    if event.Err != nil {
       log.Fatal(event.Err)
    }
    if event.Action != nil {
        // 3. 由 Agent 內(nèi)部拋出 Interrupt 事件
        if event.Action.Interrupted != nil {
           ii, _ := json.MarshalIndent(event.Action.Interrupted.Data, "", "\t")
           fmt.Printf("action: interrupted\n")
           fmt.Printf("interrupt snapshot: %v", string(ii))
        }
    }
}


// 4. 從 stdin 接收用戶輸入
scanner := bufio.NewScanner(os.Stdin)
fmt.Print("\nyour input here: ")
scanner.Scan()
fmt.Println()
nInput := scanner.Text()


// 5. 攜帶用戶輸入信息,從斷點(diǎn)恢復(fù)執(zhí)行
iter, err := runner.Resume(ctx, "1", adk.WithToolOptions([]tool.Option{subagents.WithNewInput(nInput)}))

快速開(kāi)始

安裝

go get github.com/cloudwego/eino@latest

項(xiàng)目開(kāi)發(fā)經(jīng)理智能體

下面的示例使用 Eino ADK 構(gòu)建了一個(gè)項(xiàng)目開(kāi)發(fā)經(jīng)理智能體,面向多方面管理協(xié)同的場(chǎng)景:

  1. Project Manager Agent:項(xiàng)目經(jīng)理智能體,整體使用 Supervisor 模式,各 Agent 的功能如下:
  • ResearchAgent調(diào)研 Agent,負(fù)責(zé)調(diào)研并生成可行方案,支持中斷后從用戶處接收額外的上下文信息來(lái)提高調(diào)研方案生成的準(zhǔn)確性。
  • CodeAgent編碼 Agent,使用知識(shí)庫(kù)工具,召回相關(guān)知識(shí)作為參考,生成高質(zhì)量的代碼。
  • ReviewAgent:評(píng)論 Agent,使用順序工作流編排問(wèn)題分析、評(píng)價(jià)生成、評(píng)價(jià)驗(yàn)證三個(gè)步驟,對(duì)調(diào)研結(jié)果 / 編碼結(jié)果進(jìn)行評(píng)審,給出合理的評(píng)價(jià),供項(xiàng)目經(jīng)理進(jìn)行決策。
  • ProjectManagerAgent:項(xiàng)目經(jīng)理 Agent,根據(jù)動(dòng)態(tài)的用戶輸入,路由并協(xié)調(diào)多個(gè)負(fù)責(zé)不同維度工作的子智能體開(kāi)展工作。
  1. 該 Agent 可能的工作場(chǎng)景為:
  • 從零開(kāi)始實(shí)現(xiàn)項(xiàng)目:項(xiàng)目經(jīng)理從需求入手,經(jīng)由調(diào)研、編碼、評(píng)論三個(gè) Agent 工作,最終完成項(xiàng)目交付。
  • 對(duì)已有項(xiàng)目的完善:項(xiàng)目經(jīng)理從評(píng)論 Agent 獲得項(xiàng)目仍舊需要完善的功能點(diǎn),交由編碼 Agent 進(jìn)行實(shí)現(xiàn),再交由評(píng)論 Agent 對(duì)修改后的代碼進(jìn)行評(píng)審。
  • 開(kāi)展技術(shù)調(diào)研:項(xiàng)目經(jīng)理要求調(diào)研 Agent 生成技術(shù)調(diào)研報(bào)告,然后由評(píng)論 Agent 給出評(píng)審意見(jiàn)。調(diào)用方結(jié)合返回的技術(shù)調(diào)研報(bào)告和評(píng)審意見(jiàn),決定后續(xù)動(dòng)作。

該示例的設(shè)計(jì)涵蓋了文中介紹的大部分概念,您可以基于示例回顧之前的提到的種種設(shè)計(jì)理念。另外,請(qǐng)?jiān)囅肫胀ㄩ_(kāi)發(fā)模式下如何完成該示例的編寫(xiě),ADK 的優(yōu)勢(shì)便立刻凸顯了出來(lái):



設(shè)計(jì)點(diǎn)





傳統(tǒng)開(kāi)發(fā)模式





基于 Eino ADK 開(kāi)發(fā)





Agent 抽象





沒(méi)有統(tǒng)一定義,團(tuán)隊(duì)協(xié)作開(kāi)發(fā)效率差,后期維護(hù)成本高




統(tǒng)一定義,職責(zé)獨(dú)立,代碼整潔,便于各 Agent 分頭開(kāi)發(fā)




輸入輸出





沒(méi)有統(tǒng)一定義,輸入輸出混亂

運(yùn)行過(guò)程只能手動(dòng)加日志,不利于調(diào)試




有統(tǒng)一定義,全部基于事件驅(qū)動(dòng)

運(yùn)行過(guò)程通過(guò) iterator 透出,所見(jiàn)即所得



Agent 協(xié)作




通過(guò)代碼手動(dòng)傳遞上下文




框架自動(dòng)傳遞上下文




中斷恢復(fù)能力





需要從零開(kāi)始實(shí)現(xiàn),解決序列化與反序列化、狀態(tài)存儲(chǔ)與恢復(fù)等問(wèn)題




僅需在 Runner 中注冊(cè) CheckPointStore 提供斷點(diǎn)數(shù)據(jù)存儲(chǔ)介質(zhì)




Agent 模式





需要從零開(kāi)始實(shí)現(xiàn)




多種成熟模式開(kāi)箱即用


核心代碼如下,完整代碼詳見(jiàn) Eino-Examples 項(xiàng)目中提供的源碼(https://github.com/cloudwego/eino-examples/tree/main/adk/multiagent/integration-project-manager):

func main(){
    ctx := context.Background()


    // Init chat model for agents
    tcm, err := openai.NewChatModel(ctx, &openai.ChatModelConfig{
       APIKey:  os.Getenv("OPENAI_API_KEY"),
       Model:   os.Getenv("OPENAI_MODEL"),
       BaseURL: os.Getenv("OPENAI_BASE_URL"),
       ByAzure: func() bool {
          return os.Getenv("OPENAI_BY_AZURE") == "true"
       }(),
    })
    if err != nil {
       log.Fatal(err)
    }


    // Init research agent
    researchAgent, err := agents.NewResearchAgent(ctx, tcm)
    if err != nil {
       log.Fatal(err)
    }


    // Init code agent
    codeAgent, err := agents.NewCodeAgent(ctx, tcm)
    if err != nil {
       log.Fatal(err)
    }


    // Init technical agent
    reviewAgent, err := agents.NewReviewAgent(ctx, tcm)
    if err != nil {
       log.Fatal(err)
    }


    // Init project manager agent
    s, err := agents.NewProjectManagerAgent(ctx, tcm)
    if err != nil {
       log.Fatal(err)
    }


    // Combine agents into ADK supervisor pattern
    // Supervisor: project manager
    // Sub-agents: researcher / coder / reviewer
    supervisorAgent, err := supervisor.New(ctx, &supervisor.Config{
       Supervisor: s,
       SubAgents:  []adk.Agent{researchAgent, codeAgent, reviewAgent},
    })
    if err != nil {
       log.Fatal(err)
    }


    // Init Agent runner
    runner := adk.NewRunner(ctx, adk.RunnerConfig{
       Agent:           supervisorAgent,
       EnableStreaming: true,                // enable stream output
       CheckPointStore: newInMemoryStore(),  // enable checkpoint for interrupt & resume
    })


    // Replace it with your own query
    query := "please generate a simple ai chat project with python."
    checkpointID := "1"


    // Start runner with a new checkpoint id
    iter := runner.Query(ctx, query, adk.WithCheckPointID(checkpointID))
    interrupted := false
    for {
       event, ok := iter.Next()
       if !ok {
          break
       }
       if event.Err != nil {
          log.Fatal(event.Err)
       }
       if event.Action != nil && event.Action.Interrupted != nil {
          interrupted = true
       }
       prints.Event(event)
    }


    if !interrupted {
       return
    }
    
    // interrupt and ask for additional user context
    scanner := bufio.NewScanner(os.Stdin)
    fmt.Print("\ninput additional context for web search: ")
    scanner.Scan()
    fmt.Println()
    nInput := scanner.Text()


    // Resume by checkpoint id, with additional user context injection
    iter, err = runner.Resume(ctx, checkpointID, adk.WithToolOptions([]tool.Option{agents.WithNewInput(nInput)}))
    if err != nil {
       log.Fatal(err)
    }
    for {
       event, ok := iter.Next()
       if !ok {
          break
       }
       if event.Err != nil {
          log.Fatal(event.Err)
       }
       prints.Event(event)
    }
}

結(jié)尾

Eino ADK 不僅僅是一個(gè)開(kāi)發(fā)框架,更是一個(gè)完整的智能體開(kāi)發(fā)生態(tài)。它通過(guò)統(tǒng)一的抽象、靈活的組合和強(qiáng)大的協(xié)作機(jī)制,讓 Go 開(kāi)發(fā)者能夠輕松構(gòu)建從簡(jiǎn)單對(duì)話機(jī)器人到復(fù)雜多智能體系統(tǒng)的各種 AI 應(yīng)用。

責(zé)任編輯:龐桂玉 來(lái)源: 字節(jié)跳動(dòng)技術(shù)團(tuán)隊(duì)
相關(guān)推薦

2023-03-06 11:35:55

經(jīng)營(yíng)分析體系

2024-01-09 08:24:47

JMM核心線程

2021-08-02 11:01:32

架構(gòu)運(yùn)維技術(shù)

2024-12-31 10:36:40

AIAgent場(chǎng)景

2025-09-30 07:05:22

2025-08-01 02:43:00

2025-03-28 11:47:38

2024-02-19 13:11:38

門面模式系統(tǒng)

2024-02-26 11:52:38

代理模式設(shè)計(jì)

2024-01-29 12:22:07

設(shè)計(jì)模式策略模式

2021-12-08 22:29:41

經(jīng)營(yíng)分析體系

2019-07-31 10:18:17

Web 開(kāi)發(fā)Python

2023-05-22 13:27:17

2024-05-29 12:13:50

2025-09-26 08:52:57

2025-10-14 09:01:20

2024-04-24 08:15:40

數(shù)據(jù)模型大模型AI

2016-12-30 17:04:57

2017-01-05 21:05:40

2024-02-27 11:59:12

享元模式對(duì)象
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

超碰在线caoporn| 91肉色超薄丝袜脚交一区二区| 综合中文字幕| 精品露脸国产偷人在视频| 精品国产乱码久久久久久郑州公司| 天堂网av手机版| 精品免费在线| 欧美大片在线观看一区二区| 波多野结衣家庭教师在线| 国产免费永久在线观看| 国产精品1区2区3区在线观看| 91精品国产乱码久久久久久久久| 天天操天天摸天天舔| 2020最新国产精品| 在线观看91精品国产入口| 4444在线观看| аⅴ资源新版在线天堂| 国产成人av电影在线观看| 国产成人精品免费视频| 久久久久久av无码免费网站| 精品国产一区二区三区噜噜噜 | 99视频免费看| 日本aⅴ精品一区二区三区| 韩国日本不卡在线| 裸体武打性艳史| 外国成人在线视频| 日韩欧美国产三级电影视频| 五月婷婷之综合激情| 成人bbav| 亚洲一区在线观看免费观看电影高清| 亚洲欧美在线网| 青青久草在线| eeuss鲁片一区二区三区在线观看| 国产一区二中文字幕在线看 | 国产丝袜在线观看视频| 中文字幕在线不卡一区| 亚洲 国产 日韩 综合一区| 天堂а√在线8种子蜜桃视频 | 欧美日韩在线播放一区| 欧美亚洲另类色图| www欧美xxxx| 艳妇臀荡乳欲伦亚洲一区| 一区国产精品| 一级日本在线| 中文在线一区二区| 色乱码一区二区三在线看| 免费黄色片在线观看| www.色精品| 国模精品一区二区三区| 噜噜噜久久,亚洲精品国产品| 韩国av一区二区三区四区| 国产精品私拍pans大尺度在线| 亚洲 欧美 中文字幕| 久久精品人人做人人爽电影蜜月| 午夜美女久久久久爽久久| 国产在线观看成人| 激情91久久| 久久夜色精品国产亚洲aⅴ| 天天做夜夜爱爱爱| 91精品动漫在线观看| 蜜臀久久99精品久久久久久宅男| 亚洲二区在线播放| 亚洲无中文字幕| 欧美成人免费va影院高清| 欧美成人免费看| 欧美在线日韩| 国模精品一区二区三区色天香| 国产精品18p| 国产精品日本| 国产精品成av人在线视午夜片| 无码一区二区三区| 久久99精品久久久久久国产越南| 成人一区二区电影| 成 人片 黄 色 大 片| 本田岬高潮一区二区三区| 久久精品99久久| 国产精品视频二区三区| 成人欧美一区二区三区视频网页| 欧美xxxx吸乳| 爱草tv视频在线观看992| 欧美性色视频在线| 免费看污污网站| 久久久久久久久久久久电影| 亚洲精品在线电影| 香蕉网在线播放| 精品72久久久久中文字幕| 日韩中文字幕第一页| 欧美极品视频在线观看| 国产美女精品| 成人夜晚看av| 视频国产在线观看| 亚洲视频一区二区在线观看| 欧美午夜小视频| 成人午夜毛片| 亚洲а∨天堂久久精品喷水| 国产精品亚洲无码| 91精品啪在线观看国产81旧版| 欧美—级a级欧美特级ar全黄| 日韩视频在线观看一区| 紧缚奴在线一区二区三区| 精品无人区一区二区三区| 亚乱亚乱亚洲乱妇| 亚洲成精国产精品女| 午夜免费一区二区| jizz国产精品| 最新中文字幕亚洲| 欧美成人精品欧美一级乱黄| 捆绑紧缚一区二区三区视频| 精品国产一区二区三区麻豆小说 | 日批视频免费看| 国产99久久精品一区二区300| 久热99视频在线观看| 特级西西444www大精品视频免费看| 激情文学综合丁香| 任我爽在线视频精品一| 男女在线观看视频| 欧美日本在线播放| 91网站免费视频| 一区视频在线| 成人黄色片网站| 九色视频在线播放| 五月婷婷综合在线| 特黄特色免费视频| 91成人超碰| 国产女人精品视频| 国产一级片在线播放| 精品久久香蕉国产线看观看gif| 91香蕉视频在线观看视频| 精品国产一区二区三区久久久樱花| 97精品国产97久久久久久免费| 成人av无码一区二区三区| 亚洲色图在线播放| 在线观看国产一级片| 久久综合色占| 国产91露脸中文字幕在线| 亚洲av激情无码专区在线播放| 一区二区三区影院| 蜜桃视频无码区在线观看| 亚洲啊v在线观看| 国产男女猛烈无遮挡91| 一级日本在线| 欧美精品123区| 国产精品一区二区亚洲| 蜜桃传媒麻豆第一区在线观看| 日韩精品av一区二区三区| 中老年在线免费视频| 日韩福利视频在线观看| 少妇一级淫片免费放中国 | 澳门成人av网| 亚洲毛片在线看| 一区二区三区在线观看av| 久久久久久久精| 欧美污视频网站| 久草成人在线| 国产精品免费视频xxxx| jizz在线免费观看| 欧美日韩激情一区| 五月综合色婷婷| 国产精品综合av一区二区国产馆| 小泽玛利亚av在线| 一区二区三区四区高清视频| 欧美精品福利在线| 婷婷国产在线| 在线中文字幕一区| 国精品人伦一区二区三区蜜桃| 久久er99精品| 日韩精品久久一区二区| 美女av一区| 国产成人一区二区三区| 无遮挡的视频在线观看 | 无吗不卡中文字幕| 国产精品一区二区入口九绯色| 久久精品一区| 亚洲高清精品中出| 九九99久久精品在免费线bt| 欧美极品第一页| 久久免费看视频| 欧美精品久久久久久久久老牛影院| 97成人资源站| 91亚洲男人天堂| 亚洲三级视频网站| 欧美精品一卡| 奇米影视首页 狠狠色丁香婷婷久久综合 | 午夜国产一区二区| 亚洲自拍在线观看| 欧美a级在线观看| 亚洲男人天堂视频| 一级特黄录像免费看| 亚洲午夜久久久久久久久电影网| 四虎永久免费影院| 国产一区二区三区四区五区美女| 国产一级爱c视频| 日韩免费特黄一二三区| 高清免费日韩| 九七电影院97理论片久久tvb| 欧美华人在线视频| a视频网址在线观看| 日韩视频在线一区二区| 亚洲另类在线观看| 亚洲久草在线视频| 香蕉视频久久久| 丰满白嫩尤物一区二区| 亚洲一区二区蜜桃| 亚洲裸体俱乐部裸体舞表演av| 手机成人在线| 日韩精品一级| 国产剧情日韩欧美| 涩涩视频在线| 欧美日韩高清在线观看| yourporn在线观看视频| 亚洲电影免费观看高清完整版在线| 这里只有精品国产| 高跟丝袜欧美一区| 免费在线一区二区三区| 国产精品情趣视频| 欧美成人国产精品一区二区| 成人天堂资源www在线| 韩国一区二区在线播放| 久久精品中文| 成人免费视频91| 亚洲女同中文字幕| 伊人av成人| 波多野结衣在线观看一区二区三区 | 日韩国产欧美精品一区二区三区| 成人免费一级片| 欧美日韩精品中文字幕| 九九在线观看视频| 亚洲欧洲av在线| 大胸美女被爆操| 国产日韩欧美亚洲| 熟女少妇一区二区三区| av电影天堂一区二区在线| 古装做爰无遮挡三级聊斋艳谭| 蜜臀av亚洲一区中文字幕| 成人小视频在线看| 亚洲欧美卡通另类91av| av免费观看国产| 亚洲日本成人| 免费国产a级片| 亚洲黄色精品| 欧美一级片免费播放| 亚洲国产综合在线看不卡| 国产一区二区三区乱码| 国语精品一区| 97超碰在线人人| 亚洲天堂偷拍| 日日碰狠狠添天天爽超碰97| 亚洲深夜激情| 可以在线看的黄色网址| 欧美亚洲三区| 日韩av播放器| 日本亚洲三级在线| 人人干人人干人人| 久久精品国产色蜜蜜麻豆| 天天影视色综合| 国产精品一区二区在线观看不卡 | 天堂中文在线网| 日韩欧美在线视频日韩欧美在线视频| 亚洲精品午夜国产va久久成人| 欧美日韩美女视频| 中文字幕精品视频在线观看| 欧美在线不卡视频| 国产精品久久影视| 日韩精品自拍偷拍| 四虎在线免费观看| 一区二区三区回区在观看免费视频| 国产视频二区在线观看| 少妇激情综合网| 色呦呦视频在线观看| 97人洗澡人人免费公开视频碰碰碰| 免费一二一二在线视频| 国产999在线| 色综合视频一区二区三区44| 5566av亚洲| 性欧美lx╳lx╳| 亚洲一区bb| 极品少妇一区二区三区| 国产裸体免费无遮挡| 国产美女视频一区| 李丽珍裸体午夜理伦片| 国产性天天综合网| 加勒比婷婷色综合久久| 黄色成人在线免费| 夜夜嗨av禁果av粉嫩avhd| 欧美岛国在线观看| 粉嫩av在线播放| 欧美激情xxxx性bbbb| 欧美粗大gay| 97超碰最新| 精品国产一区二区三区小蝌蚪| 欧美h视频在线观看| 国产精品入口| 亚洲综合123| 久久青草国产手机看片福利盒子| av黄色免费在线观看| 五月婷婷欧美视频| 国产精品九九九九| 国产视频精品自拍| av免费在线观看网站| 日本午夜人人精品| 97超碰成人| 伊人久久大香线蕉精品| 亚洲一区二区免费看| 欧美精品 - 色网| 久久蜜桃一区二区| 麻豆国产尤物av尤物在线观看| 在线视频国产一区| 深爱五月激情五月| 欧美精品在线免费播放| 成人福利片在线| 蜜桃视频在线观看成人| 欧美成熟视频| 在线播放av中文字幕| xf在线a精品一区二区视频网站| 九九在线观看视频| 欧美肥妇毛茸茸| 色三级在线观看| 国产成人久久久精品一区| xxxx日韩| 欧美黄网在线观看| 精品系列免费在线观看| 亚欧精品视频一区二区三区| 日韩欧美综合在线视频| 日本xxxx人| 欧美激情中文字幕乱码免费| 美女日韩一区| 成年人免费观看的视频| 青娱乐精品在线视频| 久久成人激情视频| 日韩欧美在线一区| 无码h黄肉3d动漫在线观看| 欧美激情奇米色| 1313精品午夜理伦电影| 日韩一级特黄毛片| 国产精品888| 国产主播在线观看| 欧美tk—视频vk| 麻豆av在线免费观看| 成人性色av| 国一区二区在线观看| 东京热av一区| 午夜伦欧美伦电影理论片| 欧美一区二区三区激情| 久久久久久国产精品三级玉女聊斋| 日韩在线观看一区二区三区| 51xx午夜影福利| 国产大片一区二区| 欧美片一区二区| 精品剧情在线观看| cao在线视频| 麻豆亚洲一区| 日本伊人色综合网| 老司机成人免费视频| 日韩西西人体444www| 男女在线视频| 麻豆91蜜桃| 日本午夜精品视频在线观看| 亚洲女人毛茸茸高潮| 欧美一卡二卡三卡| 后进极品白嫩翘臀在线播放| 精品国产区在线| 日韩不卡一二三区| 欧美日韩午夜视频| 欧美sm美女调教| 免费在线小视频| 亚洲午夜精品久久久久久浪潮| 国产一区二区在线观看免费| 久久精品无码人妻| 亚洲伦理中文字幕| 欧美特黄色片| 国产精品www在线观看| 91丨九色丨尤物| 伊人影院中文字幕| 久久99精品久久久久久噜噜| 欧美18xxxx| 天堂网在线免费观看| 一区二区三区精品久久久| 亚洲人视频在线观看| 国产精品亚洲精品| 欧美日本中文| 日韩精品电影一区二区| 91 com成人网| 亚洲天堂av在线| 一级一片免费播放| www.爱久久.com| 97成人免费视频| 91精品国产91久久| 999国产精品视频| 网站免费在线观看| 欧美精品一二三四| 涩涩视频在线| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 欧美国产日韩精品免费观看| 国产精品人人爽| 668精品在线视频| 国产精品videosex性欧美| 少妇激情一区二区三区视频| 欧美日韩国产欧美日美国产精品| 国产三级电影在线播放| 亚洲av首页在线|