iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Software Development

就是要來點 A.I. 的 TopAOAIConnector App系列 第 17

EP 17 - 設定 AOAI 使用聊天時的系統角色

  • 分享至 

  • xImage
  •  

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會展開使用 Avalonia UI 技術所建立的 TopAOAIConnector App 。由於使用 Avalonia UI 可以很快速的進行各平台的 桌面 應用程式開發,並且透過此 TopAOAIConnector App 來串接 Azure OpenAI Service 時所需的功能研究。

本篇是 就是要來點 A.I. 的 TopAOAIConnector App 系列文的 EP17。


EP 16 已經知道 ChatMessage 目前的 Type 定義有五種:

  1. SystemChatMessage (對應 OpenAI 定義的 system。)
  2. UserChatMessage (對應 OpenAI 定義的 user。)
  3. AssistantChatMessage (對應 OpenAI 定義的 assistant。)
  4. ToolChatMessage (對應 OpenAI 定義的 tool。)
  5. FunctionChatMessage (對應 OpenAI 定義的 function,注意此用法即將淘汰,請改用 tool。)

EP15-01

前一回的 EP 16 也已經有正確的處理後,那就準備來討論一下 "SystemChatMessage" 的問題吧!

而這個 "SystemChatMessage" 本身在 Azure OpenAI Studio 的 "聊天" Playground 本身就有相關的部分可以設定:
01

所以在 TopAOAIConnector App 當中,也要來看看怎麼設計處理。

本回先做一個簡單的設計與範例,來讓看倌們比較理解 GPT 所設計的 "Role: System" 概念。


首先,要發起的 "Chat" 對話前先定義其 "Role: System" 的指示與內容:

你是一位專業的電影評論員,請根據使用者的輸入評論來做回答。僅能回答 "好" 或 "壞" 並針對使用者輸入的評論給予最多 10 字的反饋。

那在 TopAOAIConnector App 的 Avalonia UI 專案的設計要怎處理呢?

這邊只是要達成最簡單的概念解釋,所以就直接在 ChatPageViewModel 增加兩個靜態欄位,並修正一下先前的 messages 初始值設定:

private static string systemMessage = "你是一位專業的電影評論員,請根據使用者的輸入評論來做回答。僅能回答 \"好\" 或 \"壞\" 並針對使用者輸入的評論給予最多 10 字的反饋。";

private static SystemChatMessage systemChatMessage = ChatMessage.CreateSystemMessage(systemMessage);

private readonly List<ChatMessage> messages = [systemChatMessage];

變化處如下圖紅框所示:
02

並找到在 EP 15 在 Attach 方法中所撰寫如下 if 判斷:

if (!string.IsNullOrEmpty(fileContent) && messages.Count > 0)
{
    ChatText = $"{Environment.NewLine}{ChatText}{Environment.NewLine}=======Another Attach TextFile======={Environment.NewLine}";
    messages.Clear();
}

並將其替換成:

if (!string.IsNullOrEmpty(fileContent) && messages.Count > 1)
{
    ChatText = $"{Environment.NewLine}{ChatText}{Environment.NewLine}=======Another Attach TextFile======={Environment.NewLine}";
    
    messages.Clear();
    messages.Add(systemChatMessage);
}

變化處如下圖紅框所示:
03

而如果要做其他 UI 上的變更的話,則留待後面正式處理時再繼續介紹。

將 TopAOAIConnector App 執行起來後,連續送出幾個對電影的一、兩句評論:

  1. 這部電影拍得實在太令我失望了!
    04-1

  2. 導演對於原著中的男女主角心境的詮釋安排的更勝於前作。
    04-2

  3. 原著小說當中的寓意似乎沒有在電影中被敘述出來,無論從什麼層面來看都有點可惜。
    04-3

  4. 為什麼在看這部期待已久的電影居然有個糟糕的人一直講電話,整場就聽他講電話就好啊!
    04-4

  5. 只怪這電影院的座椅太舒服了,就算是看這部大爛片我也能夠睡得很爽。
    04-5

  6. 對於每位角色的心境演繹,衷心佩服這些演員,他們真的很認真的感受角色在劇中應扮演的狀況。
    04-6

各位~~~

是否有觀察到回答上皆是根據一開始所下的 "SystemChatMessage" 定義,按照給予的指示去答覆所送出的問題(評論),這就是 "Role: System" 的特殊之處。

如果對於 System, Assistant, User 這三種 Role 的意義在 GPT 當中的概念,可以參考這篇文章好好地思索一下。

System, Assistant, User:ChatGPT 架構與角色詳解: https://medium.com/@ro5112/b8373ab6fe4b

那,對於 TopAOAIConnector App 在 UI 上的設計調整就...

下回介紹囉~~~😜😜😜


上一篇
EP 16 - 檢視串接 AOAI Service 的聊天效果
下一篇
EP 18 - 設計應用串接 AOAI 的聊天系統角色 (I)
系列文
就是要來點 A.I. 的 TopAOAIConnector App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言