使用 MCP、LangGraph 和 FastAPI 构建智能 Web AI 智能体

AI Agent开发实战:整合LangGraph、RAG与MCP构建企业级智能助手 在人工智能技术栈中,大语言模型(LLM)作为核心推理引擎,其能力边界常通过外部工具和知识库进行扩展。检索增强生成(RAG)技术通过将私有文档向量化并检索,为模型提供实时、准确的领域知识,有效缓解了幻觉问题。模型上下文协议(MCP)则标准化了LLM与外部工具、数据源的交互方式,实现了工具生态的即插即用。这些技术的价值在于,它们共同构成了构建复杂、可执行任务的智能体(AI Agent)的基础。通过工作流编排引擎(如LangGraph)将这些组件有机整合,可以设计出能够感知环境、自主决策并执行多步骤任务的企业级应 阅读详情
你的AI助手,不再只是一个聊天机器人

你是否曾遇到过这样的场景?

你是否曾感叹ChatGPT的强大,却又苦恼于它“说完就忘”、无法执行实际任务?比如,你想让AI帮你安排会议、查询数据并生成报告,它却只能给出文字建议,无法真正调用日历API或执行计算?

传统的LLM交互就像一次性的问答机器——你提问,它回答,对话结束。但现实世界的任务往往需要多步骤推理、工具调用和状态持久化。

今天,我们就来聊聊如何用Python搭建真正的智能Web AI Agent,它不仅能理解你的意图,还能调用工具、执行任务,就像一个真正的数字助手!

一、什么是AI Agent?为什么需要它?

想象一下:你让助理“帮我安排下周二的团队会议,并准备会议提纲”。一个优秀的助理会:

  1. 推理:理解这是多步骤任务
  2. 执行:查看日历、预订会议室、起草议程
  3. 反馈:告知你结果并询问是否需要调整

这就是AI Agent的核心能力!它不再是简单的“输入-输出”模型,而是具备:

  • 状态记忆:记住对话上下文和任务进度
  • 工具调用:能使用计算器、API、数据库等外部工具
  • 自主决策:根据情况决定下一步做什么
  • 多步骤执行:分解复杂任务并逐步完成

在本文中,我们将使用 FastAPI + LangGraph + MCP 三件套,构建一个完整的Web AI Agent系统。这个架构清晰、模块化、易于扩展,是当前构建生产级Agent的黄金组合。

二、项目架构全景图

我们先从整体上把握这个系统是如何工作的:

用户请求 → FastAPI(Web层) → LangGraph(Agent编排) → 工具执行 → LLM推理      ↑           ↑              ↑           ↑    HTTP接口    日志记录       状态管理    多LLM支持

这个分层架构确保了关注点分离,每层只做自己最擅长的事:

  1. FastAPI:处理HTTP请求/响应,提供RESTful API
  2. LangGraph:定义Agent的工作流程和决策逻辑
  3. MCP工具:提供外部能力(计算、时间查询等)
  4. LLM服务:负责核心推理能力

让我们深入每一层,看看代码如何实现。

三、FastAPI:Agent的Web入口

首先,我们需要一个Web接口让用户能与Agent交互。FastAPI以其高性能和易用性成为不二之选。

3.1 应用初始化与配置

打开main.py,看看如何设置一个现代的FastAPI应用:

# app/main.py""" FastAPI application entry point """import structlogfrom contextlib import asynccontextmanagerfrom fastapi import FastAPIfrom fastapi.middleware.cors import CORSMiddlewarefrom fastapi.responses import JSONResponsefrom app.api.v1.router import api_routerfrom app.core.config import settingsfrom app.core.logging import setup_loggingsetup_logging()  # 初始化结构化日志logger = structlog.get_logger(__name__)# 生命周期管理:启动和关闭时的钩子@asynccontextmanagerasyncdef lifespan(app: FastAPI):    logger.info("application_starting", environment=settings.ENVIRONMENT)    yield# 应用运行中    logger.info("application_shutting_down")# 创建FastAPI应用实例app = FastAPI(    title=settings.PROJECT_NAME,    description="AI Agent with FastAPI, LangGraph, and MCP",    version="0.1.0",    lifespan=lifespan,  # 绑定生命周期管理)# 配置CORS(跨域资源共享)app.add_middleware(    CORSMiddleware,    allow_origins=settings.ALLOWED_ORIGINS,  # 允许的前端地址    allow_credentials=True,    allow_methods=["*"],    allow_headers=["*"],)# 挂载API路由app.include_router(api_router, prefix="/api/v1")# 健康检查端点@app.get("/health")asyncdef health_check():    return JSONResponse(        content={            "status": "healthy",            "environment": settings.ENVIRONMENT,        }    )# 根端点@app.get("/")asyncdef root():    return {        "message": "AI Agent API",        "docs": "/docs",  # 自动生成的API文档        "version": "0.1.0",    }

