「直接看網頁」的理解程度還算堪用
在之前「複雜的時序圖也可以讓ChatGPT幫忙」的內容中,我直接叫它產sequenceDiagram給我,可以work。但我再認真去看了下「Sequence diagrams | 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智能客服最終將聊天機器人的答案回給玩家
請參考 https://mermaid.js.org/syntax/sequenceDiagram.html 的內容,給我一個sequenceDiagram
它給了我這樣的答案:
sequenceDiagram
participant Player as 玩家
participant IGS as IGS智能客服(LangChain)
participant Embedding as 語意向量引擎(Embedding Model)
participant Qdrant as 向量資料庫(Qdrant)
participant LLM as 聊天機器人(LLM)
Player->>IGS: 提交「問題(Question)」
IGS->>Embedding: 轉交問題
Embedding->>IGS: 回傳「問題向量(Question Vector)」
IGS->>Qdrant: 傳遞問題向量
Qdrant->>IGS: 回傳「前K名的相關內容(Top K facts)」
IGS->>LLM: 詢問原問題和前K名相關內容
LLM->>IGS: 回答問題
IGS->>Player: 將答案回覆給玩家
然後開始試新語法:
「玩家」請用Actor節點,並加入自動編號
不曉得是原來就知道,還是真的去看文件,答案算及格:
sequenceDiagram
participant actor as Actor 玩家
participant IGS as IGS智能客服(LangChain)
participant Embedding as 語意向量引擎(Embedding Model)
participant Qdrant as 向量資料庫(Qdrant)
participant LLM as 聊天機器人(LLM)
Note over actor, IGS: 1.
actor->>IGS: 提交「問題(Question)」
Note over IGS, Embedding: 2.
IGS->>Embedding: 轉交問題
Note over Embedding, IGS: 3.
Embedding->>IGS: 回傳「問題向量(Question Vector)」
Note over IGS, Qdrant: 4.
IGS->>Qdrant: 傳遞問題向量
Note over Qdrant, IGS: 5.
Qdrant->>IGS: 回傳「前K名的相關內容(Top K facts)」
Note over IGS, LLM: 6.
IGS->>LLM: 詢問原問題和前K名相關內容
Note over LLM, IGS: 7.
LLM->>IGS: 回答問題
Note over IGS, actor: 8.
IGS->>actor: 將答案回覆給玩家
為什麼說只是「及格」?因為不曉得為什麼它把原來的說明改成用「Note over」的語法,然後把”自動編號”這個需求加到「Note over」裡了。因此我稍微提示了它一下:
等等,不是有一個「autonumber」可以用嗎?用那個就好。
接下來就回了正確的內容:
sequenceDiagram
autonumber
participant actor as Actor 玩家
participant IGS as IGS智能客服(LangChain)
participant Embedding as 語意向量引擎(Embedding Model)
participant Qdrant as 向量資料庫(Qdrant)
participant LLM as 聊天機器人(LLM)
actor->>IGS: 提交「問題(Question)」
IGS->>Embedding: 轉交問題
Embedding->>IGS: 回傳「問題向量(Question Vector)」
IGS->>Qdrant: 傳遞問題向量
Qdrant->>IGS: 回傳「前K名的相關內容(Top K facts)」
IGS->>LLM: 詢問原問題和前K名相關內容
LLM->>IGS: 回答問題
IGS->>actor: 將答案回覆給玩家
表面上看起來的內容沒太大問題,就貼到編輯器去,結果出了錯,再把結果貼給它除錯:
我貼到mermaid.live的編輯器去,得到了如下的錯誤訊息:
Error: Lexical error on line 9. Unrecognized text.
...機器人(LLM)" actor->>IGS: "提交「問題(Quest
---------------------^
請修正
這裡以為是中文的上下引號(「」)的問題,但引號拿掉後還是不對。後來認真對了下文件後才發現,若使用actor
看來就不能再使用participant
了,因此再提示它這件事:
等等,問題不是中文的引號。我給你的網頁參考中,若使用`actor`,好像就不能用`participant`了的樣子?
結果它又自由發揮了:
sequenceDiagram
autonumber
actor 玩家
actor IGS as "IGS智能客服(LangChain)"
actor Embedding as "語意向量引擎(Embedding Model)"
actor Qdrant as "向量資料庫(Qdrant)"
actor LLM as "聊天機器人(LLM)"
玩家->>IGS: "提交問題(Question)"
IGS->>Embedding: "轉交問題"
Embedding->>IGS: "回傳問題向量(Question Vector)"
IGS->>Qdrant: "傳遞問題向量"
Qdrant->>IGS: "回傳前K名的相關內容(Top K facts)"
IGS->>LLM: "詢問原問題和前K名相關內容"
LLM->>IGS: "回答問題"
IGS->>玩家: "將答案回覆給玩家"
最後,再”溫馨提醒”它一下,我只有「玩家」是actor
,其他的別動:
不對不對,我只有「玩家」要用actor,其他的別動
最後的答案總算對了:
sequenceDiagram
autonumber
actor 玩家
participant IGS as "IGS智能客服(LangChain)"
participant Embedding as "語意向量引擎(Embedding Model)"
participant Qdrant as "向量資料庫(Qdrant)"
participant LLM as "聊天機器人(LLM)"
玩家->>IGS: "提交問題(Question)"
IGS->>Embedding: "轉交問題"
Embedding->>IGS: "回傳問題向量(Question Vector)"
IGS->>Qdrant: "傳遞問題向量"
Qdrant->>IGS: "回傳前K名的相關內容(Top K facts)"
IGS->>LLM: "詢問原問題和前K名相關內容"
LLM->>IGS: "回答問題"
IGS->>玩家: "將答案回覆給玩家"
最後的時序圖很不錯:
討論過程在這裡,有興趣的可以看一下。
Don't miss what's next. Subscribe to 技管思維: