入门agent,一些必要的基础python代码结构你要会看懂
前置最近公司在做简单的agent智能体研发其中当然少不了工作流中代码组件因为里面使用的是python语言所以自己总结了一些必须看懂的代码结构方便砸门入门agent如果有java基础可以看看这个PythonJava 里最像作用listArrayList存一组有顺序的数据dictHashMapkey → valuetuple没有完全对应类似不可变的List一组不能修改的数据setHashSet存不重复的数据strString字符串intint / Integer整数Nonenull没有值1.dict—— Agent 开发最重要的数据结构这个一定要熟。state { user_input: 帮我查一下北京天气, messages: [], result: None }取数据user_input state[user_input]修改state[result] 晴天也经常看到取数据state.get(result)2.list—— 消息、工具、历史记录都经常用例如messages [ {role: user, content: 你好}, {role: assistant, content: 你好有什么可以帮你} ]遍历for message in messages: print(message[content])添加messages.append({ role: user, content: 帮我查天气 })Agent 中经常看到messages[-1]意思就是获取最后一条消息。3.def—— Agent 的每个节点基本都可以理解成函数例如def search_weather(city): result weather_api(city) return result工作流用户输入 ↓ 意图识别 ↓ 搜索天气 ↓ 生成回答对应def intent_node(state): ... def weather_node(state): ... def answer_node(state): ...所以你看到def xxx(state):第一反应应该是这是一个工作流节点/工具/处理函数。4.return—— 搞懂数据怎么在 Agent 节点之间流动比如def weather_node(state): weather 晴天 return { weather: weather }然后下一个节点def answer_node(state): weather state[weather] return { answer: f今天是{weather} //没有f的话直接输出今天是{weather} }你要建立一个非常重要的概念函数输入 ↓ state ↓ 函数内部处理 ↓ return ↓ 下一个节点这对理解 LangGraph 之类的 Agent 工作流特别重要。5.if—— Agent 决策逻辑例如if user_input 天气: return weather elif user_input 新闻://python中直接比较的是值 return news else: return chatAgent 工作流里面经常就是┌→ Weather Agent 用户 → 意图判断 ┤ ├→ Search Agent │ └→ Chat AgentPythonif intent weather: ... elif intent search: ... else: ...所以条件判断 Agent 路由逻辑的基础。6.for—— 批量处理数据例如搜索返回results [ {title: 新闻1}, {title: 新闻2}, {title: 新闻3} ]处理for result in results: print(result[title])Agent 中特别常见for tool in tools: ...或者for message in messages: ...或者for document in documents: ...7.try / except—— Agent 必须会因为 Agent 会疯狂调用LLM ↓ 搜索 API ↓ 数据库 ↓ 第三方 API ↓ 工具任何一步都可能报错。所以try: result api.call() except Exception as e: print(e)更实际一点try: result await llm.ainvoke(messages) except Exception as e: return { error: str(e) }你以后看到except Exception as e:要知道这里是在兜底处理 Agent 运行过程中的异常。四、class—— Agent 框架代码里非常重要这个可能是刚入门 Python 最容易懵的。比如class WeatherTool: def __init__(self, api_key): self.api_key api_key def run(self, city): return 北京晴天使用tool WeatherTool(xxx) result tool.run(北京)你需要理解三个东西class定义一个对象/组件。__init__初始化。self代表当前对象。Agent 框架里经常把Tool Memory Agent Retriever Model State封装成 class。所以看到class XXX:你要能基本看懂。五、async / await—— Agent 开发必须补上的知识这个非常重要。普通函数result llm.invoke(prompt)异步result await llm.ainvoke(prompt) llm.ainvoke(prompt)调用 LLM让大模型根据 prompt 生成结果。async await 一般只能出现在 async def 函数里面等待 llm.ainvoke(prompt) 这个异步任务返回结果然后再继续执行当前这行后面的代码。函数async def call_llm(): result await llm.ainvoke(prompt) return result理解成async def ↓ 这个函数里面存在异步操作 await ↓ 等待这个操作完成因为 Agent 经常需要LLM ↓ API ↓ 数据库 ↓ 搜索很多都是 IO 操作所以异步代码非常常见。六、装饰器—— Agent 框架里会大量出现例如tool def search_weather(city: str): return 北京晴天你可能会问tool是什么简单理解tool def search_weather(): ...相当于告诉框架把这个 Python 函数注册成一个 Agent 可以调用的 Tool。以后你还会看到app.route(...)staticmethodproperty以及各种框架自己的装饰器。所以至少要看懂装饰器是什么不需要一开始深入研究装饰器底层实现。七、类型提示 —— Agent 代码里特别常见例如def search(city: str) - str: ...意思city ↓ 应该是 str 函数返回 ↓ 应该是 str再比如def process(state: dict) - dict: ...以及from typing import List, Optional def search( query: str, top_k: int 5 ) - List[str]: ... query 参数应该是字符串类型 top_k 应该是整数如果调用函数时不传它就默认使用 5。 这个函数预计返回一个 List[str]也就是“字符串列表”。 这个 : 表示函数定义结束下面缩进的代码属于这个函数。 有返回你想要的值那么结果返回None。这些你一定要能读懂。八、Pydantic—— Agent 开发非常值得学后面你做结构化输出的时候会经常遇到from pydantic import BaseModel class UserInfo(BaseModel): name: str age: int city: str然后user UserInfo( name张三, age25, city北京 )它解决的问题就是规定 Agent 输入/输出的数据结构。比如让 LLM 输出{ name: 张三, age: 25, city: 北京 }而不是张三今年25岁住在北京哈哈。所以做 Agent 后Pydantic 很值得掌握。九、环境变量 —— API Key 基本离不开你会经常看到import os api_key os.getenv(OPENAI_API_KEY)或者from dotenv import load_dotenv load_dotenv().envOPENAI_API_KEYxxxx然后os.getenv(OPENAI_API_KEY)这套东西一定要会。十、最后是这些“进阶但很常见”的结构列表推导式names [user[name] for user in users]等价于names [] for user in users: names.append(user[name])Agent 数据处理经常用。lambdaresults.sort(keylambda x: x[score])看到不用害怕。简单理解lambda 临时定义一个很短的小函数。*argsdef test(*args): print(args)允许传任意数量的位置参数。**kwargsdef test(**kwargs): print(kwargs)允许传任意数量的关键字参数。Agent 框架里非常常见def invoke(input, **kwargs): ...所以至少要能看懂。yield流式输出的时候会碰到def stream(): yield 你好 yield 我是 yield AIAgent/LLM Streaming你 ↓ 好 ↓ ↓ 我 ↓ 是 ↓ AI就可能涉及yield。

相关新闻

STM32调试时卡死在HAL_Delay?SysTick与调试器机制全面解析

STM32调试时卡死在HAL_Delay?SysTick与调试器机制全面解析

前两天在一个H745的项目上被一个"玄学"问题卡了一晚上:程序在上电全速运行时一切正常,但只要在调试器里加一个断点、或者在某个函数里单步执行,就会死死卡在非常靠前的初始化流程里,具体位置停在HAL_Delay()的 while 循…

2026/11/5 12:08:04 阅读更多 →
SPI帧结束检测的实用指南:协议缺陷、DMA中断与工程方案

SPI帧结束检测的实用指南:协议缺陷、DMA中断与工程方案

如果你用SPI和从设备通信时遇到过“数据偶尔错位一个字节”“DMA收到的数据长度总是对不上”“最后一个字节读完了,从设备好像还没反应过来”这类问题,恭喜你,你踩中的正是SPI开发里最经典的一个坑——帧结束检测。SPI协议本身没有像UART那样…

2026/11/5 12:09:25 阅读更多 →
大厂运维笔试揭秘:爱奇艺真题拆解与核心考点清单

大厂运维笔试揭秘:爱奇艺真题拆解与核心考点清单

我在面试候选人时发现一个很普遍的现象:很多简历上写着“熟悉Linux”“掌握网络基础”的运维新人,一到笔试环节就露怯。不是知识点没看过,而是不知道大厂出题人真正想考察什么。爱奇艺2019秋招这套运维方向笔试题(A)&a…

2026/10/26 10:31:49 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/4 1:35:24 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/5 1:08:50 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/3 11:35:49 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/4 6:23:50 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/5 0:54:28 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/4 19:19:54 阅读更多 →

日新闻

周新闻

月新闻