Zing 论坛

正文

AnkiGen.LLM:利用大语言模型自动将任何内容转换为结构化Anki记忆卡片

AnkiGen.LLM 是一个完整的 AnkiConnect API v6 Python 封装库,提供了一套高内聚、低耦合的面向对象自动化工具链,专为将LLM输出可靠地转换为Anki卡片而设计。

AnkiLLM记忆卡片间隔重复知识管理自动化工具PydanticPython语言学习
发布时间 2026/05/13 11:00最近活动 2026/05/30 20:22预计阅读 3 分钟
AnkiGen.LLM:利用大语言模型自动将任何内容转换为结构化Anki记忆卡片
1

章节 01

导读 / 主楼:AnkiGen.LLM:利用大语言模型自动将任何内容转换为结构化Anki记忆卡片

AnkiGen.LLM 是一个完整的 AnkiConnect API v6 Python 封装库,提供了一套高内聚、低耦合的面向对象自动化工具链,专为将LLM输出可靠地转换为Anki卡片而设计。

2

章节 02

原作者与来源


3

章节 03

项目概述

AnkiGen.LLM 是一个完整的 AnkiConnect API v6 Python 封装库,提供牌组、笔记、卡片、媒体、模型管理的 CRUD 操作。它不仅仅是一个API封装,更是一套高内聚、低耦合的面向对象自动化工具链,专为"将大语言模型输出可靠地转换为 Anki 记忆卡片"而设计。

该项目采用强严格类型校验与 Pydantic 控制,确保从LLM生成的内容能够准确、可靠地导入到Anki中,解决了传统手动制卡效率低下和格式不一致的问题。


4

章节 04

整体架构设计

系统采用分层架构,通过HTTP POST与AnkiConnect插件通信:

Python应用程序 → HTTP POST → AnkiConnect插件(端口8765) → Anki数据库

配置通过.env文件管理,包括主机地址、端口和API密钥等连接参数。

5

章节 05

核心组件

config_manager.py

读取.env文件并配置pydantic-settings与全局日志,为整个工具链提供统一的配置管理。

llm_client.py

封装异步AsyncOpenAI客户端,负责向兼容OpenAI格式的LLM(如Gemini)发送请求,并强制约束JSON返回格式,确保输出结构符合预期。

anki_model_manager.py

扫描./anki_models/目录中的JSON Schema文件作为LLM Response Format,并封装AnkiConnect的Action,利用httpx异步发送请求。这是连接LLM输出与Anki卡片的关键桥梁。

main_workflow.py

提供给终端用户的自动化入口点,协调各组件完成从文本到卡片的完整转换流程。


6

章节 06

标准执行流程

  1. 配置加载: 从环境变量读取API Key、URLs等配置
  2. 模型Schema获取: 从anki_models/目录加载指定的JSON Schema文件
  3. LLM结构化数据生成: 使用response_format强制LLM输出JSON格式的结构化数据
  4. Anki Action创建: 基于结构化数据创建添加笔记的Action
  5. 异步提交: 通过HTTP POST异步发送到AnConnect服务器
  6. 结果返回: 获取并返回新生成的笔记ID
7

章节 07

错误处理机制

系统实现了完善的错误处理:

  • 成功时返回操作结果
  • 失败时抛出AnkiConnectError异常
  • 包含详细的错误信息便于调试

8

章节 08

TOEIC_Coach 模型示例

项目自带一个复杂的TOEIC_Coach卡片模型定义,展示了如何针对大语言模型特性优化Anki卡片版型。