برنامه‌نویسی با ChatGPT؛ آموزش کامل کدنویسی، دیباگ و ساخت پروژه با هوش مصنوعی

در این راهنمای عملی یاد می‌گیرید چگونه از ChatGPT برای تحلیل نیازمندی، تولید کد، دیباگ، تست، ریفکتور و مستندسازی استفاده کنید و همین قابلیت‌ها را با API درواره وارد نرم‌افزار خود کنید.

Share
Code with ChatGPT and Darvareh API
Code with ChatGPT and Darvareh API

برنامه‌نویسی با ChatGPT یا کد نویسی با چت‌جی‌پی‌تی فقط به این معنی نیست که یک درخواست کوتاه بنویسیم و انتظار داشته باشیم هوش مصنوعی تمام پروژه را بدون خطا تحویل دهد. استفاده حرفه‌ای از ChatGPT در برنامه‌نویسی به معنای تقسیم مسئله، ارائه Context مناسب، تعریف محدودیت‌ها، بررسی کد تولیدشده، اجرای تست و اصلاح مرحله‌ای نتیجه است.

ChatGPT می‌تواند در بسیاری از مراحل توسعه نرم‌افزار به برنامه‌نویس کمک کند:

  • توضیح مفاهیم و کدهای پیچیده
  • تبدیل نیازمندی به برنامه اجرایی
  • طراحی ساختار پروژه
  • تولید تابع، کلاس، API و Query
  • پیدا کردن علت خطا
  • نوشتن تست
  • ریفکتور کد
  • ساخت مستندات
  • بررسی Pull Request
  • تبدیل کد میان زبان‌های برنامه‌نویسی
  • یادگیری فریم‌ورک جدید
  • پیشنهاد راه‌حل‌های جایگزین

بااین‌حال، ChatGPT جایگزین درک مسئله، طراحی نرم‌افزار، تست، بازبینی و مسئولیت فنی برنامه‌نویس نیست. بهترین نتیجه زمانی به دست می‌آید که هوش مصنوعی را مانند یک همکار فنی سریع اما نیازمند نظارت در نظر بگیریم.

در این مقاله یاد می‌گیرید چگونه از ChatGPT برای برنامه‌نویسی استفاده کنید، چه پرامپت‌هایی بنویسید، چگونه پاسخ‌ها را ارزیابی کنید و چگونه همین قابلیت‌ها را با API درواره در ابزار یا محصول خود به کار بگیرید.

آیا ChatGPT می‌تواند برنامه‌نویسی کند؟

بله، ChatGPT می‌تواند کد تولید کند، کد موجود را توضیح دهد، خطاهای احتمالی را پیدا کند و راهکارهای پیاده‌سازی پیشنهاد دهد. اما عبارت «برنامه‌نویسی با ChatGPT» ممکن است سه شیوه متفاوت را شامل شود.

شیوه استفادهتوضیحمناسب برای
گفت‌وگو در ChatGPTکاربر کد و درخواست را در محیط چت وارد می‌کندیادگیری، سؤال فنی، قطعه‌کد و تحلیل
ابزار کدنویسی داخل IDEهوش مصنوعی به فایل‌ها و ترمینال پروژه دسترسی کنترل‌شده داردتوسعه و اصلاح پروژه واقعی
API هوش مصنوعیقابلیت تولید یا تحلیل کد داخل نرم‌افزار شما قرار می‌گیردمحصولات SaaS، ابزارهای توسعه و اتوماسیون

ChatGPT یک محصول آماده برای تعامل مستقیم با کاربر است. API هوش مصنوعی نیز رابطی است که توسعه‌دهنده از طریق آن مدل را به نرم‌افزار خود متصل می‌کند. این دو مفهوم را نباید یکسان در نظر گرفت.

اگر می‌خواهید به‌صورت شخصی درباره کد سؤال بپرسید، محیط ChatGPT مناسب است. اگر می‌خواهید قابلیت تولید، بررسی یا توضیح کد را داخل محصول خود قرار دهید، به API نیاز دارید.

ChatGPT در کدام بخش‌های برنامه‌نویسی مفید است؟

ChatGPT می‌تواند تقریباً در تمام چرخه توسعه نرم‌افزار نقش کمکی داشته باشد.

مرحلهکاربرد ChatGPT
تحلیل مسئلهتبدیل ایده خام به نیازمندی و User Story
طراحیپیشنهاد معماری، ماژول‌ها و مدل داده
پیاده‌سازیتولید تابع، کلاس، Endpoint و Component
اشکال‌زداییتحلیل Error، Stack Trace و رفتار برنامه
تستتولید Unit Test، Integration Test و Edge Case
بازبینیشناسایی پیچیدگی، تکرار و مشکلات نگهداری
مستندسازیتولید README، Docstring و API Documentation
استقرارپیشنهاد Dockerfile و تنظیمات اجرای برنامه
نگهداریتوضیح کد قدیمی و برنامه‌ریزی برای ریفکتور
یادگیریآموزش زبان، کتابخانه و الگوی طراحی

ChatGPT همچنین می‌تواند فایل‌های متنی و اسناد متداول را تحلیل کند. قابلیت Projects نیز امکان نگهداری چت‌ها، فایل‌ها و دستورهای مرتبط با یک هدف مشترک را فراهم می‌کند. دسترسی دقیق به این امکانات ممکن است به نسخه و پلن کاربر وابسته باشد. راهنمای رسمی قابلیت‌های ChatGPT

مزایای برنامه‌نویسی با ChatGPT

شروع سریع‌تر پروژه

به‌جای نوشتن تمام کدهای تکراری از ابتدا، می‌توانید اسکلت پروژه، مدل‌های داده، Routeهای اولیه و فایل‌های تنظیمات را تولید کنید.

یادگیری در زمان انجام پروژه

اگر با یک مفهوم آشنا نیستید، می‌توانید همان بخش را در Context واقعی پروژه یاد بگیرید:

Dependency Injection را در FastAPI توضیح بده و یک مثال مرتبط با
احراز هویت کاربر در API من ارائه کن.

کاهش زمان جست‌وجوی خطا

با ارائه پیام خطا، Stack Trace، نسخه کتابخانه و کد مرتبط، ChatGPT می‌تواند چند علت محتمل و روش آزمایش هر علت را پیشنهاد دهد.

تولید تست‌های اولیه

هوش مصنوعی می‌تواند مسیر عادی، ورودی نامعتبر، مقدار مرزی و شرایط خطا را برای یک تابع شناسایی کند و تست اولیه بنویسد.

درک سریع کدهای قدیمی

در پروژه‌های Legacy می‌توانید از ChatGPT بخواهید مسئولیت هر بخش، جریان داده، وابستگی‌ها و نقاط پرریسک را توضیح دهد.

مقایسه چند راه‌حل

به‌جای درخواست یک پاسخ، می‌توانید چند گزینه با مزایا و معایب بخواهید:

سه روش برای پیاده‌سازی Rate Limiting در FastAPI پیشنهاد بده.
گزینه‌ها را از نظر پیچیدگی، مقیاس‌پذیری و نیاز به Redis مقایسه کن.
هنوز کد ننویس.

