提升复杂ai任务执行能力:使用gemini 2.0与langgraph构建多步骤智能代理的5大策略

如何构建能够理解复杂请求并执行必要步骤以满足这些请求的 AI?

本文探讨了一种强大的解决方案:由 Gemini 2.0 和 LangGraph 框架驱动的多步骤 AI 代理。这些代理协调复杂的工作流程,并通过基于现实世界数据的响应增强其推理能力,数据来源于 Google Search、BigQuery 和第三方 APIs。

今天的挑战

第一个重大突破是LLM。想象一下一个装满大量信息的“大脑”,能够理解和生成自然语言。但是,这个“脑”有一个根本的限制:它的知识局限于其训练数据——特定时间点的信息快照。

接着出现了RAG。这将“脑”连接到配置的数据源,使LLM能够访问专有或外部知识,有效地使它们能够访问互联网和特定知识库的庞大且不断更新的资源。这使得LLM能够提供更相关、更准确和更及时的答案,显著增强了它们的实用性。

然而,即使有了RAG,人工智能在处理复杂的多步骤任务时仍然面临困难,这些任务需要与现实世界的互动。想象一下请求帮助策划一个惊喜派对:一个增强了RAG的LLM可以建议主题和场地,但无法预订场地或发送邀请。

在金融等领域,这一限制显得尤为关键。一个人类金融分析师在建议投资组合再平衡时会系统地:

  1. \1. 评估当前持有的资产和市场价值,
  2. \2. 基于市场趋势分析增长潜力,以及
  3. \3. 推荐买入/卖出决策。

这种多步骤推理超出了标准的具备RAG的LLM。

Agentic AI: 从知识到行动

今天,我们将探讨如何通过 Agentic AI 克服这些局限性。Agentic AI 将 LLM 从一个被动的“脑”转变为一个主动的智能代理,能够制定计划,利用工具与外部系统(APIs、数据库)互动,收集数据,进行计算,并执行任务以实现特定目标。

代理不仅仅是提供信息,而是 行动 以实现期望的结果。

复制人类推理:股票投资组合用例

本次探索专注于使用Agentic AI进行一个实际用例:管理个人股票投资组合。目标是创建一个能够处理复杂查询的代理,例如:“考虑到当前市场和价格,我应该卖掉我的特斯拉股票吗?”

人类交易者通常会:

  1. \1. 检查他们的特斯拉持股和平均购买价格。
  2. \2. 检查特斯拉股票的当前市场价格。
  3. \3. 研究特斯拉的市场前景和相关行业趋势。
  4. \4. 根据此分析,决定是持有、增加购买还是出售。

我们将探索是否可以使用Agentic AI复制相同类型的多步骤推理和行动。

演示

请查看 Agentic AI 在下面的演示中处理复杂的金融查询。为了快速了解编排,我们建议以 2 倍速观看。

解决方案详情

在此解决方案中,我使用了一种“计划与执行”风格的代理,这受到LangChain的计划与执行教程的启发。

在这里插入图片描述
Image 3

来自LangChain的计划与执行教程的图示

该代理的关键组件包括:

  • Gemini 2.0 (LLM): 负责理解用户请求、制定查询和综合信息的“大脑”。
  • LangGraph (编排): 管理工作流的框架,将复杂任务分解为顺序步骤,并在组件之间路由数据。
  • 基础数据源: 来自Google搜索(用于市场趋势和新闻)、BigQuery(用于用户投资组合详情)和FinnHub API(用于当前股价)的实时信息。

工作流程如下进行:

(1) 制定计划并生成任务:

在这里插入图片描述
Image 4

当用户提出问题时,LangGraph将工作流路由到计划代理。该代理由Gemini 2.0驱动,利用精心设计的提示生成结构化为Plan对象的逐步计划:

class Plan(BaseModel):
    steps: List[str] = Field(description="按顺序遵循的步骤。")

然后在PlanExecute TypedDict中使用此Plan对象来管理工作流状态:

