iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
生成式 AI

從零開始,打造一個生成式 AI 平台,打破程式學習的高牆系列 第 15

思維鏈設計 5:讓 AI 跟著指揮,逐步完成每一個步驟的程式碼生成

  • 分享至 

  • xImage
  •  

思維鏈設計 5:讓 AI 跟隨指揮,逐步完成每一個步驟的程式碼生成

https://ithelp.ithome.com.tw/upload/images/20240915/20168979VIy5Phu8X4.png

前言

大家好!在前面的章節中,我們學習了如何設計一個「AI 指揮官」,以及讓 AI 能夠按照計劃將複雜的程式碼進行分塊和索引。然而,要讓這個計劃順利進行,我們需要讓 AI 逐步地、精確地完成每一個步驟。

今天,我們將探討如何讓 AI 跟隨指揮官的指令,逐步完成每一個步驟的程式碼生成。為了達到這個目標,我們將引入 兩個 LLM(大型語言模型),讓它們各自扮演特定的角色,協同合作。

為何使用兩個 LLM?

當我們的任務需要生成詳細的步驟講解時,單一的 LLM 可能會因為需要處理大量資訊而感到壓力,導致輸出品質下降。為了讓生成步驟講解的 LLM 壓力更小,專注於更精確的內容,我們採用了兩個 LLM:

  1. LLM A:程式碼分析師

    • 任務:根據指揮官的命令,從單一的程式碼檔案中選取當前步驟需要的函式或功能區塊,並將它們傳遞給 LLM B。
    • 優勢:專注於程式碼的選取,減少 LLM B 的負擔。
  2. LLM B:教學撰寫者

    • 任務:接收指揮官的命令、上一步的進度、當前任務、下一步計畫、教學進度,以及 LLM A 提供的程式碼函式。最後,撰寫本步驟的教學內容。
    • 優勢:專注於教學內容的撰寫,提供更精確和深入的講解。

透過這種分工,LLM B 可以更專注於撰寫高品質的教學內容,而不必處理大量的程式碼細節。

讓 AI 跟隨指揮官的步伐

1. 指揮官發出明確的指令

指揮官需要制定清晰的計劃,將任務拆解為可執行的步驟,並提供必要的指導。

指揮官的命令範例:

任務:引導學生實作一個簡單的計算器應用程式。

當前步驟:實作加法功能。

目標:讓學生瞭解如何撰寫一個加法函式,並將其整合到應用程式中。

2. LLM A(程式碼分析師)處理

LLM A 接收到指揮官的命令,從單一的程式碼檔案中選取與「加法功能」相關的函式或代碼片段。

LLM A 的輸入:

  • 指揮官的命令
  • 單一的程式碼檔案內容

LLM A 的任務:

  • 從程式碼中選取與加法功能相關的函式
  • 提供這些函式的代碼和簡要說明,傳遞給 LLM B

LLM A 的輸出:

選取的程式碼函式:

1. 函式名稱:addNumbers
   - 功能:接收兩個數字,返回它們的和
   - 程式碼:
     ```javascript
     function addNumbers(a, b) {
       return a + b;
     }
     ```

3. LLM B(教學撰寫者)撰寫教學內容

LLM B 接收來自指揮官和 LLM A 的資訊,專注於撰寫本步驟的教學內容。

LLM B 的輸入:

  1. 指揮官的命令

    • 當前步驟的目標和要求
  2. 上一步做了什麼

    • 之前已建立了基本的應用程式結構
  3. 我們這次要幹嘛

    • 實作加法功能,撰寫加法函式
  4. 下一步要做什麼

    • 將加法函式整合到使用者介面,讓使用者可以輸入數字並看到結果
  5. 目前教學已經學到哪裡了

    • 學生已經瞭解了基本的程式碼結構和函式定義
  6. 需要的程式碼函式

    • LLM A 提供的 addNumbers 函式

LLM B 的任務:

  • 根據上述資訊,撰寫清晰、易懂的教學內容
  • 包含對 addNumbers 函式的解說和程式碼示例

LLM B 的輸出:

步驟二:實作加法功能

在這個步驟中,我們將撰寫一個加法函式,讓計算器可以計算兩個數字的和。

我們這次要幹嘛:

  • 撰寫 addNumbers 函式,接收兩個數字,返回它們的和

程式碼示例:

// 加法函式
function addNumbers(a, b) {
  return a + b;
}

程式碼解說:

  • function addNumbers(a, b):定義了一個名為 addNumbers 的函式,接收參數 ab
  • return a + b;:函式返回 ab 的和

下一步要做什麼:

在下一個步驟中,我們將把 addNumbers 函式整合到應用程式中,讓使用者可以輸入數字,點擊按鈕,並看到計算結果。

4. 逐步完成任務,減少 LLM 的壓力

透過這種方式,LLM B 不需要處理整個程式碼檔案,只需要專注於當前步驟需要的函式和內容。這減輕了 LLM B 的壓力,讓它能夠撰寫更精確和深入的教學內容。

關鍵觀念

只需要知道需要知道的資訊

LLM A 和 LLM B 的合作如何提高效率?

  • 資訊精簡:LLM A 將大量的程式碼精簡為當前步驟需要的函式,避免 LLM B 被過多的資訊淹沒。
  • 專注度提升:LLM B 專注於教學內容的撰寫,不需要處理不相關的程式碼細節。
  • 輸出品質提高:透過減輕 LLM B 的壓力,提升了教學內容的品質和精確度。

跟隨指揮官前進

  • 統一目標:所有的步驟都圍繞指揮官設定的目標展開,確保教學內容的連貫性。
  • 步驟清晰:每個步驟都有明確的目標和任務,讓學生能夠一步一步地學習和實作。

結語

透過引入兩個 LLM,我們成功地讓生成步驟講解的 LLM(LLM B)減輕了壓力,能夠專注於更精確的內容。LLM A 負責從單一的程式碼檔案中選取當前步驟需要的函式,讓 LLM B 只需要處理必要的資訊。這種方法提高了整個流程的效率和教學品質。

在未來的應用中,我們可以將這種設計運用到各種教學和開發場景中,讓 AI 成為我們強大的助手,幫助我們一步一步地實現目標。


感謝你的閱讀!如果你對本文有任何疑問或想法,歡迎在下方留言討論。別忘了關注我的 Threads 和加入 Discord 社群,一起探索更多有趣的 AI 知識。我們下次見!


上一篇
思維鏈設計 4:AI 指揮官,如何定義並調度每一步驟
下一篇
鐵人賽完成一半了!讓我們聊聊 AI 的那些有趣問題
系列文
從零開始,打造一個生成式 AI 平台,打破程式學習的高牆17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言