AI Agent设计模式二:Parallelization

概念 :并行任务执行引擎

  • ✅ 优点:提升吞吐量,充分利用多核资源
  • ❌ 缺点:复杂度高,存在竞态条件风险
python 复制代码
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, START, END
from typing import TypedDict
import os

# 初始化模型
client = ChatOpenAI(
    model="deepseek-r1",
    openai_api_key=os.environ["BAILIAN_API_KEY"],
    openai_api_base="https://dashscope.aliyuncs.com/compatible-mode/v1",
    streaming=False  # 禁用流式传输
)

# 定义实体类
class PhilosophyState(TypedDict):
    topic: str
    part0: str
    part1: str
    part2: str
    combined_output: str

meta_prompt = """
    针对如下问题进行思考,并得出结论。
    问题如下:{topic}
    你分析的角度如下:{aspect}
"""

# 道家观点解释
def part0_interpreter(state: PhilosophyState):
    print(f"道家视点解释开始 :{state['topic']}")

    prompt = meta_prompt.format(topic = state['topic'], aspect = "道家")
    response = client.invoke(prompt)

    print(f"道家观点:{response}")
    return {'part0': response}

# 儒学观点解释
def part1_interpreter(state: PhilosophyState):
    print(f"儒学观点解释开始 :{state['topic']}")
    prompt = meta_prompt.format(topic=state['topic'], aspect="儒学")
    response = client.invoke(prompt)
    print(f"儒学观点:{response}")
    return {'part1': response}

# 法学观点解释
def part2_interpreter(state: PhilosophyState):
    print(f"法学观点解释开始 :{state['topic']}")
    prompt = meta_prompt.format(topic=state['topic'], aspect="法学")
    response = client.invoke(prompt)
    print(f"法学观点:{response}")
    return {'part2': response}

def aggregate_results(state: PhilosophyState):
    combined = f"{state['part0']}\n{state['part1']}\n{state['part2']}"
    return {'combined_output': combined }

# 创建工作流
workflow = StateGraph(PhilosophyState)

# 添加节点
workflow.add_node("part0_interpreter", part0_interpreter)
workflow.add_node("part1_interpreter", part1_interpreter)
workflow.add_node("part2_interpreter", part2_interpreter)
workflow.add_node("aggregate_results", aggregate_results)

# 添加节点边
workflow.add_edge(START, "part0_interpreter")
workflow.add_edge(START, "part1_interpreter")
workflow.add_edge(START, "part2_interpreter")
workflow.add_edge("part0_interpreter", "aggregate_results")
workflow.add_edge("part1_interpreter", "aggregate_results")
workflow.add_edge("part2_interpreter", "aggregate_results")
workflow.add_edge("aggregate_results", END)

# 编译工作流
app = workflow.compile()

result = app.invoke({"topic": "治国之道在于平衡各方利益"})
print(result)

执行结果

相关推荐
CodeCraft Studio6 分钟前
借助Aspose.HTML控件,在 Python 中将 HTML 转换为 Markdown
开发语言·python·html·markdown·aspose·html转markdown·asposel.html
QQ_4376643147 分钟前
C++11 右值引用 Lambda 表达式
java·开发语言·c++
永卿0017 分钟前
设计模式-迭代器模式
java·设计模式·迭代器模式
aramae7 分钟前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
使二颗心免于哀伤10 分钟前
《设计模式之禅》笔记摘录 - 10.装饰模式
笔记·设计模式
悠哉悠哉愿意25 分钟前
【电赛学习笔记】MaxiCAM 项目实践——与单片机的串口通信
笔记·python·单片机·嵌入式硬件·学习·视觉检测
封奚泽优30 分钟前
使用Python实现单词记忆软件
开发语言·python·random·qpushbutton·qtwidgets·qtcore·qtgui
Goona_1 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
liulilittle2 小时前
C++/CLI与标准C++的语法差异(一)
开发语言·c++·.net·cli·clr·托管·原生
daixin88482 小时前
什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
java·开发语言·redis·缓存