作为一名持续学习者,无论是啃专业书籍还是刷线上课程,“记笔记” 这件事总让我又爱又恨。爱它能帮我巩固知识,恨它总打断学习节奏,还常常因为总结不到位留下隐患。直到我尝试用 AI 大语言模型解决这个问题,才真正摆脱了传统笔记的困境。这篇博客会先聊聊学习笔记的痛点,再给出第一个实战代码案例(基于 DashScope SDK 调用通义千问),帮你迈出 AI 辅助学习的第一步。

一、为什么传统记笔记让我们疲惫?

先说说我的亲身经历吧。前段时间我读《数据分析实战:从入门到精通》,为了记笔记,经常看到一半就得停下来:要么在书本空白处写要点,写着写着就没地方了;要么打开 Word 逐段概括,一篇 20 页的章节要花 1 个多小时,等记完笔记,之前理解的知识点又忘了一半。

更麻烦的是后期复习。传统笔记要么是零散的要点,要么是大段的文字,没有清晰的逻辑结构。比如讲到 “数据清洗” 时,我记了 “缺失值处理方法”“异常值检测技巧”,但没写这些方法之间的适用场景差异,复习时还要重新翻书梳理,效率特别低。

相信很多人都有类似的困扰:边学习边记笔记,打断专注度;手动总结易遗漏重点,缺乏系统性;复习时找不到知识关联,回顾效率低。这时候,AI 大语言模型(如通义千问)就能帮我们解决这些问题。

二、AI 生成学习笔记的核心逻辑

用通义千问这类 AI 工具生成学习笔记,核心不是让 AI “替我们学习”,而是让 AI “帮我们整理知识”。具体来说,操作逻辑分三步:

  1. 提取核心信息:我们先快速浏览学习内容(比如书籍目录、章节重点、课程 PPT 要点),把关键框架和核心观点提炼出来(不用写得很详细,比如 “第 3 章 数据清洗:缺失值处理、异常值检测、重复值删除”)。
  2. 给 AI 明确指令:把提炼的信息和需求告诉 AI,比如 “基于这些内容,生成一份学习笔记,要求包含每个知识点的定义、方法、适用场景,还要举 1 个简单例子”。
  3. 调整补充优化:AI 生成笔记后,我们再根据自己的理解补充细节(比如自己在学习中遇到的疑问)、修正偏差(比如 AI 举例不准确的地方),形成最终的个性化笔记。

这种方式的优势很明显:既能保持学习时的专注度(不用边学边记),又能让笔记结构清晰、重点突出,还能通过 AI 举例加深理解。接下来,我们就用代码实现第一步:通过 DashScope SDK 调用通义千问,基于书籍目录和章节重点生成初步学习笔记。

三、实战代码:通过 DashScope SDK 调用通义千问生成学习笔记(基础版)

DashScope(灵积)是阿里云推出的大模型开发平台,通过其 Python SDK 能更便捷地调用通义千问系列模型,且支持免费额度,对个人学习者非常友好。要实现功能,需准备两样东西:一是阿里云账号及 DashScope API 密钥(新用户可免费申请);二是 Python 环境(建议用 Python 3.8 及以上版本)。

3.1 环境准备

首先,完成 DashScope API 密钥的获取:

  1. 登录阿里云官网(阿里云-计算,为了无法计算的价值),进入 “DashScope 灵积平台”(模型服务灵积 DashScope - 阿里云);
  2. 完成实名认证后,在平台控制台的 “API 密钥” 模块,创建并获取你的 API 密钥(即 “API-KEY”),务必妥善保存,避免泄露给他人。

然后安装 DashScope Python SDK,打开终端(Windows 系统打开命令提示符,Mac/Linux 系统打开终端),输入以下命令并回车:

pip install dashscope -U

“-U” 参数能确保安装最新版本的 SDK,避免因版本过旧导致调用异常。

3.2 基础代码实现

