手把手教你用 FastAPI + LangGraph搭建 AI 工作流

构建一个使用LangGraph的多语言多代理聊天应用——第一部分 这里另一个相关的设计选择是对一次“运行”或一次“迭代”消息循环的定义。在我们选择的定义中,我们认为每一次运行是由任何用户发送一条消息触发,并在所有与最初消息相关的消息到达接收用户时结束。所以,如果是一条不涉及Aya的信息,只是直接发送给其他用户的消息,当所有用户接收到初始翻译消息时,该消息被认为是传输完成。而如果这是一条涉及Aya的消息,则当初始消息和来自Aya的回复都达到所有用户时,该消息才被认为完成传输。基于这种传输完成定义,我们希望设计一个流程,在终止传输前等待Aya的回复生成并推送给用户。 阅读详情

Large Language Models (LLMs) 擅长推理,但现实世界的应用往往需要有状态、多步骤的工作流。这就是 LangGraph 的用武之地——它让你可以通过由 LLM 驱动的节点图来构建智能工作流。

但如果你想把这些工作流暴露为 APIs,让其他应用(或用户)可以调用呢?这时候 FastAPI 就派上用场了——一个轻量级、高性能的 Python Web 框架。

在这篇指南中,你将学习如何将 LangGraph 工作流封装在 FastAPI 中,变成一个生产就绪的 endpoint。

为什么选择 LangGraph + FastAPI?
  • • LangGraph:创建多步骤、有状态的 LLM 工作流(例如,多智能体推理、数据处理)。
  • • FastAPI:轻松将这些工作流暴露为 REST APIs,以便与 Web 应用、微服务或自动化流水线集成。
  • • 结合两者:构建可从任何地方访问的可扩展 AI 智能体。
1. 项目设置

创建一个新项目文件夹并安装依赖:

mkdir langgraph_fastapi_demo && cd langgraph_fastapi_demo
python -m venv .venv
source .venv/bin/activate  # 在 Windows 上:.venv\Scripts\activate
pip install fastapi uvicorn langgraph langchain-openai python-dotenv

创建一个 .env 文件来存储你的 API 密钥:

OPENAI_API_KEY=你的_openai_密钥_在此
2. 构建一个简单的 LangGraph 工作流

让我们构建一个简单的 LangGraph,它接收用户的问题并返回 AI 生成的答案。

# workflow.py
from langgraph.graph import StateGraph, START, END
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
import os
from dotenv import load_dotenv

load_dotenv()
llm = ChatOpenAI(model="gpt-4o")  # 可以切换到 gpt-4o-mini 以降低成本
# 定义状态
defanswer_question(state: dict) -> dict:
    user_input = state["user_input"]
    response = llm.invoke([HumanMessage(content=user_input)])
    return {"answer": response.content}
# 构建图
workflow = StateGraph(dict)
workflow.add_node("answer", answer_question)
workflow.add_edge(START, "answer")
workflow.add_edge("answer", END)
graph = workflow.compile()

这个图:

  • • 接收 user_input
  • • 将其发送到 GPT-4o
  • • 返回 AI 生成的响应
3. 让它生产就绪

在向全世界开放之前,让我们为真实用例加固它。

错误处理与重试

LLM APIs 可能会失败或超时。用 try/except 包装调用:

from tenacity import retry, wait_exponential, stop_after_attempt

@retry(wait=wait_exponential(multiplier=1, min=2, max=10), stop=stop_after_attempt(3))
def safe_invoke_llm(message):
    return llm.invoke([HumanMessage(content=message)])
def answer_question(state: dict) -> dict:
    user_input = state["user_input"]
    try:
        response = safe_invoke_llm(user_input)
        return {"answer": response.content}
    except Exception as e:
        return {"answer": f"错误:{str(e)}"}
输入验证

我们不想让别人发送巨大的数据负载。添加 Pydantic 约束:

from pydantic import BaseModel, constr

class RequestData(BaseModel):
    user_input: constr(min_length=1, max_length=500)  # 限制输入大小
日志记录

添加日志以提高可见性:

import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def answer_question(state: dict) -> dict:
    logger.info(f"收到输入:{state['user_input']}")
    response = safe_invoke_llm(state['user_input'])
    logger.info("已生成 LLM 响应")
    return {"answer": response.content}
4. 使用 FastAPI 暴露工作流

现在,让我们将这个工作流封装在 FastAPI 中。

# main.py
from fastapi import FastAPI
from workflow import graph, RequestData

app = FastAPI()

@app.post("/run")
async def run_workflow(data: RequestData):
    result = graph.invoke({"user_input": data.user_input})
    return {"result": result["answer"]}

运行服务器:

uvicorn main:app --reload
5. 测试 API

你可以使用 curl 测试:

curl -X POST "http://127.0.0.1:8000/run" \
     -H "Content-Type: application/json" \
     -d '{"user_input":"什么是 LangGraph?"}'

或者在浏览器中打开 http://127.0.0.1:8000/docs —— FastAPI 会自动为你生成 Swagger UI!

这个交互式 UI 让你直接在浏览器中测试你的 endpoint。

6. 扩展与部署

为生产环境做准备的几个步骤:

  • • 异步执行:FastAPI 是异步原生的。对于多个 LLM 调用,让函数变成异步的。

  • • 工作进程:使用多进程运行以实现并发:

    uvicorn main:app --workers 4
    
  • • Docker 化:

    FROM python:3.11-slim
    WORKDIR /app
    COPY . .
    RUN pip install -r requirements.txt
    CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
    
  • • 认证:使用 API 密钥或 JWT tokens 来保护 endpoints(第二部分即将推出)。

结论

通过几个简单的步骤,我们:

  • • 构建了一个 LangGraph 工作流
  • • 使用 FastAPI 将其暴露为 REST API
  • • 添加了生产就绪的功能(验证、重试、日志)
  • • 为可扩展的 AI 微服务奠定了基础

这个设置可以支持从聊天机器人到文档处理器再到 AI SaaS 产品的各种应用。

想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享!

👇👇扫码免费领取全部内容👇👇

​

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势

想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI:

1. 100+本大模型方向电子书

在这里插入图片描述

2. 26 份行业研究报告:覆盖多领域实践与趋势

报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:

  • 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
  • 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
  • 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
  • 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。

3. 600+套技术大会 PPT:听行业大咖讲实战

PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

在这里插入图片描述

  • 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
  • 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
  • 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
  • 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。

二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走

想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位

面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析:

2. 102 道 AI 大模型真题:直击大模型核心考点

针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题

专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:


三、路线必明: AI 大模型学习路线图,1 张图理清核心内容

刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

在这里插入图片描述

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。

img

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

img

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

img

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

img

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

img

L5阶段:专题集丨特训篇 【录播课】

img
四、资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇

​

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!

FastAPI+LangGraph构建生产级AI工作流 AI工作流本质上是状态管理、逻辑编排与服务交付的协同问题。传统Chain模式难以应对分支判断、循环重试和跨请求上下文等工程需求,而图模型(Directed Graph)通过显式State、条件边和节点化设计,实现了AI决策逻辑的可调试、可监控与可迭代。FastAPI则补足了HTTP网关、状态持久化、安全治理与多协议适配能力,使LangGraph真正落地为高可用AI服务。本文聚焦FastAPI与LangGraph协同架构,详解状态建模、图编排、流式响应及Redis会话管理等核心实践。 阅读详情

相关推荐

LangGraph+FastAPI AI工作流安全加固实战

AI工作流编排(如LangGraph)与API服务(如FastAPI)的集成,正从概念验证迈向企业级生产部署。其核心安全挑战在于:传统HTTP层认证无法覆盖长周期、异步、多节点的状态机执行过程。理解状态驱动架构下的身份随行原理,是构建可信AI系统的基础;技术价值体现在将权限控制粒度从‘请求级’下沉至‘节点级’,实现RBAC与审计日志的深度耦合;典型应用场景包括金融风控对话机器人、医疗智能问答、政务知识助手等需满足等保2.0或SOC2合规要求的系统。本文聚焦LangGraph状态Schema安全增强、Fast

weixin_30387799的博客 361

FastAPI、langchain搭建chatbot,langgraph实现历史记录

使用langgraph作为历史记录存储,使用FastAPI和langchain实现对话

forevercui的博客 3469

FastAPI + LangGraph:构建生产级AI工作流的完整实战指南

AI应用正从单点模型调用走向多步骤任务编排,如何高效构建稳定、可维护的工作流成为工程化落地的关键。FastAPI基于asyncio的异步机制能在高并发下轻松处理大模型、向量检索等IO密集型调用;LangGraph则以有向状态图的方式显式编排每个执行节点,让分支、循环与状态流转变得透明可控。两者结合实现了API层与流程层的分离:对外提供统一的HTTP接口,对内管理复杂的AI决策逻辑。这一组合适用于文档问答、多工具调用、Agent任务调度等场景,尤其适合需要动态路由与人工干预的生产级系统。本文从方案选型、环境搭

weixin_33417488的博客 258

一文搞懂AI大模型学习路线:核心知识点 + 实战路径全解析

一文搞懂AI大模型学习路线:核心知识点 + 实战路径全解析

Android_XG的博客 1626

基于workflow工作流的低代码平台,用于快速构建聊天机器人、RAG、Agent和Muti-Agent应用,采用 LangGraph、Langchain、FastAPI 和 NextJS 构建

