Flutter & ChatGPT | Générateur de code

ChatGPT, en tant qu'outil de traitement du langage naturel, est populaire depuis un certain temps. Traitez ChatGPTdifférentes personnes avec des points de vue différents, et l'émergence de nouvelles choses doit être comme ça. Les parties prenantes se forment 抵制et 狂热se positionnent ; les sensationnalistes divaguent, demandent des astuces pour attirer l'attention ; les chasseurs de nouveautés essaient de nouvelles choses, et ceux qui font du bruit sont provocateurs ; les pragmatiques réfléchissent à la valeur et à la force de travail des nouvelles choses :

image.png

Pour ceux qui utilisent ChatGPT comme une encyclopédie, ou posent des questions philosophiques, je veux juste dire :

Pour un problème, il est normal d'utiliser le mauvais outil pour traiter le mauvais résultat.


1. Caractéristiques et inconvénients de ChatGPT

La plus grande caractéristique de ChatGPT est l'analyse sémantique de base, qui permet à l'ordinateur de traiter et de produire du langage naturel. Dans une conversation, le contexte est valide, il peut donc être similaire à la communication.

Posez cette question, comment répondra-t-elle?

Cette psychologie à la recherche de nouveauté incitera certaines personnes à essayer ; des réponses étranges ou stupides peuvent également satisfaire le sentiment de supériorité des êtres humains sur l'arriération mentale artificielle ; le partage de questions et de réponses donne également à ChatGPT une touche d'attributs sociaux. Les trois peuvent l'utiliser pour combler le vide de votre cœur, mais cela ne s'arrête pas là.


Les inconvénients actuels de ChatGPT sont également évidents. Étant donné que les données datent d'il y a quelques années, l'actualité n'est pas forte, la précision des réponses à de nombreuses questions n'est pas élevée et il n'est pas convivial pour les personnes qui croient aveuglément ou les amis avec un mauvais jugement. Le dernier point est très important : en ce qui concerne les outils, si la dépendance à ceux-ci est trop élevée, l'initiative subjective des gens sera réduite lorsqu'ils quitteront les outils.

image.png


2. Génération de code et induction de règles

Laissez-le générer une classe Dart User comme suit :

Générer une classe de fléchettes Utilisateur, les champs sont : nullable int type age, final non-null String type username valeur par défaut est "inconnu"

image.png

Bien que le code soit donné, on peut voir qu'il s'agit du code avant la sécurité nulle. Beaucoup de gens peuvent venir ici et penser que les données sont anciennes et inutiles, alors je vais vous dire au revoir.

image.png


Mais c'est un outil de traitement du langage naturel avec un contexte conversationnel, et vous pouvez lui faire comprendre certains concepts. Tout comme un nouvel employé qui a fait une petite erreur le premier jour de travail, vous devriez le renvoyer immédiatement ou lui dire comment y faire face correctement. Donnez-lui un concept comme celui-ci :

Dart 新版本中可空类型定义时,其后需要加 ?

image.png


如下所示,你就可以在当前的会话环境中让它生成更多字段的类型:

用 Dart 新版本生成一个 dart 类 User,字段为: final 非空 int 型 age , final 非空 String 型 username 默认值为 “unknown” , final 非空 int 型 height,可空 String型info,final 非空 int 型 roleId

image.png

如果存在问题,可以继续进行指正。比如 :

用 Dart 新版本,有默认值的字段不需要使用 required 关键字,其他非空字段需要

image.png

所以对于 ChatGPT 而言,我们可以把它看成一个有一些基础知识的,可为我们免费服务的员工,简称:奴隶。当它做错事时,你骂它,责备它,抛弃它是毫无意义的,因为它是机器。我们需要去 诱导 它理解,在当前工作环境中正确的事。

这样在当前会话中,它就可以理解你诉说的规则,当用它创建其他类时,他就不会再犯错。并且不排除它会基于你的规则,去完善自身的 知识储备 ,当众多的人用正确的规则去 诱导 它,这就是一个善意的正反馈。


