LangGraph终极速成!零基础构建AI研究助手:状态管理+工具调用,四小时搞定企业级Agent

Langgraph小入门 在 LangGraph 中,节点是图的基本单元,通常是 Python 函数,它们负责执行图中的实际操作。节点可以是同步或异步(async)函数,函数的第一个参数是图的状态,而第二个参数是可选的配置,用于传递额外的可配置参数。"}# 第二个参数是可选的my_node:这是一个包含两个参数的节点函数。第一个参数是state,即图的当前状态。第二个参数是config,这是一个可选的对象,用于传递额外的配置信息(例如user_id节点函数执行后,它返回一个更新后的状态,例如。 阅读详情

最近在搭建Agent,包括之前也写过一些智能体编排的流程,不过在构建项目的时候以及调研相关资源,当前发现Agent框架中LangGprah的资源是较多的,文档也比较完善,感觉又回到了之前Langchain流行的感觉。笔者花了几个小时大致把LangGraph一些基础概念包括调用快速过了一遍,后续会使用LangGraph搭建一些有趣的应用。主要参考流程来自LangGraph官方教程

另外之前发过不少关于Agent的理论文章,不懂相关概念的大家也可以查看历史文章

LangGraph官方链接:https://langchain-ai.github.io/langgraph/

前序准备

在使用LangGraph之前,我们先提前准备一些基础知识以及相关概念的了解,方便我们了解后续代码

Langchain的ChatModel

我们清楚Agent的主要通过设计提示语,然后调用模型,完成对应流程与目标输出,所以在构建智能体之前,我们首先搞明白如何调用大模型,langchain框架提供了很多厂商的调用方式,使用文档在这里:

https://python.langchain.com/api_reference/langchain/chat_models.html

虽然聊天模型在底层使用了语言模型,但它们暴露的接口略有不同。它们并没有暴露“文本输入、文本输出”的 API,而是暴露了一个以“聊天消息”作为输入和输出的接口。下面支持的模型厂商列表

  • openai -> langchain-openai
  • anthropic -> langchain-anthropic
  • azure_openai -> langchain-openai
  • azure_ai -> langchain-azure-ai
  • google_vertexai -> langchain-google-vertexai
  • google_genai -> langchain-google-genai
  • bedrock -> langchain-aws
  • bedrock_converse -> langchain-aws
  • cohere -> langchain-cohere
  • fireworks -> langchain-fireworks
  • together -> langchain-together
  • mistralai -> langchain-mistralai
  • huggingface -> langchain-huggingface
  • groq -> langchain-groq
  • ollama -> langchain-ollama
  • google_anthropic_vertex -> langchain-google-vertexai
  • deepseek -> langchain-deepseek
  • ibm -> langchain-ibm
  • nvidia -> langchain-nvidia-ai-endpoints
  • xai -> langchain-xai
  • perplexity -> langchain-perplexity

langchain有个方法init_chat_model,可以初始化各种厂商的模型,同时也提供了不同大模型的调用sdk,下面是deepseek的例子:

from langgraph.prebuilt import create_react_agent
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv

load_dotenv(verbose=True)

model=ChatDeepSeek(
    model="deepseek-chat",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
)

response=model.invoke("你好,请帮我生成一首儿歌")
print(response)

模型输出如下:

{
"content": "当然!这里有一首温馨可爱的儿歌,适合小朋友传唱:\n\n---\n\n**《小星星的梦》**  \n✨🌙🎵  \n\n小星星,眨眼睛,  \n躲在云端放光明。  \n月亮船,摇啊摇,  \n载着梦儿轻轻飘。  \n\n萤火虫,提灯笼,  \n照亮花园小草丛。  \n风儿唱,树叶响,  \n伴我进入甜梦乡。  \n\n——  \n希望这首简单又充满画面感的儿歌能让宝贝喜欢!如果需要主题调整(比如动物、季节等),可以告诉我哦 😊",
"additional_kwargs": {
"refusal": null
  },
"response_metadata": {
"token_usage": {
"completion_tokens": 120,
"prompt_tokens": 12,
"total_tokens": 132,
"completion_tokens_details": null,
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 0
      },
"prompt_cache_hit_tokens": 0,
"prompt_cache_miss_tokens": 12
    },
"model_name": "deepseek-chat",
"system_fingerprint": "fp_feb633d1f5_prod0820_fp8_kvcache",
"id": "866e04cd-5b1c-41cd-a7c6-a4140f4bcd05",
"service_tier": null,
"finish_reason": "stop",
"logprobs": null
  },
"id": "run--d3ffbc2a-d62b-49e5-8daa-981205501093-0",
"usage_metadata": {
"input_tokens": 12,
"output_tokens": 120,
"total_tokens": 132,
"input_token_details": {
"cache_read": 0
    },
"output_token_details": {}
  }
}

这个JSON输出代表了一次完整的AI生成过程的结果,整个结构可以分为两大部分:核心内容和元数据。

核心内容

这是用户直接收到的、最有价值的部分:

  • content:主要输出内容。包含了AI生成的完整儿歌《小星星的梦》,包括标题、歌词、表情符号和友好的结束语。这是整个响应的核心。
  • additional_kwargs:附加参数字典。这里的"refusal": null表明AI没有拒绝该请求,顺利完成了任务。