基于workflow工作流的低代码平台,用于快速构建聊天机器人、RAG、Agent和Muti-Agent应用,采用 LangGraph、Langchain、FastAPI 和 NextJS 构建。新增MCP Node,增加了对MCP(Model Context Protocol)工具的支持,实现与MCP服务器的无缝集成!将MCP工具转换为LangChain工具,可用于LangGraph Agent;支持连接多个MCP服务器并动态加载其工具;支持stdio和SSE两种传输模式实现灵活通信;与现有LangGraph工作流无缝集成

基于FastAPI后端框架与CrewAI多智能体协作框架构建的AI智能体复杂工作流系统_支持多模型接入与异步任务调度_实现营销战略分析与内容创意生成全流程自动化_通过MySQL持久.zip

基于FastAPI后端框架与CrewAI多智能体协作框架构建的AI智能体复杂工作流系统_支持多模型接入与异步任务调度_实现营销战略分析与内容创意生成全流程自动化_通过MySQL持久.zip

【保姆级教程】手把手教你用 FastAPI + LangGraph搭建 AI 工作流,全程干货,小白也能轻松学会!!

Large Language Models (LLMs) 擅长推理,但现实世界的应用往往需要有状态、多步骤的工作流。这就是 LangGraph 的用武之地——它让你可以通过由 LLM 驱动的节点图来构建智能工作流。

Gaga246的博客 1378

BUUCTF逆向题Youngter-drive

其实线程一代码我自己也不大理解,看了正确的 flag 后,我自己推出来的是这样:在 couece 中取出字符,然后在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中找出一样的,取出该字符在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中的下标,如果取出的字符是大写则 在ASCII中找出【下标 - 38】值对应的字符替换couece中的字符,同理,小写就减 96。

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1091

手把手教你用 FastAPI + LangGraph搭建 AI 工作流,大模型入门到精通,收藏这篇就足够了!

在这篇指南中,你将学习如何将 LangGraph 工作流封装在 FastAPI 中,变成一个生产就绪的 endpoint。

DEVELOPERAA的博客 1271

Android Studio中把llama.cpp编译Android .so

本文介绍了一个在Android Studio中集成llama.cpp的最小Demo实现方案,通过JNI将llama.cpp编译为Android.so库,实现本地加载GGUF模型进行文本生成。文章详细说明了项目结构配置(SDK≥30,NDK≥28)、CMake编译设置、Kotlin-JNI-C++的完整调用链实现,以及模型文件部署方式。该Demo采用每次请求新建上下文的简化设计,包含加载模型、生成文本、资源释放等核心功能,并提供了错误排查建议。项目舍弃了上下文保持等复杂功能以确保稳定性,适合作为端侧大语言模型

Zhang Phil 518

Qt中常见的面试题总结

基于Qt开发的一些常用面试题

一名热爱编程的程序员 8493

【AI大模型实战】手把手教你用 FastAPI + LangGraph搭建 AI 工作流,全程干货,简单易懂!!

Large Language Models (LLMs) 擅长推理,但现实世界的应用往往需要有状态、多步骤的工作流。这就是 LangGraph 的用武之地——它让你可以通过由 LLM 驱动的节点图来构建智能工作流。

bugyinyin的博客 1289

【Flutter 问题系列第 16 篇】如何防止软键盘弹出后顶掉内容

Flutter 如何防止软键盘弹出后顶掉内容

“Allen Su”的博客 3317

FastAPI + LangGraph实战教程:手把手教你构建AI工作流

本文介绍了如何将LangGraph与FastAPI结合,构建可扩展的AI智能体工作流。主要内容包括:1)通过LangGraph创建多步骤、有状态的LLM工作流;2)使用FastAPI将工作流封装为REST API;3)添加生产级功能如错误处理、输入验证和日志记录;4)项目设置和部署方案,包括Docker化和异步执行优化。该方案支持从聊天机器人到AI SaaS产品的多种应用场景,并提供了完整的实现代码和测试方法。文章还预告了后续可能探讨的流式响应、认证安全等进阶主题。

WANGJUNAIJIAO的博客 1156

2026 最新安全 Skill 合集(CTF / 审计 / 渗透 / 红队)威胁建模一网打尽

2026年安全领域进入"Skill化"时代,各类安全能力被结构化封装为可复用的AI Skill。本文介绍了7个核心安全Skill项目:渗透测试全流程的AgentSkillsHub、CTF解题技能库ctfskills、多语言代码审计工具codeaudit、PHP专项审计系统、Java自动化审计流水线、威胁建模工具threatmodeling以及覆盖30+领域的Anthropic-Cybersecurity-Skills。这些项目将传统安全经验转化为标准化、可验证、可自动执行的模块化能力,支

