如何将 LangChain 和 LangGraph 用于 Agentic AI
文章目录
人工智能 (AI) 已经发展到我们可以创建自主思考和行动的系统。这些系统称为 Agentic AI,能够在现实世界中推理、决策和使用工具。想象一下,一个系统不仅可以提供天气更新,还可以记住您之前询问的内容并建议相关信息 – 这就是 Agentic AI 的实际应用。
然而,构建这样的系统并不简单。像 OpenAI 的 GPT 这样的大型语言模型 (LLM)功能强大但功能有限。它们擅长生成文本,但缺乏内存,无法直接与外部工具或系统交互。这就是LangChain和LangGraph等框架的闪光点,它们使开发人员能够为 AI 模型添加内存以在交互过程中保留上下文,集成 API 等工具以进行实时数据检索,并为复杂的多步骤任务创建工作流。
本文将指导您完成:
- 了解 LLM 和变压器的局限性。
- 探索 LangChain 和 LangGraph 如何解决这些限制。
- 构建具有记忆保留和 API 集成功能的天气聊天机器人代理。
- 扩展系统以供生产使用并将其与替代方案进行比较。
基础概念:大型语言模型和 Transformer
什么是LLMs (LLM)?
大型语言模型 (LLM),例如 OpenAI 的 GPT,是在大量人类语言数据集上进行训练的。它们旨在预测序列中的下一个单词,这使它们能够生成连贯的文本、智能地回答问题并执行复杂的推理任务,例如编写代码或总结文档。
例如,GPT-3 只需一个句子就可以生成整篇文章。然而,虽然 LLM 是智能的,但它们以无状态的方式运行——将每次交互都当做第一次来处理。
Transformers:LLMs背后的大脑
Transformer 是驱动 LLM 的神经网络架构。Transformer 在 2017 年的论文“ Attention Is All You Need ”中被引入,它使用自注意力机制来理解序列中单词之间的关系。想象一下阅读一本小说。你不是线性阅读,而是在页面之间来回翻阅以更好地理解情节。Transformer 做同样的事情,专注于输入中最相关的部分以生成有意义的输出。
要深入了解 生成式 AI 中的 Transformer 是什么? ”
LLMs的局限性
尽管LLMs (LLM) 有诸多优势,但也存在一些缺点:
- 没有记忆:LLMs无法回忆过去的对话或在之前的输入基础上进行构建。
- 没有工具集成:它们无法获取实时数据或与 API 交互。
- 工作流程差距:他们缺乏执行多步骤推理或协调复杂任务的能力。
在构建用于动态现实世界应用的 AI 系统时,这些差距非常显著。例如,没有记忆的聊天机器人无法提供情境感知响应,没有工具集成的 LLM 无法检索实时天气更新。
LangChain 和 LangGraph 简介
LangChain:为LLMs (LLM) 增添超能力
LangChain 是一个扩展 LLM 功能的 Python 框架。它使开发人员能够:
- 添加记忆:随着时间的推移保留对话历史和上下文。
- 集成工具:使 LLM 能够与外部 API、数据库或功能交互。
- 创建模块化工作流程:构建任务序列,例如提出问题、检索数据和生成响应。
LangChain 可以被认为是大脑的执行助理。它记录已经说过或做过的事情,知道何时调用外部工具(例如,获取天气数据),并以有组织和模块化的方式管理任务,确保每一步都能产生所需的结果。
有关 LangChain 基础知识的更多信息,请查看 Amber Israelsen 的文章:“开始使用 LangChain:如何运行您的第一个应用程序” 。
LangGraph:可视化工作流程
当 LangChain 执行工作流时,LangGraph 提供了一种可视化和调试它们的方法。它将工作流表示为有向图,其中有节点(表示获取数据或生成文本等任务)和边(表示任务之间的依赖关系)。
LangGraph 充当蓝图架构师:
- 它直观地映射出任务及其关系。
- 它通过显示数据如何在系统中流动来简化调试。
- 它通过使工作流程模块化和适应性来确保可扩展性。
例如,如果 LangChain 组织了一个获取天气数据的工作流程,LangGraph 会以图表的形式显示该步骤:用户输入 → 获取天气 → 生成响应。
构建天气聊天机器人代理
现在您已经了解了 LangChain 和 LangGraph 是什么,让我们开始实际的动手学习吧!按照以下步骤,我们将构建一个满足以下条件的代理:
- 保留记忆以提供情境感知响应。
- 使用OpenWeatherMap的 API获取实时天气数据。
- 结合 LangChain 工具和工作流程实现无缝交互。
步骤 1:设置 LangChain
我们将初始化 OpenAI 的 GPT 模型和 LangChain 的记忆系统。
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
# OpenAI API Key
openai_api_key = "YOUR_OPENAI_API_KEY"# Initialize the chat model
llm = ChatOpenAI(model="gpt-3.5-turbo", openai_api_key=openai_api_key)# Add memory to retain conversation context
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
那么,这里发生了什么?让我解释一下:
- ChatOpenAI:连接到 OpenAI 的 GPT 模型进行自然语言生成。
- ConversationBufferMemory:存储用户代理对话历史记录,以提供跨多个回合的上下文。
第 2 步:获取天气数据
使用 OpenWeatherMap 的 API 来检索天气信息。
import requests
OPENWEATHER_API_KEY = "YOUR_OPENWEATHER_API_KEY"def get_city_coordinates(city: str):
url = f"http://api.openweathermap.org/geo/1.0/direct?q={city}&appid={OPENWEATHER_API_KEY}"
response = requests.get(url)
data = response.json()
if data:
return data[0]["lat"], data[0]["lon"]
raise ValueError("City not found.")def get_weather(city: str):
lat, lon = get_city_coordinates(city)
url = f"https://api.openweathermap.org/data/3.0/onecall?lat={lat}&lon={lon}&appid={OPENWEATHER_API_KEY}&units=metric"
response = requests.get(url)
data = response.json()
temp = data["current"]["temp"]
condition = data["current"]["weather"][0]["description"]
return f"The weather in {city} is {temp}°C with {condition}."
步骤 3:将天气功能集成到工具中
LangChain的工具类集成了外部函数,实现无缝交互。
from langchain.tools import Tool
weather_tool = Tool(
name="Weather Fetcher",
func=get_weather,
description="Fetches the current weather for a specified city."
)
步骤 4:初始化 LangChain 代理
我们将工具、大型语言模型(LLM)和记忆模块整合为一个协同一致的智能代理(Agent)。
from langchain.agents import initialize_agent, AgentType
tools = [weather_tool]
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True
)
步骤 5:使用 FastAPI 部署聊天机器人
使用FastAPI将代理部署为 API 服务。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()class ChatRequest(BaseModel):
message: str@app.post("/chat")
def chat(request: ChatRequest):
try:
response = agent.run(request.message)
return {"response": response}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
现在,运行服务器:
uvicorn app:app --reload
如何扩展代理以供实际使用
现在我们已经构建了演示,我们如何才能让它在实际用例中部署呢?以下是我建议的一些步骤:
添加更多工具
- 股票 API:获取实时股票价格。
- 任务计划程序:自动提醒和通知。
- 文档摘要:总结长篇文章或 PDF。
扩展基础设施
- 使用Redis或者PostgreSQL进行内存持久化。
- 使用Docker部署以实现可移植性,使用Kubernetes部署以实现可扩展性。
LangChain 和 LangGraph 与 Haystack 和 LlamaIndex 的比较
- LangChain 和 LangGraph 最适合结合内存、工具集成和模块化工作流。LangGraph 的可视化确保了可扩展性和调试能力。
- Haystack 最适合文档检索和问答。它对工具集成的支持有限。
- LlamaIndex 非常适合索引大型数据集,并且并未针对代理工作流程进行优化。
实际应用
归根结底,人工智能的效果取决于它解决的实际业务问题。以下是您可以使用此解决方案的一些用例:
- 客户支持:用于解决查询的上下文感知机器人。
- 电子商务:个性化推荐和帮助。
- 研究代理:自动化数据汇总和见解提取。
结论
LangChain 和 LangGraph 使开发人员能够创建智能、模块化且可扩展的 AI 系统。通过集成内存、工具使用 和工作流可视化,这些框架为构建动态的现实世界应用程序开辟了新的可能性。从天气聊天机器人到自主研究助理,LangChain 和 LangGraph 为超越静态 AI 进入自适应交互式系统领域奠定了基础。
AI 的未来在于不仅能思考,还能智能行动的系统 — LangChain 和 LangGraph 等框架正在引领这一趋势。立即开始构建您自己的 Agentic AI 系统并参与转型!
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- API协议设计的10种技术
- ComfyUI API是什么:深入探索ComfyUI的API接口与应用
- 从架构设计侧剖析: MCP vs A2A 是朋友还是对手?
- Kimi Chat API入门指南:从注册到实现智能对话
- 免费查询公司注册信息API的使用指南
- 防御 API 攻击:保护您的 API 和数据的策略
- 香港支付宝实名认证:是什么?怎么用?
- 如何获取 Coze开放平台 API 密钥(分步指南)
- 如何保护您的API免受自动化机器人和攻击 | Zuplo博客
- ASP.NET Core Minimal APIs 入门指南 – JetBrains 博客
- 什么是 OpenReview
- Vue中使用echarts@4.x中国地图及AMap相关API的使用