当前位置: 首页 > news >正文

【震惊】一个Python文件搞定AI Agent!小白也能手写企业级AI架构,yyds!

在上一篇文章中,我们拆解了 AI Agent 的六大理论模块。很多初级程序员看完后会觉得:“理论很完美,但我该怎么写代码?是不是需要几十个文件?”

错。

Agent 的本质是一个状态机(State Machine)。它不是一个有意识的生物,而是一个被大模型驱动的 while 循环。

今天,我将带你从 0 到 1,在一个 Python 文件中,把这六大模块全部通过代码落地。

这事不难。只要你会写 Python 函数,你就能构建 Agent。

PART 01

工程准备:技术栈

为了实现确定性工程,我们不使用低代码平台,而是使用代码。

LangGraph: 用于构建状态图(Graph)。

LangChain: 用于封装模型接口。

Python: 我们的逻辑载体。

你只需要这一个文件,就能跑通所有逻辑。

你需要先安装库:
pip install langchain-openai langgraph pydantic python-dotenv

PART 02

感知模块 (Perception):定义状态

理论回顾:感知是 Agent 的“感官”,负责处理文本、信号和上下文。

工程实现:在代码中,感知被具象化为 State(状态)。

Agent 本质上是无状态的,我们需要定义一个数据结构来“感知”当前聊到哪了。

解析 :这就是感知。只要在这个列表里的,Agent 就能“看见”;不在列表里的,对它来说就不存在。

from typing import TypedDict, Annotated, List from langgraph.graph.message import add_messages # [感知模块] # 我们定义一个字典,作为 Agent 的"眼睛"和"耳朵" # 所有的用户输入、工具返回结果,都会被 append 到这个 messages 列表中 class AgentState(TypedDict): messages: Annotated[List, add_messages]

PART 03

执行系统 (Execution):定义工具

理论回顾 :执行系统是 Agent 的“手脚”,负责调用 API、查询数据库。

工程实现 :在代码中,就是标准的 Python 函数 。

不要让模型去猜,我们要明确定义函数。

# [执行系统] # 这是 Agent 的"手",我们定义两个具体能力 def search(query: str) -> str: """当需要获取实时信息时调用,比如天气、新闻。""" print(f" [执行动作] 正在搜索: {query}") return f"搜索结果:'{query}' 的天气是 晴转多云,气温 20度。" def add(a: int, b: int) -> int: """当需要计算数字时调用。""" print(f" [执行动作] 正在计算: {a} + {b}") return a + b # 把工具打包成列表,后续喂给大脑 tools = [search, add]

PART 04

专业大模型 (LLM):加载大脑

理论回顾:这是底座,决定了 Agent 的智商上限。

工程实现:初始化 LLM 对象,并进行 Tool Binding(工具绑定)。

from langchain_openai import ChatOpenAI # [专业大模型] # 初始化大脑 (建议使用 GPT-4o 或类似智力水平的模型) llm = ChatOpenAI(model="gpt-4o", temperature=0) # [关键一步] # 将"执行系统"(tools)绑定到"大脑"(llm)上 # 这一步,我们将概率性的文本生成,坍缩为确定性的函数调用请求 llm_with_tools = llm.bind_tools(tools)

PART 05

决策引擎 (Decision):构建思考节点

理论回顾:这是核心。Agent 需要通过思维链(CoT)规划下一步该干什么。

工程实现:编写一个 Node(节点) 函数。

# [决策引擎] # 这是 Agent 的思考过程 def agent_node(state: AgentState): messages = state["messages"] # 大脑接收感知到的信息,进行推理 # 结果可能是:1. "我要调用工具" 2. "我回答完毕" response = llm_with_tools.invoke(messages) return {"messages": [response]}

PART 06

记忆管理 (Memory):工作记忆流转

理论回顾:Agent 需要记住刚才做过什么。

工程实现:LangGraph 的 Graph(图) 结构本身就是记忆流转的载体。

我们需要定义一个路由(Router),来决定记忆如何流转。

