Replit Agent چیست؟ آموزش ساخت و انتشار اپلیکیشن با هوش مصنوعی

Replit Agent یک عامل هوش مصنوعی برای طراحی، کدنویسی، آزمایش و انتشار نرم‌افزار است. در این آموزش یک اپلیکیشن فارسی متصل به API درواره را با Replit می‌سازیم.

Share
Replit Agent چیست؟ آموزش ساخت و انتشار اپلیکیشن با هوش مصنوعی

Replit Agent چیست؟

Replit Agent یک عامل برنامه‌نویسی هوش مصنوعی است که در محیط ابری Replit فعالیت می‌کند و می‌تواند براساس توضیحات زبان طبیعی، یک نرم‌افزار را برنامه‌ریزی، طراحی، کدنویسی، آزمایش و منتشر کند.

در روش سنتی توسعه، برنامه‌نویس باید محیط اجرا، زبان، Framework، Database، Packageها و Hosting را جداگانه تنظیم کند. در Replit می‌توان بسیاری از این مراحل را در یک محیط مرورگری انجام داد.

برای مثال می‌توانید بنویسید:

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

Replit Agent می‌تواند براساس این درخواست:

  • ساختار پروژه را ایجاد کند.
  • Frontend و Backend بسازد.
  • Database را تنظیم کند.
  • Authentication اضافه کند.
  • کد را اجرا کند.
  • برنامه را در مرورگر آزمایش کند.
  • خطاها را پیدا و اصلاح کند.
  • نسخه قابل‌انتشار آماده کند.
  • برنامه را روی زیرساخت Replit منتشر کند.

Replit در مارس ۲۰۲۶ نسخه Agent 4 را معرفی کرد. براساس مستندات Replit Agent 4، این نسخه علاوه بر Web App و Mobile App می‌تواند انواع دیگری از خروجی‌ها را در یک Project ایجاد و چند وظیفه را به‌صورت هم‌زمان مدیریت کند.

پاسخ کوتاه: Replit Agent چه کاری انجام می‌دهد؟

Replit Agent برای انجام بخش بزرگی از چرخه توسعه نرم‌افزار طراحی شده است:

  • تبدیل ایده به Plan
  • انتخاب Stack
  • ساخت ساختار پروژه
  • تولید Frontend
  • تولید Backend
  • ایجاد Database Schema
  • نصب Package
  • ساخت API
  • اتصال سرویس‌های خارجی
  • تنظیم Authentication
  • ساخت Mobile App
  • اجرای تست
  • بررسی برنامه در مرورگر
  • رفع خطا
  • ایجاد Checkpoint
  • انتشار روی Cloud
  • بررسی Logهای محیط عملیاتی
  • اصلاح برنامه منتشرشده

Agent می‌تواند کار توسعه را سریع‌تر کند، اما مسئولیت بازبینی معماری، کد، داده و دسترسی کاربران همچنان بر عهده سازنده محصول است.

Replit چیست؟

Replit یک محیط توسعه ابری است که امکان نوشتن، اجرا و انتشار کد را از طریق مرورگر فراهم می‌کند.

این پلتفرم از زبان‌ها و Frameworkهای مختلف پشتیبانی می‌کند و امکاناتی مانند موارد زیر را در یک Workspace ارائه می‌دهد:

  • Code Editor
  • Shell
  • Git
  • Preview
  • Package Management
  • Database
  • Object Storage
  • Secrets
  • Deployment
  • Custom Domain
  • Collaboration
  • AI Agent

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

تفاوت Replit و Replit Agent چیست؟

Replit خود پلتفرم توسعه و اجرای نرم‌افزار است. Replit Agent عامل هوش مصنوعی داخل این پلتفرم است.

به زبان ساده:

  • Replit: محیط کدنویسی، اجرا و انتشار
  • Replit Agent: عامل هوش مصنوعی برای ساخت و تغییر پروژه
  • Replit Database: پایگاه داده مدیریت‌شده
  • App Storage: محل ذخیره فایل و رسانه
  • Deployment: زیرساخت اجرای برنامه منتشرشده
  • Secrets: محل نگهداری API Key و اطلاعات حساس

می‌توان بدون Agent نیز در Replit برنامه‌نویسی کرد. در این حالت، توسعه‌دهنده مستقیماً فایل‌ها و فرمان‌ها را مدیریت می‌کند.

Replit Agent 4 چیست؟

Agent 4 نسل جدید عامل نرم‌افزاری Replit است که در سال ۲۰۲۶ معرفی شد.

مهم‌ترین قابلیت‌های اعلام‌شده برای این نسخه عبارت‌اند از:

  • ساخت Web App
  • ساخت Mobile App
  • ساخت Data Dashboard
  • ایجاد ابزارهای هوش مصنوعی
  • طراحی اولیه روی Design Canvas
  • برنامه‌ریزی با Plan Mode
  • اجرای چند وظیفه به‌صورت موازی
  • همکاری هم‌زمان اعضای تیم
  • اتصال به ابزارهای خارجی
  • پشتیبانی از چند Artifact در یک Project

در نسخه‌های قدیمی‌تر، هر Project معمولاً حول یک اپلیکیشن ساخته می‌شد. Agent 4 مفهوم Multi-Artifact را گسترش داده است.

Multi-Artifact در Replit چیست؟

Artifact خروجی مستقلی است که درون یک Project ساخته می‌شود.

یک Project می‌تواند شامل چند Artifact مرتبط باشد:

  • Web App
  • Mobile App
  • Dashboard
  • Presentation
  • Data Visualization
  • ویدئوی متحرک

برای مثال، یک پروژه استارتاپ می‌تواند شامل موارد زیر باشد:

  • اپلیکیشن وب محصول
  • اپلیکیشن موبایل
  • داشبورد مدیریتی
  • Pitch Deck
  • گزارش تحلیلی

این Artifactها می‌توانند Backend، Database، Secrets و Deployment مشترک داشته باشند.

براساس راهنمای Multi-Artifact، پروژه‌های ساخته‌شده پیش از ۱۱ مارس ۲۰۲۶ ممکن است برای اضافه‌کردن Artifact دوم به یک به‌روزرسانی ساختاری نیاز داشته باشند.

Plan Mode چیست؟

Plan Mode برای بررسی ایده و طراحی مسیر اجرا پیش از تغییر کد یا داده استفاده می‌شود.

در این حالت می‌توان از Agent خواست:

  • ایده محصول را تحلیل کند.
  • چند معماری را مقایسه کند.
  • مدل داده پیشنهاد دهد.
  • فهرست وظایف بسازد.
  • وابستگی‌های مراحل را مشخص کند.
  • ریسک‌ها را توضیح دهد.
  • معیارهای پذیرش تعریف کند.
  • بدون تغییر پروژه به سؤال‌های فنی پاسخ دهد.

طبق مستندات Plan Mode، این حالت برای برنامه‌ریزی و Brainstorming طراحی شده و برخلاف Build Mode نباید کد یا داده برنامه را تغییر دهد.

نمونه Prompt:

می‌خواهم یک سیستم فارسی مدیریت جلسات بسازم.

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

در این مرحله هیچ کد یا داده‌ای را تغییر نده.

ابتدا این موارد را ارائه بده:
- معماری پیشنهادی
- صفحات
- نقش‌های کاربری
- مدل داده
- APIهای Backend
- مراحل پیاده‌سازی
- ریسک‌های اصلی
- معیارهای پذیرش

پس از بررسی Plan می‌توان آن را تأیید و Agent را وارد Build Mode کرد.

Build Mode چیست؟

Build Mode حالت اجرایی Agent است. در این حالت Agent می‌تواند فایل ایجاد کند، کد بنویسد، Package نصب کند و پروژه را تغییر دهد.

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

  1. فایل‌های مرتبط را پیدا کند.
  2. تغییرات لازم را برنامه‌ریزی کند.
  3. کد را اصلاح کند.
  4. برنامه را اجرا کند.
  5. Logها را بررسی کند.
  6. تست انجام دهد.
  7. نتیجه را در یک Checkpoint ثبت کند.

برای جلوگیری از تغییرات ناخواسته، Prompt باید محدوده روشنی داشته باشد:

فقط فرم ایجاد جلسه را پیاده‌سازی کن.

در این مرحله:
- Authentication تغییر نکند.
- Database Migration اجرا نشود.
- Navigation تغییر نکند.
- صفحه Dashboard بازطراحی نشود.
- فقط Component فرم، Validation و تست مربوط به آن تغییر کنند.

حالت‌های Agent در Replit

Replit برای کنترل هزینه، سرعت و توانایی Agent چند حالت ارائه می‌دهد. نام و شرایط این حالت‌ها ممکن است تغییر کند، اما مستندات فعلی گزینه‌های زیر را معرفی می‌کنند:

Lite

برای تغییرات کوچک و سریع مناسب است:

  • اصلاح متن
  • تغییر Style
  • رفع باگ محدود
  • تغییر Component
  • افزودن قابلیت کوچک

Economy

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

Power

برای مسئله‌های پیچیده، تغییرات بزرگ و Buildهای طولانی مناسب‌تر است.

Turbo

در طرح‌های پشتیبانی‌شده می‌تواند اجرای وظایف را سریع‌تر کند، اما هزینه بیشتری دارد.

برای اصلاح یک رنگ یا Label به Power نیاز ندارید. حالت قوی‌تر را برای وظایفی انتخاب کنید که واقعاً به تحلیل چندفایلی یا معماری گسترده نیاز دارند.

Design Canvas چیست؟

Design Canvas برای طراحی و بررسی رابط محصول پیش از پیاده‌سازی کامل استفاده می‌شود.

با این قابلیت می‌توان:

  • Wireframe ایجاد کرد.
  • چند طرح صفحه مقایسه کرد.
  • Layout را تغییر داد.
  • مسیر کاربر را بررسی کرد.
  • Mockup ساخت.
  • قبل از تولید Backend، ظاهر محصول را تأیید کرد.

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

برای مثال:

قبل از ساخت کد، سه طرح متفاوت برای Dashboard ارائه بده.

طرح اول:
سایدبار ثابت و کارت‌های آماری

طرح دوم:
Navigation بالای صفحه و جدول مرکزی

طرح سوم:
رابط مینیمال با تمرکز بر فهرست جلسات

تمام طرح‌ها:
- فارسی
- راست‌چین
- Responsive
- مناسب صفحه ۳۷۵ پیکسلی

Replit Database چیست؟

Replit Database یک پایگاه داده PostgreSQL مدیریت‌شده است که به برنامه‌های Replit متصل می‌شود.

Agent می‌تواند:

  • Database را فعال کند.
  • Schema بسازد.
  • جدول ایجاد کند.
  • Query بنویسد.
  • Migration اجرا کند.
  • کد Backend را به Database متصل کند.
  • داده‌ها را در Editor نمایش دهد.

براساس مستندات Replit Database، اتصال Database از طریق متغیر محیطی DATABASE_URL در اختیار برنامه قرار می‌گیرد.

نمونه استفاده در Python:

import os

database_url = os.environ["DATABASE_URL"]

رشته اتصال Database نباید مستقیماً داخل کد نوشته شود.

Replit Auth چیست؟

Replit Auth سرویس احراز هویت داخلی برای اضافه‌کردن ورود کاربران به اپلیکیشن است.

Agent می‌تواند از Replit Auth برای ساخت جریان‌هایی مانند موارد زیر استفاده کند:

  • ورود
  • خروج
  • Session
  • دریافت مشخصات کاربر
  • محافظت از Route
  • اتصال داده به کاربر

استفاده از Authentication به‌تنهایی مجوز داده را حل نمی‌کند. Backend و Database باید بررسی کنند هر کاربر اجازه مشاهده یا تغییر چه داده‌هایی را دارد.

App Storage چیست؟

