技管思維 logo

技管思維

Subscribe
Archives
March 26, 2023

複雜的時序圖也可以讓ChatGPT幫忙

以下是一個複雜的時序圖:

雖然原來的圖並沒有問題,但究竟是機器學習領域的人才能理解Embedding model,Qdrant或是LLM這些東西。所以我想用一個「IGS智能客服」的案例來解釋,我們應該怎麼建構屬於我們自己的AI。所以我就完全用文字來描述整個流程了:

  1. 「玩家」提交「問題(Question)」
  2. 「問題」被「IGS智能客服(LangChain)」轉交給「語意向量引擎(Embedding Model)」
  3. 「語音向量引擎」處理完後,將「問題向量(Question Vector)」回傳給「IGS智能客服」
  4. 「IGS智能客服」將「問題向量」傳給「向量資料庫(Qdrant)」做特徵比對
  5. 「向量資料庫」比對「向量」,將「前K名的相關內容(Top K facts)」傳回給「IGS智能客服」
  6. 「IGS智能客服」將「前K名的相關內容」做為提詞,將原來的問題含入後,一併詢問「聊天機器人(LLM)」
  7. 「聊天機器人」嘗試參考「前K名相關內容回答」,將「答案」回覆給「IGS智能客服」
  8. 「IGS智能客服」最終將「聊天機器人」的「答案」回給「玩家」

用文字描述出來這些流程,基本上可能跟講話也差不多簡單,照自己的意思念就行了。然後就是請ChatGPT產一個「時序圖(SequenceDiagram)」的mermaid腳本就行了:

我有一個如下的內容:

  1. 「玩家」提交「問題(Question)」
  2. 「問題」被「IGS智能客服(LangChain)」轉交給「語意向量引擎(Embedding Model)」
  3. 「語音向量引擎」處理完後,將「問題向量(Question Vector)」回傳給「IGS智能客服」
  4. 「IGS智能客服」將「問題向量」傳給「向量資料庫(Qdrant)」做特徵比對
  5. 「向量資料庫」比對「向量」,將「前K名的相關內容(Top K facts)」傳回給「IGS智能客服」
  6. 「IGS智能客服」將「前K名的相關內容」做為提詞,將原來的問題含入後,一併詢問「聊天機器人(LLM)」
  7. 「聊天機器人」嘗試參考「前K名相關內容回答」,將「答案」回覆給「IGS智能客服」
  8. 「IGS智能客服」最終將「聊天機器人」的「答案」回給「玩家」

請給我最適合表現這個流程的mermaid script

ChatGPT果然能理解這個順序:

sequenceDiagram
    participant 玩家
    participant IGS智能客服
    participant 語意向量引擎
    participant 向量資料庫
    participant 聊天機器人

    玩家->>IGS智能客服: 提交問題
    IGS智能客服->>語意向量引擎: 問題
    語意向量引擎->>IGS智能客服: 問題向量
    IGS智能客服->>向量資料庫: 問題向量
    向量資料庫-->>IGS智能客服: 前K名相關內容
    IGS智能客服->>聊天機器人: 前K名相關內容
    聊天機器人-->>IGS智能客服: 答案
    IGS智能客服-->>玩家: 答案

把這個腳本丟到「Mermaidv10.0.0 Live Editor」後,就會得到如下圖的時序圖:

可我希望能把1-8順序標號也加入到圖表中,因此特別說明了一下我想怎麼加:

很好,最後只差一步。我想把數字標號加註在「問題」的變化。 意思是說,玩家把「問題」交給「IGS智能客服」,這是第一步,所以我們應將「1.」加註在「問題」上。接下來,「IGS智能客服」會將「問題」交給「語意向量引擎」,這是第二步,此時「問題」還是原來那個問題,所以我們把「2.」還是加在「問題」上。之後,「語意向量引擎」會回傳「問題向量」給「IGS智能客服」,此時「問題」已變成「問題向量」了,所以我們應將「3.」加註給「問題向量」。 以下依此類推,再產一次。

ChatGPT也很出色的完成了這個任務:

sequenceDiagram
    participant 玩家
    participant IGS智能客服
    participant 語意向量引擎
    participant 向量資料庫
    participant 聊天機器人

    玩家->>+IGS智能客服: 1. 提交問題
    IGS智能客服->>+語意向量引擎: 2. 問題
    語意向量引擎-->>-IGS智能客服: 3. 問題向量
    IGS智能客服->>+向量資料庫: 4. 問題向量
    向量資料庫-->>-IGS智能客服: 5. 前K名相關內容
    IGS智能客服->>+聊天機器人: 6. 前K名相關內容
    聊天機器人-->>-IGS智能客服: 7. 答案
    IGS智能客服-->>-玩家: 8. 答案

ChatGPT還有詳細的解釋:

玩家將問題提交給IGS智能客服,這是第1步,「問題」上加上「1.」。IGS智能客服將問題傳遞給語意向量引擎,這是第2步,「問題」上加上「2.」。在第3步中,語意向量引擎將問題轉換為問題向量,「問題」轉變為「問題向量」,所以在「問題向量」上加上「3.」。在第4步中,IGS智能客服將問題向量傳遞到向量資料庫進行特徵比對。向量資料庫回傳前K名相關內容給IGS智能客服,這是第5步,所以「問題向量」不變。在第6步中,IGS智能客服將前K名相關內容傳遞到聊天機器人進行進一步處理,所以「問題向量」不變,「前K名相關內容」加上「6.」。在第7步中,聊天機器人參考前K名相關內容回答問題,將答案回傳給IGS智能客服,「前K名相關內容」不變,「答案」加上「7.」。最後,在第8步中,IGS智能客服將答案回傳給玩家,「答案」不變,加上「8.」。

以後要做簡報表示這種複雜的時序圖,看來會輕鬆直覺很多。

咏唱源碼在這裡,有興趣的可以參考:智能客服解決問題 (Smart customer service solves problems)

Don't miss what's next. Subscribe to 技管思維:
This email brought to you by Buttondown, the easiest way to start and grow your newsletter.