元数据 (系统信息)

这些字段提供了关于此次生成过程的背景技术信息,对开发者非常有用:

  • response_metadata:响应元数据。包含了本次请求的详细技术细节:
    • token_usage:Token消耗统计。显示本次生成消耗了12个输入token(问题很短)和120个输出token(儿歌内容较长),总计132个token。
    • model_name:模型标识。表明由deepseek-chat模型生成。
    • finish_reason:完成原因。值为stop,表示模型正常输出了完整结果后结束。
    • id,system_fingerprint: 本次请求的唯一标识和系统指纹,用于追踪和诊断。
  • usage_metadata:用量元数据。以另一种格式再次提供了token使用情况,并特别指出了没有从缓存读取("cache_read": 0),说明这是一个全新的计算请求。
  • id:本次运行(Run)的唯一标识符。用于在日志系统中追踪这一次特定的AI调用。

ReAct框架

《REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS》,由Shunyu Yao等人撰写,发表在2023年的ICLR会议上。论文探讨了如何在大型语言模型(LLMs)中结合推理(reasoning)和行动(acting)的能力,以提高模型在语言理解和交互式决策制定任务中的性能。

其中ReAct Agent就是核心动作就是推理+行动

主要观点:

  • 大型语言模型(LLMs)在语言理解和交互式决策制定任务中表现出色,但它们的推理(例如链式思维提示)和行动(例如行动计划生成)能力通常被分开研究。
  • 作者提出了一种新的方法ReAct,它通过交错生成推理轨迹和特定于任务的行动,使两者之间产生更大的协同效应。推理轨迹帮助模型诱导、跟踪和更新行动计划,以及处理异常情况,而行动则允许它与外部资源(如知识库或环境)接口并收集额外信息。 具体步骤:

ReAct(Reasoning and Acting)是一种结合了**推理(reasoning)和行动(acting)**的方法,旨在提高大型语言模型(LLMs)在解决复杂任务时的性能和可解释性。ReAct的具体步骤如下:

  • 定义任务和目标:首先,明确模型需要解决的任务和目标。这可能包括问题回答、事实验证、文本游戏或网页导航等。
  • 生成推理轨迹:模型生成一系列推理轨迹,这些轨迹是模型内部的思考过程,用于解决问题。这些推理轨迹可能包括分解任务目标、提取重要信息、执行常识推理、指导搜索重构、跟踪进度和处理异常等。
  • 执行行动:模型根据推理轨迹执行一系列行动。在ReAct中,行动是通过与外部环境(例如Wikipedia或其他知识库)的交互来完成的。行动可以是搜索信息、选择产品、选择选项或购买等。
  • 交替推理和行动:在解决任务的过程中,模型会交替进行推理和行动。这意味着模型在执行每个行动后可能会生成新的推理轨迹,然后再执行新的行动,以此往复。
  • 更新上下文:每次行动后,模型会更新上下文信息,这包括之前的行动、观察结果和新生成的推理轨迹。这种上下文更新帮助模型跟踪任务的当前状态,并为未来的推理和行动提供信息。
  • 生成任务解决轨迹:通过上述步骤,模型生成一个包含行动、观察和推理轨迹的任务解决轨迹。这个轨迹不仅展示了模型如何解决问题,而且提供了模型决策的透明度,使得人类用户可以理解和评估模型的行为。
  • 评估和调整:在实际应用中,模型生成的任务解决轨迹可能会被人类用户评估和调整。用户提供的反馈可以用来进一步指导模型的行为,或者在模型自身无法正确解决问题时进行干预。

下面是一个 ReAct 提示的示例(摘自论文,为简单起见缩短为一个示例):

问题 科罗拉多造山带东部区域延伸到的区域的海拔范围是多少? 思考 1 我需要搜索科罗拉多造山带,找到科罗拉多造山带东段延伸的区域,然后找到该区域的海拔范围。 操作 1 搜索 [科罗拉多造山带] 观察 1 科罗拉多造山带是科罗拉多及其周边地区造山运动的一段。 思考 2 它没有提到东部地区。所以我需要查一下东部地区。 操作 2 查找 [东部地区] 观察 2 (结果 1 / 1) 东部区域延伸至高平原,称为中原造山带。 思考 3 科罗拉多造山运动的东部区域延伸到高平原。所以我需要搜索高平原,找到它的海拔范围。 操作 3 搜索 [高平原] 观察 3 高平原指的是两个截然不同的陆地区域之一。 思考 4 我需要搜索高平原(美国) 操作 4 搜索 [高平原(美国)] 观察 4 高平原是大平原的一个分区。从东到西,高平原的海拔从 1800 到 7000 英尺 (550 到 2130 米) 不等。[3] 思考 5 高平原海拔高度从 1800 到 7000 英尺,所以答案是 1800 到 7000 英尺。 操作 5 结束 [1800 到 7000 英尺] ...

ReAct的核心在于通过交错的推理和行动步骤,使模型能够在执行任务时动态地进行推理和行动,从而提高任务解决的准确性和效率。这种方法特别适用于需要与外部环境交互并从中获取信息以支持决策的任务。

