今週の焦点はラボ 2 です。これには、プル リクエスト (PR) を作成して、所有していないリポジトリに貢献することが含まれます。私はまず、作業するクラスメートのリポジトリを選択しました。 JavaScript が私の主要なプログラミング言語であることを考慮して、ワークフローを合理化するために JavaScript ベースのリポジトリを選択しました。他の言語を検討することに前向きですが、JS プロジェクトを選択したことで時間を節約でき、より快適に作業できるようになりました。私が選択したリポジトリには、ローカルでの実行を妨げるいくつかの問題があったため、この決定は有益であることがわかりました。これにより、コードベースを理解し、その課題に取り組む上で有利なスタートを切ることができました。プロセスの詳細な内訳は次のとおりです:
いくつかのプロジェクトを検討した後、Web ページのコンテンツをマークダウン ファイルに変換することを目的としたリポジトリに貢献することにしました。リポジトリをフォークしてローカル マシンに複製した後、README ファイルに記載されているセットアップ手順に従いました。ただし、私のクラスメートは、シンボリック リンクに ln コマンドを使用する macOS を使用しているようです。私は Windows を使用しているため、この手順を npm link コマンドに置き換える必要がありました。
セットアップを調査しているときに、package.json ファイルに、シンボリックリンクのセットアップに必要な start プロパティと bin プロパティの両方が欠落していることに気付きました。私はこれらのエントリを追加し、ドキュメントに Windows ユーザー向けの手順を含めるようクラスメイトにアドバイスしました。さらに詳しく
アプリを実行すると、さらに問題が発生しました。最初の問題は、Groq の API を構成するためにユーザーが入力した API キーを .env ファイルに保存することでした。 API キーのストレージを処理するコードを数行書きました。もう 1 つの問題は、出力ファイルを処理するためのコード スコープが間違っていることが原因で発生し、アプリが期待どおりに出力を生成できませんでした。
このラボの主な機能である各リクエスト/レスポンスのトークン使用状況の追跡を実装する前に、これら 2 つの最初の問題を解決しました。問題ごとに個別のブランチを作成し、3 つの異なるプル リクエストを送信しました。
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; } }
私自身のリポジトリに関しては、Hyujin Shin という名前のクラスメートが研究室 1 の期間にこのリポジトリに貢献してくれました。私は最初、彼が私のコードベースの古いバージョンに取り組んでいるように見えることに気づきました。その後、私は明確さと効率性のために構造を再編成したからです。彼は再びシンボリックリンクのセットアップに関連する問題に遭遇したため、私は問題 #7 でガイダンスを提供し、「使用法」セクションのシンボリックリンクのセットアップ手順に従う前に最新バージョンを取得することを提案しました。
コード内のもう 1 つの問題は出力ファイルの処理に関するもので、オプション フラグとコード内のその呼び出しの間の不一致が原因で、適切なファイル処理が妨げられていました。問題 #8 で、視覚的な補助を使用して詳細な回答を提供しました。
このラボの主な機能であるトークンの使用状況の追跡に関して、Hyujin はコードベースに大幅な変更を加えずに効率的に実装しました。私はすでに 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