App Storage برای ذخیره فایل‌های بزرگ و داده‌های غیرساختاریافته استفاده می‌شود:

  • تصویر
  • ویدئو
  • فایل صوتی
  • PDF
  • سند
  • فایل ضمیمه
  • تصویر پروفایل

طبق مستندات App Storage، این سرویس بر Google Cloud Storage متکی است و می‌تواند داده را میان محیط توسعه و برنامه منتشرشده نگهداری کند.

فایل‌هایی که فقط در File System خود برنامه نوشته می‌شوند ممکن است پس از انتشار مجدد یا جابه‌جایی Instance باقی نمانند. برای داده دائمی باید از Database یا App Storage استفاده شود.

Secrets در Replit چیست؟

Secrets ابزاری برای نگهداری API Key، Token، رمز و رشته اتصال است.

براساس مستندات Secrets، مقادیر به‌صورت رمزگذاری‌شده ذخیره و در زمان اجرا به شکل Environment Variable در اختیار برنامه قرار می‌گیرند.

برای مثال:

DARVAREH_API_KEY=YOUR_API_KEY
DARVAREH_MODEL_ID=YOUR_MODEL_ID
DARVAREH_BASE_URL=https://api.darvareh.ir/v1

در Python:

import os

api_key = os.environ["DARVAREH_API_KEY"]
model_id = os.environ["DARVAREH_MODEL_ID"]

base_url = os.getenv(
    "DARVAREH_BASE_URL",
    "https://api.darvareh.ir/v1"
)

Secret نباید در این محل‌ها قرار بگیرد:

  • فایل Python یا JavaScript
  • Repository
  • Frontend
  • Local Storage
  • فایل قابل‌دانلود
  • پیام خطای کاربر
  • Log عمومی
  • Screenshot
  • مستندات پروژه

اعضای تیمی که امکان اجرای کد دارند ممکن است بتوانند Environment Variable را از طریق برنامه چاپ کنند. بنابراین دسترسی همکاری باید فقط به افراد مورداعتماد داده شود.

Checkpoint چیست؟

Checkpoint یک Snapshot از وضعیت پروژه در یک مرحله منطقی است.

Agent می‌تواند بعد از تکمیل Feature، اجرای تست یا پیش از اصلاح مهم، Checkpoint ایجاد کند.

هر Checkpoint ممکن است شامل موارد زیر باشد:

  • فایل‌های پروژه
  • توضیح تغییر
  • Commit
  • Context مربوط به Agent
  • وضعیت مرتبط با Database در قابلیت‌های پشتیبانی‌شده
  • اطلاعات هزینه Agent

طبق راهنمای Checkpoints and Rollbacks، Checkpointها در نقاط مهم توسعه ایجاد می‌شوند و امکان Rollback به وضعیت قبلی را فراهم می‌کنند.

تفاوت Checkpoint و Git Commit

قابلیتCheckpointGit Commit
ایجادخودکار توسط Agentمعمولاً توسط توسعه‌دهنده
سطح تغییرFeature یا مرحله Agentقابل‌انتخاب
توضیحتولیدشده توسط AIنوشته‌شده توسط کاربر
Rollbackیک‌کلیکینیازمند Git
Context Agentممکن است حفظ شودندارد
اتصال GitHubاز طریق Gitمستقیم
کنترل دقیق Branchمحدودترکامل

Checkpoint یک Safety Net مفید است، اما Git همچنان برای Branch، Pull Request، Review و همکاری حرفه‌ای ضروری است.

اتصال Replit به GitHub

Replit ابزارهای Git و GitHub را در Project Editor ارائه می‌دهد.

با اتصال GitHub می‌توان:

  • Repository ایجاد کرد.
  • پروژه موجود را Import کرد.
  • Branch ساخت.
  • Diff مشاهده کرد.
  • Commit ایجاد کرد.
  • تغییرات را Push و Pull کرد.
  • Pull Request ساخت.
  • پروژه را خارج از Replit توسعه داد.

راهنمای Version Control در Replit توضیح می‌دهد که Checkpointهای Agent نیز بر پایه Git ثبت می‌شوند.

قبل از Push مطمئن شوید:

  • Secret در کد نیست.
  • فایل .env ثبت نشده است.
  • فایل‌های Build غیرضروری حذف شده‌اند.
  • Database dump حساس وجود ندارد.
  • Log حاوی Token نیست.
  • فایل کاربران وارد Repository نشده است.

Connectors در Replit

Connectorها به Agent اجازه می‌دهند در زمان ساخت پروژه به سرویس‌های خارجی متصل شود.

نمونه سرویس‌ها:

  • GitHub
  • Notion
  • Slack
  • Linear
  • Google
  • Outlook
  • Dropbox
  • Salesforce
  • BigQuery

Connector ممکن است برای دریافت Context پروژه یا اجرای Action استفاده شود. اتصال Agent به یک سرویس با Integration موردنیاز اپلیکیشن منتشرشده یکسان نیست.

برای مثال، دسترسی Agent به Notion برای خواندن PRD به معنی دسترسی کاربران اپلیکیشن نهایی به Notion نیست.

آموزش ساخت اپلیکیشن فارسی با Replit Agent و API درواره

در این آموزش یک دستیار فارسی برای پاسخ‌گویی به پیام مشتری می‌سازیم.

کاربر متن پیام را وارد و موارد زیر را انتخاب می‌کند:

  • نوع پاسخ
  • لحن
  • طول
  • نام کسب‌وکار

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

در نسخه اولیه:

  • ثبت‌نام نداریم.
  • Database نداریم.
  • متن فقط در حافظه Browser نگهداری می‌شود.
  • API Key فقط در Backend قرار می‌گیرد.
  • Frontend مستقیماً به درواره متصل نمی‌شود.

معماری پروژه

پروژه شامل دو بخش است:

Frontend

  • React
  • TypeScript
  • رابط فارسی
  • فرم دریافت پیام
  • نمایش پاسخ
  • Loading و Error State

Backend

  • Python
  • FastAPI
  • اعتبارسنجی با Pydantic
  • اتصال به API درواره
  • Timeout
  • مدیریت خطا

مرحله اول: ساخت Plan