class PlanExecute(TypedDict):
    input: str
    plan: List[str]
    past_steps: Annotated[List[Tuple[str, str]], operator.add]
    response: Optional[str]
    intermediate_responses: List[str]

计划者的提示指导Gemini创建一个清晰、简洁的计划,为每个步骤选择适当的工具。

PLANNER_PROMPT = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            """您是解读问题和创建逐步计划的专家。
根据给定的目标,创建一个简单的计划。每个步骤应该是一个独立的任务,执行后将导致正确的答案。避免多余的步骤。
使用以下指南选择合适的工具:
- 投资组合检索(例如,“我的投资组合是什么?”、“我的持仓有哪些?”、“Nvidia的最后交易?”):使用{{portfolio_retriever}}工具。
- 使用股票符号检查股票的当前价格(例如GOOG的当前价格):使用{{price_checker}}工具。如果有多个股票需要检查,请分解为多个步骤,逐个调用检查每只股票的当前价格。
- 股票/市场分析(例如,“Nvidia会涨吗?”、“当前股价?”、“Intel值得买吗?”、“风险是什么?”):使用{{stock_analyser}}工具。
- 一般/非财务问题(例如,“嗨”、“你是谁?”):使用{{normal_responder}}工具。
最后一步的结果应为最终答案。确保每个步骤都有足够的信息;不要跳过步骤。
""",
        ),
        ("placeholder", "{messages}"),
    ]
)
(2) 执行任务和重新规划:

一旦计划者生成了逐步计划,LangGraph将其传递给代理执行器进行执行。在此阶段,代理根据计划中的每个步骤使用适当的工具。

在这里插入图片描述
Image 5

例如,步骤1需要检索投资组合信息,代理使用portfolio_retriever工具。该工具将自然语言指令转换为SQL查询,并在BigQuery数据集中执行(用户持仓存储的位置)。

Image 6Image 6

在每个步骤执行后,工作流被路由到重新规划器。重新规划器的角色至关重要:它综合迄今为止收集的信息,并确定下一步的行动。

replan_step函数协调此过程:

async defreplan_step(state: PlanExecute):
    all_responses = "\\n".join(state["intermediate_responses"])
    all_steps = "\\n".join([f"{step}: {response}"for step, response in state["past_steps"]])
    context = f"这是从先前步骤中收集的信息:\\n{all_steps}\\n\\n这是从工具直接获得的原始响应:\\n{all_responses}"

    output = await replanner.ainvoke({**state, "input": context})
    if output.response:
        cleaned_response = clean_newlines(output.response.response)
        with cl.Step(name="最终响应"):
            await cl.Message(content="**最终响应:**").send()
            await cl.Message(content=cleaned_response).send()
        return {"response": cleaned_response}
    else:
        return {"plan": output.plan.steps}

重新规划器接收到一个context,其中包含:

  • • 完成步骤及其对应响应的摘要。
  • • 从工具直接收到的原始输出。

利用此上下文,重新规划器(由Gemini 2.0和特定提示驱动)决定是否有足够的信息提供最终答案。

  • 最终响应: 如果重新规划器生成了最终响应(output.response存在),该响应将发送给用户,工作流结束。
  • 继续执行: 如果未生成最终响应,重新规划器将现有计划传回代理执行器,然后执行下一步。

这种执行和重新规划的循环继续,直到重新规划器确定用户的查询已完全解决。

此逻辑在LangGraph中通过这些边缘实现:

def should_end(state: PlanExecute):
    return END if"response"in state and state["response"] isnotNoneelse"agent"

workflow = StateGraph(PlanExecute)
workflow.add_node("planner", plan_step)
workflow.add_node("agent", execute_step)
workflow.add_node("replan", replan_step)
workflow.add_edge(START, "planner")
workflow.add_edge("planner", "agent")
workflow.add_edge("agent", "replan")
workflow.add_conditional_edges("replan", should_end, {"agent": "agent", END: END})
app = workflow.compile()

workflow.add_edge("agent", "replan")行创建了从代理执行器到重新规划器的直接路径。

