新闻详情

新闻详情

首页 / 资讯中心 / 详情

入门agent,一些必要的基础python代码结构你要会看懂

发布时间:2026/8/31 22:34:38来源:尧图网络
入门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。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Replit智能路由与企业功能:手把手搭建企业专属知识库 2026/9/1 3:53:36

Replit智能路由与企业功能:手把手搭建企业专属知识库

作为长期在 Replit 上做原型开发和团队协作的开发者,每次打开 Dashboard 看到更新日志都会比较敏感。本周 Replit 更新的重点集中在两个方向:一是面向开发效率的智能路由能力,二是面向团队与企业的管理功能。这两个方向单独看不算惊艳&#x…

阅读更多 →
购物助手Bot接入Stripe支付:卡绑定、扣款与Webhook全流程解析 2026/9/1 3:53:36

购物助手Bot接入Stripe支付:卡绑定、扣款与Webhook全流程解析

把 Grok Bot 这类购物助手类 Bot 接入 Stripe 支付,核心其实就一件事:让用户先把卡绑好,后面下单时不用再重复输入卡号。这个需求在代购、代下单业务里特别常见,用户往往要多次购买,每次重新填银行卡既容易输错&#x…

阅读更多 →
Grok Bot支持代购绑定Stripe卡:AI Agent如何接管交易闭环? 2026/9/1 3:53:36

Grok Bot支持代购绑定Stripe卡:AI Agent如何接管交易闭环?

Grok Bot 支持代购,还能绑定 Stripe 卡完成支付——这个组合乍看只是一个功能更新,但把它放进 AI Agent 的完整闭环里,你会发现问题远不止“能付款”那么简单:当对话模型开始替用户做消费决策,并且真的能从绑定的 Stri…

阅读更多 →
51单片机火灾报警系统:从选型到Proteus联调实战指南 2026/9/1 3:53:36

51单片机火灾报警系统:从选型到Proteus联调实战指南

简介:本资源是一套完整的基于51单片机的火灾报警系统下位机开发方案,面向嵌入式初学者、课程设计学生及电子类竞赛备赛者,解决温烟复合检测、本地声光报警与串口通信反馈等典型物联网感知终端开发问题。压缩包共62个文件,涵盖Prot…

阅读更多 →
Spring Boot构建生产级投稿系统:安全、异步与幂等性设计实践 2026/9/1 3:53:36

Spring Boot构建生产级投稿系统:安全、异步与幂等性设计实践

在实际开发中,我们经常需要处理来自用户或外部系统的投稿内容。这类功能看似简单,但一个健壮的投稿系统需要综合考虑数据验证、内容安全、异步处理、状态管理以及异常恢复等多个方面。很多初级开发者实现的投稿功能,往往只关注了表单提交和数…

阅读更多 →
Spring Boot大学生兼职系统毕业设计:核心实现与答辩亮点全解析 2026/9/1 3:50:35

Spring Boot大学生兼职系统毕业设计:核心实现与答辩亮点全解析

简介:这是一套面向计算机专业本科生的Java毕业设计实战项目,基于Spring Boot框架构建B/S架构的大学生兼职服务平台,解决高校学生兼职信息不对称、企业招聘流程低效、管理员协同监管难等实际问题。资源包共1003个文件,涵盖96个核心…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