iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
Odoo

30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用系列 第 5

【Day05】透過 GenAI 指定用 字典 (dictionary) 表示一個簡易的電商訂單序列

  • 分享至 

  • xImage
  •  

我想大家都用過蝦皮吧,那在 Python 裡面訂單會怎麼樣記錄在蝦皮那邊呢? 我們將先學習 字典 (dictionary) 再搭上之前所學,來展示一個最簡易的訂單模擬。


文章重點

  • 字典 (dictionary),最常用強大的資料型態之一
  • 怎麼使用字典操作?
  • 結合所學,建立電商案例,並用 GenAI 實現例子
  • 想想我們這邊下的 GenAI 指令跟沒有學過的會有什麼差異
    • 整合既有系統或串接,那你勢必會需要更懂程式了
    • 直接將文件丟進去 GenAI 呢? 記不住或幻覺,最好的解法還是 分而治之
    • GenAI 帶來的學習上變革

字典 (dictionary),最常用強大的資料型態之一

https://ithelp.ithome.com.tw/upload/images/20240919/20163326prNPHqyftU.png

字典表示如下,使用 { 和 } 將 鍵 (key) 和 值 (value) 的多個對應配對建置,

  • d = {a: 3, b: 4, k: ”v”}

  • Variable = {key0: value0, key1: value1}

  • 變數 = {鍵a: 值a, 鍵b: 值b}

拿到 d 字典後,翻開便籤 a 的頁面,會得到值 整數 3,也就是 d[a] 結果是 3,翻開便籤 k 的頁面,會得到 字串 “v”

怎麼使用字典操作?

https://ithelp.ithome.com.tw/upload/images/20240919/20163326lVNMDm3Enf.png

d = {a: 3, b: 4, k: ”v”}

  • d[key] = value 替會 d 字典裡,key 對應到的 value,所以舉個例子,d[a] = 1,此時會拿起 d 字典,並翻開 a 便籤的頁面,將 整數 1 填入取代,所以 d 變成 {a: 1, b: 4, k: ”v”},這邊可以注意到

  • d[t] = [1, 2],如果 key 不在原來的 d 字典內呢? 很簡單,就會在多創造一頁由 t 便籤指引到的,並在對應頁面填上 串列 [1, 2],所以 d 變成 {a: 3, b: 4, k: ”v”, t: [1, 2]}

字典的常用方法,較易搞混的

  • d.keys() 會將 d 字典的 key 全部羅列出來

  • d.values() 會將 d 字典的 values 全部羅列出來

  • d.items() 會將 d 字典的 (key, values) 的配對全部羅列出來

  • 至於常看到的 update, pop, get, clear 我想大家一定知道是什麼了

結合所學,建立電商案例,並用 GenAI 實現例子

終於終於,學了一堆東西,終於可以看到比較跟 Odoo 相關的例子了,來看看我想帶給各位的指令吧。

這邊是我下的指令

電商裡面有非常多訂單,用訂單號為唯一編碼,用裡 串列 條列,並且訂單編號是一個 字典 紀錄訂單的各個內容,請幫我舉出這個例子

結果整理如下

# 訂單列表,包含多個訂單,每個訂單都是一個字典
#   訂單號 order_id 是每個訂單的唯一識別碼,可以用來查詢和管理訂單。
#   客戶 customer 是下訂單的公司或人員。
#   產品 products 是一個列表,包含該訂單中的所有產品,每個產品都有其編號、名稱、數量和價格。
#   總金額 total 是計算出的訂單總額。
#   訂單狀態 status 可以記錄訂單是否已發貨、正在處理中等。
orders = [
    {
        "order_id": "ORD001",
        "customer": "公司A",
        "products": [
            {"product_id": "P001", "name": "產品1", "quantity": 2, "price": 100},
            {"product_id": "P002", "name": "產品2", "quantity": 1, "price": 200}
        ],
        "total": 400,
        "status": "已發貨"
    },
    {
        "order_id": "ORD002",
        "customer": "公司B",
        "products": [
            {"product_id": "P003", "name": "產品3", "quantity": 3, "price": 150},
            {"product_id": "P004", "name": "產品4", "quantity": 2, "price": 300}
        ],
        "total": 1050,
        "status": "處理中"
    }
]

order 這個變數是什麼型態呢? 是 串列 (list) ,看到開頭跟結尾是 [ 和 ]

order = [ od0, od1 ]

再來很清楚 od0 是 字典 (dictionary),並且這張訂單含有豐富的訊息在裏頭,產品 ID、客戶、商品 … 確實都是電商訂單該有的

od0 =     {
        "order_id": "ORD001",
        "customer": "公司A",
        "products": [
            {"product_id": "P001", "name": "產品1", "quantity": 2, "price": 100},

            {"product_id": "P002", "name": "產品2", "quantity": 1, "price": 200}
        ],
        "total": 400,
        "status": "已發貨"

    }

想想我們這邊下的 GenAI 指令跟沒有學過的會有什麼差異

我們沒有學過之前下的可能像這樣

電商裡面有非常多訂單,用訂單號為唯一編碼,紀錄訂單的各個內容,請幫我舉出這個例子

會發現少了很多型態的指定,那會出現什麼問題呢?

整合既有系統或串接,那你勢必會需要更懂程式了

當遇到要記有系統或 API,你的程式就不能僅僅是將功能給敘述而已了,你勢必要符合整合或串接系統的規範,而規範什麼的,其實很多跟對方給你的資料有關,所以跟 GenAI 精確指出資料的型態,是必要且不可少的一步。

直接將文件丟進去 GenAI 呢? 記不住或幻覺,最好的解法還是 分而治之

注意當前 GenAI 的限制

  1. 記憶力不夠
  2. 幻覺,會錯意
  3. 程式不能跑

1, 2 有很大的可能是因為給了太多不必要的資訊,所以切分必要資訊,並加入適當指令,是符合串接系統的最佳策略,而 3 如果 GenAI 也無法解的話,那只能回歸老本行,自己要來看錯誤了。

GenAI 帶來的學習上變革

所以在我看來,學習這些知識是必要的,而且在現在這個世代 知道 反而是最重要的,你熟不熟練其實還好,你能清楚地把要做的事情表述給 GenAI 才是最重要的,但要是你不知道這些技術名詞,那你也只能祈求 GenAI 生成出你想要的了。


上一篇
【Day04】演唱會門票的候補名單要怎麼表示? 那放棄和排候補呢?:有順序的序列 (串列 list)
下一篇
【Day06】ERP 系統中的布林邏輯與條件語句應用:銷售折扣、庫存管理、用戶權限 ...
系列文
30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言