首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用Python给自己搭了个私人AI助手,每天省下1小时

用Python给自己搭了个私人AI助手,每天省下1小时

作者头像
用户11081884
发布2026-07-20 20:36:29
发布2026-07-20 20:36:29
440
举报

你的一天是不是也这样被“切碎”?早上,花20分钟在几十封邮件里找重要通知;下午,花半小时手动把几个文档合并、总结;临下班,还要惦记着给几个平台同步发内容。这些琐事加起来,每天偷走你1-2小时,却毫无成就感。

ChatGPT很好用,但每次都要打开网页、描述上下文、等它生成,对于一些固定流程的任务,效率并不极致。直到上个月,我决定不再忍受——我要造一个专属的、能自动执行这些任务的“数字员工”

用Python和一些开源库,我搭建了一个7x24小时待命的私人AI助手。现在,它每天帮我自动处理邮件、整理文档、生成日报,甚至监控信息,硬生生从碎片时间里“抠”出了每天近1小时

核心思想:与其重复劳动,不如写个Agent,让它替你劳动。



场景一:邮件“智能管家”——自动分类、摘要与待办提取

痛点: 每天早上一打开邮箱,几十封未读邮件扑面而来。工作邮件、订阅通知、垃圾推广混在一起,手动筛选、阅读、标记,至少20分钟就没了。

AI助手方案:我用 imaplib 读取邮件,结合大模型API(如DeepSeek、Kimi),写了一个自动邮件处理Agent。

代码语言:javascript
复制
import imaplib
import email
from openai import OpenAI # 以OpenAI为例,实际可用国内API
import json

client = OpenAI(api_key="你的API密钥")

def process_unread_emails():
    # 1. 连接邮箱
    mail = imaplib.IMAP4_SSL('imap.qq.com')
    mail.login('你的邮箱', '你的授权码')
    mail.select('inbox')

    # 2. 获取未读邮件
    status, messages = mail.search(None, 'UNSEEN')
    email_ids = messages[0].split()

    for e_id in email_ids:
        # 3. 获取邮件内容
        status, msg_data = mail.fetch(e_id, '(RFC822)')
        email_body = msg_data[0][1]
        email_message = email.message_from_bytes(email_body)

        sender = email_message['From']
        subject = email_message['Subject']
        # 提取正文(简化处理)
        body = ""
        if email_message.is_multipart():
            for part in email_message.walk():
                if part.get_content_type() == "text/plain":
                    body = part.get_payload(decode=True).decode()
                    break
        else:
            body = email_message.get_payload(decode=True).decode()

        # 4. 调用大模型分析邮件
        prompt = f"""
        你是一个邮件助理。请分析以下邮件,并严格按JSON格式返回:
        1. 分类:['紧急工作', '一般工作', '通知订阅', '垃圾推广']
        2. 核心内容摘要(不超过50字)
        3. 是否需要我行动(是/否),如果需要,提取具体待办事项。

        邮件发件人:{sender}
        邮件主题:{subject}
        邮件正文:{body}
        """
        try:
            response = client.chat.completions.create(
                model="gpt-4o-mini", # 可根据成本选择模型
                messages=[{"role": "user", "content": prompt}],
                response_format={ "type": "json_object" }
            )
            analysis = json.loads(response.choices[0].message.content)

            # 5. 根据分类执行操作
            category = analysis.get('分类')
            summary = analysis.get('核心内容摘要')
            todo = analysis.get('待办事项')

            if category == '紧急工作':
                print(f"[紧急] {subject} - {summary}")
                # 可以自动转发到飞书/钉钉,或添加到待办列表
                add_to_todo_list(subject, todo)
            elif category == '一般工作':
                print(f"[一般] {subject} - {summary}")
                # 标记为稍后处理
                mail.store(e_id, '+FLAGS', '\\Flagged')
            elif category == '垃圾推广':
                # 自动移动到垃圾箱或删除
                mail.store(e_id, '+FLAGS', '\\Deleted')
                print(f"已删除垃圾邮件:{subject}")

        except Exception as e:
            print(f"处理邮件出错:{e}")
        mail.expunge()
    mail.logout()

# 用系统定时任务(crontab)或 schedule 库,每30分钟运行一次

效果: 现在,我每天早上打开电脑,已经有一份由AI整理好的《邮件速览》等着我,紧急事项已加入待办,垃圾邮件自动清理。每天省时:约25分钟。


场景二:文档“自动摘要师”——合并、总结与要点提取

痛点: 每周都要从不同渠道(钉钉文档、Confluence、本地Word)收集项目进展,手动复制粘贴,整理成一份周报,耗时又无聊。

AI助手方案:我用 python-docx 或直接读Markdown,结合大模型的总结能力,写了一个文档处理Agent。

代码语言:javascript
复制
import os
from openai import OpenAI
import markdown # 用于处理md文件

client = OpenAI(api_key="你的API密钥")

