MyShell 工具类 bot 创作指导

一篇构建 MyShell 工具类 bot 的概述和逐步指南

本文面向经常使用 ChatGPT 的用户，特别是那些希望通过它来解决定制需求的读者。
文章专注工具类 bot 的创建，不涉及角色扮演类 bot 的创作，但基本原理是相同的。

简要概述：本文介绍了 AI 创作者平台 MyShell 是什么、 prompt 编写技巧以及如何制作 MyShell 工具类 bot。

介绍

MyShell 是什么

MyShell 是全球首个去中心化生成式 AI 创作者平台。平台内有社区开发的各种 AI 原生应用，其中包括具有鲜明个性和声音的 AI 角色、用于学习新科目的交互式 AI 导师，以及帮助你创建图像甚至视频的 AI 艺术家。

大多数 AI+Web3 领域的研究报告推荐 MyShell 作为 Agent 板块首选项：

为什么要使用 MyShell，而不是 ChatGPT

我曾是 ChatGPT 重度用户，自 2023 年 4 月起，我转而使用 MyShell 进行编程、编辑文章、检索资料和翻译工作。

使用 MyShell 有以下好处：

可一站式免费使用包括 GPT 4.0 以内的多种 AI 大模型

许多用户在 OpenAI 平台上遭遇过封号问题；选择 MyShell，在合理使用下无需担心此类风险。

通过创建和赞助 bot 获取积分奖励，未来可兑换成系统流通的代币

论坛提供了许多优质创作技巧，社区有良好的交流氛围，有助于学习 AI 技术

不用再支付 ChatGPT 每月 $20 的会员费

为什么要学会创作工具类 bot

使用 MyShell 时，我注意到由官方 API 创建的 "GPT 4" bot 解决问题的能力有时候并不稳定。此外，每次对话需要输入提示词（prompt：旨在引导模型产生更精确和相关输出内容的文本或指令）进行角色扮演。这极大降低了效率并增加了操作复杂度。

尽管其他社区成员开发的 bot 可以解决一些问题，例如我常使用 Mr.Rachelle 学习新知识 和 bestTranslater 中翻英，但更多的需求无法找到合适的 bot。
我研究了众多关于 prompt 工程的资料，创建了多个不同作用的 bot，并琢磨出了一套成熟的流程。
我创建过的工具类 bot 有：

名称 | 作用
OpenAICEO Sam Altman | 一句话直接了当回答简单问题
Summary master | 可设定语言风格的长文总结
Cryptocurrency Analyst | 中文总结 Web3 项目介绍
Tech writing editor | 润色技术写作文章
Epic Code Dev | Debug 和优化代码
Web code expert | 编写前端代码
Think Tank | 多领域专家智囊团讨论复杂问题
Song Lyrics Search | 找到符合语境的中文歌词

Pass card 的作用

当前版本免费用户只能创建一个私有 bot。若要创建公开 bot，必须持有 Genesis Pass。获得 Genesis Pass 的最佳方式是参与 MyShell Genesis Pass Incubator 活动，详见 https://twitter.com/myshell_ai/status/1759941273509593166 。或者，你可以选择使用 ETH 在市场上直接购买 Genesis Pass，其价格大致相当于十年的 ChatGPT 会员费。

学习资料

prompt 工程作为一门新兴学科，涉及以下核心概念：

zero-shot

few-shot

chain-of-thought

Prompt Chaining

如果不熟悉以上术语，建议先浏览一遍 Prompt Engineering Guide 和 Prompt engineering by OpenAI 。网上能搜到中文版本。

若尚未了解 MyShell 的基本操作，请参考 product manual，
本文不会详述操作步骤。

使用英文编写 prompt 可减少 Token 消耗，所以我都用英文编写它。

prompt 通常写为Markdown格式，因为 Markdown 是互联网的语法，有利于大模型理解输入。一些符号有固定意义，例如：<>表示注释部分；而 """ """则用来标记用户输入。

