Skip to content

wduqu001/bugToUserStory-PromptOtimization

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bug to User Story — Prompt Otimizado v2

Técnicas Aplicadas (Fase 2)

1. Role Prompting

Justificativa: Definir uma persona especialista força o modelo a adotar vocabulário, tom e profundidade adequados ao domínio de Product Management.

Aplicação:

Você é uma Product Manager Sênior especializada em transformar bug reports em user stories acionáveis.

Isso garante respostas com tom profissional, centradas no usuário e com foco em valor de negócio — ao invés de respostas genéricas de assistente.


2. Chain of Thought (CoT)

Justificativa: Bugs complexos exigem análise em etapas (identificar problema → persona → fatos → critérios → revisão). O CoT força o modelo a seguir esse roteiro antes de responder, reduzindo omissões e inconsistências.

Aplicação:

Aplique Chain of Thought (CoT) internamente antes de responder.
Roteiro interno obrigatório:
1) Identifique o problema principal e o impacto no usuário/negócio.
2) Identifique a persona correta.
3) Liste TODOS os fatos explícitos relevantes.
4) Defina critérios de aceitação observáveis e testáveis.
5) Para bugs médios/complexos, inclua soluções técnicas padrão.
6) Revise: não há conteúdo duplicado?

Regra crítica: nunca exponha seu raciocínio interno.

O passo 6 (revisão anti-duplicação) foi adicionado após feedbacks de avaliação que detectaram seções e critérios repetidos.


3. Few-shot Learning

Justificativa: Exemplos concretos de entrada/saída calibram o modelo melhor do que instruções abstratas. Incluímos 5 exemplos cobrindo as 3 faixas de complexidade.

Aplicação: 5 pares bug_report → user_story no campo examples:

# Bug Complexidade Formato demonstrado
1 Botão de carrinho não funciona Simples User story + 5 critérios Dado/Quando/Então
2 Webhook de pagamento com HTTP 500 Média + Contexto Técnico
3 Relatório lento (>120s) Média + Contexto Técnico com metas
4 Cálculo de desconto errado Média + Exemplo de Cálculo
5 App Android trava com 50+ itens Média + Critérios Técnicos + Contexto do Bug

4. Skeleton of Thought

Justificativa: Definir a estrutura exata da resposta (seções, ordem, formato) evita respostas desestruturadas e facilita avaliação automática.

Aplicação: Três templates de formato conforme complexidade:

  • Simples: User story + Critérios de Aceitação (5 bullets)
  • Média: User story + Critérios + Seções extras nomeadas (Contexto Técnico, Acessibilidade, etc.)
  • Complexa: === USER STORY PRINCIPAL ====== CRITÉRIOS DE ACEITAÇÃO === (A/B/C/D) → === CRITÉRIOS TÉCNICOS ====== CONTEXTO DO BUG ====== TASKS TÉCNICAS SUGERIDAS ====== MÉTRICAS DE SUCESSO ===

5. Constraint Prompting

Justificativa: Restrições explícitas eliminam os erros mais frequentes detectados durante as iterações de avaliação.

Aplicação — Restrições-chave:

Restrição Problema que resolve
"PROIBIDO DUPLICAR: nunca criar duas seções com o mesmo nome" Seções "Contexto Técnico" duplicadas (clarity 0.63)
"Preservar valores EXATAMENTE como escritos no bug" "1000" virando ">1000" (precision 0.75)
"Consistência interna: mesmo valor em toda a resposta" "1 segundo" vs "2 segundos" contraditório (clarity 0.82)
"Escopo restrito ao bug: cada critério endereça o problema reportado" Log de auditoria adicionado em bug de UI (precision 0.89)
"Critérios específicos: endpoint, HTTP, status DEVEM aparecer" Webhook genérico sem HTTP 200/status (completeness 0.65)
"Bugs de integração: cobrir fluxo completo" Critérios vagos em bugs de webhook/API

Resultados Finais

Links Públicos