LangGraph快速入门

构建ReactAgent

为了避免缺少环境,我们可以提前安装langchain套件:

pip install langchain langchain-core

安装 LangGraph:

pip install -U langgraph

然后,使用预构建的组件(这里指的react_agent模板)创建智能体:

from langgraph.prebuilt import create_react_agent
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv

load_dotenv(verbose=True)

model=ChatDeepSeek(
    model="deepseek-chat",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
)

# response=model.invoke("你好,请帮我生成一首儿歌")
# print(response)
defget_weather(city: str) -> str:
"""Get weather for a given city."""
returnf" {city}的天气是晴朗的!"

agent = create_react_agent(
    model=model,
    tools=[get_weather],
    prompt="你是一个有用的助手"
)

# Run the agent
response=agent.invoke(
    {"messages": [{"role": "user", "content": "请问北京的天气怎么样"}]}
)

print(response)

我们可以答应下输出,这里为了方便查看,我整理成json了:

{
"messages": [
    {
"type": "human",
"content": "请问北京的天气怎么样",
"additional_kwargs": {},
"response_metadata": {},
"id": "72b50e8e-e20f-4d2e-8add-4993747de54e"
    },
    {
"type": "ai",
"content": "我来帮您查询北京的天气情况。",
"additional_kwargs": {
"tool_calls": [
          {
"id": "call_0_4e1e8263-3930-4052-b272-26d618f4301d",
"function": {
"arguments": "{\"city\": \"\\u5317\\u4eac\"}",
"name": "get_weather"
            },
"type": "function",
"index": 0
          }
        ],
"refusal": null
      },
"response_metadata": {
"token_usage": {
"completion_tokens": 28,
"prompt_tokens": 155,
"total_tokens": 183,
"completion_tokens_details": null,
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 0
          },
"prompt_cache_hit_tokens": 0,
"prompt_cache_miss_tokens": 155
        },
"model_name": "deepseek-chat",
"system_fingerprint": "fp_feb633d1f5_prod0820_fp8_kvcache",
"id": "41400771-a017-484c-970c-d697720af00b",
"service_tier": null,
"finish_reason": "tool_calls",
"logprobs": null
      },
"id": "run--09d15b9b-e85f-4ec2-968a-ca1051321606-0",
"tool_calls": [
        {
"name": "get_weather",
"args": {
"city": "北京"
          },
"id": "call_0_4e1e8263-3930-4052-b272-26d618f4301d",
"type": "tool_call"
        }
      ],
"usage_metadata": {
"input_tokens": 155,
"output_tokens": 28,
"total_tokens": 183,
"input_token_details": {
"cache_read": 0
        },
"output_token_details": {}
      }
    },
    {
"type": "tool",
"content": "北京的天气是晴朗的!",
"name": "get_weather",
"id": "f47a51d0-9b26-4eb4-8d3b-f1e4f02520bb",
"tool_call_id": "call_0_4e1e8263-3930-4052-b272-26d618f4301d"
    },
    {
"type": "ai",
"content": "根据查询结果,北京目前的天气是晴朗的!天气状况很好,适合外出活动。如果您需要更详细的天气信息(如温度、湿度、风力等),请告诉我,我可以为您提供更全面的天气情况。",
"additional_kwargs": {
"refusal": null
      },
"response_metadata": {
"token_usage": {
"completion_tokens": 45,
"prompt_tokens": 187,
"total_tokens": 232,
"completion_tokens_details": null,
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 128
          },
"prompt_cache_hit_tokens": 128,
"prompt_cache_miss_tokens": 59
        },
"model_name": "deepseek-chat",
"system_fingerprint": "fp_feb633d1f5_prod0820_fp8_kvcache",
"id": "63d43631-9171-4fb0-98c0-6470313d7798",
"service_tier": null,
"finish_reason": "stop",
"logprobs": null
      },
"id": "run--47611254-733a-4d55-b002-96a17b131a02-0",
"usage_metadata": {
"input_tokens": 187,
"output_tokens": 45,
"total_tokens": 232,
"input_token_details": {
"cache_read": 128
        },
"output_token_details": {}
      }
    }
  ]
}

这是一个多轮对话的完整记录,描述了用户查询北京天气后,AI调用工具并返回结果的整个过程。对话包含4条消息:

  • 用户提问 (HumanMessage): 询问"北京的天气怎么样"
  • AI响应 (AIMessage): 回复将帮忙查询,并调用天气查询工具 get_weather,参数为 {“city”: “北京”}
  • 工具返回 (ToolMessage): 工具执行结果返回"北京的天气是晴朗的!"
  • AI最终回复 (AIMessage): 整合工具结果,告诉用户北京天气晴朗,适合外出,并询问是否需要更多详细信息

记忆持久化

为了允许与智能体进行多轮对话,我们需要在创建智能体时提供检查点来启用持久性thread_id。在运行时,LangGraph需要提供一个配置,其中包含对话(会话)的唯一标识符,下面是一个例子:

from langgraph.prebuilt import create_react_agent
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
from langgraph.checkpoint.memory import InMemorySaver
load_dotenv()
model=ChatDeepSeek(
    model="deepseek-chat",
    temperature=0,
    max_retries=2,
)
# 定义一个简单的工具函数
defget_weather(city: str) -> str:
"""获取天气信息"""
    weather_data = {
"北京": "晴天,25°C",
"上海": "多云,28°C",
"深圳": "小雨,26°C"
    }
return weather_data.get(city, f"{city}天气暂无数据")

# 创建内存检查点
checkpointer = InMemorySaver()

# 创建带记忆的代理
agent = create_react_agent(
    model=model,
    tools=[get_weather],
    checkpointer=checkpointer
)

# 配置会话ID
config = {"configurable": {"thread_id": "chat-001"}}

# 第一轮对话
print("=== 第一轮对话 ===")
response1 = agent.invoke(
    {"messages": [{"role": "user", "content": "你好,我叫张三,请查询北京天气"}]},
    config
)
print("用户: 你好,我叫张三,请查询北京天气")
print("助手:", response1['messages'][-1].content)

# 第二轮对话 - 测试记忆功能
print("\n=== 第二轮对话 ===")
response2 = agent.invoke(
    {"messages": [{"role": "user", "content": "我叫什么名字?"}]},
    config
)
print("用户: 我叫什么名字?")
print("助手:", response2['messages'][-1].content)

# 第三轮对话 - 继续使用记忆
print("\n=== 第三轮对话 ===")
response3 = agent.invoke(
    {"messages": [{"role": "user", "content": "上海天气怎么样?"}]},
    config
)
print("用户: 上海天气怎么样?")
print("助手:", response3['messages'][-1].content)

下面是输出:

=== 第一轮对话 === 用户: 你好,我叫张三,请查询北京天气 助手: 根据查询结果,北京目前的天气情况是: - 天气状况:晴天 - 温度:25°C  今天北京的天气很不错呢,是个晴朗的好天气,温度也很舒适!  === 第二轮对话 === 用户: 我叫什么名字? 助手: 你刚才告诉我你叫张三!很高兴认识你,张三!  === 第三轮对话 === 用户: 上海天气怎么样? 助手: 根据查询结果,上海目前的天气情况是: - 天气状况:多云 - 温度:28°C  上海今天是多云天气,温度比北京稍高一些,28°C,也是比较舒适的天气呢!

结构化输出

要生成符合特定模式的结构化响应,我们可以使用response_format参数。该模式可以使用Pydantic模型或定义TypedDict。结果可通过structured_response字段访问。

我们设置好调用大模型:

from langgraph.prebuilt import create_react_agent
from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
from pydantic import BaseModel
from typing import List, Optional
load_dotenv()
model=ChatDeepSeek(
    model="deepseek-chat",
    temperature=0,
    max_retries=2,
)

下面是一个例子:


# 定义工具函数
defget_weather(city: str) -> str:
"""获取城市天气信息"""
    weather_data = {
"北京": "晴天,气温25°C,空气质量良好",
"上海": "多云转阴,气温28°C,湿度80%",
"深圳": "小雨,气温26°C,风力3级",
"广州": "阴天,气温30°C,空气质量中等"
    }
return weather_data.get(city, f"{city}暂无天气数据")

defsearch_restaurant(city: str, cuisine: str = "") -> str:
"""搜索餐厅信息"""
    restaurants = {
"北京": "老北京炸酱面馆、全聚德烤鸭店、海底捞火锅",
"上海": "小笼包店、本帮菜馆、外滩西餐厅",
"深圳": "潮汕牛肉火锅、茶餐厅、海鲜大排档"
    }
return restaurants.get(city, f"{city}暂无餐厅推荐")

# 示例1: 天气查询结构化响应
classWeatherResponse(BaseModel):
"""天气查询响应格式"""
    city: str                    # 城市名称
    conditions: str              # 天气状况
    temperature: Optional[str]   # 温度信息
    additional_info: Optional[str]  # 附加信息

# 创建天气查询代理
weather_agent = create_react_agent(
    model=model,
    tools=[get_weather],
    response_format=WeatherResponse
)

print("=== 示例1: 天气查询结构化输出 ===")
weather_response = weather_agent.invoke(
    {"messages": [{"role": "user", "content": "查询北京的天气情况"}]}
)

然后我们可以通过字典属性来获取对应的输出值:

print("用户: 查询北京的天气情况")
print("结构化响应:")
print(f"  城市: {weather_response['structured_response'].city}")
print(f"  天气状况: {weather_response['structured_response'].conditions}")
print(f"  温度: {weather_response['structured_response'].temperature}")
print(f"  附加信息: {weather_response['structured_response'].additional_info}")

输出如下:

=== 示例1: 天气查询结构化输出 ===
用户: 查询北京的天气情况
结构化响应:
  城市: 北京
  天气状况: 晴天
  温度: 25°C
  附加信息: 空气质量良好

我们定义一个餐厅推荐结构化输出:

# 示例2: 餐厅推荐结构化响应
classRestaurantRecommendation(BaseModel):
"""餐厅推荐响应格式"""
    city: str                           # 城市
    restaurants: List[str]              # 餐厅列表
    cuisine_type: Optional[str]         # 菜系类型
    recommendation_reason: str          # 推荐理由

