chatgpt代碼生成 Flutter?ChatGPT代碼生成器方案概念
更新時間:2023年02月09日 16:58:54 作者:張風捷特烈
這篇文章主要為大家介紹了代碼生成器方案概念,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
目錄
作為一個自然語言處理工具,已經火了一段時間。對待不同人有著不同的看法,新事物的出現必然如此。利益相關者形成 抗拒 和狂熱兩極;嘩眾取寵者蹭蹭熱度,問些花活,博人眼球;獵奇者嘗嘗鮮,起哄者挑挑火;實用派在思考新事物的價值和勞動力:
對于那些拿 當百科全書來用的,或詢問哲學問題的朋友,我只想說:
對于一個問題,用錯誤的工具去處理得出錯誤的結果,是一件很正常的事。
1. 的特點和劣勢
最大的特點是基礎的語義分析,讓計算機對自然語言進行處理并輸出。在一段會話中,上下文是有效的,所以可以類似于交流。
問這個問題,它會怎么回答?
這種獵奇的心理,會讓一部分人期望嘗試;有稀奇古怪或愚蠢的回答,也可以滿足人類對人工智障的優越感;分享問答,也讓 擁有一絲的社交屬性。蹭熱度、獵奇、起哄三者可以用它填充一塊內心的空虛,也僅止步于此。
目前的劣勢也很明顯,由于數據是幾年前的,所以時效性不強;對很多問題回答的精準度并不高,對于盲目相信的人,或判別力較差的朋友并不友好;最后一點,非常重要:對于工具而言,如果對其依賴性太高,脫離工具時,會讓人的主觀能動性降低。
h3>2. 代碼的生成與規則誘導
如下所示,讓它生成一個 Dart 的 User 類:
生成一個 dart 類 User, 字段為 : 可空 int 型 age 、 非空 型 默認值為 “”
雖然代碼給出了,但是可以看出,這是空安全之前的代碼。可能很多人到這里,覺得數據陳舊沒什么用途,就拜拜了您嘞。
但它是一個有會話上下文的自然語言處理工具,你可以讓它理解一些概念。就像一個新員工,上班第一天出了一點小錯誤,你是立刻開除他,還是告訴他該怎么正確處理。如下所示,給了它一個概念:
Dart 新版本中可空類型定義時,其后需要加 ?
如下所示,你就可以在當前的會話環境中讓它生成更多字段的類型:
用 Dart 新版本生成一個 dart 類 User,字段為: 非空 int 型 age , 非空 型 默認值為 “” , 非空 int 型 ,可空 型info, 非空 int 型
如果存在問題,可以繼續進行指正。比如 :
用 Dart 新版本,有默認值的字段不需要使用 關鍵字,其他非空字段需要
所以對于 而言,我們可以把它看成一個有一些基礎知識的,可為我們免費服務的員工,簡稱:奴隸。當它做錯事時,你罵它,責備它,拋棄它是毫無意義的,因為它是機器。我們需要去誘導它理解,在當前工作環境中正確的事。
這樣在當前會話中,它就可以理解你訴說的規則,當用它創建其他類時,他就不會再犯錯。并且不排除它會基于你的規則chatgpt代碼生成,去完善自身的知識儲備,當眾多的人用正確的規則去誘導它,這就是一個善意的正反饋。
3. 解決方案的概念
這里從生成的代碼不支持空安全到支持空安全,其實只用了幾句話。第一句是反饋測試,看看它的默認知識儲備
生成一個 dart 類 User,字段為 : 可空 int 型 age 、 非空 型 默認值為 “”
當它的輸出不滿足我們的需求時chatgpt代碼生成,再進行誘導:
Dart 新版本中可空類型定義時,其后需要加 ?
用 Dart 新版本,有默認值的字段不需要使用 關鍵字,其他非空字段需要
在誘導完成之后,它就可以給出滿足需求的輸出。這種誘導后提供的會話環境,輸出是相對穩定的,完成特定的任務。這就是為不確定的輸出,添加規則,使其輸出趨近冪等性。一旦一項可以處理任務的工具有這種性質,就可以面向任何人使用。可以稱這種誘導過程為解決某一問題的一種解決方案。
比如上面的三句話就是:根據類信息生成 Dart 數據類型,并支持空安全。在當前環境下,就可以基于這種方案去處理同類的任務:
用 Dart 新版本生成一個 dart 類 ,字段為: 非空 int 型 cost , 非空 型 默認值為 “” , 非空 int 型 ,可空 型, 非空 型
你拷貝代碼后,就是可用的:
4. Dart 數據類生成器完善
上面生成 Dart 數據類比較簡單,下面繼續拓展,比如對于數據類型而言、、的方法自己寫起來比較麻煩。如果現在告訴它:
為上面的類提供 、 、 方法
它會進行提供,說明它具有這個默認知識儲備,但可以看到方法中的字段不符合空安全:
此時可以訓練它的類型可空的意識,讓它主動處理類似的問題,也可以直白的告訴它
將上面的 方法入參類型后加 ? 號
這樣生成的類就可以使用了:
class TaskResult { final int cost; final String taskName; final int count; final String? taskInfo; final String taskCode; TaskResult({ required this.cost, this.taskName = 'unknown', required this.count, this.taskInfo, required this.taskCode, }); TaskResult copyWith({ int? cost, String? taskName, int? count, String? taskInfo, String? taskCode, }) { return TaskResult( cost: cost ?? this.cost, taskName: taskName ?? this.taskName, count: count ?? this.count, taskInfo: taskInfo ?? this.taskInfo, taskCode: taskCode ?? this.taskCode, ); } MaptoJson() { return { 'cost': cost, 'taskName': taskName, 'count': count, 'taskInfo': taskInfo, 'taskCode': taskCode, }; } static TaskResult fromJson(Map json) { return TaskResult( cost: json['cost'] as int, taskName: json['taskName'] as String, count: json['count'] as int, taskInfo: json['taskInfo'] as String, taskCode: json['taskCode'] as String, ); } }
5. 代碼生成字符串 與 生成字符串
對于一些相對固定的代碼,可以使用代碼邏輯,拼接字符串來生成。如下所示,通過對類結構的抽象化,使用對象進行配置,輸出字符串。我們來思考一下,這和 生成代碼的區別。
首先,使用代碼生成代碼是一種完全的冪等行為。也就是說任何人、在任何時間、任何空間下,使用相同的輸入,都可以獲取到相同的輸出,是絕對精準的。其產生代碼的行為邏輯是完全可控的,人的內心是期待確定性的。
而 對自然語言的理解,你可以用語言去引導它輸出一些你的需求,比如 :
以json 格式生成 10 句連續的中文對話,key 為 包括。另外 time 字段為時間戳 ,type 字段1,2 隨機
其實沒有什么孰強孰弱,只是使用場景的不同而已。刀在不同人的手里有不同的用法,人是生產生活的主體chatgpt代碼生成,工具只有服務的屬性。駕馭工具,讓它產生實用的價值,才是工具存在的意義。好了,本文到這里就扯完了,感謝觀看 ~
以上就是 代碼生成器方案概念的詳細內容,更多關于 代碼生成器的資料請關注腳本之家其它相關文章!
免責聲明:本文系轉載,版權歸原作者所有;旨在傳遞信息,不代表本站的觀點和立場和對其真實性負責。如需轉載,請聯系原作者。如果來源標注有誤或侵犯了您的合法權益或者其他問題不想在本站發布,來信即刪。
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。