이번 주의 초점은 끌어오기 요청(PR)을 생성하여 내가 소유하지 않은 저장소에 기여하는 실습 2입니다. 나는 작업할 동급생의 저장소를 선택하는 것부터 시작했습니다. JavaScript가 나의 기본 프로그래밍 언어라는 점을 고려하여 저는 작업 흐름을 간소화하기 위해 JavaScript 기반 저장소를 선택했습니다. 다른 언어를 탐색하는 데 열려 있는 동안 JS 프로젝트를 선택하여 시간을 절약하고 더 편안하게 작업할 수 있었습니다. 내가 선택한 저장소에는 로컬에서 실행되지 않는 몇 가지 문제가 있었기 때문에 이 결정은 유익한 것으로 판명되었습니다. 이를 통해 코드베이스를 이해하고 그 문제를 해결하는 데 유리한 출발점이 되었습니다. 프로세스에 대한 자세한 설명은 다음과 같습니다.
여러 프로젝트를 검토한 후 웹 페이지 콘텐츠를 마크다운 파일로 변환하는 것을 목표로 하는 저장소에 기여하기로 결정했습니다. 리포지토리를 로컬 컴퓨터로 포크하고 복제한 후 README 파일에 설명된 설정 지침을 따랐습니다. 그러나 내 반 친구는 기호 연결을 위해 ln 명령을 활용하는 macOS를 사용하고 있는 것 같습니다. 저는 Windows를 사용하고 있기 때문에 이 단계를 npm link 명령으로 바꿔야 했습니다.
설정을 조사하는 동안 package.json 파일에 심볼릭 링크 설정에 필요한 start 및 bin 속성이 모두 누락된 것을 발견했습니다. 나는 이러한 항목을 추가하고 반 친구에게 Windows 사용자를 위한 지침을 문서에 포함하라고 조언했습니다. 더 자세히
앱을 실행한 후 추가 문제가 발생했습니다. 첫 번째 문제는 사용자가 Groq의 API를 구성하기 위해 입력하는 API 키를 .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