محدودیت‌های برنامه‌نویسی با ChatGPT

استفاده مفید از ChatGPT نیازمند شناخت محدودیت‌های آن است.

ممکن است کد ظاهراً درست اما معیوب تولید کند

یک پاسخ می‌تواند از نظر نحوی صحیح باشد، اما:

  • منطق تجاری را اشتباه پیاده‌سازی کند.
  • یک Edge Case را نادیده بگیرد.
  • از API منسوخ‌شده استفاده کند.
  • نوع داده را اشتباه فرض کند.
  • خطای هم‌زمانی ایجاد کند.
  • وابستگی نصب‌نشده‌ای اضافه کند.
  • تست ناکافی تولید کند.

تمام Context پروژه را به‌طور خودکار نمی‌داند

اگر فقط یک تابع را ارسال کنید، مدل از قراردادهای سایر فایل‌ها، Schema دیتابیس، نسخه کتابخانه‌ها و محدودیت‌های محصول خبر ندارد.

ممکن است نام تابع یا قابلیت غیرواقعی بسازد

در کتابخانه‌هایی که سریع تغییر می‌کنند، مدل ممکن است متد یا پارامتری پیشنهاد دهد که در نسخه نصب‌شده وجود ندارد. مستندات رسمی و کد پروژه باید مرجع نهایی باشند.

پاسخ خوب به ورودی خوب وابسته است

درخواست مبهم معمولاً پاسخ عمومی ایجاد می‌کند. هرچه نسخه‌ها، ساختار پروژه، رفتار مورد انتظار و خطای واقعی را بهتر توضیح دهید، نتیجه مفیدتر می‌شود.

مسئولیت اجرای کد با توسعه‌دهنده است

کد تولیدشده را بدون بررسی در Production اجرا نکنید. تست، Code Review، کنترل تغییرات و استقرار مرحله‌ای همچنان ضروری هستند.

تفاوت ChatGPT با ابزارهای کدنویسی هوش مصنوعی

ChatGPT برای گفت‌وگوی عمومی و تحلیل مسئله مناسب است. ابزارهای کدنویسی داخل IDE معمولاً Context مستقیم‌تری از Repository دارند.

قابلیتChatGPTابزار داخل IDE
گفت‌وگوی عمومیبسیار مناسبمعمولاً محدودتر
مشاهده خودکار فایل‌های پروژهوابسته به ابزار و دسترسیمعمولاً بهتر
پیشنهاد کد در محل Cursorمحدودبله
ویرایش چند فایلوابسته به محیطمعمولاً بله
اجرای Commandوابسته به محیط و مجوزدر برخی ابزارها
بررسی Diffبا ارسال تغییراتمعمولاً یکپارچه
سؤال آموزشیبسیار مناسبمناسب
ساخت قابلیت داخل محصولنیازمند APIهدف اصلی نیست

برای پروژه‌های بزرگ می‌توانید از ChatGPT برای تحلیل، طراحی و حل مسئله و از ابزارهای IDE برای اعمال تغییرات کنترل‌شده استفاده کنید.

روش صحیح برنامه‌نویسی با ChatGPT

یک جریان کاری حرفه‌ای معمولاً این مراحل را دارد:

  1. مسئله را دقیق تعریف کنید.
  2. Context فنی را ارائه دهید.
  3. محدودیت‌ها را مشخص کنید.
  4. ابتدا برنامه پیاده‌سازی بخواهید.
  5. مسئله را به تغییرات کوچک تقسیم کنید.
  6. کد را بخش‌به‌بخش تولید کنید.
  7. کد را اجرا و تست کنید.
  8. خطای واقعی را برای تحلیل ارسال کنید.
  9. تغییرات را با Diff بررسی کنید.
  10. نتیجه را با نیازمندی اولیه تطبیق دهید.

درخواست «یک فروشگاه اینترنتی کامل بساز» معمولاً بیش‌ازحد گسترده است. درخواست‌های کوچک‌تر قابل ارزیابی‌تر هستند:

برای یک فروشگاه اینترنتی با FastAPI و PostgreSQL فقط مدل داده
محصول را طراحی کن.

نیازمندی‌ها:
- هر محصول نام، slug، توضیحات و قیمت دارد.
- قیمت باید عدد صحیح و برحسب ریال باشد.
- slug یکتا است.
- محصول می‌تواند فعال یا غیرفعال باشد.
- زمان ایجاد و ویرایش ذخیره شود.

فعلاً فقط مدل SQLAlchemy و Schemaهای Pydantic را بنویس.
Migration، Route و Service را تولید نکن.

فرمول یک پرامپت خوب برای برنامه‌نویسی

یک پرامپت حرفه‌ای می‌تواند از اجزای زیر تشکیل شود:

نقش

نقش تو یک توسعه‌دهنده ارشد Python و FastAPI است.

هدف

هدف، اضافه‌کردن Endpoint ایجاد محصول به پروژه است.

Context فنی

Python 3.12
FastAPI
Pydantic 2
SQLAlchemy 2
PostgreSQL
pytest

کد یا ساختار فعلی

فایل‌های مرتبط:
- app/models/product.py
- app/schemas/product.py
- app/routes/products.py

رفتار مورد انتظار

در صورت تکراری‌بودن slug، پاسخ 409 برگردان.
در صورت موفقیت، پاسخ 201 و اطلاعات محصول را برگردان.

محدودیت‌ها

- معماری فعلی را تغییر نده.
- کتابخانه جدید اضافه نکن.
- نام فیلدهای فعلی را تغییر نده.
- تمام Queryها غیرهم‌زمان باشند.

فرمت پاسخ

ابتدا برنامه تغییر را در پنج مرحله بنویس.
سپس فقط فایل‌هایی را که باید تغییر کنند نمایش بده.
برای هر تغییر یک توضیح کوتاه اضافه کن.
در پایان تست‌های لازم را بنویس.

قالب آماده پرامپت برنامه‌نویسی

نقش:
تو یک توسعه‌دهنده ارشد متخصص در [زبان یا فریم‌ورک] هستی.

هدف:
می‌خواهم [قابلیت موردنظر] را پیاده‌سازی کنم.

محیط فنی:
- زبان:
- نسخه:
- فریم‌ورک:
- دیتابیس:
- کتابخانه‌های اصلی:
- سیستم‌عامل:

ساختار یا کد فعلی:
[کد، ساختار فایل یا توضیح وضعیت موجود]

رفتار مورد انتظار:
[ورودی، خروجی و شرایط موفقیت]

محدودیت‌ها:
- معماری موجود حفظ شود.
- وابستگی جدید بدون توضیح اضافه نشود.
- کد خوانا و قابل تست باشد.
- خطاها مدیریت شوند.
- اطلاعاتی را که ارائه نشده حدس نزن.

فرمت پاسخ:
1. ابتدا مسئله را خلاصه کن.
2. ابهام‌های مهم را مشخص کن.
3. برنامه پیاده‌سازی را بنویس.
4. کد را در تغییرات کوچک ارائه کن.
5. تست‌های لازم را اضافه کن.
6. ریسک‌ها و Edge Caseها را فهرست کن.

آموزش مرحله‌به‌مرحله ساخت پروژه با ChatGPT

فرض کنید می‌خواهیم یک API ساده مدیریت کارها یا Task Manager بسازیم.

فناوری‌های پروژه:

  • Python
  • FastAPI
  • Pydantic
  • SQLite
  • SQLAlchemy
  • pytest

مرحله اول: تبدیل ایده به نیازمندی

پرامپت:

می‌خواهم یک REST API ساده برای مدیریت کارها با FastAPI بسازم.

هر کار باید این فیلدها را داشته باشد:
- id
- title
- description
- status
- priority
- due_date
- created_at
- updated_at

کاربر باید بتواند:
- کار جدید ایجاد کند.
- فهرست کارها را ببیند.
- یک کار را ویرایش کند.
- وضعیت کار را تغییر دهد.
- کار را حذف کند.
- براساس status و priority فیلتر کند.

فعلاً کد ننویس.
نیازمندی‌ها، Endpointها، قواعد اعتبارسنجی و Edge Caseها را مشخص کن.

در این مرحله باید خروجی را بررسی کنید:

  • آیا وضعیت‌های مجاز مشخص شده‌اند؟
  • آیا عنوان خالی پذیرفته می‌شود؟
  • حذف به‌صورت سخت است یا نرم؟
  • تاریخ سررسید می‌تواند در گذشته باشد؟
  • Pagination لازم است؟
  • مرتب‌سازی چگونه انجام می‌شود؟

قبل از تولید کد، تصمیم‌های محصول را قطعی کنید.

مرحله دوم: طراحی ساختار پروژه

پرامپت:

براساس نیازمندی‌های تأییدشده، ساختار پوشه یک پروژه FastAPI پیشنهاد بده.

شرایط:
- منطق Route، Service و Repository جدا باشد.
- تنظیمات در config.py قرار بگیرند.
- مدل‌های ورودی و خروجی با Pydantic تعریف شوند.
- تست‌ها پوشه مستقل داشته باشند.
- پروژه فعلاً با SQLite اجرا شود، اما مهاجرت به PostgreSQL دشوار نباشد.
- هنوز محتوای فایل‌ها را تولید نکن.

نمونه ساختار قابل قبول:

task-api/
├── app/
│   ├── main.py
│   ├── config.py
│   ├── database.py
│   ├── models/
│   │   └── task.py
│   ├── schemas/
│   │   └── task.py
│   ├── repositories/
│   │   └── task_repository.py
│   ├── services/
│   │   └── task_service.py
│   └── routes/
│       └── tasks.py
├── tests/
│   ├── conftest.py
│   └── test_tasks.py
├── requirements.txt
├── .env.example
└── README.md

مرحله سوم: تولید مدل داده

پرامپت:

اکنون فقط فایل‌های مدل SQLAlchemy و Schemaهای Pydantic را بنویس.

قواعد:
- status یکی از todo، in_progress یا done باشد.
- priority یکی از low، medium یا high باشد.
- title بین 1 تا 200 کاراکتر باشد.
- description اختیاری باشد.
- due_date اختیاری باشد.
- خروجی با Pydantic 2 سازگار باشد.
- از Enum استفاده کن.
- هیچ Route یا Service تولید نکن.

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

  • نوع تاریخ‌ها
  • مقدار پیش‌فرض Status
  • مقدار پیش‌فرض Priority
  • محدودیت طول عنوان
  • سازگاری Enum میان Pydantic و SQLAlchemy
  • تولید خودکار زمان ایجاد و ویرایش

مرحله چهارم: تولید Repository و Service

پرامپت:

براساس مدل‌ها، Repository و Service را پیاده‌سازی کن.

نیازمندی‌ها:
- create_task
- get_task
- list_tasks
- update_task
- delete_task
- filter by status
- filter by priority
- pagination

محدودیت‌ها:
- Route نباید مستقیماً Query دیتابیس اجرا کند.
- Service مسئول خطاهای منطقی باشد.
- Repository فقط مسئول دسترسی به داده باشد.
- برای Task پیدا‌نشده Exception مشخص تعریف کن.
- کد را فایل‌به‌فایل ارائه کن.

مرحله پنجم: ساخت Routeها

پرامپت:

اکنون Routeهای FastAPI را بنویس.

Endpointها:
POST /tasks
GET /tasks
GET /tasks/{task_id}
PATCH /tasks/{task_id}
DELETE /tasks/{task_id}

رفتار:
- ایجاد موفق: 201
- دریافت موفق: 200
- حذف موفق: 204
- پیدا نشدن: 404
- ورودی نامعتبر: 422
- Pagination با page و page_size
- حداکثر page_size برابر 100

Route فقط باید Validation ورودی، فراخوانی Service و ساخت پاسخ HTTP را انجام دهد.

مرحله ششم: درخواست تست

پرامپت:

برای API مدیریت کارها تست pytest بنویس.

سناریوها:
- ایجاد کار معتبر
- ردکردن عنوان خالی
- ردکردن status نامعتبر
- دریافت فهرست
- فیلتر براساس priority
- دریافت شناسه ناموجود
- ویرایش بخشی از اطلاعات
- حذف کار
- بررسی Pagination

برای هر تست مشخص کن چه رفتاری را پوشش می‌دهد.
تست‌ها نباید به دیتابیس اصلی متصل شوند.

مرحله هفتم: بازبینی نهایی

پرامپت:

کد پروژه را مانند یک Code Reviewer ارشد بررسی کن.

فقط مشکلات واقعی را گزارش بده و برای هر مورد این اطلاعات را بنویس:
- شدت: critical، high، medium یا low
- فایل و بخش مرتبط
- دلیل مشکل
- سناریوی بازتولید
- اصلاح پیشنهادی
- تستی که باید اضافه شود

روی این موارد تمرکز کن:
- خطای منطقی
- مدیریت Transaction
- Validation
- رفتار HTTP
- Queryهای ناکارآمد
- تکرار کد
- ناسازگاری میان Schema و Model

فعلاً هیچ فایلی را بازنویسی نکن.

این روش بهتر از درخواست بازنویسی یک‌باره کل پروژه است؛ زیرا ابتدا مشکلات را مشاهده و سپس درباره اصلاح آن‌ها تصمیم می‌گیرید.

آموزش دیباگ کد با ChatGPT

برای دیباگ، فقط نگویید «کد من کار نمی‌کند». اطلاعات کافی ارائه کنید.

اطلاعات موردنیاز برای دیباگ

  • زبان و نسخه
  • فریم‌ورک و نسخه
  • سیستم‌عامل
  • دستور اجرا
  • پیام کامل خطا
  • Stack Trace
  • کد مرتبط
  • ورودی استفاده‌شده
  • خروجی فعلی
  • خروجی مورد انتظار
  • اقدام‌هایی که قبلاً امتحان کرده‌اید

پرامپت مناسب دیباگ