# 创建餐厅推荐代理
restaurant_agent = create_react_agent(
    model=model,
    tools=[search_restaurant],
    response_format=RestaurantRecommendation
)

print("\n=== 示例2: 餐厅推荐结构化输出 ===")
restaurant_response = restaurant_agent.invoke(
    {"messages": [{"role": "user", "content": "推荐上海的好餐厅"}]}
)

print("用户: 推荐上海的好餐厅")
print("结构化响应:")
print(f"  城市: {restaurant_response['structured_response'].city}")
print(f"  餐厅列表: {restaurant_response['structured_response'].restaurants}")
print(f"  菜系类型: {restaurant_response['structured_response'].cuisine_type}")
print(f"  推荐理由: {restaurant_response['structured_response'].recommendation_reason}")

输出如下:

=== 示例2: 餐厅推荐结构化输出 ===
用户: 推荐上海的好餐厅
结构化响应:
  城市: 上海
  餐厅列表: ['小笼包店', '本帮菜馆', '外滩西餐厅']
  菜系类型: None
  推荐理由: 上海作为国际化大都市,既有传统本帮菜和小笼包等特色美食,也有高档西餐厅,能够满足不同口味需求

最后我们可以将这两个例子整合成一个旅行的综合查询结构化输出样例:

# 示例3: 综合查询结构化响应
classTravelInfo(BaseModel):
"""旅行信息响应格式"""
    destination: str                    # 目的地
    weather_info: str                   # 天气信息
    restaurant_suggestions: List[str]   # 餐厅建议
    travel_tips: List[str]              # 旅行建议
    overall_rating: str                 # 总体评价

# 创建旅行助手代理
travel_agent = create_react_agent(
    model=model,
    tools=[get_weather, search_restaurant],
    response_format=TravelInfo
)

print("\n=== 示例3: 旅行信息结构化输出 ===")
travel_response = travel_agent.invoke(
    {"messages": [{"role": "user", "content": "我想去深圳旅游,给我一些建议"}]}
)

print("用户: 我想去深圳旅游,给我一些建议")
print("结构化响应:")
print(f"  目的地: {travel_response['structured_response'].destination}")
print(f"  天气信息: {travel_response['structured_response'].weather_info}")
print(f"  餐厅建议: {travel_response['structured_response'].restaurant_suggestions}")
print(f"  旅行建议: {travel_response['structured_response'].travel_tips}")
print(f"  总体评价: {travel_response['structured_response'].overall_rating}")

我们可以看到输出如下:

=== 示例3: 旅行信息结构化输出 ===
用户: 我想去深圳旅游,给我一些建议
结构化响应:
  目的地: 深圳
  天气信息: 小雨,气温26°C,风力3级
  餐厅建议: ['潮汕牛肉火锅', '茶餐厅', '海鲜大排档']
  旅行建议: ['携带雨具出行,准备轻便夏装和薄外套', '使用深圳地铁系统出行,下载"深圳通"APP', '参观世界之窗、欢乐谷、深圳湾公园等景点', '考虑去香港一日游(需提前办理港澳通行证)']
  总体评价: 现代化大都市,购物和美食天堂,交通便利,适合城市旅游和商务出行

如何学习大模型 AI ?

我国在AI大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着Al技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国Al产业的创新步伐。加强人才培养,优化教育体系,国际合作并进,是破解困局、推动AI发展的关键。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

2025最新大模型学习路线

明确的学习路线至关重要。它能指引新人起点、规划学习顺序、明确核心知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

对于从来没有接触过AI大模型的同学,我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线。

在这里插入图片描述

针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

大模型经典PDF书籍

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路!

在这里插入图片描述

配套大模型项目实战

所有视频教程所涉及的实战项目和项目源码等
在这里插入图片描述

博主介绍+AI项目案例集锦

MoPaaS专注于Al技术能力建设与应用场景开发,与智学优课联合孵化,培养适合未来发展需求的技术性人才和应用型领袖。

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

为什么要学习大模型?

2025人工智能大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

在这里插入图片描述

适合人群

  • 在校学生:包括专科、本科、硕士和博士研究生。学生应具备扎实的编程基础和一定的数学基础,有志于深入AGI大模型行业,希望开展相关的研究和开发工作。
  • IT行业从业人员:包括在职或失业者,涵盖开发、测试、运维、产品经理等职务。拥有一定的IT从业经验,至少1年以上的编程工作经验,对大模型技术感兴趣或有业务需求,希望通过课程提升自身在IT领域的竞争力。
  • IT管理及技术研究领域人员:包括技术经理、技术负责人、CTO、架构师、研究员等角色。这些人员需要跟随技术发展趋势,主导技术创新,推动大模型技术在企业业务中的应用与改造。
  • 传统AI从业人员:包括算法工程师、机器视觉工程师、深度学习工程师等。这些AI技术人才原先从事机器视觉、自然语言处理、推荐系统等领域工作,现需要快速补充大模型技术能力,获得大模型训练微调的实操技能,以适应新的技术发展趋势。
    在这里插入图片描述