关键点解析:

  • @asynccontextmanager:优雅管理应用生命周期,类似"开机自检"和"关机清理"
  • 结构化日志:使用structlog而非普通print,便于生产环境调试
  • 自动API文档:访问http://localhost:8000/docs即可查看交互式文档

3.2 配置管理:集中式设置

所有配置都通过 Pydantic Settings 集中管理,告别散乱的环境变量:

# app/core/config.py""" Application configuration """from typing import Listfrom pydantic_settings import BaseSettings, SettingsConfigDictclass Settings(BaseSettings):    model_config = SettingsConfigDict(        env_file=".env",  # 从.env文件读取配置        case_sensitive=True,        extra="ignore",  # 允许额外的环境变量而不报错    )        # 应用基础配置    PROJECT_NAME: str = "AI Agent API"    ENVIRONMENT: str = "development"    DEBUG: bool = True        # API配置    ALLOWED_ORIGINS: List[str] = ["http://localhost:3000", "http://localhost:8000"]        # LLM配置(支持多供应商)    LLM_PROVIDER: str = "openai"# 或 "anthropic"    OPENAI_API_KEY: str = ""    ANTHROPIC_API_KEY: str = ""    DEFAULT_LLM_MODEL: str = "gpt-4o"    DEFAULT_TEMPERATURE: float = 0.7        # 日志配置    LOG_LEVEL: str = "INFO"    LOG_FORMAT: str = "console"# 或 "json"        # Database (optional)    DATABASE_URL: str = "postgresql+asyncpg://postgres:postgres@localhost:5432/ai_agent"    # Observability (optional)    LANGSMITH_API_KEY: str = ""    LANGSMITH_PROJECT: str = "ai-agent-project"    ENABLE_TRACING: bool = Falsesettings = Settings()  # 全局配置实例

四、Agent核心:LangGraph编排引擎

这是整个系统的"大脑",负责控制Agent的思考流程。LangGraph让我们能够可视化地定义Agent的工作流。

4.1 Agent状态定义:记忆的核心

Agent需要记住对话历史,这是通过状态管理实现的:

# app/agents/state.py""" Agent state definition """from typing import Annotated, TypedDictfrom langchain_core.messages import BaseMessagefrom langgraph.graph.message import add_messages  # 关键:自动消息累加class AgentState(TypedDict):    # 使用Annotated标注特殊处理逻辑    messages: Annotated[list[BaseMessage], add_messages]

这是什么魔法?

  • Annotated:告诉LangGraph如何自动更新messages字段
  • add_messages:自动将新消息追加到历史中,无需手动操作
  • 这就像给Agent配备了一个自动记录的对话本

4.2 构建Agent工作流图

现在来看最核心的部分——定义Agent如何思考和工作:

# app/agents/graph.py""" LangGraph agent definition """import structlogfrom langchain_core.messages import HumanMessage, AIMessagefrom langgraph.graph import StateGraph, START, ENDfrom langgraph.prebuilt import ToolNodefrom app.agents.state import AgentStatefrom app.agents.tools import get_toolsfrom app.services.llm import get_llmlogger = structlog.get_logger(__name__)def create_agent_graph():    """创建Agent工作流图"""    # 1. 获取LLM和工具    llm = get_llm()    tools = get_tools()    llm_with_tools = llm.bind_tools(tools)  # 让LLM知道它能使用哪些工具        # 2. 创建状态图    workflow = StateGraph(AgentState)        # 3. 定义Agent节点(思考)    asyncdef call_model(state: AgentState) -> dict:        """LLM推理节点:分析当前状态并决定下一步"""        logger.info("calling_model")        # LLM基于当前对话历史进行推理        response = await llm_with_tools.ainvoke(state["messages"])        return {"messages": [response]}  # 返回的消息会自动添加到状态中        # 4. 定义工具节点(执行)    tool_node = ToolNode(tools)  # 预建的ToolNode自动处理工具调用        # 5. 添加节点到图中    workflow.add_node("agent", call_model)  # 思考节点    workflow.add_node("tools", tool_node)   # 执行节点        # 6. 设置起始边    workflow.add_edge(START, "agent")  # 从开始直接到agent思考        # 7. 定义条件边:Agent思考后该做什么?    def should_continue(state: AgentState) -> str:        """判断是否需要调用工具"""        last_message = state["messages"][-1]        # 如果LLM返回了工具调用请求,则执行工具        if hasattr(last_message, "tool_calls") and last_message.tool_calls:            return"tools"        return END  # 否则结束        # 8. 添加条件边    workflow.add_conditional_edges(        "agent",         should_continue,         ["tools", END]  # 可能的两条路径    )        # 9. 工具执行后回到Agent继续思考    workflow.add_edge("tools", "agent")        # 10. 编译图为可执行对象    return workflow.compile()# Agent单例模式,避免重复创建_agent = Nonedef get_agent():    """获取Agent实例(单例)"""    global _agent    if _agent isNone:        _agent = create_agent_graph()    return _agent

