文章目录【74.PythonAI】实战AI私人助理——查天气、写邮件、搜新闻、管日程的全能Agent导入语1 ~ 整体架构1.1 项目结构2 ~ 五个工具的实现2.1 tools.py2.2 agent.py多轮任务规划2.3 app.pyStreamlit界面3 ~ 从这个实战中学到什么思考 总结结尾【74.PythonAI】实战AI私人助理——查天气、写邮件、搜新闻、管日程的全能Agent文章简介本文是Agent板块的收官实战把前面学过的ReAct循环、工具定义、多轮任务规划全部串起来从零搭建一个AI私人助理。文章实现5个工具的集成天气查询、新闻搜索、邮件起草、日程读写、通用计算支持明天下雨就提醒我带伞并把下午的会改到线上这类跨工具的多轮任务规划最后用Streamlit搭建可视化聊天界面实现一键运行。配有Mermaid架构图展示任务规划与工具串联的完整数据流适合完整学完Agent板块、需要一个综合项目检验学习成果的开发者。 个人主页源码骑士❄专栏传送门《Android开发基础》《python基础课程》⭐️热衷从源码视角拆解技术底层原理将复杂架构讲得通俗易懂 源码骑士的简介5年Android Framework系统开发经验曾主导多项系统级性能优化专项技术栈覆盖Android系统全链路Binder/Handler/AMS/WMS/启动流程及Java后端全家桶Spring MyBatis Redis Oracle累计产出原创技术文章100篇文章以流程图为特色被读者评价为看一篇胜过啃一周源码导入语前面几篇文章我们把Agent的零件一个个造了出来ReAct循环、工具定义、安全控制。零散的知识点学完了是时候把它们组装成一台真正能跑的机器。这篇文章的目标一个能理解复合指令的私人助理。你说帮我看看明天北京天气如果下雨就把明天的户外跑步改成室内再写封邮件告诉教练它能自己拆解成三步、串起三个工具、给你一份完整的执行结果。1 ~ 整体架构Streamlit 聊天界面Agent 核心ReAct循环工具路由weather天气查询news新闻搜索email邮件起草calendar日程读写calculator通用计算结果串联生成最终回复1.1 项目结构assistant/ ├─ tools.py# 5个工具的实现├─ agent.py# ReAct Agent核心├─ app.py# Streamlit界面└─ requirements.txt2 ~ 五个工具的实现2.1 tools.pyimportrequests,json,datetime# ---------- 工具1天气查询 ----------defget_weather(city:str)-str:查询城市天气示例用wttr.in免费接口try:rrequests.get(fhttps://wttr.in/{city}?formatj1,timeout10)datar.json()todaydata[weather][0]desctoday[hourly][4][lang_zh][0][value]temptoday[avgtempC]raintoday[hourly][4][chanceofrain]returnf{city}明天天气{desc}平均气温{temp}℃降雨概率{rain}%exceptExceptionase:returnf天气查询失败{e}# ---------- 工具2新闻搜索 ----------defsearch_news(keyword:str)-str:搜索最新新闻示例用模拟数据可替换为Tavily/NewsAPI# 实际接入时替换为真实APIreturnf关于{keyword}的最新新闻\n1. [示例]相关新闻标题一\n2. [示例]相关新闻标题二# ---------- 工具3邮件起草 ----------defdraft_email(recipient:str,subject:str,body_hint:str)-str:起草邮件生成草稿不直接发送——安全第一return(f【邮件草稿】\n收件人{recipient}\n主题{subject}\nf正文草稿根据{body_hint}生成的邮件正文...\nf[草稿待人工确认后发送])# ---------- 工具4日程管理 ----------_schedule{}# 演示用内存存储生产换数据库defmanage_schedule(action:str,date:str,event:str)-str:日程增查改。action: add/list/updateifactionadd:_schedule.setdefault(date,[]).append(event)returnf已添加日程{date}-{event}elifactionlist:events_schedule.get(date,[])returnf{date}的日程{eventsifeventselse无安排}elifactionupdate:returnf{date}的日程已更新为{event}return不支持的日程操作# ---------- 工具5计算器 ----------defcalculator(expr:str)-str:try:returnstr(eval(expr,{__builtins__:{}}))exceptExceptionase:returnf计算错误{e}TOOLS{weather:get_weather,news:search_news,email:draft_email,calendar:manage_schedule,calculator:calculator,}TOOLS_DESC - weather[city]: 查询城市天气参数为城市名 - news[keyword]: 搜索新闻参数为关键词 - email[recipient|subject|hint]: 起草邮件参数用|分隔收件人|主题|内容要点 - calendar[action|date|event]: 日程管理action为add/list/update参数用|分隔 - calculator[expr]: 数学计算 注意邮件工具的设计只起草不发送。有真实副作用的操作留给人工确认这是第72篇安全原则的直接应用。2.2 agent.py多轮任务规划importrefromlangchain_openaiimportChatOpenAI REACT_PROMPT你是一个私人助理可以使用以下工具帮用户完成任务 {tools} 用户的一句话可能包含多个子任务比如查天气如果下雨就改日程。 请逐个处理严格按以下格式 Thought: 分析当前要做什么 Action: 工具名[参数] Observation: 工具返回结果不要编造 全部子任务完成后 Thought: 所有任务已完成 Final Answer: 给用户一份完整的、自然语言的总结包含所有子任务的结果 历史记录 {scratchpad} 用户请求{question} classAssistantAgent:def__init__(self,max_steps12):self.llmChatOpenAI(modelgpt-4,temperature0)self.max_stepsmax_stepsdefrun(self,question:str)-str:scratchpadfor_inrange(self.max_steps):respself.llm.invoke(REACT_PROMPT.format(toolsTOOLS_DESC,questionquestion,scratchpadscratchpad)).contentifFinal Answer:inresp:returnresp.split(Final Answer:)[-1].strip()mre.search(rAction:\s*(\w)\[(.*?)\],resp,re.DOTALL)ifnotm:scratchpadresp\ncontinuetool_name,raw_argsm.group(1),m.group(2).strip()args[a.strip()forainraw_args.split(|)]try:obsTOOLS[tool_name](*args)iftool_nameinTOOLS \elsef未知工具{tool_name}exceptTypeError:obsf工具{tool_name}参数格式错误scratchpadf{resp}\nObservation:{obs}\nreturn任务过于复杂超过最大执行步数复合指令如果下雨就改日程的执行轨迹Step1: Thought: 先查明天北京天气 → weather[北京]→ Observation: 明天小雨降雨概率85% Step2: Thought: 下雨概率很高需要把户外跑步改为室内 → calendar[update|2024-11-16|户外跑步→室内健身]→ Observation: 日程已更新 Step3: Thought: 最后起草邮件通知教练 → email[coachgym.com|训练调整|明天因雨改为室内训练]→ Observation: 邮件草稿已生成 Final Answer: 明天北京有小雨降雨概率85%已为您将...2.3 app.pyStreamlit界面importstreamlitasstfromagentimportAssistantAgent st.set_page_config(page_titleAI私人助理,page_icon)st.title( AI私人助理)ifmessagesnotinst.session_state:st.session_state.messages[]ifagentnotinst.session_state:st.session_state.agentAssistantAgent()# 渲染历史消息formsginst.session_state.messages:withst.chat_message(msg[role]):st.markdown(msg[content])# 处理新输入ifprompt:st.chat_input(试试查明天北京天气下雨就把跑步改室内):st.session_state.messages.append({role:user,content:prompt})withst.chat_message(user):st.markdown(prompt)withst.chat_message(assistant):withst.spinner(助理正在处理...):answerst.session_state.agent.run(prompt)st.markdown(answer)st.session_state.messages.append({role:assistant,content:answer})运行streamlit run app.py浏览器打开即是一个完整的聊天式助理。3 ~ 从这个实战中学到什么知识点来源篇章在实战中的应用ReAct循环第66篇agent.py的核心执行循环工具描述规范第67篇TOOLS_DESC的参数格式约定安全原则第72篇邮件只起草不发送熔断保护第72篇max_steps12界面搭建第44篇Streamlit会话管理思考 总结复合指令是私人助理的分水岭单一指令的Agent是工具调用器能拆解如果A就B的Agent才是助理。这依赖Prompt中明确要求逐个处理子任务。工具间的参数约定要统一本文用|分隔多参数比让LLM生成JSON更不容易出错——LLM对分隔符的遵循率远高于结构化输出。真实副作用操作留人工关卡邮件起草而非发送看似功能缩水实则是能上线和不能上线的分界线。Streamlit让Demo成本趋近于零不到50行代码就有一个能分享给别人试用的界面。这个项目骨架可以直接扩展把天气换成真实API、日程换成Google Calendar、邮件接上SMTP加确认环节——它就是一个能真正为你干活的助理。结尾各位小伙伴本文的内容到这里就全部结束了源码骑士在这里再次感谢您的阅读源码骑士 — Android Framework 全栈开发关注跟博主一起从源码视角深耕底层原理见证每一次成长❤️点赞让优质内容被更多人看见让知识传递更有力量⭐收藏把核心知识点存好在需要时随时查、随时用评论分享你的经验或疑问评论区一起交流避坑一键四连不要忘记给博主一键四连哦️寄语技术之路难免有困惑但同行的人会让前进更有方向结语Agent板块到这里收官。从ReAct到多Agent协作再到这个实战助理你已经掌握了2025年AI开发最热的技能树。下一板块我们进入大模型微调的世界——从用好模型到定制模型。不要忘记给博主一键四连哦
企业数字化 ERP 产品动态
相关推荐
OpenClaw工具链在macOS开发中的高效配置与优化 1. OpenClaw 工具链概述OpenClaw 是近年来在 macOS 生态中快速崛起的开发辅助工具集,其核心价值在于通过模块化设计整合了自动化脚本管理、跨平台工作流编排和智能代码片段生成三大功能。2026 年发布的 3.2 版本针对 Apple Silicon 架构进行了深度优化,实… · 2026/9/25 10:27:25
Detect-It-Easy终极指南:5大实战技巧快速识别文件指纹与恶意软件 Detect-It-Easy终极指南:5大实战技巧快速识别文件指纹与恶意软件 【免费下载链接】Detect-It-Easy Program for determining types of files for Windows, Linux and MacOS. 项目地址: https://gitcode.com/gh_mirrors/de/Detect-It-Easy
Detect-It-Easy&… · 2026/7/28 9:53:03
空洞骑士终极模组管理器Scarab:一键智能安装完整指南 空洞骑士终极模组管理器Scarab:一键智能安装完整指南 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab
Scarab是一款专为《空洞骑士》设计的跨平台模组管理器&… · 2026/9/8 4:16:56
园区共享健身设备监测:WiFi姿态传感器选型与落地实践 1. 从一台"没人管"的划船机说起:园区共享健身设备的真实困境去年秋天,我接手了一个挺有意思的项目:给一个科技园区的共享有氧健身区做设备状态监测。这个园区里有大约二十台设备,跑步机、椭圆机、划船机、动感单车都有&… · 2026/9/27 12:25:36
使用 xPack Clang 工具链编译 Picolibc (STM32F4 版) 使用 xPack Clang 工具链编译 Picolibc (STM32F4 版) 当前版本:v21.1.8-1 发布日期:2026-03-05 适用目标:STM32F4 (Cortex-M4, FPv4-SP-D16) Release 页面:https://github.com/xpack-dev-tools/clang-xpack/releases/tag/v21.1.8-… · 2026/9/27 12:25:36
DeepSeek-V5 成本效益突破:TaoToken 统一 Key 接入 AI 开发工作流 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 12:25:30
Claude CLI 配 TaoToken:settings.json 骨架与命令行 AI 辅助编程接入体验 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 12:25:30
用AI自动生成RS485/LoRa参数调试工具:完整流程复盘与避坑指南 最近在整理一套现场采集设备,RS485总线上挂了好几块传感器,旁边还有几个LoRa节点要配频率、扩频因子这类射频参数。以前这种活我都是临时写个Python脚本,改一个参数翻一遍代码,每次客户现场需求一变就头大。这周我干脆让Workbuddy… · 2026/9/27 12:25:24
智能感知技术入门:从传感器到模式识别的完整实践指南 1. 智能感知到底在解决什么问题1.1 从一个生活场景说起你家里有没有那种走廊灯?晚上走过去,灯自己亮了,过一会儿又自己灭了。你可能会说,这不就是声控灯嘛,拍个手就亮。但如果你仔细想想,声控灯其实挺笨的—… · 2026/9/27 12:25:24
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01