
API开发中的日志记录价值
人工智能 (AI) 已经发展到我们可以创建自主思考和行动的系统。这些系统称为 Agentic AI,能够在现实世界中推理、决策和使用工具。想象一下,一个系统不仅可以提供天气更新,还可以记住您之前询问的内容并建议相关信息 – 这就是 Agentic AI 的实际应用。
然而,构建这样的系统并不简单。像 OpenAI 的 GPT 这样的大型语言模型 (LLM)功能强大但功能有限。它们擅长生成文本,但缺乏内存,无法直接与外部工具或系统交互。这就是LangChain和LangGraph等框架的闪光点,它们使开发人员能够为 AI 模型添加内存以在交互过程中保留上下文,集成 API 等工具以进行实时数据检索,并为复杂的多步骤任务创建工作流。
本文将指导您完成:
大型语言模型 (LLM),例如 OpenAI 的 GPT,是在大量人类语言数据集上进行训练的。它们旨在预测序列中的下一个单词,这使它们能够生成连贯的文本、智能地回答问题并执行复杂的推理任务,例如编写代码或总结文档。
例如,GPT-3 只需一个句子就可以生成整篇文章。然而,虽然 LLM 是智能的,但它们以无状态的方式运行——将每次交互都当做第一次来处理。
Transformer 是驱动 LLM 的神经网络架构。Transformer 在 2017 年的论文“ Attention Is All You Need ”中被引入,它使用自注意力机制来理解序列中单词之间的关系。想象一下阅读一本小说。你不是线性阅读,而是在页面之间来回翻阅以更好地理解情节。Transformer 做同样的事情,专注于输入中最相关的部分以生成有意义的输出。
*要深入了解 Transformer 的内部工作原理,请参阅 Kesha William 的文章“*生成式 AI 中的 Transformer 是什么? ”
尽管LLMs (LLM) 有诸多优势,但也存在一些缺点:
在构建用于动态现实世界应用的 AI 系统时,这些差距非常显著。例如,没有记忆的聊天机器人无法提供情境感知响应,没有工具集成的 LLM 无法检索实时天气更新。
LangChain 是一个扩展 LLM 功能的 Python 框架。它使开发人员能够:
LangChain 可以被认为是大脑的执行助理。它记录已经说过或做过的事情,知道何时调用外部工具(例如,获取天气数据),并以有组织和模块化的方式管理任务,确保每一步都能产生所需的结果。
有关 LangChain 基础知识的更多信息,请查看 Amber Israelsen 的文章:“开始使用 LangChain:如何运行您的第一个应用程序” 。
当 LangChain 执行工作流时,LangGraph 提供了一种可视化和调试它们的方法。它将工作流表示为有向图,其中有节点(表示获取数据或生成文本等任务)和边(表示任务之间的依赖关系)。
LangGraph 充当蓝图架构师:
例如,如果 LangChain 组织了一个获取天气数据的工作流程,LangGraph 会以图表的形式显示该步骤:用户输入 → 获取天气 → 生成响应。
现在您已经了解了 LangChain 和 LangGraph 是什么,让我们开始实际的动手学习吧!按照以下步骤,我们将构建一个满足以下条件的代理:
我们将初始化 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)
那么,这里发生了什么?让我解释一下:
使用 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}."
LangChain的工具类集成了外部函数,实现无缝交互。
from langchain.tools import Tool
weather_tool = Tool(
name="Weather Fetcher",
func=get_weather,
description="Fetches the current weather for a specified city."
)
我们将工具、大型语言模型(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
)
使用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
现在我们已经构建了演示,我们如何才能让它在实际用例中部署呢?以下是我建议的一些步骤:
归根结底,人工智能的效果取决于它解决的实际业务问题。以下是您可以使用此解决方案的一些用例:
LangChain 和 LangGraph 使开发人员能够创建智能、模块化且可扩展的 AI 系统。通过集成内存、工具使用 和工作流可视化,这些框架为构建动态的现实世界应用程序开辟了新的可能性。从天气聊天机器人到自主研究助理,LangChain 和 LangGraph 为超越静态 AI 进入自适应交互式系统领域奠定了基础。
AI 的未来在于不仅能思考,还能智能行动的系统 — LangChain 和 LangGraph 等框架正在引领这一趋势。立即开始构建您自己的 Agentic AI 系统并参与转型!