工作流可视化理解:

开始 → [Agent思考] → 需要工具? → 是 → [工具执行] → 返回思考                    ↓否                  ↑                   结束 ←--------------←

这就是经典的 ReAct模式(Reasoning-Acting):

  1. Reason:LLM分析当前情况,决定下一步
  2. Act:如果需要,调用工具执行
  3. Observe:获取工具结果,继续思考
  4. 重复直到任务完成

4.3 Agent调用入口

如何启动这个Agent工作流?

# app/agents/graph.py(续)asyncdef invoke_agent(query: str, session_id: str | None = None) -> dict:    """调用Agent处理查询"""    logger.info("invoking_agent", query=query)        # 获取Agent实例    agent = get_agent()        # 初始化状态:用户消息作为起点    initial_state = {"messages": [HumanMessage(content=query)]}        # 执行Agent工作流    result = await agent.ainvoke(initial_state)        # 提取最终回复    final_message = result["messages"][-1]    response = {        "response": final_message.content if isinstance(final_message, AIMessage) else str(final_message),        "message_count": len(result["messages"]),  # 总共的消息轮数        "session_id": session_id,  # 会话ID,支持多轮对话    }        return response

五、Agent的能力扩展:工具系统

Agent的强大之处在于能调用工具。我们使用MCP(Model Context Protocol) 风格的工具定义。

5.1 定义工具:让Agent"有手有脚"

# app/agents/tools.py""" Custom tools for the agent """import structlogfrom typing import Listfrom langchain_core.tools import tool  # 关键装饰器from datetime import datetimelogger = structlog.get_logger(__name__)@tooldef calculator(expression: str) -> str:    """Evaluate a mathematical expression"""    try:        # 安全地计算数学表达式        result = eval(expression, {"__builtins__": {}})        logger.info("calculator_used", expression=expression, result=result)        return str(result)    except Exception as e:        returnf"Error: {str(e)}"@tooldef get_current_time() -> str:    """Get the current time in ISO format"""    return datetime.now().isoformat()def get_tools() -> List:    """获取所有可用工具"""    return [calculator, get_current_time]

工具系统亮点:

  • @tool装饰器:自动生成工具描述,LLM能理解其功能
  • 类型提示:Python的类型提示被转换为工具schema
  • 文档字符串:就是工具的"说明书",LLM靠它理解工具用途

5.2 MCP服务器:专业化的工具服务

对于更复杂的工具,我们可以创建独立的MCP服务器:

# mcp_servers/math_server.py""" Example MCP server for math operations """from fastmcp import FastMCP# 创建MCP服务器实例mcp = FastMCP("Math Server")@mcp.tool()def add(a: int, b: int) -> int:    """Add two numbers"""    return a + b@mcp.tool()def multiply(a: int, b: int) -> int:    """Multiply two numbers"""    return a * bif __name__ == "__main__":    # 以标准输入输出方式运行(便于集成)    mcp.run(transport="stdio")

MCP的优势:

  • 标准化:统一的工具协议
  • 独立部署:工具服务与Agent解耦
  • 热插拔:动态添加/移除工具不影响Agent运行

六、多模型支持:不绑定特定LLM

一个好的Agent架构应该支持多种LLM供应商:

# app/services/llm.py""" LLM service - 多供应商支持 """import structlogfrom langchain_openai import ChatOpenAIfrom langchain_anthropic import ChatAnthropicfrom app.core.config import settingslogger = structlog.get_logger(__name__)def get_llm():    """获取配置的LLM实例"""    if settings.LLM_PROVIDER == "openai":        logger.info("initializing_openai", model=settings.DEFAULT_LLM_MODEL)        return ChatOpenAI(            api_key=settings.OPENAI_API_KEY,            model=settings.DEFAULT_LLM_MODEL,            temperature=settings.DEFAULT_TEMPERATURE,        )    elif settings.LLM_PROVIDER == "anthropic":        logger.info("initializing_anthropic", model=settings.DEFAULT_LLM_MODEL)        return ChatAnthropic(            api_key=settings.ANTHROPIC_API_KEY,            model=settings.DEFAULT_LLM_MODEL,            temperature=settings.DEFAULT_TEMPERATURE,        )    else:        raise ValueError(f"Unsupported LLM provider: {settings.LLM_PROVIDER}")

设计哲学:通过抽象层隔离具体实现,未来添加新的LLM只需修改这个文件。

七、API端点:连接用户与Agent

最后,我们需要提供HTTP接口供用户调用:

7.1 路由定义

# app/api/v1/router.py""" Main API router """from fastapi import APIRouterfrom app.api.v1 import agentapi_router = APIRouter()api_router.include_router(agent.router, prefix="/agent", tags=["Agent"])

7.2 Agent端点实现

# app/api/v1/agent.py""" Agent API endpoints """import structlogfrom fastapi import APIRouter, HTTPExceptionfrom pydantic import BaseModel, Fieldfrom app.agents.graph import invoke_agentlogger = structlog.get_logger(__name__)router = APIRouter()# 请求模型(Pydantic验证)class AgentRequest(BaseModel):    query: str = Field(..., min_length=1, description="用户查询")    session_id: str | None = Field(None, description="会话ID(用于多轮对话)")# 响应模型class AgentResponse(BaseModel):    response: str = Field(..., description="Agent回复")    message_count: int = Field(..., description="总消息轮数")    session_id: str | None = Field(None, description="会话ID")@router.post("/invoke", response_model=AgentResponse)asyncdef invoke_agent_endpoint(request: AgentRequest) -> AgentResponse:    """调用Agent处理查询"""    try:        logger.info("agent_invoked", query=request.query)        result = await invoke_agent(request.query, request.session_id)        return AgentResponse(**result)    except Exception as e:        logger.error("agent_error", error=str(e))        raise HTTPException(status_code=500, detail=str(e))@router.get("/status")asyncdef agent_status():    """获取Agent状态"""    from app.core.config import settings    from app.agents.tools import get_tools        tools = get_tools()    return {        "status": "operational",        "llm_provider": settings.LLM_PROVIDER,        "tool_count": len(tools),        "available_tools": [tool.name for tool in tools],    }

八、实战演示:看Agent如何工作

8.1 启动项目

uvicorn app.main:app --reload

8.2 测试Agent能力

场景1:简单计算

curl -X POST "http://localhost:8000/api/v1/agent/invoke" \  -H "Content-Type: application/json" \  -d '{"query": "计算一下 15 * (23 + 17) 等于多少?"}'

Agent的思考过程:

  1. 用户问数学问题 → 需要计算器工具
  2. LLM识别出需要调用calculator("15*(23+17)")
  3. 工具执行:15 * (23 + 17) = 600
  4. LLM整理答案返回

场景2:复合任务

curl -X POST "http://localhost:8000/api/v1/agent/invoke" \  -H "Content-Type: application/json" \  -d '{"query": "现在几点了?然后告诉我这个时间加上2小时30分钟是什么时间?"}'

Agent的思考过程:

  1. 获取当前时间 → 调用get_current_time()
  2. 需要计算未来时间 → 需要数学计算
  3. 可能需要转换时间格式进行计算
  4. 整合所有信息给出完整回答

8.3 运行测试

项目包含完整的测试套件:

# tests/test_agent.py"""Agent API tests."""import pytest@pytest.mark.asyncioasyncdef test_agent_invoke(client):    """测试Agent调用"""    response = await client.post(        "/api/v1/agent/invoke",        json={"query": "What is 2+2?"}    )    assert response.status_code == 200    data = response.json()    assert"response"in data    assert"message_count"in data@pytest.mark.asyncioasyncdef test_agent_status(client):    """测试Agent状态端点"""    response = await client.get("/api/v1/agent/status")    assert response.status_code == 200    data = response.json()    assert data["status"] == "operational"

运行测试:

pytest tests/  # 或 make test

九、生产级增强建议

这个Demo项目已经具备了核心架构,要用于生产环境还可以:

9.1 添加持久化存储

# 添加对话历史存储from langchain.memory import PostgresChatMessageHistoryasyncdef invoke_agent_with_memory(query: str, session_id: str):    ifnot session_id:        session_id = generate_session_id()        # 从数据库加载历史    memory = PostgresChatMessageHistory(        session_id=session_id,        connection_string=settings.DATABASE_URL    )        # 合并历史消息和当前查询    messages = memory.messages + [HumanMessage(content=query)]    # ... 后续处理

9.2 添加速率限制

# 使用FastAPI中间件from slowapi import Limiter, _rate_limit_exceeded_handlerfrom slowapi.util import get_remote_addresslimiter = Limiter(key_func=get_remote_address)app.state.limiter = limiterapp.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)@app.post("/invoke")@limiter.limit("10/minute")  # 每分钟10次async def invoke_agent_endpoint(request: AgentRequest):    # ...

9.3 添加监控和追踪

# LangSmith集成import osos.environ["LANGSMITH_API_KEY"] = settings.LANGSMITH_API_KEYos.environ["LANGSMITH_PROJECT"] = settings.LANGSMITH_PROJECTos.environ["LANGSMITH_TRACING"] = "true"

常见问题与调试技巧

Q1:代理陷入死循环怎么办?

# 在create_agent_graph中添加最大迭代限制def create_agent_graph(max_iterations: int = 10):    workflow = StateGraph(AgentState)        # ... 其他代码 ...        # 添加迭代计数器    workflow.add_node("check_iterations", check_iteration_count)        # 设置检查逻辑    def check_iteration_count(state: AgentState, iteration: int):        if iteration >= max_iterations:            return {"messages": [AIMessage(                content="已达到最大思考次数,请简化您的问题"            )]}        return state

Q2:如何记录代理的思考过程?

# 添加详细的日志记录import loggingfrom langchain_core.callbacks import BaseCallbackHandlerclass AgentCallbackHandler(BaseCallbackHandler):    """自定义回调处理器,记录每一步"""        def on_llm_start(self, serialized, prompts, **kwargs):        logging.info(f"LLM开始思考,输入: {prompts[0][:100]}...")        def on_tool_start(self, serialized, input_str, **kwargs):        logging.info(f"工具开始执行: {serialized['name']}, 输入: {input_str}")        def on_tool_end(self, output, **kwargs):        logging.info(f"工具执行完成,输出: {str(output)[:200]}...")# 在LLM初始化时添加llm = ChatOpenAI(    model="gpt-4",    temperature=0,    callbacks=[AgentCallbackHandler()])

Q3:如何提高工具调用的准确性?

# 1. 提供更详细的工具描述@tooldef calculator(expression: str) -> str:    """    计算数学表达式。支持加减乘除(+ - * /)、括号、常用函数。        示例:    - "2 + 3 * 4" 返回 "14"    - "(2 + 3) * 4" 返回 "20"    - "sqrt(16)" 返回 "4"        注意:表达式必须是纯数学表达式,不能包含文字。    """    pass# 2. 添加工具使用示例llm_with_tools = llm.bind_tools(    tools,    tool_choice="auto",  # 让LLM自己决定是否使用工具    tool_examples=[        {            "input": "计算25乘以4",            "tool_call": {"name": "calculator", "args": {"expression": "25 * 4"}}        }    ])

写在最后

通过这个项目,我们看到了现代AI代理架构的核心要素:

  1. 状态化管理:代理需要记住对话历史
  2. 工具调用:代理需要“手和脚”来执行任务
  3. 条件循环:代理需要能够自主决定下一步
  4. 模块化设计:各层职责清晰,易于扩展

这个demo的价值不仅在于代码,更在于它展示了一种架构范式。你可以:

  • 基于它快速搭建业务原型
  • 学习LangGraph的状态管理
  • 理解MCP协议的实际应用
  • 构建真正能“执行任务”的AI系统

技术的魅力在于,今天的demo可能就是你明天产品的基石。这个项目的架构设计非常清晰,每个模块都有明确的职责,这正是生产级AI应用所需要的。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

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

在这里插入图片描述

LangChain+LangGraph+MCP+Agent:企业级智能体开发实战路线 在智能体开发与AI Agent实战领域,LangChain、LangGraph、MCP与Agent构成了企业级应用的核心技术栈。LangChain提供模型调用、提示词管理与RAG等基础能力,LangGraph则通过有状态图编排实现条件路由、循环、子图与并行分支,解决复杂业务流程的可控性问题。MCP作为模型上下文协议,统一了外部工具与数据源的接入标准,让MCP Server能够一次封装、多处复用。Agent依托规划、工具调用、记忆与自我纠正能力,成为自动化运营、客服机器人等场景的执行体。本文从技术选型、Lan 阅读详情