下面的代码会实现一个完整功能:输入书籍的基本信息(书名、目录、章节重点),通过 DashScope SDK 调用通义千问,生成符合结构化要求的学习笔记。

# 导入DashScope相关模块
import dashscope
from dashscope import Generation

# 1. 配置DashScope API密钥(替换成你的API-KEY)
def init_dashscope(api_key: str):
    """初始化DashScope,设置API密钥"""
    dashscope.api_key = api_key
    print("DashScope初始化完成,已配置API密钥")

# 2. 定义学习内容的核心信息(以《数据分析实战:从入门到精通》为例)
book_info = {
    "book_name": "数据分析实战:从入门到精通",
    "catalog": [
        "第1章 数据分析基础:数据分析定义、流程、常用工具(Python、SQL)",
        "第2章 数据采集:数据源类型(结构化、非结构化)、采集工具(Requests、Scrapy)",
        "第3章 数据清洗:缺失值处理(删除法、填充法)、异常值检测(箱线图、Z-score)、重复值删除"
    ],
    "chapter_highlights": [
        "第1章重点:数据分析流程包括明确目标→数据采集→数据清洗→数据分析→可视化→结论输出;常用工具中Python适合数据处理和建模,SQL适合数据查询。",
        "第2章重点:结构化数据来源包括数据库、Excel,非结构化数据包括网页、文本;Requests适合简单网页数据采集,Scrapy适合复杂爬虫项目。",
        "第3章重点:缺失值填充法分为均值填充(适合正态分布数据)、中位数填充(适合偏态分布数据)、众数填充(适合分类数据);异常值检测中Z-score法适合正态分布数据,箱线图法对异常值不敏感。"
    ]
}

# 3. 构造给通义千问的指令(Prompt)
def build_prompt(book_info: dict) -> str:
    """根据书籍信息构建结构化Prompt"""
    catalog_str = ", ".join(book_info["catalog"])
    highlights_str = ", ".join(book_info["chapter_highlights"])
    
    prompt = f"""
请基于以下书籍信息,为我生成一份结构化的学习笔记:

1. 书籍名称:{book_info['book_name']}
2. 书籍目录:{catalog_str}
3. 章节重点:{highlights_str}

笔记必须满足以下要求:
- 严格分章节整理,每个章节下必须包含“核心概念”“关键方法”“适用场景”三个固定部分,不允许遗漏;
- 每个关键方法后面必须附带1个简单易懂的实际例子(例如:数据清洗方法举例需说明“当处理学生考试成绩(正态分布数据)时,用均值填充缺失值”);
- 语言风格简洁明了,避免使用过于复杂的专业术语,若涉及术语需用通俗语言简要解释,适合复习时快速理解和回顾。
"""
    return prompt

# 4. 调用通义千问生成学习笔记
def generate_study_notes(api_key: str, prompt: str) -> str:
    """通过DashScope调用通义千问生成学习笔记"""
    try:
        # 初始化DashScope
        init_dashscope(api_key)
        
        # 配置生成参数并发送请求
        response = Generation.call(
            model=Generation.Models.qwen_turbo,  # 选用qwen-turbo模型,免费额度充足、响应快
            prompt=prompt,
            temperature=0.3,  # 控制随机性:0-1区间,0.3确保内容稳定准确,避免偏离知识点
            max_tokens=1500,  # 控制生成长度:1500 tokens约对应500-600汉字,覆盖3个章节核心内容
            top_p=0.9,  # 控制生成内容的多样性,0.9兼顾准确性和丰富度
            result_format="text"  # 输出格式为纯文本,方便直接打印和后续编辑
        )
        
        # 解析响应结果
        if response.status_code == 200 and response.output is not None:
            return response.output["text"]
        else:
            return f"生成失败:{response.message}(错误码:{response.status_code})"
    except Exception as e:
        # 捕获常见异常(如API密钥错误、网络中断、额度不足等)
        return f"生成笔记时出现异常:{str(e)}"

# 5. 执行函数并打印最终笔记
if __name__ == "__main__":
    # 替换为你的DashScope API密钥
    YOUR_DASHSCOPE_API_KEY = "your-dashscope-api-key-here"
    
    # 构建Prompt
    prompt = build_prompt(book_info)
    
    # 生成并打印笔记
    study_notes = generate_study_notes(YOUR_DASHSCOPE_API_KEY, prompt)
    print("="*60)
    print(f"《{book_info['book_name']}》学习笔记(通义千问-基于DashScope生成)")
    print("="*60)
    print(study_notes)

3.3 代码说明

  1. DashScope 初始化:通过init_dashscope函数设置 API 密钥,这是调用通义千问的前提。需要注意的是,API 密钥是个人重要信息,若在公共环境(如共享代码库)使用,建议通过环境变量(如os.getenv("DASHSCOPE_API_KEY"))获取,避免直接硬编码。
  2. 学习内容定义:book_info字典保持了清晰的结构,包含书籍名称、目录和章节重点。当前需要手动提炼这些信息,后续博客会教大家通过 Python 自动提取 PDF 书籍 / PPT 的目录和重点,彻底省去手动输入的步骤。
  3. Prompt 构建:build_prompt函数将零散的书籍信息整合成结构化指令,明确要求 AI 按 “分章节 + 三部分内容” 生成笔记,且必须附带例子。这种 “明确要求 + 约束条件” 的 Prompt 设计,能让通义千问更精准地理解需求,避免生成不符合预期的内容。
  4. 核心调用参数
    • model=Generation.Models.qwen_turbo:选用通义千问的 “qwen-turbo” 模型,该模型是 DashScope 平台的基础模型,免费额度充足(新用户可获得 100 万 tokens 免费额度),响应速度快(通常 1-3 秒出结果),完全能满足学习笔记生成的需求;
    • temperature=0.3:取值范围 0-1,数值越低,生成内容越稳定、准确。设置为 0.3 能有效避免 AI 生成偏离知识点的冗余信息,确保笔记重点突出;
    • max_tokens=1500:限制生成内容的最大长度,1500 tokens 约等于 500-600 个汉字,既能完整覆盖 3 个章节的核心内容,又不会因内容过长导致阅读和编辑负担;
    • result_format="text":指定输出格式为纯文本,方便后续直接打印、保存为文档或进行二次编辑。

3.4 运行结果示例

将代码中的YOUR_DASHSCOPE_API_KEY替换为你的实际 API 密钥,运行代码后,会得到类似以下的输出(截取部分内容):


DashScope初始化完成,已配置API密钥

============================================================

《数据分析实战:从入门到精通》学习笔记(通义千问-基于DashScope生成)

============================================================

# 第1章 数据分析基础

## 一、核心概念

数据分析:指从明确业务目标开始,通过收集相关数据、清洗无用/错误数据、用专业方法分析数据,再将结果可视化展示,最终输出有价值结论的完整过程,简单说就是“从数据中找答案”的过程。

## 二、关键方法

1. 数据分析流程

- 步骤:明确目标→数据采集→数据清洗→数据分析→可视化→结论输出

- 例子:某便利店想提升晚间(18:00-22:00)销售额,先明确“提升晚间销售额”的目标;再采集近1个月晚间的销售数据(包括商品销量、客单价、顾客性别/年龄);接着清洗数据中“商品名称缺失”“销量为负数”的异常数据;然后分析哪些商品在晚间销量高、哪些顾客群体消费多;用折线图展示晚间各时段销量变化,用饼图展示热销商品占比;最后得出“晚间增加零食、饮料备货,对20-35岁顾客推出满减活动”的结论。

2. 常用工具

- Python:适合数据处理(比如用Pandas库整理表格数据)和建模(比如用Scikit-learn库做销量预测)

