用LangGraph搭建智能体—AI Agents in LangGraph(二)

1. 学习背景

接上一篇传送门,介绍了AI Agent的基本工作原理。本节学习LangGraph的部分组件。

学习地址:传送门

代码地址:传送门

2. 开始上手

2.1 基本知识

上节学习,是从头开始构建了一个代理。如图:
在这里插入图片描述
这一次实践,则是使用LangGraph实现代理,顺便学习组件和特性。LangGraph主要做的事情则是帮助描述和编排控制流。也就是说,允许创建循环图,自带持久化可以不丢失上下文信息。

LangGraph的三个核心概念是:节点、边、和条件边,如图所示:
在这里插入图片描述
节点是代理或者函数,边链接这些点,在做决定时,确定下一步路径,去哪个节点。形象化如下图所示:
在这里插入图片描述

2.2 代码实践,导入基本包

# 导入基本的环境读取包
from dotenv import load_dotenv
_ = load_dotenv()
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated
import operator
from langchain_core.messages import AnyMessage, SystemMessage, HumanMessage, ToolMessage
from langchain_openai import ChatOpenAI
from langchain_community.tools.tavily_search import TavilySearchResults
# 导入基本工具,Tavily是一款在线搜索工具,每月有1000次API免费调用机会,需自行注册
tool = TavilySearchResults(max_results=4) #increased number of results
print(type(tool))
print(tool.name)

输出如下:

<class 'langchain_community.tools.tavily_search.tool.TavilySearchResults'>
tavily_search_results_json

2.3 尝试编写Agent

如果用户不熟悉python中的typing 注解,可以参考如下链接:Support for type hints

# 定义AgentState类,messages变量接受列表类型的变量,内容为AnyMessage类型数据
# operator.add意味着会将新的更新推送到messages其中
class AgentState(TypedDict):
    messages: Annotated[list[AnyMessage], operator.add]
# 整个过程,Agent的状态非常重要,是衡量是否执行结束的判断标志
class Agent:

    def __init__(self, model, tools, system=""):
        self.system = system
        graph = StateGraph(AgentState)
        graph.add_node("llm", self.call_openai) # 构建节点
        graph.add_node("action", self.take_action) # 如果有存在action,则执行
        graph
<think>嗯,用户想了解如何在线搭建AI智能体。首先,我需要回忆一下之前学过的关于AI Agent的知识。根据引用[1]和[2],AI Agent是能够自主运作的软件实体,需要感知环境、决策和行动。用户提到在线构建和部署,可能希望一个不需要本地配置的解决方案。 首先,得确定在线平台的选择。之前学过的LangGraph和Ollama是本地工具,但用户需要在线,可能需要推荐云服务。比如Hugging Face Spaces或者Replit,这些平台支持在线开发和部署。另外,需要考虑AI模型的选择,比如Hugging Face的Transformers库,或者集成OpenAI的API。 接下来,构建流程。可能需要分步骤:确定目标、选择工具、开发、测试、部署。每一步需要具体说明。例如,在确定目标时,明确智能体的功能,比如客服助手还是数据分析。选择工具时,Hugging Face提供模型和空间,FastAPI可以构建API,Streamlit做界面。 然后,代码示例部分需要简单明了,展示一个基本的流程。可能需要用Hugging Face的API,或者使用Python编写简单的逻辑。需要注意在线平台的兼容性,比如使用Flask或FastAPI部署为Web应用。 部署方面,要提到如何将应用部署到云平台,比如Hugging Face Spaces的一键部署,或者使用Vercel、Heroku。需要说明如何绑定域名、设置环境变量等。 可能还需要考虑数据处理和安全性,比如使用环境变量存储API密钥,避免硬编码。此外,集成其他服务如Twilio或Slack,扩展智能体的功能。 用户可能遇到的问题包括如何选择合适的模型、如何处理实时交互、如何监控和维护。所以,在相关问题里可以建议这些方向,比如性能优化、多平台集成、监控日志等。 需要确保回答结构清晰,分步骤,并且每个步骤有具体的工具或方法。同时,引用之前的资料,比如引用[1]提到的LangGraph和Ollama,但用户需要在线方案,所以可能不适用,但可以提到类似的在线工具。 最后,验证流程是否正确,确保每个步骤可行,没有遗漏关键点,比如测试和迭代的重要性。可能还需要提醒用户根据需求调整技术选型,比如需要更复杂的Agent时使用LangChain等框架。</think>### 如何在线构建和部署AI智能体 #### 1. 选择在线开发平台 在线构建AI智能体通常需要依赖云服务或低代码平台。推荐以下工具: - **Hugging Face Spaces**:支持快速部署AI模型和交互式应用,集成Transformers库和Gradio界面[^1]。 - **Replit**:提供在线IDE环境,可直接运行和部署Python代码,适合集成LangChain等AI框架。 - **Google Colab**:基于Jupyter Notebook的云环境,支持免费GPU资源,适合模型训练和原型验证。 #### 2. 定义智能体功能 明确智能体的核心任务,例如: - **任务型**:如客服问答、数据查询。 - **决策型**:如自动化流程控制、动态资源分配。 - **生成型**:如内容创作、代码生成。 #### 3. 开发流程示例(以Hugging Face + Gradio为例) ```python import gradio as gr from transformers import pipeline # 初始化对话模型(Hugging Face模型) chatbot = pipeline("text-generation", model="gpt2") def respond(message, history): response = chatbot(message, max_length=50)[0]['generated_text'] return response # 创建交互界面并部署 gr.ChatInterface(respond).launch(share=True) # 通过share=True生成临时公网链接 ``` 此代码可在Hugging Face Spaces直接运行,生成带Web界面的对话智能体。 #### 4. 高级功能集成 - **多工具协作**:使用LangChain框架连接数据库、API和AI模型: ```python from langchain.agents import initialize_agent from langchain.llms import OpenAI agent = initialize_agent( tools=[...], # 接入搜索引擎、计算器等工具 llm=OpenAI(), agent_type="zero-shot-react-description" ) ``` - **长期记忆**:通过向量数据库(如Pinecone)存储对话历史[^2]。 #### 5. 部署与监控 - **一键部署**:在Hugging Face Spaces或Vercel中绑定Git仓库实现持续部署。 - **性能监控**:使用Prometheus+Grafana监控API调用延迟和错误率。 - **迭代优化**:通过A/B测试对比不同模型版本的效果。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l8947943

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值