from langgraph.graph import END # [决策路由] # 判断下一步去哪:是去"执行",还是"结束"? def should_continue(state: AgentState): last_message = state["messages"][-1] # 如果大脑决定调用工具,转入执行系统 if last_message.tool_calls: return "tools" # 否则,结束 return END

PART 07

反馈优化 (Feedback):闭环构建

理论回顾:Agent 需要根据执行结果进行自我修正。

工程实现:通过 Edge(边) 构建循环。

这是 Agent 区别于脚本的关键:它是一个闭环。

from langgraph.graph import StateGraph from langgraph.prebuilt import ToolNode # 1. 初始化图 workflow = StateGraph(AgentState) # 2. 添加节点 workflow.add_node("agent", agent_node) # 思考节点 workflow.add_node("tools", ToolNode(tools)) # 执行节点 (LangGraph自带) # 3. 设置入口 workflow.set_entry_point("agent") # 4. [反馈闭环] # 思考 -> 决定调用工具 -> 执行工具 -> 【跳回】思考 # 这一步 add_edge("tools", "agent") 就是反馈机制的核心 # Agent 会看到工具的执行结果,然后反思下一步该说什么 workflow.add_edge("tools", "agent") # 5. 条件分支 workflow.add_conditional_edges( "agent", should_continue, { "tools": "tools", END: END } ) # 6. 编译系统 app = workflow.compile()

PART 08

全貌:完整代码(Copy & Run)

把上面拆解的碎片拼起来,就是一个完整的、具备六大核心能力的 Agent。

保存为 agent demo.py,配置好你的 OPENAI API_KEY,直接运行。

import os from typing import TypedDict, Annotated, List from dotenv import load_dotenv from langchain_openai import ChatOpenAI from langgraph.graph import StateGraph, END from langgraph.graph.message import add_messages from langgraph.prebuilt import ToolNode # 加载环境变量 load_dotenv() # ========================================== # 模块1: 感知 (State) # ========================================== class AgentState(TypedDict): messages: Annotated[List, add_messages] # ========================================== # 模块2: 执行系统 (Tools) # ========================================== def search(query: str) -> str: """模拟搜索工具""" print(f" [执行系统] 调用搜索: {query}") return f"搜索结果:'{query}' 的天气是 晴转多云,气温 20度。" def add(a: int, b: int) -> int: """模拟计算工具""" print(f" [执行系统] 调用计算: {a} + {b}") return a + b tools = [search, add] # ========================================== # 模块3: 专业大模型 (Brain) # ========================================== llm = ChatOpenAI(model="gpt-4o", temperature=0) llm_with_tools = llm.bind_tools(tools) # ========================================== # 模块4: 决策引擎 (Node) # ========================================== def agent_node(state: AgentState): return {"messages": [llm_with_tools.invoke(state["messages"])]} tool_node = ToolNode(tools) # ========================================== # 模块5: 记忆流转 (Router) # ========================================== def should_continue(state: AgentState): if state["messages"][-1].tool_calls: return "tools" return END # ========================================== # 模块6: 反馈闭环 (Graph) # ========================================== workflow = StateGraph(AgentState) workflow.add_node("agent", agent_node) workflow.add_node("tools", tool_node) workflow.set_entry_point("agent") workflow.add_conditional_edges("agent", should_continue, {"tools": "tools", END: END}) workflow.add_edge("tools", "agent") # 这里的 Edge 构成了反馈闭环 app = workflow.compile() # ========================================== # 运行测试 # ========================================== if __name__ == "__main__": print("🤖 System Initialized. Inputing task...") # 这是一个需要多步推理的任务:先查天气,再根据天气做决定(虽然这里简单,但逻辑一致) inputs = {"messages": [("user", "北京现在的天气适合去公园做早操吗?")]} for output in app.stream(inputs): pass # 这里的 pass 是因为我们在函数里已经 print 了,实际工程中这里处理日志 print("\nFinal Response:") print(output['agent']['messages'][-1].content)