课程精彩瞬间

大模型核心原理与Prompt:掌握大语言模型的核心知识,了解行业应用与趋势;熟练Python编程,提升提示工程技能,为Al应用开发打下坚实基础。

在这里插入图片描述

RAG应用开发工程:掌握RAG应用开发全流程,理解前沿技术,提升商业化分析与优化能力,通过实战项目加深理解与应用。 在这里插入图片描述

Agent应用架构进阶实践:掌握大模型Agent技术的核心原理与实践应用,能够独立完成Agent系统的设计与开发,提升多智能体协同与复杂任务处理的能力,为AI产品的创新与优化提供有力支持。
在这里插入图片描述

模型微调与私有化大模型:掌握大模型微调与私有化部署技能,提升模型优化与部署能力,为大模型项目落地打下坚实基础。 在这里插入图片描述

顶尖师资,深耕AI大模型前沿技术

实战专家亲授,让你少走弯路
在这里插入图片描述

一对一学习规划,职业生涯指导

  • 真实商业项目实训
  • 大厂绿色直通车

人才库优秀学员参与真实商业项目实训

以商业交付标准作为学习标准,具备真实大模型项目实践操作经验可写入简历,支持项目背调

在这里插入图片描述
大厂绿色直通车,冲击行业高薪岗位
在这里插入图片描述

文中涉及到的完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

LangGraph 快速入门 要把大象装冰箱,总共分几步?LangGraph告诉你! 阅读详情

相关推荐

16 大模型学习——LangGraph1

LangGraph 是一个基于LangChain构建的扩展。LangGraph 是一个用于构建具有状态和多参与者应用程序的 LLM 库,它允许创建具有循环的图,这在大多数智能体架构中是必需的。LangGraph提供了对应用程序流程和状态的细粒度控制,这对于创建可靠的智能体至关重要,并且LangGraph 还内置了包括持久化对话,支持高级的人机交互和记忆功能。

weixin_54388827的博客 3395

工作流框架-LangGraph

LangGraph 是由 LangChain 团队开发的一个开源框架,旨在帮助开发者构建基于大型语言模型(LLM)的复杂、有状态、多主体的应用。它通过将工作流表示为图结构(graph),提供了更高的灵活性和控制能力,特别适合需要循环逻辑、状态管理以及多主体协作的场景,比如智能代理(agent)和多代理工作流。

m0_59164304的博客 1万+

AI Agent开发实战:12个项目打通工具调用、RAG与LangGraph

AI Agent作为人工智能领域的关键技术,通过大语言模型(LLM)理解任务并自主决策。其核心原理是结合工具调用、状态管理和知识检索,将通用AI能力转化为具体业务解决方案。技术价值在于解决企业应用中的“最后一公里”问题,例如通过RAG(检索增强生成)提升领域知识问答准确率,或利用LangGraph实现复杂工作流自动化。应用场景覆盖智能客服、旅行规划、知识库问答等高频需求。本文基于工具调用稳定性和多步骤任务分解等热词,通过渐进式项目设计,帮助开发者从单点验证过渡到生产级AI Agent系统搭建。

clijovtbq401783153的博客 368

LangGraph简单使用

LangGraph的简单介绍及使用

分享各种测试中的用到的内容,一起学习 8937

LangGraph构建可调试AI Agent:图编排、状态管理与生产落地

AI Agent并非简单调用大模型,而是具备目标导向、状态记忆与多步推理能力的自主服务单元。其核心挑战在于流程编排的可验证性、状态一致性与故障恢复能力。LangGraph以有向图(Directed Graph)为执行拓扑,通过显式节点定义、条件边路由与强类型State(基于Pydantic)实现工程级可控性,显著区别于线性链式框架(如RunnableSequence)或对话模拟框架(如AutoGen)。它天然支持checkpoint持久化、人工中断介入、Mermaid可视化调试及嵌套子图,是构建真实业务闭环

weixin_30654583的博客 639

基于LangGraph的Open Deep Research架构全解析:从多Agent协作到企业级落地

本文探讨了基于LangGraph框架构建开源自主研究型智能体的方法。该系统采用多Agent协作范式,通过状态机模型实现研究流程精准控制,包含查询生成、并行搜索、反思优化和报告综合五个阶段。相比闭源方案,该架构支持动态模型路由、安全沙箱和成本优化策略,在医疗和金融等场景中实现自动化研究任务。实验显示其性能接近商业系统而成本显著降低。未来将向多模态研究、联邦协作和硬件加速方向演进,推动开源生态在AI研究领域的创新应用。

fudaihb的博客 1349

LangGraph 是什么?为什么它越来越像 AI Agent 时代的“操作系统”

LangGraph 的本质,是用图组织 Agent,用状态承载上下文,用持久化和中断机制,让 AI 从“会回答”走向“会持续完成任务”。

羑悻的博客. 3万+

LangGraph实战:构建可调试、可监控、可演进的AI Agent

