2026年7月2日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

一文详解汉语新解豆包版Bot的制作方法

发布日期:2024-10-07 10:11:15 浏览次数: 3779
作者:AI智能体研究

微信搜一搜,关注“AI智能体研究”

引言

近年来,随着大语言模型的飞速发展,许多创意性Prompt(提示词)的使用开始走红,其中由李继刚设计的“汉语新解”Prompt在AI社区中尤为火爆。它通过幽默、批判和深刻的角度重新诠释汉语词汇,为用户带来了极富创造力的文本和视觉体验。这种Prompt在Claude 3.5 Sonnet模型上的应用取得了令人瞩目的效果,用户输入一个词汇,模型会给出独特的、出人意料的解释,并配以精美的SVG卡片,形成了新的互动形式(Prompt的具体介绍请见我之前写的公众号文章《爆火的李继刚大神的汉语新解Prompt是什么》)。

本文将介绍我设计的汉语新解豆包版Bot,它模仿了李继刚的“汉语新解”Prompt的效果,并在扣子的Bot开发平台上实现了几项关键技术,包括角色扮演生成文案、SVG卡片设计,以及将SVG格式的图像转换为PNG格式的输出。通过这款Bot,用户可以轻松地体验“汉语新解”风格卡片的制作过程。Bot地址是:https://www.coze.cn/store/bot/7415158971872608271,或者豆包搜索“汉语新解豆包版”。

汉语新解实现原理分析

“汉语新解”Prompt的主要特点其实就是如下两点:

  • 创意性文本生成:AI基于用户输入的词汇生成新颖的解释。
  • 视觉卡片输出:生成的解释以SVG图像卡片的形式展现。

所以实际上是两个步骤,用到了思维链(Chain of Thought)的提示方法,取得了很好的效果。

第一步:创意性文本生成的关键点

分析“汉语新解”Prompt这一步的核心内容,需要隐喻、一针见血、辛辣讽刺、抓住本质的解释这个词汇,并且提供了一个简单的示例,如果输入的是“委婉”这个词汇,那么输出可以是"刺向他人时, 决定在剑刃上撒上止痛药"。这个输出考验的是LLM的文案创意能力,如果要切换到豆包模型,那就要实验豆包模型的文案生成能力。

第二步:视觉卡片输出的关键点

分析“汉语新解”Prompt这一步的核心内容,需要调用一个生成SVG卡片的函数。这个函数充分借助了 Claude 的编程能力,以及它能实时显示生成好的 SVG 能力。函数中让它生成一个 SVG 定义的卡片,并给出了详细的参数:高度、宽度、边距、字体、字体大小、根据用户输入的词汇和前面的解释显示的内容(中日英三语标题、解释、总结等等),另外给了 AI 一些自主发挥的空间,比如“合理使用负空间”、“整体排版要有呼吸感”、”干净典雅“等。这个输出考验的是LLM的代码生成能力,如果要切换到豆包模型,那就要实验豆包模型生成SVG卡片代码的能力。

汉语新解豆包版Bot的实现

实际上,因为豆包的扣子平台没有Claude自带的Artifacts功能,要显示SVG卡片,还需要进行一步额外的SVG到PNG图片的转换。所以一共有三个技术点要实现:1)角色扮演与文案生成,2)SVG卡片设计,3)SVG到PNG的转换。下面我分别介绍在扣子平台上如何实现这三个技术点。

角色扮演与文案生成

扣子平台的豆包模型对角色扮演与文案生成任务颇为友好。毕竟,豆包模型肯定针对中文进行了优化,理解中文语义并根据词汇背景生成新颖解释应该不难。然而,李继刚老师原始的 LISP 语言 Prompt,经豆包模型测试,理解不准确。所以,我基于李继刚和云中江树两位大神先前给出的通义千问模型的 Prompt,对豆包模型进行修改和测试。下面就是豆包模型Prompt的角色扮演部分。

# 角色:
你是新汉语老师,你年轻,批判现实,思考深刻,语言风趣"。你的行文风格和"Oscar Wilde" "鲁迅" "林语堂"等大师高度一致,你擅长一针见血的表达隐喻,你对现实的批判讽刺幽默。
- 作者:云中江树,李继刚,听吉米讲故事

## 任务:
将{{input}}进行全新角度的解释,你会用一个特殊视角来解释这个词汇。用不少于100字的一句话表达你的词汇解释,抓住用户输入词汇的本质,使用辛辣的讽刺、一针见血的指出本质,使用包含隐喻的金句。
例如:“委婉”:"刺向他人时, 决定在剑刃上撒上止痛药。"

SVG卡片设计

汉语新解豆包版Bot的另一项创新是设计和生成SVG格式的卡片。这些卡片不仅包含模型生成的解释文本,还加入了独特的视觉元素,如词汇的拼音、卡片的背景颜色、主文字颜色、以及装饰图案等。所有这些元素都由模型自动生成,并通过SVG格式输出。这个功能的本质就是SVG代码的生成,我测试了之前通义千问Prompt的HTML格式引导,发现豆包模型的输出很不稳定,估计和输出的HTML代码字符过长有关,所以我就把卡片样式的参考结果改成了SVG代码的例子,情况就好多了。

此外,这里我也尝试过不给豆包模型参考例子,但是输出结果也会变得很不可控,即使成功输出SVG代码,页面的布局也很容易乱掉,所以最终还是给了豆包模型一个SVG的代码例子,确保模型输出不要偏离的太远。下面就是豆包模型Prompt的输出卡片设计部分。

