iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
生成式 AI

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

思維鏈設計 2:設計 AI 生成第一個程式碼片段的 Prompt

  • 分享至 

  • xImage
  •  

提示工程教學:設計 AI 生成第一個程式碼片段的 Prompt

https://ithelp.ithome.com.tw/upload/images/20240912/20168979rKSiUvXBui.png

我們在第十章節完成了一個簡單的生成模塊,也就是讓 LLM 去生成程式碼的標題與功能描述

今天我們要來打大魔王,如何生成一步驟一步驟的程式碼教學文件

基本上我已經試過好幾種方法了,目前要教學的是我最後實驗出來效果最好的方法

定義目標

讓 AI 能夠生成這種有大量步驟的教學文件

文件的設計上應該滿足以下目標

  1. 每一步驟的教學內容不會過多

  2. 每一步驟都在前進,不會原地打轉

  3. 不會出現衝突,比如說下一步驟的教學內容直接打臉上個步驟的內容

設計流程

基本上我的構想就是遞迴

反覆遞迴 LLM 的生成,每一次遞迴都向前一點點,直到完成整份教學

最大的難點就在於如同溝通好每一次的遞迴,能夠逐漸前進、符合目標的生成整份程式碼呢?

首先,我們先從第一步開始

我們先從最簡單的地方開始,也就是設計遞迴的起點

如何讓 LLM 生成第一步驟,基本上就是一個什麼都沒有的程式碼基礎

接下來的步驟就會逐漸在這個基礎上頭新增程式碼

第一步的需求

  1. 讓 AI 生成一個初始程式碼框架,作為程式設計教學的基礎。

  2. 此框架應該足夠簡潔,並符合下列條件:

    • 乾淨、簡潔

    • 可執行且無錯誤

    • 不含具體功能或複雜邏輯

    • 僅保留最基本的程式碼元素,如入口點

第一步,LLM 生成的目標 Schema

interface ResultSchema {
  code: string
}

如何思考這個 Prompt

設計這個 Prompt 的重點在於:

  1. 簡潔性:我們希望最終生成的程式碼不會過於複雜,以確保初學者容易理解。

  2. 可執行性:代碼應能夠無錯誤運行,這樣才能讓學習者專注在逐步構建功能上,而不是解決語法或執行問題。

  3. 可擴展性:這段初始程式碼將作為未來教學的基礎,因此應該保留靈活的空間,讓後續的步驟可以無縫增加更多功能。

Prompt 設計步驟

需求定義好以後,直接將整個需求加入進 prompt

並帶入角色扮演

你是一個設計用來幫助教學程式設計的 AI 助理。你的任務是為給定的代碼創建一個乾淨、簡潔的起點。這個起點將作為逐步編程教學的基礎。

你的目標是生成這段代碼的初始框架。這個框架應該具備以下條件:
1. 可執行(應該能夠無錯誤地運行)
2. 盡可能地乾淨和簡潔
3. 不含任何具體的功能
4. 不包含特殊的導入或函數聲明
5. 僅包含作為起點所需的基本元素

按照以下步驟來創建這個初始框架:
1. 確定代碼的基本結構(例如,函數、類或腳本)。
2. 移除所有具體的功能,只保留最基本的結構。
3. 除非是絕對必要的,否則移除所有導入(如果有的話)。
4. 移除所有函數和變量的聲明,只保留主入口點(如果有的話)。
5. 如果有主函數或入口點,保留其聲明,但刪除其內容。
6. 確保生成的代碼在語法上是正確的,並且可以無錯誤執行。
7. 最後,輸出如下的 JSON 格式:
"""
{
  "code": "<code>"
}
"""
記住,目標是為初學者提供一個最簡單的起點,讓他們在此基礎上逐步構建並最終完成代碼。

步驟 1:確認目標

我們的目標是生成一段初始的程式碼框架,這段程式碼應該簡單且可執行,作為程式設計教學的基礎。

目標定義要明確,以便 AI 能夠理解我們的需求,避免生成過於複雜或與教學無關的程式碼。

步驟 2:設計測試資料

在我們設計完 Prompt 之後,最好準備一些測試資料來驗證 AI 的生成結果是否符合我們的期望。例如,可以使用以下樣本輸入測試:

輸入代碼:
def calculate_sum(a, b):
    return a + b

期望輸出:

{
  "code": "def main():\n    pass"
}

這樣的輸出符合我們的期望,即提供一個乾淨的起點,只保留主入口點。

接下來,我們的下一步

接下來,設計逐步生成程式碼的流程。基本上,我們將採用遞迴的方法,讓 AI 每次生成一小段程式碼,並依次向前推進,最終生成整份教學文件。

最後

最後,我們可以用實驗來驗證我們的設計。將 Prompt 應用到不同類型的代碼上,看看生成的初始框架是否符合我們的要求。這個過程需要反覆測試和調整,直到達到理想效果。


上一篇
AI 的開發,從定義成功開始,如何創建有效的測試資料
下一篇
思維鏈設計 3:透過 AI 分塊與索引整個程式碼
系列文
從零開始,打造一個生成式 AI 平台,打破程式學習的高牆17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言