305 lines
17 KiB
PHP
Executable File
305 lines
17 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\TutorialLesson;
|
|
use App\Models\TutorialQuestion;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class TutorialSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$lessons = [
|
|
[
|
|
'title' => 'O que é Engenharia de Prompt?',
|
|
'content' => 'A engenharia de prompt é o processo de projetar, refinar e otimizar entradas (prompts) para obter respostas melhores e mais úteis de modelos de linguagem. Um prompt bem construído pode transformar um modelo genérico em um assistente especializado. Dominar essa habilidade é essencial para extrair o máximo potencial de IAs como GPT, Claude, Gemini e outras.',
|
|
'example_bad' => 'Escreva sobre marketing.',
|
|
'example_good' => 'Crie um guia de 500 palavras sobre estratégias de marketing digital para pequenas empresas de tecnologia, focando em SEO e redes sociais.',
|
|
'order' => 1,
|
|
],
|
|
[
|
|
'title' => 'Defina um Objetivo Claro',
|
|
'content' => 'Comece sempre declarando o que deseja alcançar. Quanto mais específico, melhor. Evite comandos vagos. Um objetivo claro ajuda o modelo a entender exatamente o que você precisa.',
|
|
'example_bad' => 'Escreva sobre marketing.',
|
|
'example_good' => 'Crie um guia de 500 palavras sobre estratégias de marketing digital para pequenas empresas de tecnologia, focando em SEO e redes sociais.',
|
|
'order' => 2,
|
|
],
|
|
[
|
|
'title' => 'Forneça Contexto',
|
|
'content' => 'Informe ao modelo o cenário, o público-alvo e as restrições. O contexto melhora drasticamente a qualidade da resposta. Quanto mais contexto relevante você fornecer, mais precisa será a resposta.',
|
|
'example_bad' => 'Explique como funciona uma API REST.',
|
|
'example_good' => 'Explique como funciona uma API REST para um grupo de estudantes de desenvolvimento web de 18 a 25 anos, que estão aprendendo backend com Node.js pela primeira vez. Use analogias simples e evite jargões excessivos.',
|
|
'order' => 3,
|
|
],
|
|
[
|
|
'title' => 'Estabeleça a Persona',
|
|
'content' => 'Peça para o modelo assumir um papel específico: "Você é um professor de matemática", "Você é um revisor de código sênior". Isso direciona o estilo e a profundidade da resposta.',
|
|
'example_bad' => 'Corrija este código.',
|
|
'example_good' => 'Você é um revisor de código sênior especializado em PHP e Laravel. Analise o seguinte código, identifique problemas de performance, segurança e legibilidade, e sugira melhorias seguindo as melhores práticas do PSR-12.',
|
|
'order' => 4,
|
|
],
|
|
[
|
|
'title' => 'Defina o Tom e Estilo',
|
|
'content' => 'Especifique se a resposta deve ser formal, informal, técnica, simples, persuasiva, etc. O tom adequado garante que a comunicação seja eficaz para o público-alvo.',
|
|
'example_bad' => 'Escreva um e-mail para um cliente.',
|
|
'example_good' => 'Escreva um e-mail profissional e cordial para um cliente que solicitou um reembolso. O tom deve ser empático, mas mantendo a formalidade. Explique o processo de reembolso em até 3 parágrafos e ofereça um cupom de 10% de desconto como compensação.',
|
|
'order' => 5,
|
|
],
|
|
[
|
|
'title' => 'Liste Restrições',
|
|
'content' => 'Limite o modelo com regras: "Não use jargões", "Responda em até 3 parágrafos", "Não inclua opiniões pessoais". Restrições claras evitam respostas fora do esperado.',
|
|
'example_bad' => 'Faça um resumo deste artigo.',
|
|
'example_good' => 'Faça um resumo do artigo abaixo seguindo estas regras:
|
|
- Máximo de 150 palavras
|
|
- Apenas fatos presentes no texto
|
|
- Não inclua opiniões pessoais
|
|
- Use bullet points
|
|
- Não use jargões técnicos',
|
|
'order' => 6,
|
|
],
|
|
[
|
|
'title' => 'Especifique o Formato de Saída',
|
|
'content' => 'Peça a estrutura desejada: lista, tabela, JSON, markdown, código, etc. O formato correto facilita o uso da resposta em outros sistemas ou documentos.',
|
|
'example_bad' => 'Liste os benefícios do exercício físico.',
|
|
'example_good' => 'Liste os 5 principais benefícios do exercício físico no formato de tabela Markdown com duas colunas: "Benefício" e "Descrição".',
|
|
'order' => 7,
|
|
],
|
|
[
|
|
'title' => 'Use Exemplos (Few-Shot)',
|
|
'content' => 'Mostre ao modelo exemplos do que espera. Isso reduz alucinações e aumenta a precisão. O aprendizado few-shot é uma das técnicas mais poderosas da engenharia de prompt.',
|
|
'example_bad' => 'Classifique estas frases como positivas ou negativas.',
|
|
'example_good' => 'Classifique as frases abaixo como "positiva" ou "negativa":
|
|
|
|
Exemplo 1: "Adorei o produto, chegou rápido e bem embalado." -> Positiva
|
|
Exemplo 2: "Péssimo atendimento, demoraram 2 horas para me atender." -> Negativa
|
|
Exemplo 3: "O produto é ok, nada de especial." -> Neutra
|
|
|
|
Agora classifique: "A entrega foi super rápida e o produto veio perfeito."',
|
|
'order' => 8,
|
|
],
|
|
[
|
|
'title' => 'Utilize Variáveis',
|
|
'content' => 'Use placeholders como {{variavel}} para criar prompts reutilizáveis. Variáveis permitem criar templates que podem ser usados em diferentes situações sem reescrever todo o prompt.',
|
|
'example_bad' => null,
|
|
'example_good' => 'Você é um especialista em {{area}}.
|
|
Crie um artigo de {{quantidade_palavras}} palavras sobre {{topico}}.
|
|
Público-alvo: {{publico}}.
|
|
Tom: {{tom}}.
|
|
Formato: {{formato}}',
|
|
'order' => 9,
|
|
],
|
|
[
|
|
'title' => 'Ajuste a Temperatura',
|
|
'content' => 'Temperatura baixa (0.0 - 0.3): respostas mais determinísticas e precisas. Temperatura alta (0.7 - 1.0): mais criativa e diversificada. A escolha da temperatura depende do tipo de tarefa.',
|
|
'example_bad' => null,
|
|
'example_good' => null,
|
|
'order' => 10,
|
|
],
|
|
[
|
|
'title' => 'Controle os Max Tokens',
|
|
'content' => 'Defina o tamanho máximo da resposta. Evite respostas muito longas ou truncadas. O controle de tokens ajuda a gerenciar custos e garantir respostas no tamanho adequado.',
|
|
'example_bad' => null,
|
|
'example_good' => null,
|
|
'order' => 11,
|
|
],
|
|
[
|
|
'title' => 'Técnica Chain-of-Thought',
|
|
'content' => 'Peça para o modelo pensar passo a passo antes de responder. Adicione frases como "Vamos pensar passo a passo" ou "Primeiro, identifique os elementos principais". Isso melhora significativamente respostas complexas.',
|
|
'example_bad' => 'Resolva este problema de matemática: Se João tem 3 maçãs e dá 1 para Maria, quantas maçãs ele tem?',
|
|
'example_good' => 'Resolva este problema de matemática passo a passo: Se João tem 3 maçãs e dá 1 para Maria, quantas maçãs ele tem? Mostre seu raciocínio antes de dar a resposta final.',
|
|
'order' => 12,
|
|
],
|
|
[
|
|
'title' => 'Técnica Zero-Shot',
|
|
'content' => 'Peça diretamente sem exemplos. Funciona bem para tarefas simples e diretas. O zero-shot é a forma mais básica de interação com um modelo de linguagem.',
|
|
'example_bad' => null,
|
|
'example_good' => null,
|
|
'order' => 13,
|
|
],
|
|
[
|
|
'title' => 'Técnica Few-Shot',
|
|
'content' => 'Forneça exemplos de entrada e saída. Ideal para tarefas de classificação, extração e formatação. Quanto mais exemplos relevantes, melhor o desempenho.',
|
|
'example_bad' => null,
|
|
'example_good' => null,
|
|
'order' => 14,
|
|
],
|
|
[
|
|
'title' => 'Técnica One-Shot',
|
|
'content' => 'Forneça apenas um exemplo. Útil quando você tem um exemplo representativo mas não consegue fornecer múltiplos exemplos.',
|
|
'example_bad' => null,
|
|
'example_good' => null,
|
|
'order' => 15,
|
|
],
|
|
[
|
|
'title' => 'Prompt de Sistema (System Prompt)',
|
|
'content' => 'Defina regras globais que se aplicam a toda a conversa. O prompt de sistema estabelece o comportamento base do modelo e deve ser usado para definir persona, regras e restrições permanentes.',
|
|
'example_bad' => null,
|
|
'example_good' => 'Você é um assistente especializado em atendimento ao cliente da empresa TechCorp. Sempre responda de forma profissional, empática e objetiva. Nunca forneça informações sobre concorrentes. Se não souber a resposta, diga "Vou verificar essa informação com nossa equipe especializada".',
|
|
'order' => 16,
|
|
],
|
|
[
|
|
'title' => 'Prompt de Usuário (User Prompt)',
|
|
'content' => 'A entrada específica do usuário em cada interação. Deve ser clara, objetiva e conter todo o contexto necessário para a resposta.',
|
|
'example_bad' => 'Me ajude com meu problema.',
|
|
'example_good' => 'Estou tendo dificuldades para configurar o pagamento no meu aplicativo. O erro que aparece é "Transação não autorizada". Já verifiquei meus dados bancários e estão corretos. O que devo fazer?',
|
|
'order' => 17,
|
|
],
|
|
[
|
|
'title' => 'Iteração e Refinamento',
|
|
'content' => 'A primeira resposta raramente é perfeita. Ajuste o prompt com base no resultado. Adicione detalhes, remova ambiguidades e teste variações até obter o resultado desejado.',
|
|
'example_bad' => null,
|
|
'example_good' => null,
|
|
'order' => 18,
|
|
],
|
|
[
|
|
'title' => 'Evite Alucinações',
|
|
'content' => 'Peça para o modelo citar fontes, admitir incertezas e separar fatos de opiniões. Alucinações são respostas inventadas que parecem corretas mas não são.',
|
|
'example_bad' => 'Quem inventou a internet?',
|
|
'example_good' => 'Quem inventou a internet? Responda apenas com base em fatos históricos documentados. Se não tiver certeza, indique a incerteza e cite as fontes consultadas.',
|
|
'order' => 19,
|
|
],
|
|
[
|
|
'title' => 'Melhores Práticas e Conclusão',
|
|
'content' => 'Resumo das melhores práticas: seja específico, forneça contexto, use exemplos, defina formato, ajuste parâmetros e sempre itere. A engenharia de prompt é uma habilidade que se desenvolve com prática contínua.',
|
|
'example_bad' => null,
|
|
'example_good' => null,
|
|
'order' => 20,
|
|
],
|
|
];
|
|
|
|
foreach ($lessons as $lessonData) {
|
|
TutorialLesson::create($lessonData);
|
|
}
|
|
|
|
$questions = [
|
|
[
|
|
'question' => 'O que é engenharia de prompt?',
|
|
'options' => [
|
|
'Um tipo de modelo de linguagem',
|
|
'O processo de projetar e refinar entradas para obter melhores respostas de IAs',
|
|
'Uma linguagem de programação',
|
|
'Um framework de desenvolvimento',
|
|
],
|
|
'correct_answer' => 'O processo de projetar e refinar entradas para obter melhores respostas de IAs',
|
|
'explanation' => 'Engenharia de prompt é a arte de criar instruções eficazes para modelos de linguagem.',
|
|
'order' => 1,
|
|
],
|
|
[
|
|
'question' => 'Qual elemento NÃO faz parte de um prompt eficaz?',
|
|
'options' => [
|
|
'Objetivo claro',
|
|
'Contexto',
|
|
'Informações aleatórias sem relação com a tarefa',
|
|
'Formato de saída definido',
|
|
],
|
|
'correct_answer' => 'Informações aleatórias sem relação com a tarefa',
|
|
'explanation' => 'Toda informação no prompt deve ser relevante para a tarefa desejada.',
|
|
'order' => 2,
|
|
],
|
|
[
|
|
'question' => 'Qual técnica consiste em fornecer exemplos de entrada e saída?',
|
|
'options' => [
|
|
'Zero-shot',
|
|
'One-shot',
|
|
'Few-shot',
|
|
'Chain-of-thought',
|
|
],
|
|
'correct_answer' => 'Few-shot',
|
|
'explanation' => 'Few-shot é a técnica de fornecer múltiplos exemplos para guiar o modelo.',
|
|
'order' => 3,
|
|
],
|
|
[
|
|
'question' => 'Para que serve a temperatura em um modelo de linguagem?',
|
|
'options' => [
|
|
'Controlar o tamanho da resposta',
|
|
'Controlar a criatividade/determinismo da resposta',
|
|
'Definir o idioma da resposta',
|
|
'Aumentar a velocidade de processamento',
|
|
],
|
|
'correct_answer' => 'Controlar a criatividade/determinismo da resposta',
|
|
'explanation' => 'Temperatura baixa = mais determinístico, temperatura alta = mais criativo.',
|
|
'order' => 4,
|
|
],
|
|
[
|
|
'question' => 'Qual temperatura é recomendada para tarefas factuais e extração de dados?',
|
|
'options' => [
|
|
'0.0 - 0.3',
|
|
'0.4 - 0.6',
|
|
'0.7 - 1.0',
|
|
'Qualquer valor funciona igual',
|
|
],
|
|
'correct_answer' => '0.0 - 0.3',
|
|
'explanation' => 'Tarefas factuais precisam de respostas determinísticas e precisas.',
|
|
'order' => 5,
|
|
],
|
|
[
|
|
'question' => 'O que é um prompt de sistema (system prompt)?',
|
|
'options' => [
|
|
'Um comando para reiniciar o sistema',
|
|
'Um prompt que define regras globais e comportamento do modelo',
|
|
'Um erro do sistema',
|
|
'Uma configuração de hardware',
|
|
],
|
|
'correct_answer' => 'Um prompt que define regras globais e comportamento do modelo',
|
|
'explanation' => 'O system prompt estabelece o comportamento base do modelo em toda a conversa.',
|
|
'order' => 6,
|
|
],
|
|
[
|
|
'question' => 'Qual a função das variáveis em prompts?',
|
|
'options' => [
|
|
'Aumentar o tamanho do prompt',
|
|
'Tornar o prompt reutilizável e dinâmico',
|
|
'Diminuir a qualidade da resposta',
|
|
'Apenas decorar o texto',
|
|
],
|
|
'correct_answer' => 'Tornar o prompt reutilizável e dinâmico',
|
|
'explanation' => 'Variáveis permitem criar templates reutilizáveis para diferentes cenários.',
|
|
'order' => 7,
|
|
],
|
|
[
|
|
'question' => 'O que é a técnica Chain-of-Thought?',
|
|
'options' => [
|
|
'Uma técnica de encadeamento de prompts',
|
|
'Pedir para o modelo pensar passo a passo antes de responder',
|
|
'Conectar vários modelos de IA',
|
|
'Uma forma de programação em cadeia',
|
|
],
|
|
'correct_answer' => 'Pedir para o modelo pensar passo a passo antes de responder',
|
|
'explanation' => 'Chain-of-Thought melhora respostas complexas solicitando raciocínio passo a passo.',
|
|
'order' => 8,
|
|
],
|
|
[
|
|
'question' => 'Por que é importante iterar e refinar prompts?',
|
|
'options' => [
|
|
'Porque a primeira resposta sempre é perfeita',
|
|
'Porque ajustes baseados no resultado melhoram a qualidade',
|
|
'Porque é uma regra da linguagem Python',
|
|
'Porque modelos não entendem prompts longos',
|
|
],
|
|
'correct_answer' => 'Porque ajustes baseados no resultado melhoram a qualidade',
|
|
'explanation' => 'A engenharia de prompt é um processo iterativo de melhoria contínua.',
|
|
'order' => 9,
|
|
],
|
|
[
|
|
'question' => 'O que são alucinações em modelos de linguagem?',
|
|
'options' => [
|
|
'Respostas corretas e precisas',
|
|
'Respostas inventadas que parecem corretas mas não são',
|
|
'Um tipo de erro de sistema',
|
|
'Respostas muito curtas',
|
|
],
|
|
'correct_answer' => 'Respostas inventadas que parecem corretas mas não são',
|
|
'explanation' => 'Alucinações são informações falsas geradas pelo modelo que parecem plausíveis.',
|
|
'order' => 10,
|
|
],
|
|
];
|
|
|
|
foreach ($questions as $questionData) {
|
|
TutorialQuestion::create($questionData);
|
|
}
|
|
}
|
|
}
|