Saltar al contenido principal

Autocompletado con Tabulación (beta)

Continue ahora proporciona soporte para el autocompletado con tabulación en VS Code. Mejoraremos la experiencia considerablemente en las próximas versiones, y siempre es útil recibir retroalimentación. Si tienes problemas o sugerencias, por favor háznoslo saber en nuestro Discord.

Configuración con Codestral (recomendado)

Si deseas la mejor experiencia de autocompletado, te recomendamos usar Codestral, disponible a través del Mistral API. Para hacerlo, obtén una clave API y agrégala a tu config.json:

{
"tabAutocompleteModel": {
"title": "Codestral",
"provider": "mistral",
"model": "codestral-latest",
"apiKey": "YOUR_API_KEY"
}
}

Configuración con Ollama (predeterminado)

Recomendamos configurar el autocompletado con una instancia local de Ollama. Para hacerlo, primero descarga la última versión de Ollama desde aquí. Luego, ejecuta el siguiente comando para descargar nuestro modelo recomendado:

ollama run starcoder2:3b

Una vez descargado, deberías empezar a ver autocompletados en VS Code.

Configuración con LM Studio

También puedes configurar el autocompletado con una instancia local de LM Studio siguiendo estos pasos:

  1. Descarga la última versión de LM Studio desde aquí
  2. Descarga un modelo (por ejemplo, busca second-state/StarCoder2-3B-GGUF y elige una de las opciones allí)
  3. Ve a la sección del servidor (el botón está a la izquierda), selecciona tu modelo desde el menú desplegable en la parte superior y haz clic en "Iniciar servidor"
  4. Ve a la sección "Mis Modelos" (botón a la izquierda), encuentra tu modelo seleccionado y copia el nombre del camino (ejemplo: second-state/StarCoder2-3B-GGUF/starcoder2-3b-Q8_0.gguf); esto se usará como el atributo "model" en Continue
  5. Ve a Continue y modifica las configuraciones para un modelo personalizado
  6. Establece el "provider" en lmstudio y el "model" en el camino copiado anteriormente

Ejemplo:

{
"tabAutocompleteModel": {
"title": "Starcoder2 3b",
"model": "second-state/StarCoder2-3B-GGUF/starcoder2-3b-Q8_0.gguf",
"provider": "lmstudio",
},
...
}

Configuración de un modelo personalizado

Todas las opciones de configuración disponibles para los modelos de chat están disponibles para el autocompletado con tabulación. Por ejemplo, si quisieras usar una instancia remota de Ollama, editarías tu config.json así (nota que no está dentro del array de modelos):

{
"tabAutocompleteModel": {
"title": "Tab Autocomplete Model",
"provider": "ollama",
"model": "starcoder2:3b",
"apiBase": "https://<my endpoint>"
},
...
}

¿Qué modelo debo usar?

Si estás ejecutando el modelo localmente, te recomendamos starcoder2:3b.

Si encuentras que es demasiado lento, deberías probar deepseek-coder:1.3b-base.

Si tienes un poco más de recursos, o estás ejecutando un modelo en la nube, puedes actualizar a deepseek-coder:6.7b-base.

Independientemente de lo que estés dispuesto a gastar, no recomendamos usar GPT o Claude para autocompletado. Aprende por qué aquí.

Opciones de Configuración

Lo siguiente se puede configurar en config.json:

tabAutocompleteModel

Este es solo otro objeto como los que están en el array "models" de config.json. Puedes elegir y configurar cualquier modelo que desees, pero te sugerimos encarecidamente usar un modelo pequeño hecho para el autocompletado con tabulación, como deepseek-1b, starcoder-1b, o starcoder2-3b.

tabAutocompleteOptions

Este objeto te permite personalizar el comportamiento del autocompletado con tabulación. Las opciones disponibles se muestran a continuación, y puedes encontrar sus valores predeterminados aquí.

  • disable: Deshabilitar el autocompletado (también se puede hacer desde la configuración del IDE)
  • template: Una cadena de plantilla opcional para usar en el autocompletado. Se renderizará con el lenguaje de plantillas Mustache y se pasa con las variables 'prefix' y 'suffix'. (Cadena)
  • useCopyBuffer: Determina si se considerará el buffer de copia al construir el prompt. (Booleano)
  • useFileSuffix: Determina si se usará el sufijo del archivo en el prompt. (Booleano)
  • maxPromptTokens: El número máximo de tokens de prompt a usar. Un número menor dará lugar a completaciones más rápidas, pero con menos contexto. (Número)
  • prefixPercentage: El porcentaje de la entrada que debe dedicarse al prefijo. (Número)
  • maxSuffixPercentage: El porcentaje máximo del prompt que puede dedicarse al sufijo. (Número)
  • debounceDelay: El retraso en milisegundos antes de activar el autocompletado después de una pulsación de tecla. (Número)
  • multilineCompletions: Si se deben habilitar completaciones multilínea ("always", "never", o "auto"). Por defecto es "auto".
  • useCache: Si se debe almacenar en caché y reutilizar completaciones cuando el prompt es el mismo que el anterior. Puede ser útil deshabilitar para propósitos de prueba.
  • useOtherFiles: Si se debe incluir contexto de archivos fuera del actual. Desactivarlo debería reducir la precisión de las completaciones, pero podría ser útil para pruebas.
  • disableInFiles: Una lista de patrones glob para archivos en los que deseas deshabilitar el autocompletado con tabulación.

Ejemplo Completo

{
"tabAutocompleteModel": {
"title": "Tab Autocomplete Model",
"provider": "ollama",
"model": "starcoder2:3b",
"apiBase": "https://<my endpoint>"
},
"tabAutocompleteOptions": {
"useCopyBuffer": false,
"maxPromptTokens": 400,
"prefixPercentage": 0.5
}
}

Resolución de Problemas

Quiero mejores completaciones, ¿debería usar GPT-4?

Quizás sorprendentemente, la respuesta es no. Los modelos que recomendamos para autocompletado están entrenados con un formato de prompt altamente específico, que les permite responder a solicitudes de completado de código (ver ejemplos de estos prompts aquí). Algunos de los mejores modelos comerciales como GPT-4 o Claude no están entrenados con este formato de prompt, lo que significa que no generarán completaciones útiles. Afortunadamente, no se necesita un modelo gigante para un gran autocompletado. La mayoría de los modelos de autocompletado de última generación no superan los 10b parámetros, y aumentar más allá de esto no mejora significativamente el rendimiento.

No estoy viendo completaciones

Sigue estos pasos para asegurarte de que todo esté configurado correctamente:

  1. Asegúrate de que la opción "Habilitar Autocompletado con Tabulación" esté marcada (en VS Code, puedes alternar haciendo clic en el botón "Continue" en la barra de estado).
  2. Asegúrate de haber descargado Ollama.
  3. Ejecuta ollama run starcoder2:3b para verificar que el modelo esté descargado.
  4. Asegúrate de que cualquier otro proveedor de completaciones esté deshabilitado (por ejemplo, Copilot), ya que pueden interferir.
  5. Revisa los logs para encontrar posibles errores (cmd/ctrl+shift+p -> "Toggle Developer Tools" -> pestaña "Console" en VS Code, ~/.continue/core.log en Jet

Brains). 6. Verifica en la configuración de VS Code que "editor.inlineSuggest.enabled" esté establecido en true (usa cmd/ctrl+, y busca esta opción y marca la casilla). 7. Si aún tienes problemas, por favor háznoslo saber en nuestro Discord y te ayudaremos lo antes posible.

Las completaciones son lentas

Dependiendo de tu hardware, es posible que desees probar un modelo más pequeño y rápido. Si 3b no está funcionando para ti, recomendamos probar deepseek-coder:1.3b-base.

Las completaciones no conocen mi código

¡Estamos trabajando en ello! Actualmente, Continue usa el Protocolo de Servidor de Lenguaje para añadir definiciones al prompt, así como usar búsqueda por similitud en archivos recientemente editados. Mejoraremos la precisión de este sistema considerablemente en las próximas semanas.

Las completaciones contienen errores de formato

Si estás viendo un patrón común de errores que podría ser útil informar, por favor compártelo en Discord. Haremos nuestro mejor esfuerzo para solucionarlo lo antes posible.

Las completaciones solo son de una línea

Para asegurarte de que recibas completaciones multilínea, puedes establecer "multilineCompletions": "always" en tabAutocompleteOptions. Por defecto, está en "auto". Si aún encuentras que solo ves completaciones de una línea, esto puede ser porque algunos modelos tienden a producir completaciones más cortas cuando comienzan en medio de un archivo. Puedes intentar mover temporalmente texto debajo del cursor fuera de tu archivo activo o cambiar a un modelo más grande.

Preguntas Frecuentes

¿Puedo configurar una "tecla de activación" para el autocompletado?

Sí, en VS Code, si no deseas que se te muestren sugerencias automáticamente, puedes:

  1. Establecer "editor.inlineSuggest.enabled": false en la configuración de VS Code para deshabilitar las sugerencias automáticas.
  2. Abrir "Atajos de Teclado" (cmd/ctrl+k, cmd/ctrl+s) y buscar editor.action.inlineSuggest.trigger.
  3. Hacer clic en el ícono "+" para añadir un nuevo atajo de teclado.
  4. Presionar la combinación de teclas que deseas usar para activar las sugerencias (por ejemplo, ctrl+space).
  5. Ahora, cada vez que quieras ver una sugerencia, puedes presionar tu combinación de teclas (por ejemplo, ctrl+space) para activar las sugerencias manualmente.

¿Hay un atajo para aceptar una línea a la vez?

Esta es una función incorporada en VS Code, pero está un poco oculta. Consulta esta excelente respuesta en StackOverflow para más detalles.

¿Cómo desactivar el autocompletado?

VS Code

Haz clic en el botón "Continue" en la barra de estado en la parte inferior derecha de la pantalla. La marca de verificación se convertirá en un símbolo de "cancelar" y ya no verás completaciones. Puedes hacer clic de nuevo para volver a activarlo.

Alternativamente, abre la configuración de VS Code, busca "Continue" y desmarca la casilla de "Habilitar Autocompletado con Tabulación".

JetBrains

Abre Configuración -> Herramientas -> Continue y desmarca la casilla de "Habilitar Autocompletado con Tabulación".