Skip to Content

Interacción básica con Codex vía CLI y API

RUTA F · Fabricantes y Plataformas · Lección 3 de 14

Esta lección cubre la interacción básica con Codex a través de su interfaz de línea de comandos (CLI) y API. Se explica cómo ejecutar comandos y los parámetros esenciales como el modelo y la temperatura para controlar la generación de código. El objetivo es proporcionar una base operativa para el uso de Codex.

Interacción básica con Codex vía CLI y API

Fundamentos de la interacción con Codex

Codex, como otros modelos de lenguaje de OpenAI, se consume principalmente a través de una API REST. Sin embargo, para tareas de desarrollo y experimentación rápidas, la CLI de OpenAI (si está disponible y configurada) ofrece una capa de abstracción útil. La interacción con Codex implica enviar una "solicitud" (prompt) y recibir una "respuesta" (completion). La calidad y relevancia de la respuesta dependen directamente de la claridad y especificidad del prompt, así como de los parámetros configurados en la solicitud.

Uso de la CLI de OpenAI para Codex

Aunque OpenAI no mantiene una CLI oficial específica para Codex como producto independiente, la CLI general de OpenAI (o herramientas de terceros que la emulan) permite interactuar con los modelos de completions, donde se incluyen los modelos de la familia Codex. Para interactuar con Codex, se utiliza el endpoint de completions y se especifica el modelo adecuado. Asumiendo una CLI configurada, un comando básico para generar código podría ser:

openai api completions create \
  -m <nombre_del_modelo_codex> \
  -p "# Escribe una función en Python que sume dos números enteros" \
  -t 0.7 \
  -n 1 \
  --max-tokens 150

Desglosemos los parámetros esenciales:

  • -m o --model: Especifica el modelo de Codex a utilizar. Por ejemplo, code-davinci-002 o variantes específicas de la API. Es crucial seleccionar el modelo adecuado para la tarea y el costo.
  • -p o --prompt: La instrucción o el fragmento de código inicial que se le da a Codex. Este es el insumo principal para la generación. Un prompt bien formulado es la clave para obtener resultados útiles.
  • -t o --temperature: Controla la aleatoriedad de la salida. Un valor más alto (ej. 0.8) hace que la salida sea más creativa y diversa, mientras que un valor más bajo (ej. 0.2) la hace más determinista y enfocada. Para código, generalmente se prefieren valores bajos para evitar errores sintácticos o lógicos.
  • -n o --n: Número de completions a generar. Permite obtener múltiples alternativas para un mismo prompt.
  • --max-tokens: El número máximo de tokens (aproximadamente 4 caracteres por token) que el modelo puede generar en la respuesta. Esto limita la longitud del código generado y ayuda a controlar costos.
CRITERIO DE SELECCIÓN

Para tareas de generación de código donde la precisión y la consistencia son críticas (ej. refactorización, implementación de funciones específicas), se recomienda una temperatura baja (0.1-0.4). Para exploración o generación de prototipos donde se busca diversidad, se puede aumentar (0.5-0.7), pero siempre con revisión manual exhaustiva.

Interacción vía API de OpenAI

La forma más robusta y programática de interactuar con Codex es a través de la API de OpenAI. Esto permite integrar la funcionalidad de Codex directamente en aplicaciones y flujos de trabajo. El proceso implica realizar una solicitud HTTP POST al endpoint de completions. A continuación, un ejemplo en Python utilizando la librería oficial de OpenAI:

import openai

openai.api_key = "TU_API_KEY"

response = openai.Completion.create(
  model="code-davinci-002",
  prompt="""# Python function to calculate factorial
def factorial(n):
    """Calculates the factorial of a non-negative integer."""""",
  temperature=0.3,
  max_tokens=100,
  top_p=1,
  frequency_penalty=0,
  presence_penalty=0,
  stop=["\nclass", "\ndef", "\nif", "\nprint"]
)

print(response.choices[0].text.strip())

Parámetros adicionales relevantes en la API:

  • top_p: Una alternativa a la temperatura para controlar la diversidad. El modelo considera solo los tokens cuya probabilidad acumulada suma top_p. Un valor de 1.0 es equivalente a la muestreo estándar.
  • frequency_penalty: Penaliza la repetición de tokens existentes en la salida. Valores positivos reducen la probabilidad de repetición.
  • presence_penalty: Penaliza la aparición de tokens nuevos en la salida. Valores positivos aumentan la probabilidad de que el modelo hable sobre nuevos temas.
  • stop: Una secuencia de uno o más strings en los que el modelo detendrá la generación. Útil para evitar que el modelo genere código fuera del alcance de la función o bloque deseado.

Consideraciones sobre la elección del modelo

OpenAI ofrece diferentes modelos de la familia Codex, cada uno con capacidades y costos distintos. Generalmente, los modelos más grandes (ej. code-davinci-002) son más capaces pero también más costosos y lentos. Para tareas complejas o de alta calidad, se justifica el uso de los modelos más potentes. Para tareas más sencillas, como completar fragmentos de código o generar pequeños snippets, modelos más pequeños pueden ser suficientes y más económicos.

Modelo (ejemplo)CapacidadCosto (relativo)
code-davinci-002Más capaz, apto para tareas complejas de generación y refactorización.Alto
code-cushman-001Menos capaz que davinci, pero más rápido y económico para tareas sencillas.Medio

Es importante consultar la documentación oficial de OpenAI para obtener la lista actualizada de modelos disponibles y sus características, ya que estos pueden cambiar con el tiempo.

Aplicación práctica: Preparando un script de prueba

Para el lunes, prepare un script en Python que utilice la API de OpenAI para interactuar con un modelo Codex. El script debe:

  1. Configurar su clave de API (recuerde NO hardcodearla en el código fuente de producción; use variables de entorno).
  2. Definir un prompt que solicite una función Python simple, por ejemplo, "Escribe una función que invierta una cadena de texto."
  3. Realizar una solicitud de completion especificando el modelo code-davinci-002, una temperature de 0.2 y un max_tokens de 100.
  4. Imprimir la salida generada por Codex. Analice la calidad del código, su sintaxis y si cumple con la intención del prompt. Experimente con diferentes valores de temperature (ej. 0.1, 0.5, 0.8) y observe cómo afecta la creatividad y la precisión del código generado.

Rating
0 0

There are no comments for now.

to be the first to leave a comment.