一篇構建 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”。
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:
## 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 以實現這些步驟:檢查文章需要修改的句子 -> 依次輸出修改前、修改後、修改的原因 -> 評分。
## 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 中採用的輸出格式,你也可以將 <> 中的說明替換為具體示例。
## 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>
和<input>
- 將
<instructions>
置於<input>
之後可獲得更好效果,可通過 強化 Prompt 後綴 選項來實現該目標 - 輸入變量應當使用雙花括號
{{}}
進行標記
如下圖所示,應用了上述技巧的 Summary master 包括:
- 使用了
<configuration> <rules> <example> <input> <instructions>
XML 標籤把提示詞劃分為不同部分。 - 將
<instructions>
標籤嵌入強化 Prompt 後綴,目的是提升效果並保持輸出一致性。 - 利用
{{CONFIGURATION}}
和{{DOCUMENT}}
來標記用戶輸入的變量,並在<instructions>
中引用標記後的變量
總結#
現在你應該能夠根據我的指南創建自己的工具 bot。如需幫助,在 MyShell Discord 中搜索 script 並 @我,或通過Twitter發私信聯系。
若尚未加入 MyShell,請通過此鏈接https://app.myshell.ai/invite/8cdbbd 註冊,即可獲得 7 天高級 Pass 卡。