Chat para desarrollo

Cuándo usarlo

Usa chat completions como motor para desarrollar software: generar código, revisar cambios, explicar errores, diseñar APIs, escribir tests o crear asistentes internos para tus proyectos. También puedes usarlo para chat general, resumir contenido o clasificar texto. El modelo recomendado por defecto es chat.

Modelo y endpoint

Endpoint POST /chat/completions
Modelo diario chat
Modelo pro chat-pro

Ejemplo con curl

curl https://inference.devexpert.io/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $DEVEXPERT_API_KEY" \
  -d '{
    "model": "chat",
    "messages": [
      { "role": "system", "content": "Actúa como un senior software engineer. Sé concreto y práctico." },
      { "role": "user", "content": "Propón una API REST sencilla para gestionar tareas con prioridad y fecha límite." }
    ]
  }'

Ejemplo en TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.DEVEXPERT_API_KEY,
  baseURL: "https://inference.devexpert.io/v1",
});

const response = await client.chat.completions.create({
  model: "chat",
  messages: [
    { role: "system", content: "Actúa como un senior software engineer. Sé concreto y práctico." },
    { role: "user", content: "Revisa este helper y propón mejoras: function slug(s) { return s.toLowerCase().replaceAll(' ', '-') }" },
  ],
});

console.log(response.choices[0]?.message?.content);

Ejemplo en Python

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DEVEXPERT_API_KEY"],
    base_url="https://inference.devexpert.io/v1",
)

response = client.chat.completions.create(
    model="chat",
    messages=[
        {"role": "system", "content": "Actúa como un senior software engineer. Sé concreto y práctico."},
        {"role": "user", "content": "Escribe tests unitarios para una función que normaliza emails."},
    ],
)

print(response.choices[0].message.content)

Errores habituales

  • Usar una URL base sin /v1.
  • Olvidar el header Authorization: Bearer.
  • Enviar un nombre de modelo que no está disponible para tu clave.