ChatGPT與碼農的機會

之前一篇博客已經寫了有關AI在博客編寫方面的優勢與對未來博客的編寫方面的思考。這篇文檔我繼續分享一個我在開發中的一個案例和相關的感想。

事件還原

我發現ChatGPT也可以幫助我編寫OData,於是我也利用GPT幫助我編程。

  • OData如何將filter與apply字段聯合使用?答案如下:
GET /odata/Products?$apply=groupby((Category), aggregate(UnitsInStock with sum as TotalUnitsInStock))&$filter=TotalUnitsInStock gt 100

ChatGPT提供了一個思路,不過這個例子卻不能正確運行,因爲通過聚合輸出的結果已經不能再進行進一步的OData篩選操作了。

於是我繼續告訴它這個不對,讓他重新編寫,卻一直得不到令我滿意的結果。

那麼換一個問題,關於聚合查詢的,對應的數據類型,可以看之前的我發的文章,我提問“我需要使用odata查詢按照adcode進行歸類,統計每個類別下面的attachdeviceinfo數量、deviceinfo數量和attachdevicetype數量”。回答如下:

/odata/DeviceInfos?$apply=groupby((Adcode), aggregate(AttachDevices/$count as NumAttachDevices, $count as NumDeviceInfos, AttachDevices/AttachDeviceType/$countdistinct as NumAttachDeviceTypes))

運行後報錯,提示缺少with,於是我定位了問題之後,我重新提問“提示AttachDevices/$count缺少with,請重新修改”

ChatGPT開始給我亂寫了:

“這個錯誤提示是由於count操作需要與一些其他操作一起使用,例如count操作需要與一些其他操作一起使用,例如filter或select。您需要將select。您需要將count操作與其中一個操作組合使用才能使其有效。

例如,如果您想要統計滿足某個過濾條件的設備數量,您可以使用以下URL:

/AttachDevices?$filter=Property eq 'Value'&$count=true

請注意,在此URL中,count操作需要與count操作需要與filter操作組合使用,並且filter操作必須出現在filter操作必須出現在count操作之前。”

已經開始給我扯東扯西了,然後我繼續修改提問的方式,依舊沒有得到的我想要的結果。我總結一下:

  • OData相關的資料比較少,數據集相對也較少,所以適配並不好,感覺還是一個冷門的技術....
  • AI提供的思路完全沒有問題,但是具體實現的語法上並不符合OData的規範。
  • prompt的方式或許也需要改進,提供更多的上下文或者輔助信息,幫助AI更好地解決問題。

最後,我想到如果$count不行,那麼使用實體的具體屬性用於統計是否可以?改成以下就OK了。

odata/attachdeviceinfos?$apply=groupby((deviceinfo/Adcode), aggregate($count as NumAttachDevices, deviceinfo/deviceid with countdistinct as NumDevices, attachdevicetype/id with countdistinct as NumTypes))

機會

在整個過程中,AI做了大多數工作,但是我依然是那個臨門一腳的角色。所以,AI時代提供給現在程序員的機會:

  • 依然需要掌握一些相對冷門,或者較爲複雜的技術,這樣在AI給的解決方案錯誤的情況下,不至於完全抓瞎。
  • 掌握快速Troubleshooting的技巧,遇見AI也不能解決的問題時,通過文檔和相關經驗迅速給出符合場景要求的方案。

所以,請警惕完全依賴AI時,它可能無法提供答案或者是錯誤答案。我想起了一個很久之前的電影《機械公敵》,人類在AI背叛的時候一時束手無策。。。希望我們未來不會這樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章