Noticias

Revisión de asistencia del código de Gemini: las finalizaciones del código necesitan mejoras

Published

on

Nunca iba a pasar mucho tiempo antes de que Google entrara en el Juego de Asistencia del Código con Gemini. El titular es el número de terminaciones que se ofrecen de forma gratuita en su plataforma, 90x lo que ofrece el copiloto de GitHub, y detrás de eso, la comprensión de esa escala es algo que Google hace bien. Entonces, esta es la misma jugada que Gmail, le da a cada usuario una parte de espacio mucho mayor que los competidores, cuando se lanzó en 2004.

Gemini Code Assist afirma que admite más de 20 idiomas, lo que nuevamente es una oferta sólida a escala. Pero como Google no ofrece su propio IDE, es probable que dependan en muchos casos del código Visual Studio de Microsoft (VS Code). Estoy empezando a preguntarme si alternativas como JetBrains están recibiendo un impulso masivo por este motivo. Sin embargo, el valor predeterminado parece ser vs código:

Es posible que haya visto cómo moví a los asistentes de código de Copilot a aumentar, y haré lo mismo ahora, pero cambiando de Aumment a Gemini Code Assist, para verlo.

Abrí VS Code en mi MacBook M4 e inmediatamente busqué la extensión, recién disponible ese día:

Cargar la extensión parecía tomar algún tiempo, aunque no hay un medidor de progreso en el código VS. Por supuesto, los servidores habrán sido golpeados el primer día para una nueva versión.

Hubo una página de bienvenida, pero nada sobre la configuración. Como ni siquiera había firmado en Google, era muy poco probable que estuviera listo. La barra lateral izquierda tenía el icono Géminis, y seleccionándolo llenó la barra lateral con una solicitud para iniciar sesión. Pero esto solo subraya lo que he dicho anteriormente: el viaje del cliente con asistentes de código de carga de extensión es débil dentro del código VS.

Me arrojaron a una página web para iniciar sesión y volví a mi ide para ver ahora lo siguiente:

Mientras que la barra lateral era controlada por Gemini, todavía no sabía quién controlaba las terminaciones del código. La barra de herramientas inferior parecía sugerir que podría estar conviviendo con el aumento:

(Mi menú de copiloto se había movido a la cima, a pesar de que la extensión de copiloto en sí misma dijo que necesitaba reiniciar).

Desactivé la extensión de aumento para permitir que Gemini tome el control único. Pero este es un desastre que necesita ser arreglado por Microsoft.

Mientras tanto, Google necesita realizar una advertencia en su extensión al igual que Augment.

Como antes, haré cambios reales en mi proyecto y veré cómo se comporta la finalización del código. Mi proyecto de juego usa números aleatorios, pero necesito tomarlos de una lista para poder generarlos en su lugar o usar un conjunto de números previamente rolado para las pruebas. Como la orden de llamada que se puede tomar un número puede cambiar durante el desarrollo, necesito asegurarme de que cada llamada tome un índice fijo en la lista, y además verifique que no tome accidentalmente el mismo número dos veces. Sin embargo, esto sería difícil de manejar dentro de los bucles, por lo que devuelvo un bloque de números.

Descubrí que Géminis hizo algunas malas terminaciones. Tendió a saltar antes de comprender el contexto, por ejemplo:

En el ejemplo anterior, Gemini sugirió una línea de registro que imprima el índice y el valor, pero pierde la conversión a ‘convertido’ que mi lista usa directamente. A menudo descubrí que mientras actualizaba mi solución y eliminaba el código más antiguo, Gemini sugirió volver a poner las líneas eliminadas. Me hace preguntarme cuánto Gemini se ha probado durante el desarrollo ágil, donde la refactorización es tan importante.

(En algún momento, el aumento se volvió a encender, y desinstalar la extensión no hizo ninguna diferencia. Solo después de dejar de fumar y abrirse de nuevo, el aumento desapareció.

Géminis estresa sensatamente “acciones inteligentes” usando Comando-Ique se encuentra entre la finalización del código e intentando escribir un código masivo para usted:

Primero le pedí a Gemini que “explique esto” en el método seleccionado, que es donde se solicita un bloque de números aleatorios. Tomó unos 10 segundos (que es bastante largo) para producir una salida:

“El RequestNewIndexedBlock El método está diseñado para proporcionar una forma para que diferentes partes de su juego soliciten y “se reservan” un bloque específico de números pregenerados o generados al azar de los RandomNumber sistema. Actúa como gerente para distribuir estos bloques “.

Este es un muy buen resumen. La clave aquí es que reconoció el patrón de reserva con ese término “reserva”, que no se basa en ninguna señal que dejó en el código. También entendió que “diferentes partes de tu juego”, y que los números pueden ser generados previamente. También presentó un “desglose del código” detallado que quizás era demasiado detallado, si algo.

Mientras funcionan el método y toda la clase, puede ver que debería usar unushort (sin firmar) para storeindexcomo un índice negativo no es sensato. Así que probé la segunda acción inteligente “arreglar” para ver si propuso esto:

¡Decirnos que sean cautelosos con el código generado en esta etapa es un poco como decirle a Alice que seguir conejos en los agujeros en el país de las maravillas podría tener resultados impredecibles!

Como es la norma, creó un archivo DIFF temporal. El resultado sugirió una verificación superflua en el bloque, que, aunque técnicamente, se basó en suposiciones sobre las partes internas de otra clase. En todo caso, me hizo reducir el acceso al RNBlockentonces eso fue indirectamente bueno. Inexplicablemente, debido a que el archivo temporal no era parte del proyecto, ¡Copilot intentó hacer sugerencias! Mis comentarios anteriores sobre cómo VS Code maneja las extensiones cubre esto.

Finalmente, dejo que pruebe la acción inteligente final “Generar pruebas unitarias” para este método. Tengo un ensamblaje separado en el proyecto con pruebas y una biblioteca de burla (MOQ), aunque no he escrito ninguno para esta clase, y no estaba seguro de que Gemini pudiera verlos. Mirando el código, puede ver que hay dos casos para probar mientras les doy excepciones.

Hizo un buen trabajo al crear una configuración y desmontaje, tanto para un conjunto aleatorio pre-rolado como generado. Para el camino principal feliz, la prueba fue lo suficientemente sensata:

Conclusión

He hecho mis inquietudes sobre la incapacidad de VS Code para manejar múltiples extensiones compitiendo por la misma funcionalidad LLM perfectamente clara, pero Gemini Code Assist tiene que mejorar para ayudar al usuario a deshabilitar las extensiones anteriores.

Lo único que me preocupa con respecto a Gemini Code Assist es la velocidad de finalización del código, lo que a veces era ligeramente tardío. Si bien el código se está refactorizando, ningún asistente de código puede estar seguro de qué partes del código ya no forman parte de la nueva solución. Pero generalmente sentí que Géminis no me siguió al día, a pesar del hecho de que las explicaciones del código eran precisas.

La calidad de las terminaciones del código fue generalmente bien, aunque en mis pruebas recientes tanto Copilot como Augment me dieron resultados superiores. Pero su kilometraje puede variar, y no dudo que ampliar suficiente tiempo de procesamiento puede ser un problema aquí. Además, si hay algo que sabemos, es que la salida de LLM solo mejora con el tiempo.


Youtube.com/thenewstack

La tecnología se mueve rápidamente, no te pierdas un episodio. Suscríbase a nuestro canal de YouTube para transmitir todos nuestros podcasts, entrevistas, demostraciones y más.

SUSCRIBIR

Grupo Creado con boceto.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Trending

Exit mobile version