新闻详情

新闻详情

首页 / 资讯中心 / 详情

100行Python代码实现轻量级Agent系统

发布时间:2026/11/7 1:44:26来源:尧图网络
100行Python代码实现轻量级Agent系统
1. 项目概述最近在技术社区看到不少关于Agent开发的讨论但大多数教程要么过于理论化要么需要庞大的代码库支持。今天我想分享一个极简实现方案——用不到100行Python代码构建一个功能完整的Agent系统。这个方案特别适合想要快速入门Agent开发的新手或者需要在资源受限环境中部署轻量级Agent的开发者。我在实际项目中多次使用这种精简架构它保留了Agent的核心功能感知-决策-执行循环同时避免了复杂框架的学习成本。下面我会从设计思路开始逐步拆解每个关键模块的实现。2. 核心架构设计2.1 最小可行Agent模型一个基础Agent需要三个核心组件环境感知接口接收输入决策逻辑处理器核心大脑动作执行模块输出响应我们采用面向对象方式封装用Python的类结构实现这三个组件。这种设计模式的优点是各模块解耦后续扩展功能时只需修改对应部分。2.2 技术选型考量选择纯Python实现主要基于开发效率Python的简洁语法能最大限度压缩代码量生态支持标准库已包含所需的大部分工具如json、random等跨平台无需处理依赖问题Windows/Linux/macOS均可运行提示生产环境建议使用asyncio实现异步处理但本教程为保持简洁采用同步模式3. 代码实现详解3.1 基础框架搭建class SimpleAgent: def __init__(self, name): self.name name self.memory [] # 短期记忆存储 self.rules { # 决策规则集 greet: lambda x: Hi there! if x.lower() in [hi,hello] else None, farewell: lambda x: Goodbye! if x.lower() in [bye,exit] else None } def perceive(self, input_text): 感知输入并触发决策 response self.decide(input_text) self.act(response) def decide(self, input_text): 应用规则生成响应 for rule in self.rules.values(): result rule(input_text) if result: return result return I didnt understand that. def act(self, response): 执行输出动作 print(f{self.name}: {response})这个35行的基础版本已经实现了个性化命名init基于规则的决策rules字典完整的感知-决策-执行流程3.2 功能增强实现接下来我们扩展记忆能力和学习功能class EnhancedAgent(SimpleAgent): def __init__(self, name): super().__init__(name) self.learned_responses {} def remember(self, input_text): 存储重要交互信息 if len(self.memory) 10: # 防止内存泄漏 self.memory.pop(0) self.memory.append(input_text) def learn(self, question, answer): 添加新的应答规则 self.learned_responses[question.lower()] answer def decide(self, input_text): self.remember(input_text) # 先存储输入 # 检查学习过的响应 if input_text.lower() in self.learned_responses: return self.learned_responses[input_text.lower()] return super().decide(input_text)新增功能包括短期记忆缓存remember方法动态学习能力learn方法记忆容量保护机制4. 完整实现与测试4.1 最终整合版98行import json from datetime import datetime class SmartAgent: def __init__(self, name): self.name name self.memory [] self.learned {} self.rules { greet: self._check_greeting, time: lambda x: fIts {datetime.now().strftime(%H:%M)} if time in x.lower() else None, default: lambda x: Could you rephrase that? } def _check_greeting(self, text): greetings [hi,hello,hey] if any(g in text.lower() for g in greetings): return f{random.choice([Hi,Hello,Hey])}! How can I help? return None def perceive(self, input_text): response self.decide(input_text) self.act(response) return response def decide(self, text): self._update_memory(text) # 检查学习过的响应 if text.lower() in self.learned: return self.learned[text.lower()] # 应用规则集 for rule in self.rules.values(): result rule(text) if result: return result def act(self, response): print(f{self.name}: {response}) def learn(self, question, answer): self.learned[question.lower()] answer def _update_memory(self, text): if len(self.memory) 10: self.memory.pop(0) self.memory.append({ text: text, time: datetime.now().timestamp() }) def save(self, filename): with open(filename, w) as f: json.dump({ learned: self.learned, memory: self.memory }, f) def load(self, filename): with open(filename) as f: data json.load(f) self.learned data[learned] self.memory data[memory] # 使用示例 if __name__ __main__: agent SmartAgent(Jarvis) print(Agent initialized. Type exit to quit.) while True: user_input input(You: ) if user_input.lower() exit: break agent.perceive(user_input)4.2 关键功能测试案例# 初始化Agent bot SmartAgent(DemoBot) # 基础功能测试 bot.perceive(Hello) # 应返回问候语 bot.perceive(What time is it?) # 返回当前时间 # 学习功能测试 bot.learn(your name, Im DemoBot version 1.0) bot.perceive(Your name?) # 应返回学习过的答案 # 持久化测试 bot.save(bot_state.json) new_bot SmartAgent(NewBot) new_bot.load(bot_state.json) new_bot.perceive(Your name?) # 应保留之前学习的响应5. 进阶优化方向5.1 性能优化技巧规则引擎优化# 将规则按优先级排序 self.rule_priority [ time_check, greeting, learned_response, default ]内存管理改进# 使用LRU缓存机制 from functools import lru_cache lru_cache(maxsize100) def cached_decision(self, text): # 缓存频繁处理的请求5.2 常见问题解决方案问题1Agent响应速度慢检查规则顺序高频规则前置避免在规则中执行复杂计算考虑添加决策超时机制问题2记忆混乱实现记忆过期机制30分钟自动清理添加记忆分类标签self.memory.append({ text: input_text, time: datetime.now(), category: self._classify_input(input_text) })6. 生产环境部署建议网络服务封装from flask import Flask, request app Flask(__name__) agent SmartAgent(WebAgent) app.route(/chat, methods[POST]) def chat(): user_input request.json.get(message) return {response: agent.perceive(user_input)}性能监控指标self.metrics { response_time: [], memory_usage: [], rule_hits: {rule:0 for rule in self.rules} } def perceive(self, input_text): start time.time() # ...原有逻辑... duration time.time() - start self.metrics[response_time].append(duration)这个实现完整展示了Agent开发的核心原理后续可以根据需求添加自然语言处理接口如集成NLTK多Agent通信机制强化学习训练模块我在实际项目中发现这种极简架构最适合作为教学示例或快速原型开发。当需要更复杂功能时可以逐步扩展而不是一开始就引入重型框架。
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/6 6:37:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/7 0:39:20

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/6 1:10:54

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/6 17:25:36

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/6 14:29:05

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/6 14:29:07

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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