در یک پروژه Python 3.12 و FastAPI با این خطا مواجه شده‌ام.

دستور اجرا:
uvicorn app.main:app --reload

پیام کامل خطا:
[STACK_TRACE]

کد مرتبط:
[CODE]

رفتار مورد انتظار:
Endpoint باید اطلاعات کار را برگرداند.

رفتار فعلی:
در زمان تبدیل مدل SQLAlchemy به Schema خطا رخ می‌دهد.

کارهایی که امتحان کرده‌ام:
- بررسی اتصال دیتابیس
- چاپ نتیجه Query
- فعال‌کردن from_attributes در Schema

لطفاً:
1. سه علت محتمل را به ترتیب احتمال بنویس.
2. برای هر علت یک روش آزمایش پیشنهاد بده.
3. قبل از اطمینان، کل فایل را بازنویسی نکن.
4. حداقل تغییر لازم را پیشنهاد بده.

این پرامپت مدل را وادار می‌کند میان «فرضیه»، «آزمایش» و «اصلاح» تفاوت قائل شود.

استفاده از ChatGPT برای توضیح کد

برای درک کد، فقط درخواست «توضیح بده» کافی نیست. سطح توضیح را مشخص کنید.

توضیح برای فرد مبتدی

این تابع پایتون را برای فردی که تازه async/await را یاد گرفته توضیح بده.
ابتدا هدف تابع، سپس جریان اجرا و در پایان خطاهای احتمالی را توضیح بده.
از اصطلاحات پیچیده بدون تعریف استفاده نکن.

[CODE]

توضیح برای توسعه‌دهنده ارشد

این Service را از نظر جریان داده، مرز Transaction، پیچیدگی زمانی،
رفتار هم‌زمانی و Coupling بررسی کن. توضیحات مقدماتی پایتون لازم نیست.

[CODE]

ساخت نقشه وابستگی

براساس کد زیر مشخص کن:
- ورودی از کجا وارد می‌شود؟
- چه توابعی فراخوانی می‌شوند؟
- داده در کجا تغییر می‌کند؟
- کدام عملیات Side Effect دارد؟
- چه خطاهایی ممکن است به لایه بالاتر منتقل شوند؟

[CODE]

ریفکتور کد با ChatGPT

ریفکتور باید رفتار بیرونی برنامه را حفظ کند. قبل از تغییر، از مدل بخواهید قرارداد فعلی را استخراج کند.

پرامپت پیشنهادی:

این تابع طولانی را بررسی کن.

هدف:
خوانایی و قابلیت تست بهتر شود، بدون اینکه رفتار بیرونی تغییر کند.

محدودیت‌ها:
- Signature عمومی تابع تغییر نکند.
- نوع خروجی تغییر نکند.
- Exceptionهای فعلی حفظ شوند.
- وابستگی جدید اضافه نشود.
- ابتدا تست‌های Characterization پیشنهاد بده.
- سپس برنامه ریفکتور مرحله‌ای بنویس.
- در هر مرحله فقط یک تغییر مفهومی انجام بده.

[CODE]

اصلاح یک‌باره فایل‌های بزرگ می‌تواند رفتارهای پنهان را تغییر دهد. ریفکتور را در Commitهای کوچک انجام دهید و پس از هر مرحله تست‌ها را اجرا کنید.

تولید Unit Test با ChatGPT

برای تولید تست باکیفیت، کد تابع و قرارداد رفتاری آن را ارائه کنید.

برای تابع زیر تست pytest بنویس.

قرارداد:
- قیمت ورودی برحسب ریال است.
- درصد تخفیف بین صفر تا صد است.
- نتیجه باید عدد صحیح باشد.
- درصد خارج از محدوده باید ValueError ایجاد کند.
- قیمت منفی نامعتبر است.

تست‌ها را به این گروه‌ها تقسیم کن:
- مسیر عادی
- مقدار مرزی
- ورودی نامعتبر
- رفتار Exception

در هر تست فقط یک رفتار اصلی را بررسی کن.

[CODE]

پس از دریافت تست‌ها بررسی کنید:

  • آیا تست واقعاً رفتار را می‌سنجد؟
  • آیا فقط پیاده‌سازی فعلی را تکرار می‌کند؟
  • آیا تست در صورت ایجاد Bug شکست می‌خورد؟
  • آیا Mock بیش‌ازحد استفاده شده است؟
  • آیا Edge Caseهای واقعی پوشش داده شده‌اند؟
  • آیا تست‌ها مستقل و قابل تکرار هستند؟

Code Review با ChatGPT

برای Code Review بهتر است Diff را همراه با هدف تغییر ارائه کنید.

این Pull Request قابلیت فیلتر محصولات براساس بازه قیمت را اضافه می‌کند.

نیازمندی:
- min_price و max_price اختیاری هستند.
- اگر هر دو وجود داشته باشند، min_price نباید بیشتر از max_price باشد.
- قیمت‌ها برحسب ریال و عدد صحیح‌اند.
- پاسخ باید Pagination فعلی را حفظ کند.

Diff:
[DIFF]

تغییرات را بررسی کن و فقط مشکلات قابل اقدام را گزارش بده.
برای هر مشکل:
- شدت
- فایل و خط تقریبی
- سناریوی شکست
- پیشنهاد اصلاح
- تست موردنیاز

تغییرات سلیقه‌ای قالب‌بندی را گزارش نکن.

این پرامپت احتمال تولید نظرهای عمومی و کم‌ارزش را کاهش می‌دهد.

مستندسازی کد با ChatGPT

ChatGPT می‌تواند برای موارد زیر پیش‌نویس تولید کند:

  • README
  • Docstring
  • راهنمای نصب
  • نمونه درخواست API
  • توضیح متغیرهای محیطی
  • راهنمای Contribution
  • Changelog
  • مستندات Endpointها

پرامپت README:

براساس ساختار و فایل‌های پروژه، یک README کاربردی بنویس.

بخش‌ها:
- معرفی پروژه
- قابلیت‌ها
- پیش‌نیازها
- نصب
- متغیرهای محیطی
- اجرای Development
- اجرای تست‌ها
- نمونه درخواست API
- ساختار پروژه
- خطاهای متداول

دستور یا قابلیتی را که در فایل‌های ارائه‌شده وجود ندارد اضافه نکن.
موارد نامشخص را با TODO مشخص کن.

تبدیل کد میان زبان‌های برنامه‌نویسی

تبدیل صرف Syntax کافی نیست؛ باید تفاوت‌های اکوسیستم نیز در نظر گرفته شوند.

پرامپت مناسب:

این کد Python را به TypeScript تبدیل کن.

محیط مقصد:
- Node.js
- TypeScript strict
- Fastify
- PostgreSQL
- Vitest

قواعد:
- فقط ترجمه خط‌به‌خط انجام نده.
- الگوهای متداول TypeScript را رعایت کن.
- تفاوت مدیریت خطا و async را توضیح بده.
- نوع‌ها صریح باشند.
- رفتار API تغییر نکند.
- ابتدا تفاوت‌های مهم دو پیاده‌سازی را فهرست کن.

[PYTHON_CODE]

پس از تبدیل، تست‌های زبان مبدأ را به تست‌های مقصد منتقل و رفتار دو نسخه را مقایسه کنید.

یادگیری برنامه‌نویسی با ChatGPT

ChatGPT می‌تواند نقش مدرس تعاملی داشته باشد، به‌شرط آنکه فقط پاسخ نهایی را نخواهید.

پرامپت پیشنهادی:

می‌خواهم Decorator در پایتون را یاد بگیرم.

روش آموزش:
1. ابتدا مفهوم را با یک مثال ساده توضیح بده.
2. سپس یک تمرین کوتاه بده.
3. تا زمانی که پاسخ من را ندیده‌ای، راه‌حل کامل را نمایش نده.
4. پس از پاسخ من، فقط اشتباه‌ها را راهنمایی کن.
5. در پایان یک کاربرد واقعی در FastAPI نشان بده.

روش بهتر برای یادگیری:

  • ابتدا خودتان راه‌حل را امتحان کنید.
  • از مدل Hint بخواهید، نه پاسخ کامل.
  • دلیل هر خط کد را بپرسید.
  • کد را بدون نگاه‌کردن دوباره بنویسید.
  • تست جدید اضافه کنید.
  • راه‌حل جایگزین را مقایسه کنید.

پرامپت‌های آماده برای برنامه‌نویسان

ساخت تابع

یک تابع Python بنویس که فهرستی از تراکنش‌ها را براساس customer_id گروه‌بندی
و مجموع amount هر مشتری را محاسبه کند.

قواعد:
- amount از نوع Decimal است.
- ورودی خالی باید دیکشنری خالی برگرداند.
- داده ورودی تغییر نکند.
- Type Hint کامل بنویس.
- پیچیدگی زمانی را توضیح بده.
- تست pytest اضافه کن.

ساخت REST API

یک Endpoint در FastAPI برای ایجاد کاربر طراحی کن.

ورودی:
email، full_name و password

قواعد:
- ایمیل یکتا باشد.
- پاسخ نباید password یا password_hash داشته باشد.
- ایمیل تکراری پاسخ 409 ایجاد کند.
- منطق Hash در Service باشد.
- Route مستقیماً به دیتابیس دسترسی نداشته باشد.
- کد با Pydantic 2 و SQLAlchemy 2 سازگار باشد.

تولید Query

برای PostgreSQL یک Query بنویس که فروش ماهانه هر دسته محصول را محاسبه کند.

جداول:
[SCHEMA]

قواعد:
- سفارش لغوشده محاسبه نشود.
- مبلغ از quantity * unit_price محاسبه شود.
- نتیجه براساس ماه و دسته مرتب شود.
- Query را توضیح بده.
- Indexهای مفید را جداگانه پیشنهاد کن.

تحلیل خطا

این Stack Trace را تحلیل کن.
ابتدا اولین محل مرتبط با کد پروژه را پیدا کن.
میان علت اصلی و خطاهای زنجیره‌ای تفاوت بگذار.
قبل از پیشنهاد اصلاح، اطلاعات مفقود را مشخص کن.

[STACK_TRACE]

تولید تست

برای این Service یک Test Matrix بساز.
ستون‌ها:
سناریو، ورودی، Mock لازم، خروجی مورد انتظار و Exception مورد انتظار.

پس از تأیید من، تست‌های pytest را تولید کن.

[CODE]

بهبود کارایی

این کد روی یک میلیون رکورد کند است.

ابتدا بدون بازنویسی:
- پیچیدگی زمانی و فضایی را تحلیل کن.
- عملیات I/O را مشخص کن.
- Queryهای تکراری را پیدا کن.
- نقاط مناسب برای اندازه‌گیری را پیشنهاد بده.

سپس سه بهینه‌سازی را براساس اثر و ریسک اولویت‌بندی کن.

[CODE]

اطلاعاتی که نباید بدون بررسی در ChatGPT قرار دهید

هنگام استفاده از ابزارهای آنلاین، از ارسال بی‌دلیل اطلاعات محرمانه خودداری کنید:

  • API Key
  • رمز عبور
  • Token دسترسی
  • Private Key
  • Connection String واقعی
  • اطلاعات محرمانه مشتری
  • فایل تنظیمات Production
  • داده شخصی کاربران
  • کد اختصاصی حساس بدون مجوز سازمان
  • فایل .env
  • نسخه پشتیبان دیتابیس

به‌جای مقدار واقعی از Placeholder استفاده کنید:

DATABASE_URL=postgresql://USER:PASSWORD@HOST:PORT/DATABASE
API_KEY=YOUR_API_KEY

تنظیمات Data Controls در ChatGPT به کاربران اجازه می‌دهد نحوه استفاده از گفت‌وگوهای خود برای بهبود مدل‌ها را مدیریت کنند. پیش از ارسال محتوای کاری، تنظیمات حساب و سیاست سازمان خود را بررسی کنید. راهنمای رسمی Data Controls

چک‌لیست بررسی کد تولیدشده

پیش از استفاده از هر کد تولیدشده با هوش مصنوعی، این موارد را بررسی کنید.

صحت فنی

  • آیا کد اجرا می‌شود؟
  • آیا Importها واقعی و نصب‌شده‌اند؟
  • آیا Syntax با نسخه زبان سازگار است؟
  • آیا متدها در نسخه کتابخانه وجود دارند؟
  • آیا نوع‌های ورودی و خروجی درست‌اند؟

منطق

  • آیا رفتار با نیازمندی تطابق دارد؟
  • آیا مقدارهای مرزی پوشش داده شده‌اند؟
  • آیا وضعیت‌های خطا مدیریت می‌شوند؟
  • آیا کد اطلاعاتی را بدون منبع فرض کرده است؟

دیتابیس

  • آیا Queryها درست هستند؟
  • آیا Transaction مناسب است؟
  • آیا احتمال N+1 Query وجود دارد؟
  • آیا Index لازم است؟
  • آیا Migration با داده موجود سازگار است؟

کیفیت کد

  • آیا نام‌گذاری واضح است؟
  • آیا مسئولیت‌ها جدا شده‌اند؟
  • آیا کد تکراری وجود دارد؟
  • آیا تابع بیش‌ازحد بزرگ است؟
  • آیا وابستگی جدید واقعاً ضروری است؟

تست

  • آیا مسیر عادی تست شده است؟
  • آیا خطاها تست شده‌اند؟
  • آیا Edge Case وجود دارد؟
  • آیا تست‌ها مستقل هستند؟
  • آیا تست واقعاً می‌تواند Bug را تشخیص دهد؟

انتشار

  • آیا Log محرمانه تولید نمی‌شود؟
  • آیا متغیرهای محیطی تنظیم شده‌اند؟
  • آیا Timeout تعریف شده است؟
  • آیا Rollback ممکن است؟
  • آیا تغییرات ابتدا در محیط آزمایشی اجرا شده‌اند؟

خطاهای رایج هنگام کدنویسی با ChatGPT

درخواست بیش‌ازحد بزرگ

اشتباه:

یک اپلیکیشن کامل مشابه اینستاگرام بساز.

بهتر است پروژه را به نیازمندی، معماری، مدل داده، API، رابط کاربری و تست تقسیم کنید.

ندادن نسخه کتابخانه‌ها

کدی که برای نسخه‌ای دیگر تولید شده ممکن است اجرا نشود. نسخه‌ها را مشخص کنید:

Python 3.12
FastAPI
Pydantic 2
SQLAlchemy 2

درخواست بازنویسی کامل برای یک Bug کوچک

بازنویسی کامل می‌تواند خطاهای جدید بسازد. ابتدا Root Cause و حداقل تغییر لازم را بخواهید.

کپی‌کردن پاسخ بدون اجرا

کد را در محیط واقعی پروژه اجرا کنید و نتیجه تست، Linter و Type Checker را بررسی کنید.

ندادن خروجی مورد انتظار

مدل باید بداند موفقیت دقیقاً چه شکلی است. نمونه ورودی و خروجی ارائه کنید.

ترکیب چند مسئله در یک پرامپت

رفع Bug، تغییر معماری، افزایش سرعت و نوشتن مستندات را هم‌زمان درخواست نکنید. هر تغییر باید هدف مشخصی داشته باشد.

پذیرش اولین پاسخ

اولین پاسخ را پیش‌نویس در نظر بگیرید. تناقض‌ها، فرضیات و راه‌حل‌های جایگزین را بررسی کنید.

ارسال ناقص پیام خطا

فقط آخرین خط Stack Trace را ارسال نکنید. بخش کامل مرتبط با کد پروژه برای پیدا کردن علت اصلی مفیدتر است.

چگونه پاسخ ChatGPT را بهتر کنیم؟

اگر پاسخ اولیه ضعیف بود، گفت‌وگو را هدفمند ادامه دهید.

درخواست شفاف‌سازی فرضیات

قبل از ادامه، تمام فرضیاتی را که درباره پروژه من کرده‌ای فهرست کن.

درخواست حداقل تغییر

راه‌حل را به کوچک‌ترین Patch ممکن محدود کن و معماری فعلی را تغییر نده.

درخواست مقایسه

دو راه‌حل ممکن را از نظر پیچیدگی، کارایی، نگهداری و ریسک مقایسه کن.

درخواست تست شکست

تستی بنویس که در پیاده‌سازی فعلی شکست بخورد و بعد از اصلاح موفق شود.

درخواست بررسی دوباره

پاسخ قبلی خودت را نقد کن و مواردی را که ممکن است با نسخه کتابخانه ناسازگار باشند مشخص کن.

جلوگیری از حدس

اگر اطلاعات کافی نیست، سؤال بپرس یا مورد را با UNKNOWN مشخص کن.
نام فایل، تابع یا API غیرواقعی تولید نکن.

استفاده از Projects و فایل‌ها برای پروژه‌های برنامه‌نویسی

در پروژه‌های طولانی، نگهداری Context اهمیت زیادی دارد. در ChatGPT می‌توان چت‌ها، فایل‌ها و دستورهای مرتبط با یک هدف را در Project سازمان‌دهی کرد. طبق راهنمای رسمی، پاسخ‌ها می‌توانند از چت‌ها، فایل‌های بارگذاری‌شده و دستورهای پروژه استفاده کنند. راهنمای Projects در ChatGPT

برای یک پروژه برنامه‌نویسی می‌توانید این موارد را در Context قرار دهید:

  • README
  • ساختار پوشه‌ها
  • قراردادهای کدنویسی
  • فایل وابستگی‌ها
  • Schema دیتابیس
  • مستندات API
  • نمونه Request و Response
  • تصمیم‌های معماری
  • قواعد تست

یک دستور پروژه مناسب می‌تواند چنین باشد:

قواعد این پروژه:

- زبان اصلی Python 3.12 است.
- Backend با FastAPI نوشته شده است.
- از Pydantic 2 و SQLAlchemy 2 استفاده می‌کنیم.
- Route نباید مستقیماً Query اجرا کند.
- تمام قابلیت‌های جدید باید تست pytest داشته باشند.
- وابستگی جدید فقط با ذکر دلیل پیشنهاد شود.
- تغییرات باید کوچک و قابل Review باشند.
- اطلاعات نامشخص نباید حدس زده شوند.

بااین‌حال، فایل‌های پروژه را آگاهانه انتخاب کنید و قبل از بارگذاری، اطلاعات محرمانه را حذف کنید.

چه زمانی از ChatGPT و چه زمانی از API استفاده کنیم؟

نیازگزینه مناسب
سؤال فنی موردیChatGPT
یادگیری یک مفهومChatGPT
تحلیل دستی چند فایلChatGPT یا ابزار کدنویسی
ویرایش مستمر Repositoryابزار کدنویسی داخل IDE
تولید پاسخ برای کاربران محصولAPI
تحلیل خودکار هزاران قطعه‌کدAPI
ساخت Code Review داخلیAPI
ساخت دستیار مستندسازیAPI
اتصال مدل به CI/CDAPI
انتخاب میان چند مدلزیرساخت API چندمدلی

اگر قرار است قابلیت هوش مصنوعی بخشی از نرم‌افزار شما باشد، استفاده از API مسیر مناسب‌تری است.

ساخت دستیار برنامه‌نویسی با API درواره

درواره دسترسی به مدل‌های مختلف هوش مصنوعی را از طریق یک API سازگار با OpenAI فراهم می‌کند. به این ترتیب می‌توانید یک قابلیت تولید یا تحلیل کد را در Backend خود پیاده‌سازی کنید.

ابتدا در درواره ثبت‌نام کنید، کلید API بسازید و مدل موردنظر را از صفحه مدل‌ها و قیمت‌ها انتخاب کنید.

در مثال‌ها از این مقادیر استفاده می‌کنیم:

YOUR_DARVAREH_API_KEY
YOUR_MODEL_ID

نصب کتابخانه

pip install openai python-dotenv

فایل تنظیمات

فایل .env:

DARVAREH_API_KEY=YOUR_DARVAREH_API_KEY
DARVAREH_MODEL=YOUR_MODEL_ID
DARVAREH_BASE_URL=https://api.darvareh.ir/v1

فایل .gitignore:

.env
.venv/
__pycache__/

ساخت ابزار توضیح کد

فایل explain_code.py:

import os
from pathlib import Path

from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

client = OpenAI(
    api_key=os.environ["DARVAREH_API_KEY"],
    base_url=os.getenv(
        "DARVAREH_BASE_URL",
        "https://api.darvareh.ir/v1",
    ),
)

model_id = os.environ["DARVAREH_MODEL"]


def explain_code(code: str, language: str) -> str:
    response = client.chat.completions.create(
        model=model_id,
        messages=[
            {
                "role": "system",
                "content": (
                    "تو یک توسعه‌دهنده ارشد و مدرس برنامه‌نویسی هستی. "
                    "کد را دقیق تحلیل کن. "
                    "اطلاعات ناموجود را حدس نزن. "
                    "پاسخ را به زبان فارسی بنویس، اما نام توابع، "
                    "کلاس‌ها و اصطلاحات فنی را تغییر نده."
                ),
            },
            {
                "role": "user",
                "content": f"""
زبان برنامه‌نویسی: {language}

کد:
```{language}
{code}

پاسخ را با این ساختار بنویس:

  1. هدف کلی کد
  2. جریان اجرا
  3. ورودی و خروجی
  4. وابستگی‌ها
  5. خطاهای احتمالی
  6. پیشنهادهای بهبود
    """,
    },
    ],
    temperature=0.2,
    max_tokens=1500,
    )return response.choices[0].message.content or ""

file_path = Path("sample.py")
code_text = file_path.read_text(encoding="utf-8")

result = explain_code(
code=code_text,
language="python",
)

print(result)


فایل موردنظر را با نام `sample.py` در کنار برنامه قرار دهید و اجرا کنید:

```bash
python explain_code.py

ساخت ابزار Code Review با API

def review_code(
    diff: str,
    requirements: str,
    language: str,
) -> str:
    response = client.chat.completions.create(
        model=model_id,
        messages=[
            {
                "role": "system",
                "content": (
                    "تو Code Reviewer ارشد هستی. "
                    "فقط مشکلات واقعی و قابل اقدام را گزارش بده. "
                    "روی صحت منطقی، مدیریت خطا، کارایی، تست‌پذیری "
                    "و سازگاری با نیازمندی تمرکز کن. "
                    "مشکلات سلیقه‌ای قالب‌بندی را گزارش نکن."
                ),
            },
            {
                "role": "user",
                "content": f"""
زبان:
{language}

نیازمندی:
{requirements}

Diff:
```diff
{diff}

برای هر مشکل این فیلدها را ارائه کن:

  • severity
  • title
  • explanation
  • failure_scenario
  • suggested_fix
  • required_test
    """,
    },
    ],
    temperature=0.1,
    max_tokens=2000,
    )return response.choices[0].message.content or ""

در نسخه Production بهتر است خروجی را با JSON Schema مشخص و سمت برنامه اعتبارسنجی کنید.

## ساخت API توضیح کد با FastAPI

نصب وابستگی‌ها:

```bash
pip install fastapi uvicorn openai python-dotenv

فایل main.py:

import os
from typing import Literal

from dotenv import load_dotenv
from fastapi import FastAPI, HTTPException
from openai import APIConnectionError, OpenAI, RateLimitError
from pydantic import BaseModel, Field

load_dotenv()

client = OpenAI(
    api_key=os.environ["DARVAREH_API_KEY"],
    base_url=os.getenv(
        "DARVAREH_BASE_URL",
        "https://api.darvareh.ir/v1",
    ),
    timeout=45.0,
    max_retries=2,
)

MODEL_ID = os.environ["DARVAREH_MODEL"]

app = FastAPI(
    title="AI Code Assistant",
    version="1.0.0",
)


class ExplainCodeRequest(BaseModel):
    language: Literal[
        "python",
        "javascript",
        "typescript",
        "php",
        "java",
        "go",
        "rust",
        "sql",
    ]
    code: str = Field(min_length=1, max_length=20000)
    experience_level: Literal[
        "beginner",
        "intermediate",
        "advanced",
    ] = "intermediate"


class ExplainCodeResponse(BaseModel):
    explanation: str
    model: str


@app.post(
    "/explain-code",
    response_model=ExplainCodeResponse,
)
def explain_code(request: ExplainCodeRequest):
    try:
        response = client.chat.completions.create(
            model=MODEL_ID,
            messages=[
                {
                    "role": "system",
                    "content": (
                        "تو یک مدرس برنامه‌نویسی دقیق هستی. "
                        "پاسخ را به زبان فارسی بنویس. "
                        "کد یا API غیرواقعی تولید نکن. "
                        "اگر Context کافی نیست، محدودیت تحلیل را اعلام کن."
                    ),
                },
                {
                    "role": "user",
                    "content": f"""
زبان: {request.language}
سطح مخاطب: {request.experience_level}

کد:
```{request.language}
{request.code}

توضیح شامل این بخش‌ها باشد:

  • هدف کد
  • جریان اجرا
  • مفاهیم مهم
  • ورودی و خروجی
  • خطاهای احتمالی

پیشنهاد بهبود
""",
},
],
temperature=0.2,
max_tokens=1400,
)

  explanation = response.choices[0].message.content

  if not explanation:
      raise HTTPException(
          status_code=502,
          detail="مدل پاسخ قابل استفاده‌ای تولید نکرد.",
      )

  return ExplainCodeResponse(
      explanation=explanation,
      model=MODEL_ID,
  )

except RateLimitError:
raise HTTPException(
status_code=429,
detail="تعداد درخواست‌ها بیش از حد مجاز است.",
)except APIConnectionError:
raise HTTPException(
status_code=503,
detail="ارتباط با سرویس هوش مصنوعی برقرار نشد.",
)


اجرای برنامه:

```bash
uvicorn main:app --reload

مستندات تعاملی:

http://127.0.0.1:8000/docs

نمونه درخواست:

{
  "language": "python",
  "experience_level": "beginner",
  "code": "def square(number: int) -> int:\n    return number * number"
}

کنترل هزینه دستیار برنامه‌نویسی

کد پروژه می‌تواند ورودی بزرگی داشته باشد. ارسال بدون محدودیت فایل‌ها باعث افزایش مصرف توکن می‌شود.

برای کنترل هزینه:

  • فقط فایل‌های مرتبط را ارسال کنید.
  • ابتدا ساختار Repository را تحلیل کنید.
  • کدهای تولیدشده، فایل‌های Build و وابستگی‌ها را حذف کنید.
  • Diff را به‌جای کل Repository ارسال کنید.
  • تاریخچه غیرضروری را حذف کنید.
  • طول پاسخ را محدود کنید.
  • برای وظایف ساده مدل اقتصادی‌تر انتخاب کنید.
  • نتیجه‌های تکراری را Cache کنید.
  • مصرف هر کاربر و قابلیت را ثبت کنید.
  • برای ورودی محدودیت اندازه قرار دهید.
  • مدل قدرتمند را فقط برای مسائل پیچیده فراخوانی کنید.

قیمت مدل‌ها ثابت نیست و به مدل، نوع ورودی و خروجی وابسته است. برای مشاهده اطلاعات به‌روز به صفحه مدل‌ها و قیمت‌های درواره مراجعه کنید.

آیا ChatGPT جای برنامه‌نویس را می‌گیرد؟

ChatGPT بخش‌هایی از کار برنامه‌نویسی را سریع‌تر می‌کند، اما توسعه نرم‌افزار فقط نوشتن Syntax نیست.

