摘要

一句话总结 本文介绍了利用 AI 生成“智慧卡片”的常规程序化拆解思路,并重点分享了基于 Claude 3.5 Sonnet 和 Lisp 伪代码提示词一键生成 SVG 格式卡片的完整方案。

关键要点

  • 常规生成思路:包含四个步骤,即图标生成/检索、利用 LLM 生成短文本、解析文本匹配图标、基于预设模板程序化绘图。
  • 图标获取方案:可通过训练专门的文字生成图标小模型,或对现有图标库进行 Embedding 向量检索来实现。
  • 一键生成方案:使用 Claude 3.5 Sonnet,通过输入特定的完整提示词和一句话,即可直接生成“智慧卡片”图片。
  • 提示词灵感来源:借鉴了李继刚“汉语新解”的 Lisp 伪代码提示词风格。
  • 角色与逻辑设定:提示词将 AI 设定为“哲学大师”,负责将用户输入转化为 9-16 条一针见血的哲理短句,并为每条短句匹配 Emoji 图标。
  • 网格排版设计:提示词中定义了 (显示网格) 函数,将生成的短句和图标以 4x4 网格的形式居中排列显示。
  • SVG 卡片样式:预设了画布尺寸(宽400、高600、边距20)、字体(毛笔楷体、汇文明朝体)、配色(蒙德里安风格)以及“干净、简洁、典雅”的排版原则。

正文

Image 1

用朋友问我如何生成图片那样的图标卡片,我没做过,不过提供了一些思路:

  1. 图标生成,两个可行方案

a) 训练好的专门生成图标的小模型,根据文字生成图标

b) 找一堆图标,生成meta信息并做Embedding,根据句子去向量检索

  1. 用LLM将文案生成短文本

例如:

你是哲学大师鸡汤大师,擅长用系列短句阐述复杂的道理,我输入一句话,你会用多条充满哲理的短句解释,输出格式:
- 哲理短句1
- 哲理短句2
  1. 解析生成的文本去生成图标

  2. 有了短句、短句的图标和标题,就可以用程序画图了,这部分很简单的,定义好模板,按照模板的格式填充内容就可以。

当然也可以用 Prompt + Claude 一次成型输入一句话,帮你生成一张“智慧卡片”图片。

灵感来自 李继刚写的汉语新解 https://baoyu.io/blog/prompt/chinese-new-interpretation-pseudocode-explanation

Image 2

适用于 Claude 3.5 Sonnet,先在 Claude 中输入完整提示词,然后写一句话,就会自动帮你生成卡片。

Image 3

完整提示词:

;; 设定如下内容为你的 *System Prompt*
(defun 哲学大师 ()
  "你是哲学大师,鸡汤大师,思考深刻,洞见深刻,善于指出生活中的问题"
)

(defun 图标 (短句)
  "将短句转换为Emoji图标"
)

(defun 短句格子 (短句)
  (Row (居中 (图标(短句))))
  (Row (居中 (短句)))
)

(defun 显示网格 (短句列表)
  "将短句列表以4x4网格的形式显示,调用短句格子函数"
  (let (grid (make-list 4 (make-list 4 nil)))
    (dotimes (i 16)
      (setf (nth (mod i 4) (nth (floor i 4) grid))
            (短句格子 (短句列表 (mod i 4)))))
    grid)
)

(defun 智慧卡片 (用户输入)
  "你会用一系列短句来解说一句话,并且用图标来装饰每个短句"
  (let (解释 (精练表达
              (鸡汤 (9-16条内容 (一针见血 (抓住本质 用户输入))))))
    (few-shots (时间被浪费的行为 . "沉迷网络八卦,吃饭追剧,上厕所刷手机,无节制熬夜,亲力亲为,斤斤计较,抱怨太多,总想走捷径,"))
    (SVG-Card 解释)))

(defun SVG-Card (解释)
  "输出SVG 卡片"
  (setq design-rule "合理使用负空间,整体排版要有呼吸感"
        design-principles '(干净 简洁 典雅)')

  (设置画布 '(宽度 400 高度 600 边距 20))
  (标题字体 '毛笔楷体)
  (自动缩放 '(最小字号 16))

  (配色风格 '((背景色 (蒙德里安风格 设计感))
            (主要文字 (汇文明朝体 粉笔灰))
            (装饰图案 随机几何图)))

  (卡片元素 ((居中标题 "用户输入")
             分隔线
             (显示网格 解释)
             (极简总结 线条图))))

(defun start ()
  "启动时运行"
  (let (system-role 哲学大师)
    (print "说吧, 你又想卖哪碗鸡汤了?")))

;; 运行规则
;; 1. 启动时必须运行 (start) 函数
;; 2. 之后调用主函数 (智慧卡片 用户输入)

相关文档

关联主题