def auto_summarize_documents(folder_path):
    all_content = ""
    # 1. 遍历文件夹,读取所有文本文件
    for filename in os.listdir(folder_path):
        if filename.endswith('.md') or filename.endswith('.txt'):
            filepath = os.path.join(folder_path, filename)
            with open(filepath, 'r', encoding='utf-8') as f:
                content = f.read()
                all_content += f"\n--- 文档:{filename} ---\n{content}\n"
        # 可以扩展支持 .docx, .pdf 等

    if not all_content:
        print("文件夹内没有文本文件。")
        return

    # 2. 调用大模型进行总结
    prompt = f"""
    你是一个专业的项目助理。以下是本周多个渠道的零散项目更新内容。
    请帮我:
    1. 提取所有项目的关键进展和里程碑。
    2. 识别出存在的风险或阻塞点。
    3. 生成一份结构清晰的【本周项目进展汇总】,包含:项目名称、本周完成、下周计划、风险提示。
    请直接输出汇总报告,不要额外解释。

    原始内容:
    {all_content[:15000]} # 防止超出token限制
    """
    try:
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[{"role": "user", "content": prompt}],
            temperature=0.2 # 降低随机性,让总结更稳定
        )
        summary = response.choices[0].message.content

        # 3. 保存总结报告
        with open('本周项目进展汇总.md', 'w', encoding='utf-8') as f:
            f.write(summary)
        print("本周项目进展汇总已生成!")
        return summary
    except Exception as e:
        print(f"总结文档时出错:{e}")

# 可以设定每周五下午5点自动运行

效果: 周五下午,脚本自动运行,将我散落在各处的文档“吸”到一起,生成一份条理清晰的汇总报告。我只需要花5分钟润色即可。每周省时:约1.5小时(平摊到每天约15分钟)。


场景三:信息“监控哨兵”——自动追踪与告警

痛点: 需要关注竞品动态、行业新闻或特定关键词,手动刷网页效率低,还容易错过。

AI助手方案:我用 requestsBeautifulSoup 抓取网页,或用RSS,结合大模型判断相关性并生成简报。

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup
from openai import OpenAI
import time

client = OpenAI(api_key="你的API密钥")
KEYWORDS = ['你的公司名', '竞品A', '行业关键词']

def monitor_news(urls):
    news_items = []
    for url in urls:
        try:
            resp = requests.get(url, timeout=10)
            soup = BeautifulSoup(resp.text, 'html.parser')
            # 假设新闻标题在 <h2 class='news-title'> 里,需根据实际网站调整
            titles = soup.find_all('h2', class_='news-title')
            for title_tag in titles[:5]: # 只看最新5条
                title = title_tag.get_text().strip()
                link = title_tag.find('a')['href'] if title_tag.find('a') else url
                # 简单关键词过滤
                if any(keyword.lower() in title.lower() for keyword in KEYWORDS):
                    news_items.append({'title': title, 'link': link})
        except Exception as e:
            print(f"抓取 {url} 失败:{e}")

    if news_items:
        # 让AI判断重要性并生成简报
        prompt = f"""
        以下是今天抓取到的可能与公司相关的新闻标题。
        请判断每条新闻的相关性和潜在影响(高/中/低),并生成一份不超过200字的监控简报。

        新闻列表:
        {str(news_items)}
        """
        try:
            response = client.chat.completions.create(
                model="gpt-4o-mini",
                messages=[{"role": "user", "content": prompt}]
            )
            briefing = response.choices[0].message.content
            # 发送到企业微信/钉钉/webhook
            send_notification(f"📰 每日信息简报\n{briefing}")
            print("监控简报已发送。")
        except Exception as e:
            print(f"生成简报出错:{e}")
    else:
        print("今日未发现相关新闻。")

# 设定每天上午10点运行

效果: 我不用再主动搜索,每天上午会自动收到一份简洁的监控简报,告诉我外界发生了什么与我相关的事。每天省时:约15分钟(从主动搜寻变为被动接收)。


怎么搭起来的?(给非专业开发者的路径)

如果你也心动了,但担心技术门槛,我的路径也许能帮你:

  1. 先选一个最痛的场景:别想着一口吃成胖子。从邮件分类文档总结这种输入输出明确的任务开始,成功一次,信心就来了。
  2. 善用“胶水”库和API:你不需要从头造轮子。
    • 处理本地文件:用 os, shutil, python-docx, pandas
    • 处理网络:用 requests, BeautifulSoup, selenium(对付复杂网页)。
    • 调用AI大脑:注册一个国内大模型平台(如DeepSeek、Kimi、通义千问),获取API Key,用它们的官方Python SDK或 openai 库(改个base_url)即可调用。
  3. 学会让脚本“自启动”:写好脚本不是终点。在Mac/Linux上用 crontab,在Windows上用“任务计划程序”,或者用Python的 schedule 库,让你的助手在后台定时运行。
  4. 从“半自动”到“全自动”:一开始可以设计成“AI分析,我确认”,比如邮件分类后你检查一下再让AI执行移动。运行稳定后,再逐步放开权限,实现全自动。
  5. 安全第一:API密钥、邮箱密码等敏感信息,千万不要硬编码在脚本里!用环境变量(.env文件+python-dotenv库)或系统密钥环来管理。

更进阶一步:用LangChain打造“真·Agent”

上面的脚本还是“脚本”,每个功能是独立的。如果你想打造一个能理解复杂指令、自主规划步骤、调用不同工具的真正Agent,可以上 LangChainSemantic Kernel 这类框架。

例如,你可以用LangChain定义一个Agent,它拥有多个“工具”(Tool):读取邮件工具总结文档工具搜索网页工具。当你对它说:“帮我看看今天有没有重要邮件,然后总结一下上周的项目文档”,它会自己规划:先调用邮件工具,再调用文档工具,最后把结果组织好给你。

“无他,惟手熟尔”!有需要的用起来!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景一:邮件“智能管家”——自动分类、摘要与待办提取
  • 场景二:文档“自动摘要师”——合并、总结与要点提取
  • 场景三:信息“监控哨兵”——自动追踪与告警
  • 怎么搭起来的?(给非专业开发者的路径)
  • 更进阶一步:用LangChain打造“真·Agent”
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档