## 输出结果:
1.输出词语卡片(SVG 代码)
- 整体设计合理使用留白,整体排版要有呼吸感
- 设计原则:干净 简洁 纯色 典雅
- 配色:随机使用干净简洁的配色,如淡灰,淡绿,淡蓝等等。

2.卡片元素:
(标题 "汉语新解")
(装饰图案 随机产生的)
(分隔线)
(词语 用户输入)
(拼音)
(英文翻译)
(解释:(按现代诗排版))
(分隔线)
(线条图 随机产生的)
(总结)

3.卡片样式:
参考结果示例。

## 结果示例:
```
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 600">
<defs>
<style>
.title { font-family: "WenQuanYi Zen Hei", sans-serif; font-weight: 700; font-size: 28px; }
.content { font-family: "WenQuanYi Zen Hei", serif; font-size: 16px; }
.highlight { fill: #e74c3c; }
</style>
</defs>

<!-- 背景 -->
<rect width="100%" height="100%" fill="#f5f5f5"/>

<!-- 装饰图案 -->
<rect x="0" y="0" width="40" height="40" fill="#34495e" opacity="0.7"/>
<circle cx="380" cy="580" r="20" fill="#27ae60" opacity="0.7"/>

<!-- 标题 -->
<text x="200" y="50" text-anchor="middle" class="title">汉语新解</text>

<!-- 分隔线 -->
<line x1="40" y1="70" x2="360" y2="70" stroke="#34495e" stroke-width="2"/>

<!-- 词语 -->
<text x="40" y="100" class="content">打工人</text>
<text x="40" y="125" class="content" font-style="italic">Working People</text>

<!-- 解释 -->
<text x="40" y="190" class="content">
<tspan x="40" dy="0">现代社会的自嘲型英雄,</tspan>
<tspan x="40" dy="25">一群在996的战场上</tspan>
<tspan x="40" dy="25">与咖啡因和加班费相伴的勇士。</tspan>
<tspan x="40" dy="25">他们用青春和梦想</tspan>
<tspan x="40" dy="25">换取房贷和车位的门票,</tspan>
<tspan x="40" dy="25">在朝九晚五的火车上</tspan>
<tspan x="40" dy="25">演绎着"为别人实现梦想"的戏码。</tspan>
<tspan x="40" dy="25">这是一个关于</tspan>
<tspan x="40" dy="25">如何用苦中作乐的精神</tspan>
<tspan x="40" dy="25">驾驭资本主义巨轮的寓言。</tspan>
</text>

<!-- 线条图 -->
<line x1="40" y1="420" x2="360" y2="420" stroke="#34495e" stroke-width="2"/>
<text x="40" y="445" class="content highlight">工作时长</text>
<text x="360" y="445" class="content highlight" text-anchor="end">幸福指数</text>
<path d="M40,470 Q200,520 360,470" fill="none" stroke="#e74c3c" stroke-width="2"/>

<!-- 总结 -->
<text x="200" y="550" text-anchor="middle" class="content" font-weight="bold">
打工人:用自嘲包装的现代生存哲学
</text>
</svg>
```

## 注意:
1. 分隔线与上下元素垂直间距相同,具有分割美学。
2. 输出svg代码的时候,要把前后的```符号去除。

SVG到PNG的转换

最后,为了更好地模拟Claude Artifacts的输出效果,汉语新解豆包版Bot还集成了SVG转PNG功能,这样就可以在对话中直接展示卡片,而不是SVG代码,使得用户能够直接下载和分享这些精美的图像卡片。这一步的难点在于扣子官方目前没有SVG转PNG的插件,所以要么自己制作一个插件,要么用扣子官方现有的插件实现这个功能。作为一个懒人,本着低代码的原则,我利用扣子的Python代码插件和CodeRunner插件实现了SVG转PNG的功能。原理也很简单,把豆包模型产生的SVG代码,作为Python函数的输入,然后让Python函数根据一个代码模板,输出SVG转PNG的Python代码给CodeRunner运行,CodeRunner就会返回转换成功的PNG文件链接。Python代码插件的参考代码如下:

async def main(args: Args) -> Output:
    # 从输入参数中获取SVG代码
    svg_code = args.params['svc_code']

    # 创建Python代码段字符串
    python_code = f'''
import cairosvg

# SVG代码,可以替换为用户自己的代码
svg_code = """{svg_code}"""

# 尝试将SVG代码转换为PNG并保存到一个确定可写的路径
output_path = '/mnt/data/output_fixed.png'
cairosvg.svg2png(bytestring=svg_code.encode('utf-8'), write_to=output_path)
'''


    # 构造返回的输出
    ret: Output = {
        "python_code": python_code
    }
    return ret

最终工作流呈现

完成上述三个核心功能后,只需在扣子平台上将它们串联起来制作一个工作流。然后,新建一个 Bot 调用这个工作流即可。下图是工作流的全貌。

示例展示

下面展示几个测试的示例,大家可以看到,基本实现了Claude 3.5 Sonnet的SVG卡片生成风格。

示例1:“80后”

示例2:“专家”

总结

汉语新解豆包版Bot是我对李继刚“汉语新解”Prompt的创新性实现。通过在豆包模型上进行角色扮演、生成SVG卡片、并将SVG转换为PNG,进一步理解了该Prompt的设计原理,展示了扣子平台和豆包模型在这一任务上和Claude模型的能力对比,也探索了这类AI作品更多应用的可能性。大家如果有兴趣,也可以根据我的实现方法,进一步探索AI生成内容的乐趣,并将类似思路用于创意创作和视觉设计。



53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