创作流程

通常，我会先编写 bot 的 prompt。该 Tech writing editor 的 prompt 是开源的，可在 https://app.myshell.ai/widget/Fzu2Uz 找到。

定义角色

在构建 prompt 时，核心步骤是定义角色 = 描述 + 目的。首先根据需求确定 bot 的角色和目标。
描述部分应与公司招聘时提供的职位说明相仿，例如，“写作编辑” 或是 “新媒体文案编辑”，描述越精确越好，“熟悉科技领域的技术写作编辑” 和 “写作编辑” 输出的结果会不一样。
目标是要达成的工作，对于技术写作编辑来说，“撰写文档”、“提供灵感”，以及 “润色文稿” 是完全不同的工作目标。
你可以直接问 GPT，一个"xxx"样的"xxx"拥有哪些特征，或者描述"xxxx"需要定义什么关键纬度，从回复中选择部分形容词来修饰角色。
此外，你还可以参照编写招聘说明书方式，编写 “岗位职责” 给 bot 设定 "Goals"；编写 “任职要求” 来赋予 bot “Skills”。

Copy
You are a technical writing editor who provides concise suggestions for improving articles and explain the reasons for the suggested changes.
## skills
You are familiar with the principles of various technical writings, including but not limited to:
- Use terms consistently.
- Avoid ambiguous pronouns.
- Prefer active voice to passive voice.
- Pick specific verbs over vague ones.
- Focus each sentence on a single idea.
- Convert some long sentences to lists.
- Eliminate unneeded words.
- Use a numbered list when ordering is important and a bulleted list when ordering is irrelevant.
- Keep list items parallel.
- Start numbered list items with imperative words.
- Introduce lists and tables appropriately.
- Create great opening sentences that establish a paragraph's central point.
- Focus each paragraph on a single topic.
- Determine what your audience needs to learn.
- Fit documentation to your audience.
- Establish your document's key points at the start of the document.

请注意，类似于 ## skills 的模板写法旨在方便 prompt 的维护。你可以选择用一段连贯的文字来表述，也可使用如 [Skills] 样式的标题来编写。

定义规则（可选）

规则定义了 bot 应该执行的操作以及避免的行为，并可设定输出内容的字数上限、使用语言、风格和语气等。
我经常使用以下 Prompt：

Copy
## rules
- MUST Reply in the same language as the input language. # 多语言支持
- ALWAYS omit all polite language. # 减少客套话
- DON'T worry about your response being cut off # 避免急于总结

一开始编写 Prompt 可以不设定规则，如果不满意输出内容，再添加规则。

定义工作流（可选）

工作流通过 Prompt Chaining 技术将一个大任务拆分成多个子任务，每个子任务的输出顺序地成为下一个子任务的输入，逐步实现最终目标。
在定义 Tech writing editor 时，我采用以下 Prompt 以实现这些步骤：检查文章需要修改的句子 -> 依次输出修改前、修改后、修改的原因 -> 评分。

Copy
## workflow
1. Browse the article and find any sentence that need to be modified
2. Output all Original, Modified, Reason groups in sequence
3. Evaluate articles from a technical writing perspective and assign scores on a 10-point scale

如果需要类似编程语言中的条件判断、变量赋值、状态重置的复杂工作流，也可以采用函数式编写风格，可参考Mr. Ranedeer 。

提供例子或输出格式（可选）

利用 Prompt 工程的 few-shot 技术使输出符合指定格式。以下是我在 Tech writing editor 中采用的输出格式，你也可以将 <> 中的说明替换为具体示例。

Copy
## outputFormat
1.
**O**: <Then paragraph need to modify>
**M**: <The improved paragraph>
**R**: <Rule to follow for modifications>
2.
**O**: <Then paragraph need to modify>
**M**: <The improved paragraph>
**R**: <Rule to follow for modifications>
……
---
<The evaluation and the score>

选择模型

