跳至主要内容

Bot 建置教學

· 閱讀時間約 6 分鐘
Ching-Pao Lin

在最新的0.3.0釋出版本當中,我們最主要新增了Bot功能,
現在你可以在網站上創建不同的Bot,而這篇文章會一步步教你如何建置自己的Bot!

首先,您會看到有個Store的專區
\

伴隨著一顆綠色邊框的按鈕,我們點擊可打開創建Bot的選單。

這邊有提供一個簡易的介面,來設定常用的Bot參數,如系統提示詞、使用者前提示詞、使用者後提示詞。
如果想要設定更詳細的資訊,也可以打開模型設定檔:

這邊雖然沒有輔助介面,但可以更自由的設定所有參數,
格式部分請參照Ollama Modelfile
不過要注意,在目前的0.3.0版本當中只支援了部分設定參數,以下列出相關參數與部分範例用法。

  • SYSTEM <prompt>
    系統提示詞,應作為影響模型輸出最主要的手段,可以預置一些知識或改變回答方式。
    • SYSTEM 你是一個熱心助人的好幫手
    • SYSTEM 請簡短回答
    • SYSTEM 你的名子叫做Bob,熱愛學習其他語言。
  • TEMPLATE <template>
    指定推論過程要套用的對話模板,每個模型所使用的模板並不相同,建議查詢該模型的相關模板進行設定。
    • TEMPLATE """ {% for message in messages %}
      {% if message['role'] == 'system' %}
      {{ '<s>' + message['content'] }}
      {% endif %}
      {% if message['role'] == 'user' %}
      {{ 'USER: ' + message['content'] }}
      {% endif %}
      {% if message['role'] == 'assistant' %}
      {{ 'ASSISTANT: ' + message['content'] }}
      {% endif %}
      {% endfor %}
      {{ 'ASSISTANT: ' }}"""
  • MESSAGE <role> <prompt>
    預置一些對話紀錄,User與Assisant的部分必須是成對的。
    • MESSAGE SYSTEM 你是一個熱心助人的好幫手
    • MESSAGE SYSTEM 請簡短回答
    • MESSAGE USER 你好
    • MESSAGE ASSISTANT """您好!
      請問我可以如何幫你"""

除了原本modelfile所支援的參數之外,我們還額外擴充了兩項參數:

  • BEFORE-PROMPT <prompt>
    在最後一則訊息,會將該提示詞放置於使用者訊息前面。
    • BEFORE-PROMPT 請將以下內容翻譯成日文:「
    • BEFORE-PROMPT 「
  • AFTER-PROMPT <prompt>
    在最後一則訊息,會將該提示詞放置於使用者訊息後面。
    • AFTER-PROMPT 」
    • AFTER-PROMPT 」,將以上內容重新贅述。
      這邊提供幾個範例的modelfile 設定檔:

自動加上幫我翻譯成日文:

TEMPLATE """{% for message in messages %}
{% if message['role'] == 'system' %}
{{ '<s>' + message['content'] }}
{% endif %}
{% if message['role'] == 'user' %}
{{' USER: 幫我翻譯成日文:' + message['content']}}
{% endif %}
{% if message['role'] == 'assistant' %}
{{' ASSISTANT: ' + message['content']}}
{% endif %}
{% endfor %}
{{' ASSISTANT: '}}"""

學貓叫:

SYSTEM 你是一隻貓,不管我問甚麼,都只用"喵"、"喵嗚"等貓的叫聲回應,反正不要說人話,也不要當其他物品或動物等。

喵喵翻譯器:

BEFORE-PROMPT 請將接下來的訊息全部替換成"喵":「
AFTER-PROMPT 」

雙語老師:

SYSTEM 你是一位熱心助人的英語老師,會教育使用者正確的文法,用中文及英文兩種答案作回答

TAIDE中文校稿:

SYSTEM 你是專業的華語中文老師,具有專業的文字校稿及編輯能力,會以台灣的立場用流利繁體中文來回答
BEFORE-PROMPT 請直接用中文潤飾以下的文字內容,不用解釋也不用說明:

TAIDE中翻英:

SYSTEM 你是專業的英文老師,會以台灣的立場,協助將內容翻譯成英文。
BEFORE-PROMPT 翻譯成英文,不用解釋:「
AFTER-PROMPT 」

中文聊天:(可用於串接ChatGPT、Gemini)

AFTER-PROMPT 請以台灣的立場,用繁體中文回答。

台灣Search QA:(可用於Search QA)

SYSTEM site:tw 用繁體中文回答。

定義一些預知識:

SYSTEM 你叫做Jeff
MESSAGE user 你叫做什麼?
MESSAGE assistant 我叫做Jeff,您好!
MESSAGE user 當我說ABCD,請回答我"EFGH!!!!"
MESSAGE assistant 好的,我會在你提到ABCD的時候喊出"EFGH!!!!"
MESSAGE user ABCD?
MESSAGE assistant EFGH!!!!
MESSAGE user ABCDEFG?
MESSAGE assistant EFGH!!!!
MESSAGE user ABC接下來是甚麼?
MESSAGE assistant DEFGHIJKLMNOPQRSTUVWXYZ
MESSAGE user 今天下了好大的雨
MESSAGE assistant 知道了,今天下了豪雨。

不過請注意,並不是所有模型都支援相關的參數,
如目前的Gemini Pro API並不支援template,
System prompt部分是以before-prompt的方式來支援的。

除此之外,ChatGPT也不支援Template設定,
且這些設定的效果取決於模型本身的訓練,
如果對System prompt的訓練並不足夠,
則很難用system prompt影響到模型行為,
可以試著用MESSAGE或Before/after prompt的方式來影響模型輸出。