3. 解决方案的概念

这里从生成的代码 不支持空安全支持空安全,其实只用了几句话。第一句是反馈测试,看看它的 默认知识储备

生成一个 dart 类 User, 字段为 : 可空 int 型 age 、final 非空 String 型 username 默认值为 “unknown”

当它的输出不满足我们的需求时,再进行 诱导

Dart 新版本中可空类型定义时,其后需要加 ?
用 Dart 新版本,有默认值的字段不需要使用 required 关键字,其他非空字段需要

在诱导完成之后,它就可以给出满足需求的输出。这种诱导后提供的会话环境,输出是相对稳定的,完成特定的任务。这就是为不确定的输出,添加规则,使其输出趋近 幂等性 。一旦一项可以处理任务的工具有这种性质,就可以面向任何人使用。可以称这种诱导过程为解决某一问题的一种 解决方案

比如上面的三句话就是:根据类信息生成 Dart 数据类型,并支持空安全。在当前环境下,就可以基于这种方案去处理同类的任务:

用 Dart 新版本生成一个 dart 类 TaskResult,字段为: final 非空 int 型 cost , final 非空 String 型 taskName 默认值为 “unknown” , final 非空 int 型 count,可空 String型taskInfo,final 非空 String型 taskCode

image.png

你拷贝代码后,就是可用的:

image.png


4. Dart 数据类生成器完善

上面生成 Dart 数据类比较简单,下面继续拓展,比如对于数据类型而言 copyWithtoJsonfromJson 的方法自己写起来比较麻烦。如果现在告诉它:

为上面的类提供 copyWith、toJson 、 fromJson 方法

它会进行提供,说明它具有这个 默认知识储备 ,但可以看到 copyWith 方法中的字段不符合空安全:

image.png

此时可以训练它的 类型可空 的意识,让它主动处理类似的问题,也可以直白的告诉它

将上面的 copyWith 方法入参类型后加 ? 号

La TaskResultclasse est prête à l'emploi :

image.png

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,
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'cost': cost,
      'taskName': taskName,
      'count': count,
      'taskInfo': taskInfo,
      'taskCode': taskCode,
    };
  }

  static TaskResult fromJson(Map<String, dynamic> 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. Chaînes générées par code et chaînes générées par ChatGPT

Pour certains codes relativement fixes, la logique de code peut être utilisée pour les générer en concaténant des chaînes. Comme indiqué ci-dessous, à travers l'abstraction de la structure de classe, utilisez des objets pour configurer et générer des chaînes. Réfléchissons à la différence entre ceci et le code généré par ChatGPT.

Premièrement, utiliser du code pour générer du code est un comportement complètement idempotent . C'est-à-dire que n'importe qui, à tout moment et dans n'importe quel espace, peut obtenir la même sortie avec la même entrée, ce qui est absolument exact. La logique comportementale de la génération de code est totalement contrôlable et les gens s'attendent à une certitude dans leur cœur.

image.png

En ce qui concerne la compréhension du langage naturel par ChatGPT, vous pouvez utiliser le langage pour le guider afin de répondre à certains de vos besoins, tels que :

Générez 10 dialogues chinois consécutifs au format json, la clé est le contenu. De plus, le champ heure est un horodatage et le champ type 1, 2 est aléatoire

image.png

En fait, il n'y a pas de fort ou de faible, c'est juste une différence dans les scénarios d'utilisation. Les couteaux ont des usages différents entre les mains de différentes personnes. Les personnes sont le corps principal de la production et de la vie , et les outils n'ont que l'attribut de service. Contrôler l'outil et lui faire produire une valeur pratique est le sens de l'existence de l'outil. Eh bien, cet article est ici, merci d'avoir regardé ~

Guess you like

Origin juejin.im/post/7197584339213762619