Comparativo v1 vs v2

Métrica v1 (prompt original) v2 (prompt otimizado) Delta
Acceptance Criteria Score 0.59 0.95 +0.36
Clarity 1.00 0.99 -0.01
Completeness Score 0.79 0.96 +0.17
F1 Score 0.60 0.84 +0.24
Precision 0.93 0.99 +0.06
Tone Score 0.91 0.98 +0.07
User Story Format Score 0.94 0.97 +0.03
Média Geral 0.82 0.96 +0.14
  • Modelo utilizado foi o gemini-2.5-flash

Dashboard de avaliação no LangSmith

Os resultados completos com scores detalhados por exemplo estão disponíveis no dashboard do LangSmith.

Iterações de Otimização

Iteração Problema identificado Ação tomada Impacto
1 F1:0.00 no exemplo 1 — extract_json_from_response falhava quando LLM envolvia JSON em code fences (```json ) Adicionado strip de markdown code fences antes do parse em metrics.py F1 do exemplo 1 corrigido (0.00→1.00)
2 Clarity 0.72 — avaliador detectou: termos em inglês ("succeed", "timeout"), prolixidade/redundância entre seções, valores numéricos inventados (z-index 1100 vs >1050), falta de critérios de acessibilidade (ESC, backdrop) e reserva de estoque com tempo limite Adicionados princípios: responder inteiramente em português; concisão (não repetir conceito entre seções); não inventar valores numéricos; regras para UI/UX (fechar com ESC, clicar fora, foco automático); regras para concorrência/estoque (reserva temporária com tempo limite) Clarity subiu, Precision subiu
3 CoT step 5 mandava inferir funcionalidades não solicitadas (email, log) Removido; escopo restrito ao bug Precision subiu
4 Bugs complexos tinham user story duplicada (texto + seção === USER STORY PRINCIPAL ===) Formato complexo começa direto na seção, sem texto antes Clarity subiu
5 Valores do bug alterados (1000→>1000), seções duplicadas, tempos contraditórios Regras de fidelidade exata, anti-duplicação de nomes, consistência interna Precision e Clarity subiram
6 Webhook genérico sem detalhes técnicos (HTTP 200, status, endpoint) Regra de especificidade + regra de integração (fluxo completo) Completeness subiu

Como Executar

Pré-requisitos

  • Python 3.9+
  • Conta no LangSmith com API Key
  • API Key da OpenAI ou Google Gemini

Setup

# Clonar o repositório
git clone https://github.com/wduqu001/ia-pull-evaluation-prompt.git
cd ia-pull-evaluation-prompt

# Criar e ativar ambiente virtual
python3 -m venv venv
source venv/bin/activate

# Instalar dependências
pip install -r requirements.txt

# Configurar variáveis de ambiente
cp .env.example .env
# Editar .env com suas API keys

Execução

# 1. Pull do prompt original (v1)
python src/pull_prompts.py

# 2. Push do prompt otimizado (v2)
python src/push_prompts.py

# 3. Avaliação
python src/evaluate.py

# 4. Testes de validação
pytest tests/test_prompts.py

Evidências no LangSmith

  • Dataset de avaliação (20 exemplos): Acessar dataset
  • Prompt público v2: Acessar prompt
  • Execuções dos prompts v1 (ruins) com notas baixas e v2 (otimizados) com notas ≥ 0.9 estão visíveis no dashboard
  • Tracing detalhado disponível para todos os exemplos avaliados

Alterações sobre o código inicial fornecido

  1. Bug técnico (metrics.py): extract_json_from_response agora remove markdown code fences (```json...```) antes de parsear. Isso resolve o F1:0.00 no exemplo 1 onde precision=1.0 e recall=1.0 estavam sendo descartados.
  2. Novo método de avaliação: Criado run_official_evaluation() para registrar avaliadores e experimentos no dashboard do LangSmith.

About

Pull, Otimização e Avaliação de Prompts com LangChain e LangSmith

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages