跳到主要内容

HelloWorld

简介

LangGraph 是由 LangChain 团队开发的一个开源框架,专注于构建和优化基于语言模型(LLM)的多代理系统和图状工作流。于 2024 年初发布,LangGraph 旨在为开发者提供一种灵活、可视化且强大的工具,处理复杂任务的代理协作和状态管理,特别适用于需要动态决策和上下文跟踪的场景。

主要特点

  • 图状工作流:通过有向图 (Directed Acyclic Graph, DAG) 设计工作流,允许任务以节点和边的形式定义,方便复杂逻辑的建模。
  • 状态管理:内置状态跟踪机制,确保代理间的上下文一致性,支持多轮对话和任务持续性。
  • 多代理协作:支持多个智能体按图定义的路径协作,每个智能体可执行特定任务或调用工具。
  • 工具集成:无缝对接 LangChain 生态的工具(如 SerpAPI、Wikipedia),以及自定义工具。
  • 动态路由:根据 LLM 输出或条件动态调整工作流路径,增强适应性。
  • 可视化支持:提供图形界面(如基于 NetworkX 的可视化),便于调试和优化。
  • Python 开发:以 Python 为主要开发语言,易于集成现有项目。

安装

首先langgraph本身是必须安装的

python3 -m pip install langgraph

对于不同的模型,一般也需要安装对应的sdk,这里以安装openai的sdk为例。

python3 -m pip install langchain-openai

Hello World

大模型时代的Hello World不是在控制台输出个Hello World那么简单,是要与大模型交互才能证明代码有效。

以下用到的大模型是阿里的千问,因为千问兼容OpenAI的SDK,所以直接用langchain-openai也可以。

from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import os
from datetime import datetime

# 填写实际的千问API Key
os.environ["OPENAI_API_KEY"] = ""

llm = ChatOpenAI(
model="qwen-plus",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"

def get_date() -> str:
"""Get today's date."""
return datetime.now().strftime("%Y-%m-%d")

agent = create_react_agent(
model=llm,
tools=[
get_weather,
get_date,
],
prompt="You are a helpful assistant"
)

# 如果只是简单的测试,可以取消下面的注释,并注释掉while True的部分
# resp = agent.invoke(
# {"messages": [{"role": "user", "content": "what is the weather in sf"}]}
# )

# # print(resp)
# print(resp["messages"][-1].content)

while True:
try:
user_input = input("User: ")
user_input = user_input.strip()
if user_input.lower() in ("quit", "exit", "q"):
print("Goodbye!")
break
if not user_input:
continue

resp = agent.invoke(
{"messages": [{"role": "user", "content": user_input}]}
)
print("Assistant:", resp["messages"][-1].content)
except Exception as e:
print(f"Error: {e}")

运行测试

$ python demo1.py
User: 合肥的天气怎么样
Error: 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte
User: 合肥的天气怎么样
Assistant: 合肥的天气总是阳光明媚!如果你有出行计划,可以放心安排哦。
User: 今天的日期是什么
Assistant: 今天的日期是 2025 年 8 月 17 日。
User: q
Goodbye!