PART 09

总结:苦涩的教训

如果你是一个初级程序员,看完这段代码,你应该感到释然。

六大模块,听起来很吓人,落地到代码里:

感知 就是一个列表 (List)

决策 就是一次模型调用 (invoke)

执行 就是函数调用 (def)

记忆 就是数据传递 (State)

反馈 就是一个循环边 (Edge)

这事不难。 难的不是写代码,难的是如何设计清晰的工具定义,以及如何控制图的流转逻辑。

进阶:什么时候拆分文件?

当你从“学习者”变成“工程师”时,单文件就不够用了。

一旦你的项目符合以下任一特征,请立即进行重构(Refactoring),将代码拆分到不同文件中:

  1. 工具变多了:你有 10+ 个工具,agent.py 里全是函数定义,干扰了看核心逻辑。

  2. Prompt 变长了:你需要写很复杂的 System Prompt,字符串占了几百行。

  3. 团队协作:你的同事负责写工具,你负责写编排。

    推荐的工程目录结构(Project Structure):

那么,如何系统的去学习大模型LLM?

作为一名深耕行业的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

http://www.jsqmd.com/news/193460/

相关文章:

  • ATOM代码编辑器插件安装和编译配置方法
  • 2025年火锅底料厂家供应链推荐:选择指南、排名、评价与供应商深度解读 - 速递信息
  • PHP跨域Cookies配置全攻略:从SameSite到WithCredentials的完整避坑手册
  • 扎克伯格的AI野心:不再聊天,直接干活!程序员不学这招将被智能体取代
  • 国产防脱发品牌经典榜2026,韩勇9+9凭四十余年积淀登顶 - 深度智识库
  • PHP+OpenCV深度优化实践(识别误差降低85%的幕后真相)
  • 1.4
  • 语音合成灰度公平性保障:避免算法歧视弱势群体
  • GLM-TTS在直播场景的应用探索:实时弹幕语音播报
  • GLM-TTS命令行模式使用手册:脱离Web界面的高级玩法
  • vibe coding 解决工作量难题,重启一人独立开发之路
  • 夺冠送车变“空头支票”?豪言值400万,结局加10万
  • 2026高口碑防脱发产品品牌榜韩勇9+9详细测评 - 深度智识库
  • 语音合成灰度文化建设:鼓励试错与持续改进氛围
  • 语音合成灰度敏捷迭代实践:小步快跑持续交付
  • 计算机毕业设计springboot基于VUE的婚庆伴娘服务系统 SpringBoot+VUE全栈式婚礼伴娘共享预约平台 基于SpringBoot与Vue的婚庆伴手礼及伴娘撮合系统
  • 语音合成灰度知识产权保护:防范技术泄露风险
  • 【前端请求拿不到PHP Set-Cookie?】:深度剖析跨域Cookies失败根源
  • 语音合成A/B测试方法论:比较不同参数组合效果
  • 计算机毕业设计springboot农村留守儿童爱心帮扶平台 乡村困境儿童关爱帮扶一体化平台 基于SpringBoot的留守少年儿童公益援助系统
  • 2026国内流体仿真公司选型深度指南:从技术能力到服务体系的专业拆解
  • 前Liblib CTO重磅创业!打造Agent时代“新基建”,秒级调用上万工具,太猛了!
  • 语音合成灰度应急预案:预先准备故障应对措施
  • 5款AI写论文哪个好?实测对比后,我决定把宏智树AI安利给所有毕业生
  • OpenAI的AI五阶段论可能是骗局?2026年Agent爆发的真相大白,大模型开发者必看!
  • 语音合成灰度资源配置:为不同阶段分配适当算力
  • GLM-TTS与Prometheus+Grafana构建可观测体系
  • 揭秘PHP错误日志:如何用3个工具实现秒级问题追踪与诊断
  • 关于汽车软件测试的几点想法
  • PHP服务监控告警方式大比拼:哪种最适合你的生产环境?