در Replit Agent، حالت Plan را فعال و این Prompt را ارسال کنید:

یک اپلیکیشن وب فارسی برای تولید پاسخ پیشنهادی به پیام مشتری طراحی کن.

کاربر باید بتواند این اطلاعات را وارد کند:
- متن پیام مشتری
- نوع پاسخ: پشتیبانی، فروش یا پیگیری
- لحن: رسمی، دوستانه یا کوتاه
- نام کسب‌وکار
- توضیح تکمیلی اختیاری

خروجی:
- پاسخ پیشنهادی فارسی
- دکمه کپی
- دکمه تولید مجدد
- زمان تولید
- پنج پاسخ اخیر در Local Storage

Stack:
- Frontend با React و TypeScript
- Backend با Python و FastAPI
- ارتباط با یک API سازگار با OpenAI
- API Key فقط در Secrets و Backend

طراحی:
- کاملاً فارسی و RTL
- Responsive
- پس‌زمینه روشن
- مناسب دسکتاپ و موبایل
- فرم سمت راست و نتیجه سمت چپ
- در موبایل بخش‌ها زیر هم باشند

در این مرحله هیچ کدی ننویس.
ابتدا معماری، Componentها، API Route، Validation، فایل‌ها و مراحل اجرا را ارائه بده.

مرحله دوم: ساخت نسخه اولیه با Mock Data

پس از تأیید Plan، وارد Build Mode شوید:

فقط نسخه اولیه Frontend و Backend را بساز.

در این مرحله:
- از Mock Response استفاده کن.
- هنوز API خارجی را فراخوانی نکن.
- Database ایجاد نکن.
- Authentication اضافه نکن.

معیار پذیرش:
- Frontend اجرا شود.
- فرم اعتبارسنجی شود.
- پاسخ Mock نمایش داده شود.
- رابط در عرض ۳۷۵ پیکسل درست باشد.
- Backend یک Health Check داشته باشد.
- Build و Type Check بدون خطا باشند.

این روش اجازه می‌دهد رابط و جریان اصلی پیش از مصرف API آزمایش شوند.

مرحله سوم: نصب Packageها

Backend به Packageهای زیر نیاز دارد:

fastapi
uvicorn
openai
pydantic

Agent می‌تواند فایل Dependency را ایجاد کند. در صورت استفاده از requirements.txt:

fastapi
uvicorn
openai
pydantic

برای Production بهتر است نسخه Packageها پس از تست Pin شوند تا Buildهای آینده قابل‌پیش‌بینی‌تر باشند.

مرحله چهارم: تعریف Secrets

در ابزار Secrets سه مقدار ایجاد کنید:

DARVAREH_API_KEY=YOUR_API_KEY
DARVAREH_MODEL_ID=YOUR_MODEL_ID
DARVAREH_BASE_URL=https://api.darvareh.ir/v1

مقدار DARVAREH_MODEL_ID باید دقیقاً مطابق شناسه مدل فعال در درواره باشد.

به Agent بگویید:

اکنون اتصال واقعی به API را اضافه کن.

تنظیمات فقط از Environment Variable خوانده شوند:
- DARVAREH_API_KEY
- DARVAREH_MODEL_ID
- DARVAREH_BASE_URL

قواعد:
- API Key وارد Frontend نشود.
- مقدار Secret در Log ثبت نشود.
- اگر Secret موجود نبود، برنامه با پیام تنظیمات ناقص اجرا نشود.
- Base URL پیش‌فرض https://api.darvareh.ir/v1 باشد.

مرحله پنجم: ساخت مدل‌های ورودی و خروجی

نمونه مدل Pydantic:

from enum import Enum

from pydantic import BaseModel, Field


class ReplyType(str, Enum):
    SUPPORT = "support"
    SALES = "sales"
    FOLLOW_UP = "follow_up"


class Tone(str, Enum):
    FORMAL = "formal"
    FRIENDLY = "friendly"
    SHORT = "short"


class ReplyRequest(BaseModel):
    message: str = Field(
        min_length=10,
        max_length=10000
    )
    reply_type: ReplyType
    tone: Tone
    business_name: str = Field(
        min_length=1,
        max_length=200
    )
    details: str = Field(
        default="",
        max_length=2000
    )


class ReplyResponse(BaseModel):
    reply: str

استفاده از Enum مانع ارسال مقدارهای دلخواه برای reply_type و tone می‌شود.

مرحله ششم: اتصال FastAPI به API درواره

نمونه Backend:

import os

from fastapi import FastAPI, HTTPException
from openai import AsyncOpenAI

from models import ReplyRequest, ReplyResponse


api_key = os.getenv("DARVAREH_API_KEY")
model_id = os.getenv("DARVAREH_MODEL_ID")
base_url = os.getenv(
    "DARVAREH_BASE_URL",
    "https://api.darvareh.ir/v1"
)

if not api_key:
    raise RuntimeError(
        "DARVAREH_API_KEY is not configured"
    )

if not model_id:
    raise RuntimeError(
        "DARVAREH_MODEL_ID is not configured"
    )

client = AsyncOpenAI(
    api_key=api_key,
    base_url=base_url,
    timeout=30.0,
    max_retries=2
)

app = FastAPI()


@app.get("/api/health")
async def health():
    return {"status": "ok"}


@app.post(
    "/api/generate-reply",
    response_model=ReplyResponse
)
async def generate_reply(
    request: ReplyRequest
):
    prompt = build_prompt(request)

    try:
        completion = (
            await client.chat.completions.create(
                model=model_id,
                messages=[
                    {
                        "role": "system",
                        "content": (
                            "شما یک کارشناس حرفه‌ای "
                            "پاسخ‌گویی به مشتری هستید. "
                            "فقط براساس پیام و اطلاعات "
                            "ارائه‌شده پاسخ دهید."
                        ),
                    },
                    {
                        "role": "user",
                        "content": prompt,
                    },
                ],
            )
        )

        reply = (
            completion
            .choices[0]
            .message
            .content
        )

        if not reply or not reply.strip():
            raise HTTPException(
                status_code=502,
                detail="پاسخ معتبری دریافت نشد."
            )

        return ReplyResponse(
            reply=reply.strip()
        )

    except HTTPException:
        raise

    except Exception as error:
        print(
            "AI request failed:",
            type(error).__name__
        )

        raise HTTPException(
            status_code=502,
            detail=(
                "در حال حاضر امکان تولید "
                "پاسخ وجود ندارد."
            ),
        )

Base URL درواره در این کد به شکل زیر است:

https://api.darvareh.ir/v1

SDK مسیر /chat/completions را به Base URL اضافه می‌کند.

مرحله هفتم: ساخت Prompt

def build_prompt(
    request: ReplyRequest
) -> str:
    reply_types = {
        ReplyType.SUPPORT:
            "پاسخ پشتیبانی و حل مسئله",
        ReplyType.SALES:
            "پاسخ فروش و معرفی راهکار",
        ReplyType.FOLLOW_UP:
            "پیگیری محترمانه",
    }

    tones = {
        Tone.FORMAL:
            "رسمی و حرفه‌ای",
        Tone.FRIENDLY:
            "دوستانه و محترمانه",
        Tone.SHORT:
            "کوتاه و مستقیم",
    }

    return f"""
برای پیام مشتری یک پاسخ پیشنهادی بنویس.

نوع پاسخ:
{reply_types[request.reply_type]}

لحن:
{tones[request.tone]}

نام کسب‌وکار:
{request.business_name}

توضیحات تکمیلی:
{request.details or "ندارد"}

قواعد:
- پاسخ فقط به زبان فارسی باشد.
- اطلاعات جدید اختراع نکن.
- قول بازپرداخت، تخفیف یا جبران نده؛
  مگر در توضیحات صریحاً ذکر شده باشد.
- اطلاعات محرمانه درخواست نکن.
- درباره فرایند تولید پاسخ توضیح نده.
- فقط متن آماده ارسال را برگردان.

پیام مشتری:
{request.message}
"""

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

مرحله هشتم: اتصال Frontend

Frontend درخواست را فقط به Backend برنامه ارسال می‌کند:

type GenerateReplyInput = {
  message: string;
  reply_type:
    | "support"
    | "sales"
    | "follow_up";
  tone:
    | "formal"
    | "friendly"
    | "short";
  business_name: string;
  details: string;
};

export async function generateReply(
  input: GenerateReplyInput
) {
  const response = await fetch(
    "/api/generate-reply",
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
      },
      body: JSON.stringify(input),
    }
  );

  const data = await response.json();

  if (!response.ok) {
    throw new Error(
      data.detail ||
        "خطایی در پردازش درخواست رخ داد."
    );
  }

  return data.reply as string;
}

API Key در این کد وجود ندارد و در Network Browser نیز نباید دیده شود.

مرحله نهم: تست برنامه

از Agent بخواهید سناریوهای زیر را اجرا کند:

جریان generate-reply را کامل آزمایش کن.

سناریوها:
1. پیام پشتیبانی معتبر
2. درخواست فروش
3. پیام پیگیری
4. متن خالی
5. متن کمتر از ۱۰ کاراکتر
6. متن بیشتر از ۱۰۰۰۰ کاراکتر
7. نوع پاسخ نامعتبر
8. لحن نامعتبر
9. DARVAREH_API_KEY تعریف‌نشده
10. Model ID نامعتبر
11. Timeout
12. پاسخ خالی مدل
13. چند کلیک هم‌زمان روی دکمه
14. نمایش پاسخ فارسی طولانی
15. رابط موبایل در عرض ۳۷۵ پیکسل

بررسی کن:
- Secret در Frontend وجود نداشته باشد.
- API Key در Log چاپ نشود.
- دکمه هنگام Loading غیرفعال شود.
- پیام خطا فارسی باشد.
- پاسخ قابل کپی باشد.
- بخش‌های خارج از این جریان تغییر نکنند.

مرحله دهم: اضافه‌کردن Authentication و Database

پس از تأیید نسخه اولیه می‌توان حساب کاربری و تاریخچه دائمی اضافه کرد.

جدول پیشنهادی generated_replies:

  • id
  • user_id
  • message_preview
  • reply_type
  • tone
  • reply
  • created_at

Prompt پیشنهادی:

Replit Auth و تاریخچه پاسخ‌ها را اضافه کن.

قواعد:
- فقط کاربر واردشده بتواند پاسخ تولید کند.
- هر کاربر فقط تاریخچه خودش را مشاهده کند.
- فقط ۳۰ پاسخ اخیر نمایش داده شود.
- کاربر بتواند رکورد خودش را حذف کند.
- متن کامل پیام مشتری در Log ثبت نشود.
- قبل از اجرای Migration، Schema و Queryهای پیشنهادی را نمایش بده.
- بدون تأیید من داده‌ای حذف یا Migration مخرب اجرا نکن.

مرحله یازدهم: محدودکردن مصرف API

برای اپلیکیشن عمومی باید محدودیت مصرف وجود داشته باشد.

راهکارها:

  • الزام ورود
  • محدودیت روزانه
  • Rate Limit
  • محدودیت طول پیام
  • جلوگیری از درخواست هم‌زمان
  • ثبت مصرف
  • سهمیه براساس طرح
  • Timeout
  • لغو درخواست قطع‌شده
  • کنترل موجودی یا بودجه
  • ثبت خطا بدون ذخیره داده حساس

Prompt پیشنهادی:

محدودیت مصرف برای API اضافه کن.

نسخه رایگان:
- هر کاربر روزانه حداکثر ۱۰ درخواست
- محدودیت در Backend بررسی شود
- فقط درخواست موفق سهمیه را مصرف کند
- خطای موقت Provider سهمیه را مصرف نکند
- اجرای هم‌زمان باعث عبور از سقف نشود
- زمان بازنشانی سهمیه به کاربر نمایش داده شود
- مصرف هر کاربر قابل گزارش‌گیری باشد

مرحله دوازدهم: ایجاد Checkpoint و اتصال GitHub

پس از تکمیل جریان اصلی:

  1. تست‌ها را اجرا کنید.
  2. Build را بررسی کنید.
  3. Secretها را کنترل کنید.
  4. Checkpoint سالم ایجاد کنید.
  5. Git Diff را بررسی کنید.
  6. پروژه را به GitHub متصل کنید.
  7. نسخه اولیه را Commit کنید.
  8. برای قابلیت‌های بعدی Branch بسازید.

وجود Checkpoint نباید باعث شود Diff را بررسی نکنید.

مرحله سیزدهم: انتخاب نوع Deployment

Replit چند نوع Deployment ارائه می‌دهد.

Autoscale Deployment

برای Web App و APIهایی مناسب است که ترافیک متغیر دارند. منابع براساس درخواست افزایش یا کاهش پیدا می‌کنند.

مناسب برای:

  • SaaS
  • Web App
  • REST API
  • Dashboard
  • اپلیکیشن AI
  • پروژه با ترافیک متغیر

Reserved VM Deployment

یک ماشین همیشه‌فعال با منابع مشخص ارائه می‌دهد.

مناسب برای:

  • Worker دائمی
  • Bot
  • سرویس دارای پردازش مستمر
  • برنامه نیازمند اتصال طولانی
  • کار Background دائمی

Static Deployment

برای HTML، CSS و JavaScript استاتیک مناسب است.

اما براساس مستندات فعلی، برنامه‌های Full-Stack ساخته‌شده با Agent معمولاً به Backend نیاز دارند و باید از Autoscale یا Reserved VM استفاده کنند.

Scheduled Deployment

برای اجرای Job در زمان‌بندی مشخص مناسب است:

  • گزارش روزانه
  • پردازش دوره‌ای
  • پاک‌سازی داده
  • همگام‌سازی
  • Cron Job

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

مرحله چهاردهم: انتشار اپلیکیشن

پیش از Publish بررسی کنید:

  • Run Command درست است.
  • برنامه روی Port صحیح اجرا می‌شود.
  • Health Check سریع پاسخ می‌دهد.
  • Secrets با Deployment همگام شده‌اند.
  • Database محیط Production آماده است.
  • Migration اجرا شده است.
  • Build بدون خطا است.
  • Logها داده حساس ندارند.
  • Rate Limit فعال است.
  • Backend از Static Deployment استفاده نمی‌کند.

بعد از انتشار، برنامه روی آدرسی مشابه زیر قرار می‌گیرد:

https://your-app.replit.app

اتصال دامنه اختصاصی

Replit امکان اتصال دامنه اختصاصی به Deploymentهای پشتیبانی‌شده را فراهم می‌کند.

براساس مستندات Custom Domains، دامنه اختصاصی با Autoscale، Reserved VM و Static Deployment قابل‌استفاده است و TLS/SSL توسط Replit ارائه می‌شود.

پس از انتشار:

  1. بخش Publishing را باز کنید.
  2. وارد تب Domains شوید.
  3. گزینه اتصال دامنه را انتخاب کنید.
  4. رکوردهای DNS ارائه‌شده را کپی کنید.
  5. آن‌ها را در DNS Provider ثبت کنید.
  6. وضعیت تأیید و SSL را بررسی کنید.

اگر DNS در آروان‌کلاد مدیریت می‌شود، رکوردها را در پنل DNS آروان‌کلاد وارد کنید. نیازی به انتقال کامل مدیریت DNS نیست، مگر مستندات نوع اتصال موردنظر صریحاً چنین الزامی داشته باشند.

مانیتورینگ برنامه منتشرشده

پس از انتشار باید موارد زیر پایش شوند:

  • CPU
  • RAM
  • تعداد درخواست
  • Response Time
  • Error Rate
  • Deployment Log
  • هزینه منابع
  • مصرف Database
  • مصرف Storage
  • مصرف API درواره
  • خطاهای 401، 429 و 5xx
  • تعداد کاربران فعال

Agent می‌تواند به Logهای Production دسترسی پیدا کند و برای تحلیل خطا کمک کند، اما نباید اجازه اصلاح خودکار و انتشار بدون Review برای تغییرات حساس داده شود.

چگونه Prompt بهتری برای Replit Agent بنویسیم؟

یک Prompt حرفه‌ای باید اجزای زیر را مشخص کند:

هدف

نرم‌افزار چه مسئله‌ای را حل می‌کند؟

کاربران

چه کسانی از آن استفاده می‌کنند؟

نقش‌ها

هر کاربر چه مجوزی دارد؟

Artifactها

Web App، Mobile App یا Dashboard نیاز است؟

Stack

Python، Node.js، React، PostgreSQL یا فناوری دیگری استفاده شود؟

جریان‌های اصلی

مراحل انجام کار توسط کاربر چیست؟

مدل داده

چه Entityها و Relationهایی وجود دارند؟

APIهای خارجی

روش احراز هویت و Backend Integration چیست؟

محدودیت‌ها

چه بخش‌هایی نباید تغییر کنند؟

معیار پذیرش

چه زمانی وظیفه کامل محسوب می‌شود؟

تست‌ها

چه حالت‌های موفق و ناموفق باید آزمایش شوند؟

قالب Prompt کامل برای Replit Agent

نام پروژه:
...

هدف:
...

کاربران:
...

نقش‌ها:
...

Artifactهای موردنیاز:
...

صفحات:
...

جریان‌های اصلی:
...

Stack:
...

مدل داده:
...

APIهای خارجی:
...

Secrets:
...

نیازهای فارسی و RTL:
...

محدوده این مرحله:
...

مواردی که نباید تغییر کنند:
...

معیارهای پذیرش:
...

تست‌های لازم:
...

ابتدا در Plan Mode معماری را پیشنهاد بده.
در این مرحله هیچ کد یا داده‌ای را تغییر نده.

اشتباه‌های رایج هنگام استفاده از Replit Agent

شروع پروژه پیچیده بدون Plan

ابتدا معماری، Database و مراحل اجرا را مشخص کنید.

ساخت تمام محصول در یک درخواست

قابلیت‌ها را مرحله‌ای اضافه کنید:

  1. رابط
  2. جریان اصلی
  3. Backend
  4. Database
  5. Authentication
  6. API
  7. Admin
  8. Billing
  9. Test
  10. Deployment

دادن اجازه تغییر بدون محدوده

عبارت «همه مشکلات را درست کن» می‌تواند باعث تغییر بخش‌های سالم شود.

قراردادن API Key داخل کد

از Secrets استفاده کنید و Environment Variable را فقط در Backend بخوانید.

استفاده از File System برای داده دائمی

File System محیط منتشرشده محل مطمئنی برای ذخیره دائمی فایل کاربران نیست. Database یا App Storage استفاده کنید.

انتخاب Static Deployment برای Backend

برنامه Full-Stack به Autoscale یا Reserved VM نیاز دارد.

اجرای Migration بدون Backup

پیش از Migration مهم، Backup و Plan بازگشت داشته باشید.

اعتماد کامل به Rollback

Rollback مفید است، اما GitHub و Backup مستقل همچنان ضروری‌اند.

نادیده‌گرفتن هزینه Cloud و Agent

هزینه Agent، Database، Storage، Deployment و API مدل باید جداگانه پایش شوند.

ثبت محتوای حساس در Log

پیام کامل مشتری، API Key، Token و اطلاعات شناسایی نباید بی‌دلیل وارد Log شوند.

مقایسه Replit Agent و Lovable

ویژگیReplit AgentLovable
رویکرد اصلیCloud IDE همراه Agentساخت Web App با Prompt
زبان‌هامتنوعتمرکز بیشتر روی Web Stack
Pythonمناسبمحدودتر و وابسته به معماری
BackendداردLovable Cloud یا Supabase
DatabasePostgreSQL مدیریت‌شدهLovable Cloud یا Supabase
Mobile AppFull-Stack Mobileتمرکز بیشتر بر Web
Shellداردکنترل محدودتر
Deploymentچند نوعHosting داخلی و خارجی
مناسب برایتوسعه‌دهنده و محصول متنوعMVP، SaaS و Web App

مقایسه Replit Agent و Bolt.new

ویژگیReplit AgentBolt.new
محیطCloud IDEمحیط مبتنی بر WebContainers
زبان‌هاPython، JavaScript و زبان‌های دیگرتمرکز بر JavaScript و TypeScript
BackendReplit CloudBolt Cloud
DatabasePostgreSQLBolt Database یا Supabase
Mobileپشتیبانی Full-StackExpo
Shellمحیط Cloudداخل WebContainer
DeploymentAutoscale و Reserved VMBolt Hosting
مناسب برایپروژه‌های متنوع و Backendساخت سریع Web و Mobile App

مقایسه Replit Agent و Cursor

Cursor یک محیط کدنویسی محلی مبتنی بر هوش مصنوعی است. Replit یک محیط توسعه ابری با Agent، Database و Deployment یکپارچه ارائه می‌دهد.

Cursor برای این شرایط مناسب است:

  • Codebase محلی دارید.
  • زیرساخت انتشار جداگانه دارید.
  • کنترل مستقیم فایل‌ها مهم است.
  • از Toolchain محلی استفاده می‌کنید.

Replit برای این شرایط مناسب است:

  • نصب محلی نمی‌خواهید.
  • ساخت و انتشار یکپارچه لازم دارید.
  • نیاز به Database و Storage سریع دارید.
  • همکاری مرورگری می‌خواهید.
  • در حال ساخت Prototype یا محصول جدید هستید.

مقایسه Replit Agent و ChatGPT

ChatGPT می‌تواند کد تولید، خطا را تحلیل و معماری پیشنهاد کند. Replit Agent مستقیماً داخل محیط اجرا فعالیت می‌کند و قادر است فایل‌ها را تغییر دهد، فرمان اجرا کند و برنامه را منتشر کند.

ChatGPT یک دستیار عمومی‌تر است. Replit Agent ابزار تخصصی‌تر توسعه و اجرای نرم‌افزار محسوب می‌شود.

آیا Replit Agent جایگزین برنامه‌نویس می‌شود؟

Replit Agent می‌تواند بخش زیادی از کارهای تکراری را انجام دهد، اما پروژه واقعی همچنان به تصمیم انسانی نیاز دارد:

  • تعریف مسئله
  • انتخاب معماری
  • طراحی مدل داده
  • کنترل دسترسی
  • بررسی تجربه کاربری
  • ارزیابی هزینه
  • بازبینی کد
  • تست Production
  • تحلیل خطا
  • مدیریت داده کاربران
  • تصمیم انتشار

توانایی Agent در اجرای خودکار، اهمیت کنترل دسترسی و Review را بیشتر می‌کند.

آیا Replit برای پروژه Production مناسب است؟

Replit می‌تواند برنامه واقعی را اجرا و منتشر کند، اما Production-ready بودن به کیفیت پیاده‌سازی بستگی دارد.

پیش از انتشار باید این موارد بررسی شوند:

  • Version Control
  • Backup
  • تست
  • Authentication
  • Authorization
  • Secret Management
  • Rate Limiting
  • Database Migration
  • Storage
  • Monitoring
  • Logging
  • Error Handling
  • Domain
  • هزینه
  • مسیر مهاجرت
  • سیاست حریم خصوصی