Chengbei11的博客 1879

视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)

内核模块如何设置? 内核模块是可在运行时动态加载到内核或从内核卸载的代码块。以下是设置内核模块的步骤: 首先,编写内核模块代码。通常使用 C 语言编写,包含必要的头文件,如<linux/init.h>、<linux/module.h>等。在代码中,需要定义模块的初始化函数和清理函数。初始化函数在模块加载时被调用,用于进行模块的初始化工作,如注册设备、分配资源等。清理函数在模块卸载时被调用,用于释放资源、注销设备等。 例如: #include <li

大模型大数据攻城狮的专栏 2204

【有手就会】FastAPI + LangGraph搭建 AI 工作流

本文介绍了如何将LangGraph和FastAPI结合,构建生产就绪的AI工作流API。主要内容包括:1) 搭建LangGraph工作流,实现LLM驱动的多步骤任务处理;2) 使用FastAPI封装为REST API;3) 添加生产级功能如错误处理、输入验证和日志记录;4) 提供测试方法和部署建议(Docker化、异步处理等)。这种组合可快速构建各类AI应用接口,从聊天机器人到文档处理系统,实现可扩展的智能服务。

ytt0523_com的博客 979

044.树莓派4B部署YOLO:从系统烧录到模型运行

《树莓派4B部署YOLOv8实战笔记》摘要:本文详细记录了在ARM架构树莓派4B上部署YOLOv8的全流程。关键点包括:必须使用64位系统并手动编译OpenCV(禁用FFMPEG、开启NEON优化);模型需在x86转换为TFLite格式(分辨率不超过320×320);推理代码使用tflite_runtime替代TensorFlow以减少内存占用;针对USB摄像头卡顿、内存泄漏等典型问题给出了解决方案。

2603_95664987的博客 169

零基础入门: FastAPI+LangGraph,一步步搭建你的第一个 AI 工作流

文章介绍了如何将LangGraph工作流封装在FastAPI中创建生产就绪的AI服务。内容包括项目设置、构建工作流、添加错误处理与重试机制、输入验证和日志记录,以及使用FastAPI暴露为API。还介绍了测试方法、扩展策略如异步执行、多进程工作、Docker化和认证。这种架构可将任何LangGraph变成API,支持从聊天机器人到AI SaaS产品的各种应用。

2401_85373691的博客 1668

MSBlock赋能C2f模块,让目标检测在轻量化与精度间双向突破

在文件夹下新建,将上述MSBlock和C2f_MS类的代码写入其中。这一步是为了让YOLOv8的代码架构能识别我们的自定义模块。

LXY_LOVE36的博客 143

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

FastAPI+LangGraph构建可生产AI工作流的工程实践

AI工作流已从简单脚本演进为需高可靠性、强类型校验与状态持久化的生产级系统。其核心在于将HTTP协议层与业务执行层解耦:FastAPI提供自动OpenAPI文档、原生异步支持和依赖注入能力,保障接口契约性与跨团队协作效率;LangGraph则通过StateGraph实现基于TypedDict的状态驱动编排,支持条件分支、多实例状态同步与节点级可观测性。这种组合特别适用于需处理结构化中间数据(如订单ID、意图标签)、要求人工审核节点审计、以及多轮对话状态持久化的智能客服、RAG增强问答等场景。

weixin_30542079的博客 406

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

实战|FastAPI + LangGraph:打造高效 AI 工作流的实用技巧与最佳实践!

本文介绍了如何通过LangGraph构建智能工作流,并使用FastAPI封装为生产级API。主要内容包括:1)搭建LangGraph工作流处理LLM推理;2)使用FastAPI暴露为REST接口;3)增强生产就绪功能(错误重试、输入验证、日志记录);4)提供部署方案(异步处理、Docker化)。该方案支持将复杂AI工作流转化为可扩展的微服务,适用于聊天机器人、文档处理等场景。文末附赠AI大模型学习资源包,包含视频教程、技术文档和实战项目。

Trb701012的博客 1162

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

为什么你的AI工作流总崩?FastAPI+LangGraph的四个致命坑,90%人栽在第三步

Large Language Models (LLMs)** 擅长推理,但现实世界的应用往往需要有状态、多步骤的工作流。这就是 **LangGraph** 的用武之地——它让你可以通过由 LLM 驱动的节点图来构建智能工作流。

m0_59163425的博客 1097
上一篇: 【LLM大模型】大模型涌现能力及 Prompt Engineering提示词
下一篇: 入门大语言模型的开发者,推荐以下书籍和资源​,快速掌握大语言模型(附教程)
AI_小站
博客等级 码龄3年 6255粉丝 1152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值