大家好,我是 同學(xué)小張,持續(xù)學(xué)習(xí)C++進(jìn)階知識(shí)和AI大模型應(yīng)用實(shí)戰(zhàn)案例,持續(xù)分享,歡迎大家點(diǎn)贊+關(guān)注,共同學(xué)習(xí)和進(jìn)步。
前面咱們已經(jīng)深入學(xué)習(xí)了AgentScope框架中Pipeline模塊的使用和實(shí)現(xiàn)原理,本文來(lái)總結(jié)一下這些Pipeline,以及探索一下各種Pipeline的組合用法。 0. 前置推薦閱讀本文參考:https://modelscope./agentscope/zh_CN/tutorial/202-pipeline.html
1. Pipeline的使用方式總結(jié)1.1 兩種Pipeline分裝從前面的文章可以看出,AgentScope提供了兩種Pipeline的使用方式,分別為類類型的Pipeline和函數(shù)式的Pipeline。 以順序式Pipeline為例,你既可以使用 SequentialPipeline 這種類類型的Pipeline: # 實(shí)例化并調(diào)用 pipeline = SequentialPipeline([agent1, agent2, agent3]) x = pipeline(x)
又可以使用 sequentialpipeline 這種函數(shù)式的Pipeline: # 直接調(diào)用 x = sequentialpipeline([agent1, agent2, agent3], x)
1.2 內(nèi)置Pipeline類型一覽| 類類型Pipeline | 函數(shù)式Pipeline | 描述 | | SequentialPipeline | sequentialpipeline | 按順序執(zhí)行一系列運(yùn)算符,將一個(gè)運(yùn)算符的輸出作為下一個(gè)運(yùn)算符的輸入。 | | IfElsePipeline | ifelsepipeline | 實(shí)現(xiàn)條件邏輯,如果條件為真,則執(zhí)行一個(gè)運(yùn)算符;如果條件為假,則執(zhí)行另一個(gè)運(yùn)算符。 | | SwitchPipeline | switchpipeline | 實(shí)現(xiàn)分支選擇,根據(jù)條件的結(jié)果從映射集中執(zhí)行一個(gè)運(yùn)算符。 | | ForLoopPipeline | forlooppipeline | 重復(fù)執(zhí)行一個(gè)運(yùn)算符,要么達(dá)到設(shè)定的迭代次數(shù),要么直到滿足指定的中止條件。 | | WhileLoopPipeline | whilelooppipeline | 只要給定條件保持為真,就持續(xù)執(zhí)行一個(gè)運(yùn)算符。 | | - | placeholder | 在流控制中不需要任何操作的分支,如 if-else/switch 中充當(dāng)占位符。 |
1.3 Pipeline模塊存在的意義提供了一種多智能體間交互流程的控制邏輯封裝,簡(jiǎn)化了代碼。 下面是官方文檔中展示的使用Pipeline和不使用Pipeline的代碼對(duì)比:  可以看到,它簡(jiǎn)化了代碼,其實(shí)也就是將原本需要用戶寫的控制語(yǔ)句,封裝到了Pipeline中,省掉的這部分代碼,與Pipeline中的實(shí)現(xiàn)源碼基本一致。 以上示例省掉的那簡(jiǎn)單的幾行控制邏輯可能看不出多大的作用,但是當(dāng)邏輯復(fù)雜之后,這個(gè)Pipeline的作用就會(huì)顯現(xiàn)出來(lái)。 2. Pipeline的組合使用示例from agentscope.pipelines import SequentialPipeline, IfElsePipeline # 創(chuàng)建一個(gè)按順序執(zhí)行智能體的 Pipeline pipe1 = SequentialPipeline([agent1, agent2, agent3]) # 創(chuàng)建一個(gè)條件執(zhí)行智能體的 Pipeline pipe2 = IfElsePipeline(condition, agent4, agent5) # 創(chuàng)建一個(gè)按順序執(zhí)行 pipe1 和 pipe2 的 Pipeline pipe3 = SequentialPipeline([pipe1, pipe2]) # 調(diào)用 Pipeline x = pipe3(x)
以上示例代碼中,首先創(chuàng)建了一個(gè)順序執(zhí)行的Pipeline,然后創(chuàng)建了一個(gè)條件Pipeline,最后通過(guò)順序Pipeline來(lái)執(zhí)行前面的兩個(gè)Pipeline。這樣就實(shí)現(xiàn)了agent、Pipeline以及各類Pipeline的組合使用。 所以,你也看到了,Pipeline不光能傳遞進(jìn)去一堆 agent,還能傳遞進(jìn)去一堆 pipeline。為什么?因?yàn)?code style="white-space:pre-wrap;line-height: 1.75;font-size: 12.6px;color: rgb(221, 17, 68);background: rgba(27, 31, 35, 0.05);padding: 3px 5px;border-radius: 4px;">Pipeline接收的實(shí)際是一堆Operator類型,只要繼承了這個(gè)類型,都可以使用Pipeline。   如果覺(jué)得本文對(duì)你有幫助,麻煩點(diǎn)個(gè)贊和關(guān)注唄 ~~~點(diǎn)擊上方公眾號(hào),關(guān)注↑↑↑
公眾號(hào)內(nèi)文章一覽 
|