一套让任意聊天机器人通过上传时用视觉模型生成文字描述、后续仅凭文字零成本挑选并发送表情包的思路教程与架构。

Stars

21

7 天增长

暂无数据

Fork 数

4

开放 Issue

0

开源协议

MIT

最近更新

2026-06-29

AI 仓库情报摘要
FR-AI / ANALYSIS

为什么值得关注

它解决了每条消息都让视觉模型看图的高昂token成本问题,同时提供了平台通用的灵活蓝图,并包含实际开发中踩过的坑和修复方法。

适合谁使用

  • 集成表情包功能的聊天机器人开发者
  • 在Telegram、Discord等平台搭建AI助手的开发者
  • 需要自动回复的客服系统开发者
  • 构建AI伴侣应用的业余爱好者

典型使用场景

  • 为网页聊天AI助手添加根据语境自动发送表情的能力
  • 搭建一个能根据对话情绪发送合适梗图的Telegram机器人
  • 创建无需视觉成本的AI伴侣,能在适当时候做出表情反应
  • 让客服机器人能在聊天中自然发送友好表情

项目优势

  • 通过仅在上传时使用一次视觉模型,后续零成本引用,极大节省token开销
  • 架构清晰模块化,可适配任意视觉模型和任意平台
  • 包含实际踩过的坑(如Telegram需要公开URL、中文多字节分块问题),节省开发者排查时间
  • 使用MIT开源许可,可自由使用和修改

使用前须知

  • 并非开箱即用的成品,需要自行完成后端集成和平台适配
  • 依赖外部视觉模型API进行初始描述生成(每次上传仍需一次费用)
  • 表情图URL必须公开可访问,可能与私有存储或安全策略冲突

README 快速开始

ai-sticker-pack · 让聊天机器人「自己会挑表情包发」

给任意聊天机器人(bot / AI 助手 / 自动回复)加一套会按场景自己挑、自己发的表情包能力。 核心只有一句:

上传那一刻让视觉模型看一眼图、自动写好「名字 + 描述」存起来;之后机器人只读这段文字来挑表情,永远不再看图。

这样"挑表情"几乎不花 token(不走视觉),而你扩充表情库无痛——传张图、AI 自动配描述、入库,完事。

这是一份「思路」教程,不是即插即用的成品。 能搬走的是这套架构踩过的坑。你的后端用什么语言、机器人在哪个平台(网页 / Telegram / Discord…)、用哪个视觉模型——都按你自己的来。下面的代码片段全是示例,照着改成你自己的就行。当灵感看,别当模板。


为什么这么做

想让机器人会发表情包,有两个天然难点:

  1. 机器人"看不懂"图。 一堆抽象梗图(尤其带文字的中文表情包),机器人不知道每张啥意思、啥时候该发。
  2. 每次都让它"看图"太贵也太慢。 如果每条消息都把候选表情图喂给视觉模型判断,token 烧得飞起,还慢。

这个项目的办法:把"理解图"和"使用图"拆开——

  • 理解只做一次:上传时,视觉模型看一眼,写出「短名 + 一句话描述(图上文字 / 情绪 / 啥场景发)」,连同图 URL 存进库。
  • 使用零成本:之后把库里的「名字 + 描述」(纯文字、很短)注进机器人的 prompt;它想发就在回复里写个标记 [sticker:名字];后端拦下标记 → 换成图发出去。机器人从不重新看图
  上传一张图
      │
      ▼
 视觉模型看一次 ──► 「名字|描述」── 连同图URL ──► 表情库(表/JSON)
                                                      │
              ┌───────────────────────────────────────┘
              ▼  (只把 名字+描述 这段文字注进 prompt,很省)
        机器人生成回复: "哈哈哈 [sticker:得意]"
              │
              ▼  后端拦标记
     网页前端 → 渲染 
     Telegram → sendPhoto(图URL)

四块拼图

1) 表情库(一张表就够)

CREATE TABLE stickers (
  id    TEXT PRIMARY KEY,
  name  TEXT NOT NULL,   -- 机器人引用名,如「得意」
  url   TEXT NOT NULL,   -- 图片直链(自己图床 / 公开 URL)
  descr TEXT             -- AI 自动写的:图上文字 + 情绪/梗 + 啥时候发
);

2) 上传即「自动描述」(一次性视觉)

上传后,把图(base64 data URL)发给任意 OpenAI 兼容的视觉模型,让它返回「名字|描述」:

// 伪代码 / 示例:上传后调一次视觉模型
async function describeSticker(imageBase64) {
  const prompt =
    '这是一张表情包。先起个3-6字短名(梗/情绪关键词,好记、能当引用名),' +
    '再写一句话描述(图上文字 + 表达的情绪/梗 + 什么场景下适合发)。' +
    '严格用这一行格式回复:名字|描述';

  const r = await fetch(YOUR_OPENAI_COMPATIBLE_ENDPOINT, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json', Authorization: 'Bearer ' + YOUR_KEY },
    body: JSON.stringify({
      model: YOUR_VISION_MODEL,                 // 任意能看图的便宜模型即可
      messages: [{
        role: 'user',
        content: [
          { type: 'text', text: prompt },
          { type: 'image_url', image_url: { url: 'data:image/png;base64,' + imageBase64 } },
        ],
      }],
      max_tokens: 200,
    }),
  }).then((x) => x.json());

  const line = r.choices?.[0]?.message?.content?.trim() || '';
  const i = line.indexOf('|');
  return i > 0 ? { name: line.slice(0, i).trim(), desc: line.slice(i + 1).trim() } : { name: '', desc: line };
}

关键:**这步只在上传时跑一

项目描述

上传表情包 → AI 自动写描述 → 聊天机器人按场景自己挑着发(含双向发送 / 多端渲染 / 踩坑思路)

相关仓库与替代方案

根据分类、Topic 和编程语言匹配的相似项目。

MoonshotAI
精选
MoonshotAI GitHub avatar

Kimi-K3

Kimi K3 is an open-weight, 2.8T-parameter native multimodal agentic model with a 1M-token context window, designed for frontier coding, knowledge work, and reasoning tasks.

AI 与机器学习AI 智能体
3,348
xuchonglang
精选
xuchonglang GitHub avatar

investing-for-beginners

A structured investing guide for Chinese beginners covering US stocks, options, and cryptocurrency, with focus on foundational concepts and risk awareness.

区块链与 Web3
2,739
Krishnagangwal
精选
Krishnagangwal GitHub avatar

CS-Fundamentals

A curated collection of Computer Science fundamentals (PDFs, notes, cheatsheets, interview question banks) for placement preparation, covering seven core subjects plus general resources.

数据与数据库数据库与存储
2,326