分类: AI学习

  • AI编程(三十五):导出报表 — 让分析结果”装订成册”交出去

    程序里算得再漂亮,print出来只是一屏黑底白字——老板要的是”能双击打开、能转发、能打印”的Excel文件。to_csv一行把表写成文件,to_excel加上列宽和加粗表头,ExcelWriter把好几个sheet分页装订——你的分析结果终于从”程序的输出”变成”能出门见人”的报表

    一、老板的”最后一公里”

    前几篇的剧情走到高潮:第31篇问总量,第32篇筛出”哪几行”,第33篇分组对比,第34篇把两张表拼成一张。你已经能回答老板的任何数据问题了。今天他把最后一个问题拍在桌上:

    “别在你那个黑窗口里比划了,把结果发我邮箱——要Excel。”

    你愣住了:结果确实在程序里算出来了,print出来是这样的:

    (更多…)

  • AI编程(三十四):数据合并 — 两张表”对上号”拼成一张

    “销售明细”只记了姓名和销售额,”员工档案”只记了姓名和部门——信息各记一半,老板却要”按部门看销售”。Excel里你用VLOOKUP一列一列往回搬,搬错一列全表错位。merge一行对上号拼成宽表,concat一行摞起来,”表和表的合体”从此不是DBA的专利

    一、老板的”第四轮追问”

    前几篇的剧情走到这里:第31篇问总量,第32篇问”哪几行”,第33篇问”分组对比”。老板满意了三天,今天把两张表拍在你桌上:

    “这是销售明细,这是员工档案。合到一起,我要按部门看销售。”

    你低头一看,两张表长这样:

    (更多…)

  • AI编程(三十三):数据分组统计 — 让数据自己”分班报数”

    “每个部门各卖了多少?””每人平均几单?””哪个区人均最高?”——这类分组对比问题,Excel的数据透视表要点七八下,还每次重来。groupby一行分班、一行报数,透视表在你手里重生

    一、老板的”第三轮追问”

    前两篇的剧情走到这里:老板问”总销售额多少”(第31篇,总量类),又问”华东过万的订单有哪些”(第32篇,筛选类)。这次他把茶杯一放,问出了第三类问题:

    “每个部门各卖了多少?做个对比。”

    注意这个问题的形状:不再是”全表一个数”,也不再是”哪几行”,而是“按部门分成几堆,每堆各算一个数”。Excel里你点”插入→数据透视表→把’部门’拖到行、’销售额’拖到值”,七八下鼠标,出一张对比表。老板看完点头,然后说:”再加一列订单数,再加一列平均单值。“——你又回到拖拽界面,再拖两次字段。

    (更多…)

  • AI编程(三十二):Excel筛选排序 — 一行代码筛出你想要的行

    八百行的表里找”华东区、销售额过万、三月份”的订单,Excel要三轮筛选加一次排序、点十几下鼠标。pandas一行条件、一行排序,两行代码拿下——而且换个问题只要换个条件,鼠标点过的活儿再也回不来了

    一、老板的”第二轮追问”

    上一篇结尾留了个话头:老板问完”总销售额、销售冠军、平均单值”,果然杀了个回马枪。这次的问题是:“华东区销售额过万的订单有哪些?按销售额从高到低排出来。”

    打开Excel你是这么干的:点”部门”列的筛选箭头→勾”华东”→点”销售额”列筛选→数字筛选→大于→10000→点”销售额”列头排序→降序。十几下鼠标,两分钟。这时候老板又补了一句:”那三月份的呢?””那华南区的呢?”——每换一个条件,前面的鼠标全重点一遍。

    上一篇我们把数据读进了程序(忘了的话回看第31篇:df = pd.read_excel("销售明细.xlsx"),df是一张住在程序里的超级表格)。数据在程序里,”筛选”和”排序”就变成了写条件,而不是点鼠标:

    (更多…)

  • AI编程(三十一):Excel读取 — 让pandas把整张表一口吞下

    表格里躺着八百行数据,用眼睛看看到眼花。今天请来数据分析界的”重型吊车”——pandas,一行代码把整张Excel读进程序,列名直接当标签用,求和、平均、找最大值都不用写循环

    一、老板的三个问题

    先说一个你迟早会遇到的场景。

    周五下午五点五十,老板在群里甩过来一个销售明细.xlsx:”帮我看看,今年总销售额多少?谁卖得最多?平均一单多少钱?快点,六点开会要用。”

    你打开文件——八百行,十七列。你点进”销售额”这一列,Excel左下角状态栏显示求和;再排序找最大值对应的销售名;再用AVERAGE算平均。三个问题,三轮操作,五分钟。刚喘口气,老板又来了:”那按月看看呢?华东区单独算呢?”——每多一个问题,就是一轮手动操作。

    (更多…)

  • AI编程(三十):批量文件处理 — 让程序当你的文件收纳师

    电脑里躺着几十个”报告1.csv、最终版.csv、最终版2.csv”,一个一个点开改要一下午。今天学两个新朋友——glob负责”找到所有文件”,os负责”动文件”,从此一句话收拾整个文件夹

    一、一个文件夹引发的惨案

    先说一个真实到让人想哭的场景。

    月底报销,财务说:”把发票扫描件都按’日期_金额’格式重命名,不规范的不收。”你打开文件夹一看——IMG_2041.jpg、IMG_2042.jpg、微信图片_20260930.png、新建文件夹、新建文件夹(2)……一百三十七个文件。你咬咬牙开始一个个改名,改到第二十个,把IMG_2051改成了IMG_2050的名字,覆盖了,找不回来了。

    再比如:二十个分店各交来一份销售.csv,你得逐个打开、加上”分店”这一列、再合成总表。或者:把整个文件夹的.txt笔记全部转成.md;把照片/下所有超过5MB的图片挑出来……

    (更多…)

  • 19. Vercel AI SDK

    版本: AI SDK v7.0.99 | 许可证: Apache-2.0 | 仓库: vercel/ai

    分析日期: 2026-09-13

    概述

    Vercel AI SDK 是由 Next.js 团队打造的 Provider 无关的 TypeScript AI 工具包,提供统一 API 对接 OpenAI、Anthropic、Google 等 25+ 模型提供商。其核心设计理念是三层抽象:Core 层(generateText/streamText)、Provider 层(统一语言模型规范)、UI 层(框架无关的 React/Svelte/Vue hooks)。本文从 10 个维度深入剖析其架构设计。


    1. 统一 Provider 架构

    AI SDK 的核心创新是定义了一套 Language Model Specification(语言模型规范),所有 Provider 必须实现该规范接口。通过 @ai-sdk/provider 包发布规范,@ai-sdk/provider-utils 提供工具函数,各 Provider 包(如 @ai-sdk/openai)实现具体适配。

    // packages/ai/src/model/resolve-model.ts
    // 模型解析:字符串 → Provider 实例 → LanguageModel
    import type { LanguageModel } from '../types';
    
    // 支持两种使用方式:
    // 1. 字符串形式:model: 'openai/gpt-5.4'(通过 Vercel AI Gateway)
    // 2. Provider 实例:model: openai('gpt-5.4')(直连 Provider)
    export function resolveLanguageModel(model: LanguageModel | string): LanguageModel {
      // 字符串通过 Gateway 路由,对象直接使用
    }

    架构意义:开发者可以一行代码切换 Provider,无需修改业务逻辑。Gateway 模式更是将 Provider 选择从代码层提升到配置层。

    (更多…)

  • AI编程(二十九):数据清洗入门 — 给”脏”数据洗个澡,才能下锅

    真实世界的数据从来不干净:空格、错格式、缺胳膊少腿的行混在一起。今天学两招——字符串处理和条件筛选,把脏数据洗成能用的数据

    一、一份”看着没问题”的表格,坑有多深

    先说一个你八成遇到过的场景。

    朋友发来一份”聚餐报名表.csv”,说:”帮我算算一共来多少人,按男女分个组。”你打开一看,十几行,有姓名、性别、手机号,挺整齐的嘛。结果一算——人数比实际多了3个;按性别分组,分出来四组:”男”、”男 “(带空格)、”女”、”M”。手机号更离谱,有的带横杠,有的带”+86″,还有人写了”没手机”。

    你找朋友对质,朋友说:”我就是让大家自己填的啊。”

    (更多…)

  • 18.MetaGPT架构深度分析

    项目: geekan/MetaGPT — 57.4k Stars

    定位: 多智能体协作框架,模拟软件公司 SOP(标准操作流程)

    核心理念: Code = SOP(Team) — 将 SOP 物化并应用于 LLM 组成的团队

    源码版本: main 分支 (2025)


    1. 设计哲学:SOP 驱动的多智能体

    MetaGPT 的核心设计哲学是将软件公司的标准操作流程(SOP)形式化,让 LLM 角色像真实团队一样协作。一行需求输入,产出用户故事、竞品分析、需求文档、数据结构、API 设计等完整软件交付物。

    # team.py - Team 类的核心定位
    class Team(BaseModel):
        """
        Team: Possesses one or more roles (agents), SOP (Standard Operating Procedures),
        and a env for instant messaging, dedicated to env any multi-agent activity,
        such as collaboratively writing executable code.
        """
        env: Optional[Environment] = None
        investment: float = Field(default=10.0)
        idea: str = Field(default="")
        use_mgx: bool = Field(default=True)

    团队拥有环境(Environment)、投资预算(investment)、以及可选的 MGX 增强模式。这体现了”软件公司”隐喻——有预算约束、有组织架构、有协作环境。


    2. 角色系统(Role):智能体的核心抽象

    Role 是 MetaGPT 最核心的抽象,每个角色拥有独立的身份(profile)、目标(goal)、约束(constraints)、动作列表(actions)、记忆系统(memory)和运行时上下文(RoleContext)。

    (更多…)

  • AI编程(二十八):配置文件管理 — 改设置不动代码,程序才像个”正经软件”

    为什么专业程序的设置都放在单独的文件里?今天你做出第一个”改配置不改代码”的程序

    一、一个改到崩溃的真实场景

    先讲一个你大概率亲历过的惨案。

    假设你(或者AI)写了一个”每日打卡提醒程序”,里面写着提醒时间是早上8点。用了一周,你想改成7点半——于是你打开代码,找到那行提醒时间 = "08:00",改成"07:30",保存,重新运行。

    又过了两周,你想改提醒语;再过一周,你想把打卡记录存到另一个文件夹……每次改动都得:打开代码 → 全文搜索找到那行 → 改 → 提心吊胆别改错别的地方 → 保存重跑。

    (更多…)