O ChatGPT, como uma ferramenta de processamento de linguagem natural, é popular há algum tempo. Trate pessoas ChatGPT
diferentes 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:
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.
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"
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ê.
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 新版本中可空类型定义时,其后需要加 ?
如下所示,你就可以在当前的会话环境中让它生成更多字段的类型:
用 Dart 新版本生成一个 dart 类 User,字段为: final 非空 int 型 age , final 非空 String 型 username 默认值为 “unknown” , final 非空 int 型 height,可空 String型info,final 非空 int 型 roleId
如果存在问题,可以继续进行指正。比如 :
用 Dart 新版本,有默认值的字段不需要使用 required 关键字,其他非空字段需要
所以对于 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
你拷贝代码后,就是可用的:
4. Dart 数据类生成器完善
上面生成 Dart 数据类比较简单,下面继续拓展,比如对于数据类型而言 copyWith
、toJson
、fromJson
的方法自己写起来比较麻烦。如果现在告诉它:
为上面的类提供 copyWith、toJson 、 fromJson 方法
它会进行提供,说明它具有这个 默认知识储备
,但可以看到 copyWith
方法中的字段不符合空安全:
此时可以训练它的 类型可空 的意识,让它主动处理类似的问题,也可以直白的告诉它
将上面的 copyWith 方法入参类型后加 ? 号
A TaskResult
classe está pronta para uso:
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.
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
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 ~