چک‌لیست Production برای Replit و API درواره

  • پروژه در Git و GitHub نگهداری می‌شود.
  • Checkpoint سالم وجود دارد.
  • API Key فقط در Secrets قرار دارد.
  • Secret در Repository نیست.
  • Frontend به API Key دسترسی ندارد.
  • Base URL از Environment خوانده می‌شود.
  • Model ID قابل‌تنظیم است.
  • ورودی Backend اعتبارسنجی می‌شود.
  • طول Prompt محدود شده است.
  • Timeout تعریف شده است.
  • Retry محدود است.
  • Rate Limit فعال است.
  • سهمیه کاربر در Backend کنترل می‌شود.
  • Authentication فعال است.
  • دسترسی داده در Backend بررسی می‌شود.
  • Migrationها بازبینی شده‌اند.
  • Backup Database وجود دارد.
  • فایل‌ها در App Storage نگهداری می‌شوند.
  • داده دائمی در File System ذخیره نمی‌شود.
  • پیام حساس در Log ثبت نمی‌شود.
  • Build و تست موفق هستند.
  • نوع Deployment درست انتخاب شده است.
  • Health Check سریع پاسخ می‌دهد.
  • Domain و HTTPS آزمایش شده‌اند.
  • مصرف Cloud و API مانیتور می‌شود.
  • Privacy Policy و Terms آماده هستند.

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

Replit Agent چیست؟

Replit Agent یک عامل هوش مصنوعی برای برنامه‌ریزی، طراحی، کدنویسی، آزمایش و انتشار نرم‌افزار در محیط ابری Replit است.

Replit Agent 4 چیست؟

Agent 4 نسخه معرفی‌شده در سال ۲۰۲۶ است که از Plan Mode، Design Canvas، اجرای موازی وظایف و چند Artifact در یک Project پشتیبانی می‌کند.

آیا Replit رایگان است؟

Replit طرح Starter دارد که امکانات رایگان محدودی برای Agent، Cloud و یک برنامه منتشرشده ارائه می‌کند. محدودیت‌ها و قیمت‌ها ممکن است تغییر کنند و باید در صفحه رسمی بررسی شوند.

آیا برای استفاده از Replit Agent باید برنامه‌نویسی بلد باشیم؟

برای ساخت Prototype ساده الزامی نیست، اما شناخت کد، Database، API و Deployment برای بررسی و نگهداری محصول واقعی ضروری است.

آیا Replit از Python پشتیبانی می‌کند؟

بله. می‌توان پروژه‌های Python با Frameworkهایی مانند FastAPI، Flask یا Django ایجاد و منتشر کرد.

آیا Replit اپلیکیشن موبایل می‌سازد؟

Agent 4 می‌تواند Mobile App و Backend مرتبط را در یک Project ایجاد کند. Build و انتشار در فروشگاه‌های موبایل به مراحل تکمیلی نیاز دارند.

آیا می‌توان Replit را به API درواره متصل کرد؟

بله. Backend برنامه با Base URL زیر و API Key ذخیره‌شده در Secrets به درواره متصل می‌شود:

https://api.darvareh.ir/v1

آیا می‌توان API Key درواره را در Frontend قرار داد؟

خیر. API Key باید در Secrets ذخیره و فقط توسط Backend خوانده شود.

Replit Agent بهتر است یا Lovable؟

Replit برای پروژه‌های دارای Python، Backend مستقل و Runtimeهای متنوع مناسب‌تر است. Lovable برای ساخت سریع Web App و SaaS تجربه ساده‌تری ارائه می‌دهد.

Replit Agent بهتر است یا Bolt؟

Bolt روی ساخت سریع برنامه‌های JavaScript و TypeScript در مرورگر تمرکز دارد. Replit محیط Cloud IDE و زبان‌ها و Deploymentهای متنوع‌تری ارائه می‌دهد.

Plan Mode چه کاربردی دارد؟

Plan Mode برای بررسی ایده، معماری و فهرست وظایف بدون تغییر کد یا داده استفاده می‌شود.

Checkpoint چیست؟

Checkpoint یک Snapshot خودکار از وضعیت پروژه در یک مرحله منطقی است که امکان بازگشت به نسخه قبلی را فراهم می‌کند.

آیا Checkpoint جای GitHub را می‌گیرد؟

خیر. Checkpoint برای بازگشت سریع مناسب است، اما GitHub برای Branch، Review، همکاری، CI/CD و نگهداری مستقل کد ضروری است.

کدام Deployment برای برنامه Agent مناسب است؟

برنامه Full-Stack معمولاً از Autoscale یا Reserved VM استفاده می‌کند. Static Deployment برای برنامه نیازمند Backend مناسب نیست.

آیا می‌توان دامنه اختصاصی به Replit وصل کرد؟

بله. Custom Domain برای Deploymentهای پشتیبانی‌شده قابل اتصال است و Replit گواهی TLS/SSL را فراهم می‌کند.

جمع‌بندی

Replit Agent یکی از کامل‌ترین محیط‌های ساخت نرم‌افزار با هوش مصنوعی است؛ زیرا Agent، Code Editor، Shell، Database، Storage، Version Control و Deployment را در یک Workspace قرار می‌دهد.

Agent 4 قابلیت‌های مهمی مانند این موارد را ارائه می‌دهد:

  • Plan Mode
  • Design Canvas
  • Multi-Artifact
  • Web App
  • Mobile App
  • Data Dashboard
  • اجرای موازی وظایف
  • Database
  • App Storage
  • Secrets
  • Checkpoint
  • GitHub
  • Deployment

بهترین روش استفاده این است که ابتدا در Plan Mode معماری پروژه را مشخص کنید، قابلیت‌ها را مرحله‌ای بسازید و پس از هر مرحله Checkpoint و Git Commit داشته باشید.

برای اضافه‌کردن قابلیت‌های هوش مصنوعی به برنامه، Backend می‌تواند از OpenAI SDK یا درخواست HTTP استفاده و به API یکپارچه درواره متصل شود. کافی است API Key در Secrets ذخیره شود و Base URL روی مقدار زیر قرار گیرد:

https://api.darvareh.ir/v1

برای شروع، در درواره ثبت‌نام کنید، API Key بسازید، Model ID مناسب را انتخاب کنید و اپلیکیشن Replit خود را از طریق Backend به مدل‌های هوش مصنوعی متصل کنید.

مقالات مرتبط

منابع

این مقاله صرفاً با هدف آموزش و اطلاع‌رسانی تهیه شده است. پیش از استفاده عملی، مستندات رسمی سرویس‌ها و صفحه سلب مسئولیت را مطالعه کنید.

Read more

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

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

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

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

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

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