workflow.add_conditional_edges行定义了重新规划步骤后发生的逻辑。

  • • 如果should_end为真,工作流进入END状态。
  • • 如果should_end为假,工作流返回到agent状态(代理执行器)。
(3) 继续执行

在检索到投资组合信息后,工作流返回到代理执行器,以执行计划中的下一步:检查特斯拉股票的当前市场价格。代理执行器使用price_checker工具,该工具查询FinnHub API以获取实时股价。

Image 7Image 7

工作流随后返回到重新规划器。由于需要更多信息来回答初始查询,重新规划器将工作流指向代理执行器。

这次,代理执行器执行分析特斯拉市场表现并确定是否建议持有或出售的步骤。为此,代理使用stock_analyser工具,该工具利用Google搜索基础提供最新和相关的信息。

在这里插入图片描述
Image 8

stock_analyser工具使用以下函数通过Google搜索结果进行分析。这一函数向Google搜索基础服务发送提示,指示其查找与正在分析的股票相关的新闻和信息。这确保了分析基于最新的信息。

def google_ground(prompt: str) -> str:
    request = discoveryengine.GenerateGroundedContentRequest(
        location=google_search_client.common_location_path(
                project=PROJECT_NUMBER, location="global"
        ),
        generation_spec=spec,
        contents=[
            discoveryengine.GroundedGenerationContent(
                    role="user",
                    parts=[discoveryengine.GroundedGenerationContent.Part(text=prompt)],
            )
        ],

### 市场分析后

工作流程返回到重新规划器。重新规划器意识到仍然需要进行利润/损失计算,因此再次将工作流程引导回代理执行器。这一次,代理执行器执行必要的计算,以确定如果用户以当前市场价格出售他们的特斯拉股票,可能的利润或损失。

此计算使用之前检索的投资组合信息(股票数量和平均购买价格)以及从 FinnHub API 获取的当前价格。

![](https://wsrv.nl/?url=https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*2G_d-K_onTL7jBePVinWQA.png)

#### (4) 重新规划器生成最终响应

最后,工作流程最后一次返回到重新规划器。在这一阶段,重新规划器可以访问所有必要的信息:

* 投资组合持有(来自 BigQuery)
* 当前市场价格(来自 FinnHub)
* 市场分析(来自 Google Search grounding)
* 潜在利润/损失计算

然后,重新规划器综合这些信息,生成一个全面的建议,直接回答用户的原始查询:“鉴于当前市场和价格,我应该出售我的特斯拉股票吗?”

![](https://wsrv.nl/?url=https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*iUFHFTnlTUlr4FMq1Tzkqw.png)

![](https://wsrv.nl/?url=https://cdn-images-1.readmedium.com/v2/resize:fit:800/1*UuXf9nQW_rRtQ2zSRtcyqQ.png)

重要的是,重新规划器还提供了详细的理由,解释了建议是如何得出的。这种透明的方法使用户能够理解 AI 建议背后的推理,从而建立对系统的信任和信心。

对于那些对技术实现感兴趣的人,该项目的代码可在 GitHub 上找到:[Link](https://github.com/jiasin88/multi-step-ai-agent)

### 结论

总之,这次探索展示了Agentic AI的变革潜力。

通过将像Gemini 2.0这样的LLM的强大能力与像LangGraph这样的稳健编排框架相结合,并利用来自Google Search、BigQuery和外部APIs等来源的真实世界数据,我们可以创建超越简单信息检索的AI系统,进入主动解决问题的领域。

这种方法使AI能够处理复杂的多步骤任务,不仅提供答案,还提供具有明确理由的可操作建议,为各个领域开辟了令人兴奋的可能性。

如何零基础入门 / 学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么我作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,希望可以帮助到更多学习大模型的人!至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

👉 福利来袭CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

全套AGI大模型学习大纲+路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

read-normal-img

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈
基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉 福利来袭CSDN大礼包:《2025最全AI大模型学习资源包》免费分享,安全可点 👈

img

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值