相关推荐

LangChain与LangGraph实战:从RAG到智能体的完整开发路径

在构建AI应用时,理解核心框架的分工与协作至关重要。LangChain作为一个标准化组件库,通过提供预封装的模型接口、文档加载器和向量数据库连接器等“零件”,简化了RAG(检索增强生成)等流水线的搭建。其声明式的链式组装方式,让开发者能快速构建从文档处理到答案生成的完整流程,极大提升了开发效率。而LangGraph则专注于解决智能体(Agent)的复杂工作流问题,它通过图(Graph)和状态(State)模型,支持带循环、条件分支的动态决策流程,是实现具备长期记忆和自主决策能力智能体的关键技术。两者的结合,

weixin_34198762的博客 397

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

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

python1234567_的博客 837

第2章:技术栈全景图 / 《使用 LangGraph, FastAPI, MCP and Docker 构建通用 AI 智能体》

构建通用AI智能体系统需要精心选择技术栈。本章将详细介绍我们选择的核心技术:LangGraph、FastAPI、MCP和Docker,并解释它们如何协同工作,形成一个完整的技术生态系统。LangGraph是构建AI智能体的核心引擎,它提供了基于图结构的工作流编排能力。理解LangGraph的设计理念和核心优势,对于构建高效的智能体系统至关重要。LangGraph的设计灵感来源于两个重要的计算模型:图计算和状态机。这种设计选择不是偶然的,而是基于对智能体工作流本质的深刻理解。在LangGraph中,智能体的工

AI天才研究院 109

【FastAPI中间件开发实战】:掌握高效请求处理的5大核心技巧

掌握FastAPI中间件开发核心技巧,提升请求处理效率。详解日志记录、权限校验、异常捕获等5大实用场景,通过自定义中间件实现高效响应。代码清晰、易于集成,显著增强应用可维护性与性能表现,值得收藏并点击了解完整实战方法。

SimCompile的博客 966

LangGraph、FastAPI、MCP和Docker技术整合案例

│ 用户界面层 (UI Layer) ││ │ Web前端 │ │ 移动端应用 │ │ 命令行工具 │ │││ API网关层 (API Gateway Layer) ││ │ 服务网关 │ │││ 智能体服务层 (Agent Service Layer) ││ │ LangGraph │ │ 任务调度 │ │ 状态管理 │ ││ │ 工作流引擎 │ │ 服务 │ │ 服务 │ │││ 工具集成层 (Tool Integration Layer) ││ │ MCP协议 │ │。

AI天才研究院 110

大模型应用开发实战:LangGraph + MCP 构建可调用工具的企业办公智能体系统

本文围绕可直接运行的企业办公 AI Agent 项目展开,实现自然语言任务输入、Agent 任务规划、MCP 风格工具调用、CSV/Excel 销售数据分析、会议纪要摘要、执行日志展示、Markdown 报告生成和 FastAPI Web 页面。项目默认离线演示,无需 API Key、模型权重和 GPU,普通 CPU 环境即可运行,并保留 Ollama、OpenAI-compatible API、LangGraph 与 MCP Server 扩展入口,适合课程设计、办公自动化原型和二次开发。

矩阵因果科技 545

S2-Pro API接口安全设计与实践:认证、限流与审计日志

本文介绍了如何在星图GPU平台上自动化部署s2-pro镜像,实现安全的API接口管理。该镜像提供认证、限流与审计日志功能,特别适用于AI模型API的企业级安全防护,确保合法访问并防止资源滥用。通过JWT认证、智能限流和全链路审计日志,为开发者提供全面的API安全解决方案。

weixin_42527665的博客 57

【数据挖掘】心跳信号分类预测 之 特征工程 —— 学习笔记(三)

三、特征工程 3.1 看书 常言道,“巧妇难为无米之炊”。在 ML 中,数据和特征将作“米”,模型和算法则为“妇”。若无数量充足的数据、良好表示的特征,再强大的模型也难以得到满意的结果 (garbage in,garbage out)。对于 ML 问题,数据和特征往往决定了结果的上限,而模型、算法的选择及优化则是在逐步接近该上限。 特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。在本质上,特征工程是一个表示和展现数据的过程。在实际中,特征工程旨在去除...

闻韶 3355

《基于 FastAPI + LangGraph + LLM 大语言模型的通用 Agent 多智能体系统架构设计与开发实战、产业应用 I 》

<body></body>

AI天才研究院 912

Unity中URP实现水体效果(泡沫)

