Prompt Engineering

Regla de las 4 s

  • Single: centrar el prompt en una única tarea o pregunta bien definida. Necesita claridad
  • Specific: las instrucciones deben ser explícitas y detalladas.
  • Short: mantener las solicitudes concisas y al grano
  • Surround: dar un contexto enriquecido. adaptar los ejemplos y el contexto que demos.

Proporcionar claridad

Ser específico y centrarse en una única cosa.

Escribe una funcion de python para filtrar y devolver números pares de una lista determinada

Proporcionar suficiente contexto con detalles

Una forma con copilot seria establecer comentarios en el top de nuestra clase especificando que es lo que queremos hacer

# write a simple flas app that returns...
# create a function that takes a list of numbers and returns...
# create a sample list of numbers
# create...

# start coding here

(!) Copilot usa las pestañas abiertas paralelas en el editor de código para obtener más contexto (!)

Iteración, iteración e iteración

Si el primer output no es perfecto, ¡no empezar de cero! Borra el output, enriquece el prompt con más detalles y vuelve a intentarlo. Este enfoque lleva a código de alta calidad.

Zero shot / One shot / Few shots

Es importante dar ejemplos y aumenta mucho la calidad del código. Se puede hacer mediante comentarios

# Example: convert fahrenheit to celsius
def fahrenheit_to_celsios(fahrenheit):
	celsius = (fahrenheit - 32) * 5/9
	return celsius
	
# I need now a function to convert celsius to fahrenheit

Roles

Se le pueden asignar roles para que se centre en un aspecto

Actua como experto en ciberseguridad. Crea una funcion de validacion de contraseñas que compruebe si hay vulnerabilidades. Sigue directrices OWASP

Actua como experto en optimizacion del rendimiento. Refactoriza este algoritmo para controlar grandes conjuntos de datos de forma eficaz

Actua como especialista en pruebas. Crea pruebas unitarias completas para este módulo de procesamiento de pagos

Tipos de tareas que admite Github Copilot

La ventana de contexto de copilot actualmente es de 200-500 líneas de código (4000 tokens)

  1. Preguntas directas: ¿Como implemento un algoritmo de ordenacion rapida en Python?
  2. Solicitudes relacionadas con codigo: Corrija este error en mi codigo; Explique este fragmetno de codigo
  3. Consultas abiertas: ¿Cuales son los procedimientos recomendados para escribir codigo limpio?
  4. Solicitudes contextuales: Esta es una parte de mi codigo, ¿sugiéreme mejoras?