«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Создание запросов на включение во внешние репозитории

Создание запросов на включение во внешние репозитории

Опубликовано 8 ноября 2024 г.
Просматривать:857

Creating Pull Requests to External Repositories

На этой неделе основное внимание будет уделено лабораторной работе 2, которая включает в себя вклад в репозиторий, которым я не владею, путем создания запроса на включение (PR). Я начал с выбора репозитория одноклассника для работы. Учитывая, что JavaScript — мой основной язык программирования, я выбрал репозиторий на основе JavaScript, чтобы оптимизировать свой рабочий процесс. Хотя я открыт для изучения других языков, мой выбор проекта JS сэкономил время и позволил мне работать более комфортно. Это решение оказалось выгодным, поскольку в выбранном мной репозитории были некоторые проблемы, мешавшие его запуску локально. Это дало мне фору в понимании кодовой базы и решении ее проблем. Вот подробное описание процесса:

Репозиторий одноклассника

После рассмотрения нескольких проектов я решил внести свой вклад в создание репозитория, предназначенного для преобразования содержимого веб-страниц в файл уценки. После разветвления и клонирования репозитория на свой локальный компьютер я выполнил инструкции по установке, изложенные в файле README. Однако мой одноклассник, похоже, использует macOS, который использует команду ln для символической связи. Поскольку я работаю в Windows, мне пришлось заменить этот шаг командой npm link.

Изучая настройку, я заметил, что в файле package.json отсутствуют свойства start и bin, необходимые для настройки символических ссылок. Я добавил эти записи и посоветовал однокласснику включить в документацию инструкции для пользователей Windows. Подробнее

После запуска приложения я столкнулся с дополнительными проблемами. Первая проблема заключалась в сохранении ключа API, который пользователи вводят для настройки API Groq, в файле .env. Я написал несколько строк кода для управления хранилищем ключей API. Другая проблема была вызвана неправильной областью кода для обработки выходного файла, из-за чего приложение не могло генерировать выходные данные должным образом.

Перед реализацией основной функции этой лабораторной работы — отслеживания использования токенов для каждого запроса/ответа — я решил эти две первоначальные проблемы. Для каждой проблемы я создал отдельную ветку и отправил три отдельных запроса на включение.

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;
    }
  }

Мой репозиторий

Что касается моего собственного репозитория, одноклассник по имени Хюджин Шин внес в него свой вклад во время лабораторной работы 1. Сначала я заметил, что он, похоже, работает над устаревшей версией моей кодовой базы, поскольку с тех пор я реорганизовал структуру для ясности и эффективности. Он снова столкнулся с проблемами, связанными с настройкой символической ссылки, и я предоставил рекомендации в выпуске № 7, предложив ему загрузить последнюю версию, прежде чем следовать инструкциям по настройке символической ссылки в разделе «Использование».

Другая проблема в моем коде касалась обработки выходного файла, которая возникла из-за несоответствия флага опции и ее вызова в коде, что препятствовало правильной обработке файла. Подробный ответ с наглядными пособиями я предоставил в выпуске №8.

Что касается основной функции этой лабораторной работы — отслеживания использования токенов, Хюджин реализовал ее эффективно, не внося существенных изменений в кодовую базу. Поскольку я уже правильно инициализировал Groq, ему просто нужно было извлечь данные об использовании из ответа ChatCompletion:

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 };

После просмотра его дополнения к функции я объединил PR и протестировал его, подтвердив, что все работает так, как ожидалось.

Заключение

Эта лаборатория предоставила ценную информацию по извлечению использования токенов из LLM (Groq), которые я ранее рассчитал неточно, подсчитав слова. Что еще более важно, этот опыт подчеркнул важность сотрудничества — создания запросов на включение, получения обзоров кода и объединения вкладов других.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/anhchienvu/creating-pull-requests-to-external-repositories-5183?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3