入门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/9/3 5:35:24 阅读更多 →
SPI帧结束检测的实用指南:协议缺陷、DMA中断与工程方案

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

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

2026/9/2 21:14:23 阅读更多 →
大厂运维笔试揭秘:爱奇艺真题拆解与核心考点清单

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

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

2026/8/31 22:34:43 阅读更多 →

最新新闻

Havenlon | From Access to Execution #02 Least Privilege vs Least Execution Authority

Havenlon | From Access to Execution #02 Least Privilege vs Least Execution Authority

Least Privilege 是安全工程中最成熟的原则之一。Saltzer 与 Schroeder 在 1975 年给出的表述已经相当完整:每一个程序、每一个用户都应当以完成当前工作所必需的最小特权集合运行,不因为组织身份、历史关系或管理便利而额外持有与任务无关的能力。半个世…

2026/9/3 5:35:28 阅读更多 →
Unity URP程序化草地:Compute Shader与GPU间接绘制全解析

Unity URP程序化草地:Compute Shader与GPU间接绘制全解析

并不是所有人都需要知道“草为什么好看”,但做 3D 场景渲染的同学,大概率都经历过这样一个瞬间:美术在场景里刷了一万个草型 GameObject,一拉镜头帧率直接掉到 20;你打开 Profiler 一看,Draw Call 一万多&a…

2026/9/3 5:35:28 阅读更多 →
开卡快、用得顺、留得住:2026会员管理系统哪家好

开卡快、用得顺、留得住:2026会员管理系统哪家好

小编发现一个挺普遍的现象:很多门店老板选会员系统的时候,盯着功能列表比来比去——谁家积分规则多、谁家储值档次全、谁家优惠券模板好看。但系统真正装上了才发现,日常用得多的就是三个动作:办张新卡、查个余额、扣次积分。如果…

2026/9/3 5:35:28 阅读更多 →
门店管理系统哪家靠谱,2026年横向测评结果

门店管理系统哪家靠谱,2026年横向测评结果

实体门店数字化已经成为行业大趋势。根据艾瑞咨询2026企服行业报告显示,国内超7成实体门店已经用上数字化工具,但不足3成做到全链路数据打通,不少商家在挑选门店管理系统时容易踩坑。同时工信部《2025年软件和信息技术服务业统计公报》提到&a…

2026/9/3 5:35:28 阅读更多 →
基于CNN-Transformer混合架构的胸部X光肺炎诊断系统设计与实现

基于CNN-Transformer混合架构的胸部X光肺炎诊断系统设计与实现

简介:本资源是一套面向医学影像AI初学者与临床辅助诊断研究者的胸部X光肺炎智能识别系统,基于PyTorch框架实现Transformer与ResNet34双路径融合建模,解决小样本医学图像分类中特征提取不足与泛化性弱的典型问题。压缩包共13个文件&#xff08…

2026/9/3 5:35:28 阅读更多 →
构建高质量脑肿瘤检测数据集:从9900张MRI到VOC格式的完整实践

构建高质量脑肿瘤检测数据集:从9900张MRI到VOC格式的完整实践

简介:本资源是一套面向医学图像分析与计算机视觉初学者的脑肿瘤检测专用数据集,适用于深度学习目标检测模型(如YOLO、Faster R-CNN)的训练与验证任务。数据集基于9900张原始脑部MRI切片图像构建,全部完成人工精标并统一…

2026/9/3 5:34:28 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →