ينصب التركيز هذا الأسبوع على المختبر 2، والذي يتضمن المساهمة في مستودع لا أملكه عن طريق إنشاء طلب سحب (PR). لقد بدأت باختيار مستودع زميل للعمل عليه. نظرًا لأن JavaScript هي لغة البرمجة الأساسية الخاصة بي، فقد اخترت استخدام الريبو المستند إلى JavaScript لتبسيط سير العمل الخاص بي. على الرغم من أنني منفتح على استكشاف لغات أخرى، فإن اختياري لمشروع JS وفر لي الوقت وسمح لي بالعمل بشكل أكثر راحة. أثبت هذا القرار أنه مفيد، حيث أن المستودع الذي اخترته كان به بعض المشكلات التي تمنعه من العمل محليًا. لقد أعطاني هذا السبق في فهم قاعدة التعليمات البرمجية ومعالجة تحدياتها. فيما يلي تفاصيل العملية:
بعد مراجعة العديد من المشاريع، قررت المساهمة في مستودع يهدف إلى تحويل محتوى صفحة الويب إلى ملف تخفيض السعر. بعد التفرع واستنساخ الريبو على جهازي المحلي، اتبعت تعليمات الإعداد الموضحة في ملف README. ومع ذلك، يبدو أن زميلي يستخدم نظام التشغيل macOS، والذي يستخدم الأمر ln للربط الرمزي. وبما أنني أستخدم نظام التشغيل Windows، كان علي استبدال هذه الخطوة بالأمر npm link.
أثناء التحقيق في الإعداد، لاحظت أن ملف package.json كان يفتقد خصائص البداية وbin، وهي ضرورية لإعداد الروابط الرمزية. لقد أضفت هذه الإدخالات ونصحت زميلي بتضمين تعليمات لمستخدمي Windows في الوثائق. مزيد من التفاصيل
بمجرد تشغيل التطبيق، واجهت مشكلات إضافية. تضمنت المشكلة الأولى حفظ مفتاح واجهة برمجة التطبيقات (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; } }
فيما يتعلق بالمستودع الخاص بي، ساهم فيه زميل يدعى Hyujin Shin خلال المختبر الأول. في البداية، لاحظت أنه يبدو أنه يعمل على نسخة قديمة من قاعدة التعليمات البرمجية الخاصة بي، حيث قمت منذ ذلك الحين بإعادة تنظيم الهيكل من أجل الوضوح والكفاءة. لقد واجه مشكلات تتعلق بإعداد الارتباط الرمزي مرة أخرى، وقد قدمت إرشادات في الإصدار رقم 7، واقترحت عليه سحب الإصدار الأحدث قبل اتباع تعليمات إعداد الارتباط الرمزي في قسم الاستخدام.
هناك مشكلة أخرى في الكود الخاص بي تتعلق بمعالجة ملف الإخراج، والتي نشأت من عدم التطابق بين علامة الخيار واستدعاءها في الكود، مما يمنع المعالجة المناسبة للملف. لقد قدمت إجابة مفصلة مع الوسائل البصرية في العدد رقم 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 };
بعد مراجعة إضافة الميزة الخاصة به، قمت بدمج العلاقات العامة واختبارها، والتأكد من أن كل شيء يعمل كما هو متوقع.
قدم هذا المختبر رؤى قيمة حول استخراج استخدام الرمز المميز من LLMs (Groq)، والتي قمت بحسابها بشكل غير دقيق من خلال عد الكلمات. والأهم من ذلك، أن هذه التجربة سلطت الضوء على أهمية التعاون — مثل إنشاء طلبات السحب، وتلقي مراجعات التعليمات البرمجية، ودمج المساهمات من الآخرين.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3