"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Crear solicitudes de extracción para repositorios externos

Crear solicitudes de extracción para repositorios externos

Publicado el 2024-11-08
Navegar:182

Creating Pull Requests to External Repositories

El enfoque de esta semana está en el Laboratorio 2, que implica contribuir a un repositorio que no me pertenece mediante la creación de una solicitud de extracción (PR). Comencé seleccionando el repositorio de un compañero de clase para trabajar. Dado que JavaScript es mi lenguaje de programación principal, opté por un repositorio basado en JavaScript para optimizar mi flujo de trabajo. Si bien estoy abierto a explorar otros idiomas, mi elección de un proyecto JS me ahorró tiempo y me permitió trabajar más cómodamente. Esta decisión resultó beneficiosa, ya que el repositorio que seleccioné tenía algunos problemas que le impedían ejecutarse localmente. Esto me dio una ventaja para comprender el código base y abordar sus desafíos. Aquí hay un desglose detallado del proceso:

Repositorio de compañeros de clase

Después de revisar varios proyectos, decidí contribuir a un repositorio cuyo objetivo era convertir el contenido de una página web en un archivo Markdown. Después de bifurcar y clonar el repositorio en mi máquina local, seguí las instrucciones de configuración descritas en el archivo README. Sin embargo, mi compañero de clase parece estar usando macOS, que utiliza el comando ln para enlaces simbólicos. Como estoy en Windows, tuve que reemplazar este paso con el comando npm link.

Mientras investigaba la configuración, noté que al archivo package.json le faltaban las propiedades start y bin, que son necesarias para configurar enlaces simbólicos. Agregué estas entradas y le aconsejé a mi compañero de clase que incluyera instrucciones para usuarios de Windows en la documentación. Más en detalles

Una vez que ejecuté la aplicación, encontré problemas adicionales. El primer problema implicó guardar la clave API que los usuarios ingresan para configurar la API de Groq en un archivo .env. Escribí algunas líneas de código para manejar el almacenamiento de claves API. Otro problema fue causado por un alcance de código incorrecto para procesar el archivo de salida, lo que impidió que la aplicación generara el resultado esperado.

Antes de implementar la función principal de esta práctica de laboratorio (seguimiento del uso de tokens para cada solicitud/respuesta), resolví estos dos problemas iniciales. Para cada problema, creé una rama separada y envié tres solicitudes de extracción distintas.

for await (const chunk of chatCompletion) {
    process.stdout.write(chunk.choices[0]?.delta?.content || "");
    // process.stdout.write(chunk.choices[0]?.delta?.content || "");
    response  = chunk.choices[0]?.delta?.content || "";
    console.log(chunk);
    if (chunk.x_groq?.usage) {
      promptTokens = chunk.x_groq?.usage?.prompt_tokens;
      responseTokens = chunk.x_groq?.usage?.completion_tokens;
    }
  }

Mi repositorio

Con respecto a mi propio repositorio, un compañero de clase llamado Hyujin Shin contribuyó durante el Laboratorio 1. Inicialmente, noté que parecía estar trabajando en una versión desactualizada de mi código base, ya que desde entonces había reorganizado la estructura para mayor claridad y eficiencia. Encontró problemas relacionados con la configuración del enlace simbólico nuevamente y le brindé orientación en el número 7, sugiriendo que obtenga la última versión antes de seguir las instrucciones de configuración del enlace simbólico en la sección Uso.

Otro problema en mi código se refería al procesamiento del archivo de salida, que surgió de una falta de coincidencia entre el indicador de opción y su invocación en el código, lo que impedía el procesamiento adecuado del archivo. Proporcioné una respuesta detallada con ayudas visuales en el número 8.

Para la característica principal de este laboratorio: el seguimiento del uso de tokens, Hyujin lo implementó de manera eficiente sin realizar cambios significativos en el código base. Como ya había inicializado Groq correctamente, simplemente necesitaba extraer los datos de uso de la respuesta de finalización del chat:

javascript
Copy code
// Retrieve Token Usage from Response
const promptToken = chatCompletion.usage.prompt_tokens;
const completionToken = chatCompletion.usage.completion_tokens;
const totalToken = chatCompletion.usage.total_tokens;
const tokenInfo = { promptToken, completionToken, totalToken };

Después de revisar la incorporación de funciones, fusioné el PR y lo probé, confirmando que todo funcionó como se esperaba.

Conclusión

Este laboratorio proporcionó información valiosa sobre cómo extraer el uso de tokens de LLM (Groq), que anteriormente había calculado de manera inexacta al contar palabras. Más importante aún, esta experiencia destacó la importancia de la colaboración: crear solicitudes de extracción, recibir revisiones de código y fusionar contribuciones de otros.

Declaración de liberación Este artículo se reproduce en: https://dev.to/anhchienvu/creating-pull-requests-to-external-repositories-5183?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3