在上篇文章中,我们实现了水体的深度。在这篇文章中,我们来使用上篇文章采样后的深度图来实现水中的泡沫效果。

楠溪泽岸的博客 3482

【Apollo规划模块探秘】—— 场景(Scenario)驱动的决策引擎

本文深入解析了Apollo自动驾驶平台规划模块的核心机制——场景(Scenario)驱动的决策引擎。文章通过类比日常驾驶,阐述了规划模块如何像经验丰富的司机一样,根据不同的路况(如车道跟随、无保护左转)切换不同的“驾驶模式”。重点剖析了场景管理器(ScenarioManager)如何基于感知信息进行场景判断与切换,以及“场景-阶段-任务”双层状态机如何精密协作,实现灵活、高效且安全的轨迹规划。

rnn9storyteller的博客 275

AI开发 | Web API框架选型-FastAPI

本项目通过采用FastAPI框架和清晰的分层架构,实现了一个可扩展、高性能的Web API服务。主要特点:技术特点基于FastAPI的现代化API框架完整的CRUD操作示例异步支持自动API文档类型安全架构特点清晰的分层结构关注点分离代码复用易于测试和维护实践价值提供了标准化的项目模板展示了最佳实践便于快速启动新项目适合团队协作未来展望添加更多功能示例引入缓存机制增加测试覆盖支持容器化部署。

小迅先生的博客 894

Ubuntu\linux,加载mcp2515的驱动,链接mcp2515,mcp2515的这个驱动默认在linux内核中。jetson nao、香橙派、树莓派

3. 其他文章,还要进行驱动编译就比较复杂了(不推荐)1.树莓派+MCP2515+

pvmsmfchcs的博客 1562

LangChain与LangGraph实战:从零构建企业级AI智能体应用

在当今AI应用开发领域,智能体(Agent)和检索增强生成(RAG)已成为构建复杂AI系统的核心技术范式。智能体通过感知、决策和执行循环,能够自主调用工具完成任务;而RAG技术则通过检索外部知识库来增强大语言模型的生成能力,确保回答的准确性和时效性。这些技术的工程价值在于,它们将大语言模型的通用能力与特定领域知识、工具系统相结合,从而能够开发出具备长期记忆、复杂决策和自动化执行能力的企业级应用。在实际应用场景中,开发者可以基于LangChain框架快速搭建AI应用原型,并利用LangGraph进行可视化的工

weixin_30530939的博客 390

LVGL colorwheel组件教程一(调色板)

【代码】LVGL colorwheel组件教程一(调色板)

摸鱼专家 420

SAP项目中 Waterfall vs Agile 的深度对比分析背景:方法论的演进SAP项目实施方法论经历了显著的代际更替。早期以 ASAP(Accelerated SAP) 为代表,采用经典瀑

本文对比分析了SAP项目实施中瀑布模型(ASAP)与敏捷方法(SAP Activate)的核心差异。瀑布模型采用线性流程,需求固定但变更成本高;敏捷方法则通过迭代开发实现动态调整,强调最佳实践和用户持续参与。文章指出,SAP系统的复杂性使纯粹敏捷难以实施,需在标准化与定制化间取得平衡。最终建议根据项目特性选择方法论:稳定需求适用瀑布模型,变化频繁则推荐敏捷,而SAP Activate本质上是两者的结构化融合,代表未来趋势。关键在于匹配项目实际需求,而非盲目追随方法论潮流。

金牌架构师 336

LangGraph实战:构建有状态AI智能体的核心架构与工程实现

在AI应用开发领域,智能体(Agent)已成为连接大语言模型与实际业务场景的关键技术范式。其核心原理在于通过状态管理、工具调用和决策循环,使AI系统能够执行复杂、多步骤的任务,而非仅进行单次文本生成。这一技术价值在于将静态的模型能力转化为动态、可协作的工作流,从而在客服自动化、数据分析、多角色模拟等场景中实现更高程度的自主性。本文聚焦于LangGraph这一专门用于构建有状态、多智能体应用的开源框架,通过拆解其状态(State)、节点(Node)、边(Edge)和**图(Graph)** 等核心概念,并结合

weixin_33782386的博客 421

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1972

AI智能体系统技术栈:LangGraph与FastAPI实战解析

在现代AI工程化实践中,智能体系统架构设计是核心技术挑战之一。通过工作流编排引擎与微服务框架的组合,开发者可以构建高可用的AI应用系统。LangGraph作为基于图结构的智能体编排框架,其状态机模型和可视化调试特性大幅提升了复杂业务逻辑的开发效率。结合FastAPI的高性能API服务能力,开发者能够快速实现从AI模型到业务系统的端到端集成。这种技术组合特别适用于需要多轮交互的智能客服、个性化推荐等场景,其中LangGraph的工作流编排与FastAPI的异步处理机制形成完美互补。通过标准化协议如MCP和容器

weixin_42629671的博客 344

Google Earth Engine(GEE)——全球影像数据正确下载方式和注意事项

今天看到有人担心全球影像能不能下载的问题? 有时候我们会用到全球的数据,但是如何下载全球的数据呢? 首先如果没有全球的矢量边界我们会不会无法下载全球的数据,答案当然是可以的,因为我们在边界筛选的过程中filterBounds(),就是为了筛选边界,当我们不进行边界筛选的时候,自然而然默认的边界范围就是全球的,但是紧接着会面临其他两个问题:1如何下载?2如何在不缩小分辨率的情况下下载成功? 对于第一个问题我们如何下载?还是按照正常的逻辑利用export直接倒出到Google硬盘当中, 代码:

此星光明博客 3763

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

LangChain+LangGraph+MCP:企业级AI智能体开发完整指南

AI智能体开发是当前企业数字化转型的核心技术,通过组件化框架实现复杂业务逻辑的自动化处理。其技术原理基于状态驱动的工作流引擎和标准化协议集成,能够有效管理多轮对话、工具调用等复杂场景。在技术价值层面,这种架构显著降低了企业AI应用开发门槛,支持快速构建具备商业价值的智能系统。特别是在客户服务、审批流程、数据分析等应用场景中,AI智能体能够实现业务流程的智能化升级。以LangChain、LangGraph和MCP协议为核心的技术栈组合,为企业提供了从基础构建到复杂工作流编排的完整解决方案,其中LangGrap

weixin_30883311的博客 424

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

基于LangChain、MCP与LangGraph构建AI Agent:从原理到实战

大语言模型应用开发的核心挑战之一是如何让模型安全、可靠地调用外部工具与数据源。Model Context Protocol(MCP)作为一种新兴的标准化协议,旨在解决这一痛点,它定义了LLM与外部工具之间统一的连接方式,使能力扩展更规范。其技术价值在于降低了工具集成的复杂度,提升了Agent的可维护性与互操作性。在工程实践中,开发者常结合LangChain这一主流框架,并利用LangGraph提供的图结构来设计具备状态管理和复杂工作流的智能体。这种组合特别适用于需要多步骤决策、条件分支或循环执行的场景,例如

weixin_34268310的博客 425

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

《精通MCP:AI 智能体开发实战》配图

fill:#333;color:#333;color:#333;fill:none;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;important;

AI天才研究院 850

LangGraph多智能体架构实战:基于MCP与RAG的医疗AI系统开发

大语言模型(LLM)通过理解自然语言实现了人机交互的突破,其核心原理是基于Transformer架构的深度神经网络。在工程实践中,检索增强生成(RAG)技术通过向量数据库检索相关知识,有效提升模型回答的准确性和专业性。多智能体系统(Multi-Agent System)则通过分工协作机制,让不同智能体专注于特定任务领域,显著提升复杂问题的处理能力。在医疗AI应用场景中,LangGraph作为构建有状态工作流的框架,结合MCP协议实现工具调用标准化,能够开发出理解医学知识、进行专业对话的智能系统。本文以医疗问

weixin_34345753的博客 272

LangGraph系列:多智能体终极方案,ReAct+MCP工业级供应链系统

摘要:本文介绍了一种基于ReAct模式的供应链智能体系统,旨在解决传统供应链管理中效率低下和信息不对称等问题。系统采用本地化部署保障数据安全,结合LangGraph实现工作流编排,并基于MCP协议标准化工具调用。核心设计包括模块化扩展、多端交互和数据可视化,技术栈涵盖FastAPI、React和Ollama等工具。详细解析了ReAct Agent引擎的实现,通过状态管理和执行循环优化(并行观察、智能停止等)提升效率,并给出核心代码示例。该系统可动态监控库存、智能评估供应商,具备工业级应用的实用性和可扩展性。

小程故事多的博客 1563
上一篇: 微软/蚂蚁/港大GraphRAG项目大比拼(非常详细),开源框架选型从入门到精通,收藏这一篇就够了!
下一篇: 开源 AI 助手平台搭建全攻略(非常详细),多模型 + RAG + 可视化编排,收藏这一篇就够了!
Python_金钱豹
博客等级 码龄5年 1万+粉丝 2815原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值