На этой неделе основное внимание будет уделено лабораторной работе 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), которые я ранее рассчитал неточно, подсчитав слова. Что еще более важно, этот опыт подчеркнул важность сотрудничества — создания запросов на включение, получения обзоров кода и объединения вкладов других.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3