ساخت یک بازبین کد هوش مصنوعی محلی با Ollama

سیستم CI شما سبز است اما سطحی عمل می‌کند. ممکن است یکی از هم‌تیمی‌های شما به دلیل مشغله زیاد، یک باگ ساده را نادیده بگیرد. شما می‌توانید با استفاده از یک LLM محلی، یک جفت چشم دوم بسازید.

شما می‌توانید یک TypeScript CLI بسازید که قبل از commit کردن، staged git diff شما را بازبینی کند. این کار باعث می‌شود کد شما خصوصی باقی بماند. همچنین نیازی به هیچ کلید API یا ارائه‌دهنده ابری ندارد.

نحوه عملکرد ابزار:

• دریافت staged diff با استفاده از git diff --cached. • ارسال diff به Ollama با یک prompt مشخص. • درخواست خروجی JSON و اعتبارسنجی آن با Zod. • چاپ یافته‌ها در ترمینال. • تنظیم آن به عنوان یک pre-commit hook.

انتخاب‌های فنی برای نتایج بهتر:

• استفاده از --no-color برای حذف کدهای ANSI از prompt. • استفاده از -U3 برای ارائه سه خط زمینه (context) به مدل. • تنظیم temperature روی 0 برای نتایج قطعی (deterministic). • استفاده از یک system prompt مشخص برای نادیده گرفتن ترجیحات مربوط به استایل و نام‌گذاری.

تمرکز مدل را بر خطاهای منطقی، دسترسی به null و مسائل امنیتی بگذارید. به آن بگویید چه چیزهایی را نادیده بگیرد. گفتن اینکه یک مدل کوچک چه چیزهایی را گزارش نکند، موثرتر از گفتن این است که چه چیزهایی را پیدا کند.

یک گردش کار (workflow) کاربردی برای مدل‌های محلی:

• استفاده از qwen2.5-coder:7b برای git hook خود. • استفاده از qwen2.5-coder:1.5b برای تست محلی سریع. • فقط commitهایی را که دارای باگ‌های با شدت بالا (high severity) هستند مسدود کنید. • اجازه دهید یافته‌های با شدت متوسط و پایین، فقط به صورت مشورتی (advisory) باشند.

مدل‌های محلی جایگزین مهندسان ارشد (staff engineers) نیستند. آن‌ها منطق‌های پیچیده‌ای که چندین فایل را در بر می‌گیرد، از دست می‌دهند. همچنین ممکن است موارد مثبت کاذب (false positives) تولید کنند. با این حال، آن‌ها اشتباهات کوچک مانند فراموش کردن await یا عملگرهای اشتباه را شناسایی می‌کنند.

از این ابزار استفاده کنید تا باگ‌های ناشی از بی‌دقتی را قبل از رسیدن به pull request شناسایی کنید. این کار در زمان تیم شما صرفه‌جویی کرده و کد شما را تمیز نگه می‌دارد.

منبع: https://dev.to/pavelespitia/building-a-local-ai-code-reviewer-with-ollama-that-catches-bugs-before-your-team-49d3

انجمن یادگیری اختیاری: https://t.me/GyaanSetuAi