在选择模型时，我优先使用 GPT 4 Turbo。该模型不仅智能性高于其他选项，还支持超过 1500 Token 的输入长度。

若需处理纯中文内容，选择使用 Claude V2 模型也能获得良好效果。

针对不同使用场景，可适当调整其他参数。相关具体设置，请参考此篇帖子中的详细说明。

强化 prompt（可选）

在多轮对话中，模型可能会基于上下文信息而非 Prompt 内定义的规则来回答问题。为确保在整个多轮对话过程中遵循统一规则，可以将这些规则包含进强化 prompt，更多详情见官方文档。

其他设置

Avatar：利用 AvatarMagician 创建个性头像。
Name：设定让用户通过主页搜索特定关键词以发现 bot；此项受长度限制，并起到 SEO 作用。
NSFW：标记内容是否不宜在工作场合查看，默认选择 “否”。
Tag：根据功能选择 “工具” 或 “学习”，部分含 “中文” 或 “英文” 的标签指示已添加语音功能。
Description：提供对 bot 目的和功能概述。
Intro Message：设计一个引导式招呼语以告知用户如何交互，并可加入图片及外链增强体验。

Voice(TTS)：对于工具类 bot 通常无需设置声音功能。
Apps Integration：支持通过 Telegram 接入以吸引外部流量
Knowledge Base： 若需教授 bot 特定领域的冷门知识，请先编写 GitBook，并将其内容加入知识库以供 bot 学习。

Banner：使用 BannerMagician 创建 banner。创作者可选择对所有 bot 统一使用带有个人联系信息的 banner 进行品牌宣传及吸引潜在客户。
ScreenShot：上传展示输入和输出的截图，以向用户说明 bot 功能。

测试

打造优质的 bot 需要经过多次测试和迭代。以下是一些技巧：

准备多个具有固定内容的输入文本，用于测试不同模型、参数及提示语句的效果。

在调试到令人满意之后，将其发布到社区让他人尝试，并依据反馈作出相应修改。

宣传

由于平台上专业用户和特定工具类应用的活跃度不高，推荐将 bot 推广到需要此类服务的领域群体中以增加使用频率，以此带动积分收益提升。
考虑联系 MyShell 官方进行评测，这有助于你的 bot 获得首页展示机会。

未来展望

目前角色扮演型 bot 在本平台可能有更高收益；然而，在未来版本中 MyShell 将支持多组件组合，这将促进构建功能强大的 AI 应用；同时激励模型也会偏向解决实际效率问题的实用 bot。从现在开始可以挖掘需求，建立符合自己工作流的实用 bot，为未来做准备吧。

Claude3 提示词编写技巧

3 月 25 日晚上，MyShell 接入了性能卓越的 Claude3 新模型，适用于绝大多数原本使用 GPT-4 的场景。
同时，Claude 官方也推出了「Prompt Engineering 指南」，以下是与 GPT 系列不同的几个重要技巧：

利用语义明确的 XML 标签区分文档部分、说明及输入内容。例如<instructions>、<example>和

将<instructions>置于 之后可获得更好效果，可通过 强化 Prompt 后缀 选项来实现该目标

输入变量应当使用双花括号 {{}} 进行标记

如下图所示，应用了上述技巧的 Summary master 包括：

使用了 <configuration> <rules> <example> <instructions> XML 标签把提示词划分为不同部分。

将<instructions>标签嵌入强化 Prompt 后缀，目的是提升效果并保持输出一致性。

利用 {{CONFIGURATION}}和{{DOCUMENT}} 来标记用户输入的变量，并在<instructions>中引用标记后的变量

总结

现在你应该能够根据我的指南创建自己的工具 bot。如需帮助，在 MyShell Discord 中搜索 script 并 @我，或通过Twitter发私信联系。

若尚未加入 MyShell，请通过此链接https://app.myshell.ai/invite/8cdbbd 注册，即可获得 7 天高级 Pass 卡。