AI Agent本质上是将人类决策闭环(意图→规划→执行→反思→修正)工程化落地的系统,其核心挑战在于状态管理、流程可控与生产稳定性。LangGraph通过图结构(DAG)和显式State机制,解决了传统提示工程和线性链式调用中的状态丢失、单点故障与不可调试等痛点,提供可中断、可分支、可监控的决策流编排能力。它不依赖复杂多Agent博弈,而是聚焦单Agent的强流程控制,兼顾低学习成本与高部署效率,特别适合金融合规、智能客服、内容审核等需确定性响应与快速迭代的业务场景。

weixin_30493401的博客 634

1小时速成LangGraph:手把手教你构建智能AI Agent,秒变大牛!

本文介绍了LangGraph框架及其在构建智能AI Agent中的应用。文章通过乐高积木类比解释核心概念:节点(执行单元)、边(流程控制)、状态(共享数据)和图(完整工作流)。相比线性处理的LangChain,LangGraph支持循环、分支等复杂流程,适合多轮对话场景。教程包含从环境配置到实战案例的全流程,演示了如何构建一个能调用数学工具的AI Agent,涵盖节点定义、条件路由、工具绑定等关键技术。通过5分钟快速入门示例和完整计算器Agent案例,读者可掌握使用LangGraph创建具备决策能力的AI系

WANGJUNAIJIAO的博客 535

LangGraph生产级Agent开发:状态管理、工具调用与多Agent协同工程实践

Agent开发本质上是构建可靠人机协作系统,其核心不在封装LLM,而在工程化地管理状态流、工具交互与任务边界。LangGraph通过显式State Schema解决传统Chain的隐式状态混乱问题;工具调用需前置参数校验(Pydantic V2)、执行熔断(tenacity)与输出归一化,而非简单API转发;真实场景要求工作记忆动态压缩、长期记忆分层索引、HITL反馈闭环驱动模型进化。这些能力共同支撑客服分诊、财务对账、合同审查等高可用Agent落地,直击‘能跑Demo’与‘扛住5000QPS’之间的关键鸿

weixin_33704591的博客 400

LangGraph实战:构建可调试、可监控的AI Agent工作流

AI Agent并非简单调用大模型,而是具备状态管理、条件路由、错误恢复与长期记忆的智能工作流系统。其核心在于将任务建模为有向无环图(DAG),通过显式State定义实现数据可控流转,借助条件边规则支持LLM驱动的动态决策,并依托checkpointer与LangSmith达成全链路可观测性。这种Graph思维替代传统Chain串行模式,显著提升电商客服、金融风控等复杂场景下的鲁棒性与可维护性。本文聚焦LangGraph在真实生产环境中的落地实践,涵盖State设计、节点纯函数编写、运行时热修复及多Agen

FLY_THINK2012的博客 430

LangGraph多智能体实战:从零构建专业AI研究助手,附完整代码

文章介绍了使用LangGraph多智能体框架构建AI研究助手的方法。多智能体系统将复杂任务分配给专门化的AI智能体,每个智能体在特定领域发挥最佳性能,通过精确协调实现整体目标。研究数据表明,多智能体AI系统性能比单模型方法提升40-60%,且具备更好的可维护性和可扩展性。文章通过构建AI研究助手的完整案例,从理论基础到具体实现,帮助读者掌握下一代AI系统的构建方法。

Android_XG的博客 658

LangGraph.js多Agent工作流实战:构建企业级AI协作系统

多Agent系统是人工智能领域的重要架构模式,通过专业化分工和协作机制解决复杂业务场景。其核心原理基于状态机理论和图结构,将任务分解为多个专业化Agent节点,通过明确定义的状态转移规则实现智能决策流程。这种架构的技术价值在于提升系统可靠性、支持模块化开发和便于长期维护。在企业级应用中,多Agent工作流特别适合内容审核、客户服务和数据分析等需要多轮交互的场景。LangGraph.js作为LangChain生态的关键组件,为构建生产级AI Agent系统提供了状态机设计和复杂任务处理的完整解决方案,帮助企业

ciya3282的博客 482

从零手写AI Agent:LangGraph状态图与工具调用实战

AI Agent本质上是具备自主决策能力的程序化推理系统,其核心在于状态管理、条件路由与安全工具集成。LangGraph通过显式定义节点、边和状态契约(如TypedDict),将非线性推理过程转化为可调试、可测试、可嵌套的有向图结构。相比黑盒AgentExecutor,它提供完全可控的状态读写、确定性路由逻辑和子图复用能力,显著提升生产环境稳定性与可观测性。本文聚焦真实工程场景——基于Wikipedia API实现结构化知识检索、通过沙箱化Python REPL执行安全计算,并结合FastAPI暴露可审计的

weixin_30394981的博客 411

LangGraph + Redis 实现 AI Agent 持久化状态管理

AI Agent 的核心挑战在于维持跨轮次、高并发、可恢复的上下文状态——这本质上是‘有状态工作流’的工程问题。其原理依赖于将运行时状态从易失性内存(如 Python 进程)解耦至外部存储,通过原子操作、TTL 自动过期与结构化数据模型保障一致性与时效性。技术价值体现在可靠性提升(防失忆/防串扰)、水平扩展能力增强(支持微服务与多实例)及调试可观测性改善。典型应用场景包括客服对话路由、多步骤科研分析、金融支付协同等需长期记忆的生产级 Agent 系统。本文聚焦 LangGraph 的 StateGraph