- 例子:用Pandas的`pd.read_csv()`函数读取便利店晚间销售的CSV数据,用Scikit-learn的`LinearRegression()`模型预测未来一周晚间的销售额。

- SQL:适合从数据库中快速找出需要的数据(比如特定时间段、特定商品的数据)

- 例子:用SQL语句“SELECT product_name, sales_count FROM evening_sales WHERE sales_time BETWEEN '2024-07-01 18:00' AND '2024-07-31 22:00'”,查询2024年7月晚间各商品的销量。

## 三、适用场景

- Python:适用于需要处理大量数据(比如几万条销售记录)、做复杂分析(比如预测未来销量)的场景;

- SQL:适用于从数据库中快速筛选数据(比如找某一周晚间销量前10的商品)的场景。

# 第2章 数据采集

## 一、核心概念

数据采集:指从不同来源获取所需数据的过程,简单说就是“把需要的数据找过来”,是数据分析的第一步,数据质量直接影响后续分析结果。

## 二、关键方法

1. 数据源分类及获取

- 结构化数据:指格式整齐、有固定结构的数据(比如数据库表、Excel表格),来源包括企业数据库、公开Excel数据集;获取方式:从数据库用SQL查询,从Excel直接读取。

- 例子:从便利店的销售数据库中,用SQL查询获取“2024年7月所有商品的销售记录”(结构化数据);从统计局官网下载“某城市月度消费水平Excel表”(结构化数据)。

- 非结构化数据:指格式不固定、没有统一结构的数据(比如网页内容、微信文章、图片中的文字),来源包括网页、社交媒体、文档;获取方式:用爬虫工具采集网页内容,用OCR工具识别图片中的文字。

- 例子:用Requests工具采集某电商平台“便利店商品评价”的网页内容(非结构化数据);用OCR工具识别便利店纸质销售单据上的商品名称和销量(非结构化数据转结构化)。

2. 常用采集工具

- Requests:适合采集简单网页的数据(比如只有静态内容的网页),操作简单,不需要复杂配置。

- 例子:用Requests库发送请求到某便利店品牌官网,获取“门店分布”页面的文字内容,提取各门店地址信息。

- Scrapy:适合采集复杂网页的数据(比如需要登录、有动态内容的网页),支持批量采集,效率高。

- 例子:用Scrapy框架搭建爬虫,采集某电商平台上“便利店商品”的价格、销量、评价数,批量保存到本地表格中。

## 三、适用场景

- Requests:适用于采集少量、简单的静态网页数据(比如个人学习时采集某篇文章的内容);

- Scrapy:适用于采集大量、复杂的网页数据(比如需要获取某平台上千个商品的信息)。

# 第3章 数据清洗

...(后续内容省略)

从结果能明显看到,通义千问生成的笔记完全符合我们的要求:章节划分清晰,每个章节都包含 “核心概念”“关键方法”“适用场景”,且每个方法都附带了贴近生活的例子,语言通俗易懂。后续我们只需补充自己的学习疑问(比如 “用 Scrapy 采集数据时如何应对网站反爬?”),或修正 AI 举例中的小偏差,就能快速形成一份高质量的个性化学习笔记。

四、下一篇预告

这篇博客我们实现了 “基于手动提炼的信息生成笔记” 的基础功能,但还有两个关键问题需要解决:一是如何自动提取 PDF 书籍 / 课程 PPT 中的目录和重点(不用手动输入book_info,彻底解放双手);二是如何让生成的笔记更贴合个人学习水平(比如新手需要更基础的术语解释,进阶学习者需要方法对比和实战技巧)。

下一篇博客,我会教大家用 Python 的PyPDF2或pdfplumber库提取 PDF 文件内容,实现 “上传 PDF→自动提炼目录和重点→生成笔记” 的全自动化流程;同时会优化 Prompt 设计,加入 “学习水平” 参数,让通义千问能根据你的基础生成适配的笔记内容。敬请期待!

Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