یک برنامه‌نویس همچنان باید:

  • مسئله واقعی را درک کند.
  • نیازمندی متناقض را تشخیص دهد.
  • تصمیم معماری بگیرد.
  • میان هزینه و کیفیت تعادل ایجاد کند.
  • کد را تست و ارزیابی کند.
  • تغییرات را با سیستم موجود هماهنگ کند.
  • خطاهای محیط واقعی را مدیریت کند.
  • مسئولیت نتیجه نهایی را بپذیرد.
  • با تیم محصول و کاربران ارتباط برقرار کند.

هوش مصنوعی بیشترین ارزش را برای برنامه‌نویسی ایجاد می‌کند که بتواند مسئله را دقیق تعریف کند و خروجی را جدی بررسی کند.

پرسش‌های متداول

آیا می‌توان با ChatGPT برنامه‌نویسی یاد گرفت؟

بله. ChatGPT می‌تواند مفاهیم را توضیح دهد، تمرین ایجاد کند، پاسخ شما را بررسی کند و مثال متناسب با سطح شما بسازد. بهتر است ابتدا خودتان مسئله را حل کنید و از مدل برای Hint و بازخورد استفاده کنید.

بهترین روش کدنویسی با ChatGPT چیست؟

مسئله را به وظایف کوچک تقسیم کنید، نسخه فناوری‌ها را مشخص کنید، کد مرتبط و رفتار مورد انتظار را ارائه دهید و پس از هر تغییر تست‌ها را اجرا کنید.

آیا کد تولیدشده توسط ChatGPT همیشه درست است؟

خیر. کد می‌تواند دارای خطای منطقی، API غیرواقعی، ناسازگاری نسخه یا Edge Case فراموش‌شده باشد. هر خروجی باید بررسی و تست شود.

چگونه با ChatGPT خطای برنامه را پیدا کنیم؟

پیام کامل خطا، Stack Trace، کد مرتبط، نسخه زبان و کتابخانه، دستور اجرا، ورودی و رفتار مورد انتظار را ارائه کنید. از مدل بخواهید ابتدا فرضیه و روش آزمایش بنویسد.

آیا ChatGPT برای Python مناسب است؟

بله. ChatGPT می‌تواند در نوشتن، توضیح، تست و دیباگ کد پایتون کمک کند. بااین‌حال باید نسخه Python و کتابخانه‌های پروژه را در پرامپت مشخص کنید.

آیا ChatGPT برای JavaScript و TypeScript نیز کاربرد دارد؟

بله. می‌توان از آن برای Node.js، React، Next.js، TypeScript و سایر فناوری‌های وب استفاده کرد. فعال‌بودن TypeScript Strict و نسخه فریم‌ورک را مشخص کنید.

چگونه از ChatGPT برای Code Review استفاده کنیم؟

هدف تغییر، نیازمندی و Diff را ارسال کنید. از مدل بخواهید فقط مشکلات قابل اقدام را همراه با شدت، سناریوی شکست، اصلاح و تست موردنیاز گزارش کند.

آیا می‌توان کل پروژه را برای ChatGPT ارسال کرد؟

بسته به ابزار و محدودیت فایل ممکن است بتوانید چند فایل را بارگذاری کنید، اما بهتر است فقط فایل‌های مرتبط و فاقد اطلاعات محرمانه را ارائه دهید. برای Repositoryهای بزرگ، ساختار و Diff معمولاً مفیدتر از ارسال بدون هدف تمام فایل‌هاست.

تفاوت ChatGPT و API چیست؟

ChatGPT محصولی برای تعامل مستقیم کاربر است. API برای اتصال مدل هوش مصنوعی به سایت، اپلیکیشن، Backend یا ابزار توسعه استفاده می‌شود.

چگونه یک ابزار برنامه‌نویسی هوش مصنوعی بسازیم؟

می‌توانید با API درواره، Backend پایتون یا Node.js و یک رابط کاربری، قابلیت‌هایی مانند توضیح کد، تولید تست، Code Review و مستندسازی را پیاده‌سازی کنید.

API درواره چه آدرس پایه‌ای دارد؟

آدرس پایه API سازگار با OpenAI درواره:

https://api.darvareh.ir/v1

مدل مناسب برنامه‌نویسی را چگونه انتخاب کنیم؟

توانایی Coding، اندازه Context، سرعت، هزینه، پشتیبانی از Tool Calling و کیفیت خروجی ساختاریافته را بررسی کنید. فهرست مدل‌ها در صفحه مدل‌های درواره قرار دارد.

آیا باید کلید API را در فرانت‌اند قرار دهیم؟

خیر. کلید API باید در Backend و متغیر محیطی نگهداری شود. فرانت‌اند باید درخواست را به سرور خودتان ارسال کند.

جمع‌بندی

برنامه‌نویسی با ChatGPT زمانی بیشترین ارزش را دارد که هوش مصنوعی را بخشی از یک جریان مهندسی کنترل‌شده بدانیم، نه تولیدکننده‌ای که خروجی آن بدون بررسی وارد پروژه شود.

جریان مناسب شامل این مراحل است:

  • تعریف دقیق مسئله
  • ارائه Context فنی
  • مشخص‌کردن نسخه‌ها و محدودیت‌ها
  • درخواست برنامه پیاده‌سازی
  • تقسیم تغییرات به بخش‌های کوچک
  • تولید کد
  • اجرای تست
  • تحلیل خطا
  • Code Review
  • بررسی نهایی توسط توسعه‌دهنده

ChatGPT برای سؤال‌های فنی، یادگیری، تحلیل کد و حل مسئله مناسب است. برای ساخت یک محصول یا ابزار خودکار نیز می‌توانید همان قابلیت‌ها را از طریق API وارد نرم‌افزار خود کنید.

با ثبت‌نام در درواره، دریافت کلید API و انتخاب مدل از صفحه مدل‌ها، می‌توانید دستیار برنامه‌نویسی، ابزار توضیح کد، تولیدکننده تست یا سامانه Code Review اختصاصی خود را بسازید.

مقالات مرتبط

برای مطالعه شرایط استفاده و محدودیت‌های مسئولیت، صفحه «سلب مسئولیت» را مشاهده کنید.

Read more

اتوماسیون هوش مصنوعی چیست؟ کاربردها و آموزش ساخت AI Automation

اتوماسیون هوش مصنوعی چیست؟ کاربردها و آموزش ساخت AI Automation

اتوماسیون هوش مصنوعی با ترکیب گردش‌کارهای خودکار و مدل‌های هوش مصنوعی، پردازش متن، دسته‌بندی، استخراج اطلاعات و تصمیم‌های پیشنهادی را خودکار می‌کند. در این راهنما، معماری و ساخت نمونه عملی آن با API درواره را می‌آموزید.

Agentic Commerce چیست؟ آینده خرید با ایجنت هوش مصنوعی

Agentic Commerce چیست؟ آینده خرید با ایجنت هوش مصنوعی

Agentic Commerce شیوه‌ای جدید برای خرید اینترنتی است که در آن ایجنت هوش مصنوعی می‌تواند نیاز کاربر را بفهمد، محصولات را جست‌وجو و مقایسه کند و فرایند خرید را پیش ببرد. در این راهنما با معماری، UCP، ACP و پیاده‌سازی آن با API درواره آشنا می‌شوید.