weixin_34221112的博客 488

【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere

银河麒麟作为国家核高基专项的重要成果,国防版凭借其卓越的安全性和可靠性,已成为军工领域的首选操作系统。之前我们在适配麒麟V4国防版的过程中已发现诸多安全性要求,而麒麟V10国防版在安全防护等级上又达到了更高的级别。本文将主要演示离线部署,因为军工项目基本不会出现联网场景。即使在线,也可以按离线方式部署,且离线部署由于有私有仓库,不会存在镜像获取不到和丢失情况。

jiaworld的博客 730

LangGraph终极指南:如何构建持久化AI智能体

**LangGraph**是一个强大的低层编排框架,专门用于构建、管理和部署长时间运行、有状态的AI智能体。无论你是AI应用开发新手还是经验丰富的工程师,LangGraph都能帮助你创建具有持久执行能力、人类干预支持和全面记忆系统的智能体应用。 ## 为什么选择LangGraph构建AI智能体? 在当今AI应用开发领域,构建真正智能的代理系统面临诸多挑战:如何处理长时间运行的任务?如何保持对话

gitblog_00265的博客 913

WinCC动态选择报警记录案例

本例中需要确认查询的时间段以及查询的关键字,然后通过一个按钮来执行报警数据查询脚本,并把查询出的结果加载到当前报警控件中。<本例中数据查询脚本的思路是根据选项组所选定的参数加载相应的归档变量到在线趋势控件,根据设定的查询时间范围设定控件时间轴的开始时间及结束时间。本文以 WinCC V8.0为例,介绍如何动态的查询WinCC报警记录,包括关键字查询/时间&关键字查询,如图1所示。<在WinCC变量管理中创建不同的变量组,并在变量组下创建相应的变量,如图2 所示(下图并非实际变量值)。

weixin_45072604的博客 2709

4步应用dsh-purge:区分宿主拦截与模型拒绝

改了默认提示词,回答却纹丝不动——先怀疑请求根本没走到模型,而是在宿主层就被处理掉了。dsh-purge 是装在本机官方 DeepSeek Harness(DSH)上的红队评测插件:它把「宿主策略中途拦截」和「模型自身拒绝」两层拆开,并让不同模型换用不同破甲提示词。装完并应用后,15 分钟内即可在本机反复验证同一个问题,全程可逆。 ## ① 动手前:核对 dsh-purge 版本兼容 | 核对

gitblog_00605的博客 625

ArcGIS Pro 3.0 加载天地图WMTS服务,解决偏移问题的保姆级教程(附最新Key申请流程)

本文详细介绍了在ArcGIS Pro 3.0中精准加载天地图WMTS服务的全流程,包括最新Key申请流程、解决地图偏移问题的关键配置步骤以及常见问题排查方法。通过设置`esri`参数和统一坐标参考,确保地理数据与天地图底图精确匹配,提升GIS空间分析的准确性。

weixin_28713947的博客 304

FreeRTOS OTA实战:从Bootloader设计到安全升级的完整流程(附MQTT示例代码)

本文详细介绍了在FreeRTOS系统中实现安全OTA固件升级的完整流程。内容涵盖从Bootloader设计、存储分区规划到与MQTT协议集成的OTA Agent任务开发,并重点解析了固件签名验证、防回滚等关键安全机制,为嵌入式物联网设备提供了一套高可靠性的远程升级解决方案。

weixin_29248653的博客 161

LangGraph状态图实战:构建可调试、可容错的AI Agent

AI Agent已从简单提示词演进为具备任务分解、状态管理与错误恢复能力的工程系统。其核心在于将大模型行为建模为显式状态机,通过LangGraph的StateGraph实现流程可视化与分支可控;结合LangChain的Runnable范式保障模块可测试性与工具调用可靠性。这种工程化Prompt Engineering不再依赖‘多试几次’,而是通过系统提示、工具描述与ReAct推理三类提示协同,驱动Agent完成端到端业务闭环。典型应用场景包括智能会议纪要生成、合同审核、客服归因等需多步决策与外部系统集成的任

343

scGPT-spatial 复现

文章摘要:Spatial scGPT项目复现流程 本文详细介绍了复现Spatial scGPT项目的完整流程,包含数据预处理、模型训练等关键步骤。首先需要使用scanpy加载H5AD文件并进行归一化、对数变换等预处理。然后构建基因词汇表(vocab),提取基因表达值和空间坐标信息。接着使用DataCollator进行数据分箱、掩码和填充处理。最后搭建TransformerModel进行训练。文章特别指出了需要自行补全的缺失部分,包括基因词汇表构建、空间坐标提取、数据集类定义和训练主循环脚本等。作者还提供了详

victory0431的博客 1683
上一篇: 开发者必藏!谷歌白皮书精华版:AI Agent落地三步法(知识库+工作流+Prompt工程)
下一篇: 2025必备神器!字节M3-Agent全球首发:从记忆原理到多模态实战,一篇吃透智能体未来
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2835原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值