Flutter & ChatGPT | Gerador de Código

O ChatGPT, como uma ferramenta de processamento de linguagem natural, é popular há algum tempo. Trate pessoas ChatGPTdiferentes com visões diferentes, e o surgimento de coisas novas deve ser assim. Stakeholders formam 抵制e 狂热postes; sensacionalistas estão divagando, pedindo alguns truques para chamar a atenção das pessoas; caçadores de novidades estão tentando coisas novas, e aqueles que fazem barulho são provocativos; pragmatistas estão pensando sobre o valor e a força de trabalho de coisas novas:

imagem.png

Para quem usa o ChatGPT como enciclopédia, ou faz perguntas filosóficas, só quero dizer:

Para um problema, é normal usar a ferramenta errada para lidar com o resultado errado.


1. Recursos e desvantagens do ChatGPT

A maior característica do ChatGPT é a análise semântica básica, que permite ao computador processar e produzir linguagem natural. Em uma conversa, o contexto é válido, então pode ser semelhante à comunicação.

Faça esta pergunta, como ela responderá?

Essa psicologia em busca de novidades fará com que algumas pessoas fiquem ansiosas para tentar; respostas estranhas ou estúpidas também podem satisfazer o senso de superioridade dos seres humanos sobre o retardo mental artificial; compartilhar perguntas e respostas também dá ao ChatGPT um toque de atributos sociais. Os três podem usá-lo para preencher o vazio em seu coração, mas não para por aí.


As desvantagens atuais do ChatGPT também são óbvias: como os dados são de alguns anos atrás, a pontualidade não é forte, a precisão de responder a muitas perguntas não é alta e não é amigável para pessoas que acreditam cegamente ou amigos com mau julgamento; O último ponto é muito importante: no que diz respeito às ferramentas, se a dependência delas for muito alta, a iniciativa subjetiva das pessoas será reduzida quando elas deixarem as ferramentas.

imagem.png


2. Geração de código e indução de regras

Deixe-o gerar uma classe Dart User da seguinte forma:

Gere uma classe dart Usuário, os campos são: tipo int anulável idade, final não nulo Tipo de string nome de usuário valor padrão é "desconhecido"

imagem.png

Embora o código seja fornecido, pode-se ver que este é o código antes da segurança nula. Muitas pessoas podem vir aqui e achar que os dados são antigos e inúteis, então vou me despedir de você.

imagem.png


Mas é uma ferramenta de processamento de linguagem natural com um contexto de conversação e você pode fazê-la entender alguns conceitos. Assim como um novo funcionário que cometeu um pequeno erro no primeiro dia de trabalho, você deve demiti-lo imediatamente ou dizer a ele como lidar com isso corretamente. Dê-lhe um conceito como este:

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

imagem.png


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

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

imagem.png

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

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

imagem.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

imagem.png

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

imagem.png


4. Dart 数据类生成器完善

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

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

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

imagem.png

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

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

A TaskResultclasse está pronta para uso:

imagem.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. Strings geradas por código e strings geradas pelo ChatGPT

Para alguns códigos relativamente fixos, a lógica do código pode ser usada para gerá-los concatenando strings. Conforme mostrado abaixo, por meio da abstração da estrutura de classe, use objetos para configurar e enviar strings. Vamos pensar na diferença entre este e o código gerado pelo ChatGPT.

Primeiro, usar código para gerar código é um comportamento completamente idempotente . Ou seja, qualquer pessoa, a qualquer momento e em qualquer espaço, pode obter a mesma saída com a mesma entrada, o que é absolutamente preciso. A lógica comportamental de geração de código é completamente controlável e as pessoas esperam certeza em seus corações.

imagem.png

Quanto ao entendimento de linguagem natural do ChatGPT, você pode usar a linguagem para orientá-lo a produzir algumas de suas necessidades, como:

Gere 10 diálogos consecutivos em chinês no formato json, a chave é o conteúdo. Além disso, o campo de tempo é um carimbo de data/hora e o campo de tipo 1, 2 é aleatório

imagem.png

Na verdade, não existe forte ou fraco, é apenas uma diferença nos cenários de uso. As facas têm usos diferentes nas mãos de pessoas diferentes. As pessoas são o corpo principal da produção e da vida , e as ferramentas têm apenas o atributo de serviço. Controlar a ferramenta e fazê-la produzir valor prático é o significado da existência da ferramenta. Bem, este artigo está aqui, obrigado por assistir ~

Acho que você gosta

Origin juejin.im/post/7197584339213762619
Recomendado
Clasificación