داشبورد توسعه‌دهنده
پرسش از هوش مصنوعی
پرسش از هوش مصنوعی

راهنمای شروع سریع ​

این راهنما به شما کمک می‌کند تا در عرض چند دقیقه با پلتفرم AvalAI شروع به کار کنید.

مسیر پیشنهادی برای اولین اجرا:

  1. یک کلید API بسازید و اعتبار قابل استفاده و دسترسی به مدل را بررسی کنید.
  2. متغیر AVALAI_API_KEY را تنظیم کنید، سپس یک کلاینت را پیکربندی کنید یا از cURL استفاده کنید.
  3. نخستین درخواست زیر را ارسال کنید. برای برنامه جدید با Responses شروع کنید؛ اگر برنامه شما از Chat Completions استفاده می‌کند، همان را نگه دارید.
  4. پاسخ را بررسی کنید، سپس برای مشاهده فعالیت و هزینه به نمای کلی مصرف بروید.

۱. ساخت و محافظت از کلید API ​

  1. کلیدهای API را باز کنید و در صورت نیاز وارد شوید یا حساب بسازید.
  2. یک کلید API جدید بسازید.
  3. کلید را در محل امن نگه دارید؛ فقط یک بار نمایش داده می‌شود.

بررسی اعتبار API و دسترسی به مدل ​

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

شرایط دسترسی به مدل انتخابی را در مدل‌ها و سطوح حساب و محدودیت‌های نرخ بررسی کنید. حتی با موجودی مثبت، ممکن است مدل به سطح حساب بالاتری نیاز داشته باشد. Chat Plus اشتراک جداگانه چت است؛ اعتبار API محسوب نمی‌شود و برای فراخوانی API لازم نیست.

تنظیم متغیر محیطی کلید API ​

پیش از اجرای مثال‌های SDK یا cURL، مقدار AVALAI_API_KEY را تنظیم کنید. برای برنامه مستقرشده از سامانه مدیریت اطلاعات محرمانه یا متغیرهای محیط استقرار استفاده کنید. کلید API را در کد منبع، تصویر صفحه، گزارش خطا یا JavaScript سمت مرورگر قرار ندهید.

bash
# macOS / Linux
export AVALAI_API_KEY="sk-..."
powershell
# Windows PowerShell
setx AVALAI_API_KEY "sk-..."

در macOS/Linux، مثال‌ها را در همان پایانه‌ای اجرا کنید که دستور export را در آن وارد کرده‌اید؛ این مقدار برای پایانه جدید ذخیره نمی‌شود. در Windows، دستور setx مقدار را برای فرایندهای بعدی ذخیره می‌کند؛ بنابراین پیش از اجرای مثال‌ها یک پنجره PowerShell جدید باز کنید.

۲. نصب و پیکربندی کلاینت ​

نصب یک SDK سازگار با OpenAI ​

AvalAI از سه رویکرد SDK پشتیبانی می‌کند:

ادغام‌های جایگزین با SDK رسمی
SDK های سازگار با OpenAIرویکرد یکپارچه — دسترسی به تمام مدل‌ها از چندین ارائه‌دهنده با نحو یکسان.
SDK های رسمی Anthropicرویکرد بومی — استفاده از SDK های رسمی Anthropic برای دسترسی به مدل‌های Anthropic، OpenAI، AWS Bedrock، Vertex AI و Gemini با نحو بومی.
SDK Google GenAIرویکرد بومی — استفاده از SDK رسمی GenAI گوگل برای دسترسی بومی به مدل‌های Gemini با طرحواره API بومی گوگل.

پیش از انتخاب ادغام بومی هر ارائه‌دهنده، مستندات کتابخانه‌ها را بخوانید.

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

پایتون (Python) ​

bash
pip install openai

نود.جی‌اس (Node.js) ​

bash
npm install openai

گو (Go) ​

bash
go get github.com/openai/openai-go

پی‌اچ‌پی (PHP) ​

bash
composer require openai-php/client

استفاده از آدرس پایه AvalAI ​

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

1. دامنه اصلی - پیشنهادی ​

  • آدرس: api.avalai.ir
  • CDN: شبکه جهانی
  • بهترین برای: کاربرانی که به دنبال عملکرد بهینه با کمترین تاخیر هستند

نحوه استفاده ​

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

مثال Python ​

python
import os
from openai import OpenAI

# استفاده از دامنه اصلی
client = OpenAI(
    api_key=os.environ["AVALAI_API_KEY"],
    base_url="https://api.avalai.ir/v1",  # آدرس پایه
)

پیکربندی کلاینت ​

پایتون (Python) ​

python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["AVALAI_API_KEY"],
    base_url="https://api.avalai.ir/v1",  # آدرس پایه
)

جاوااسکریپت/تایپ‌اسکریپت (JavaScript/TypeScript) ​

javascript
import { OpenAI } from "openai";

const client = new OpenAI({
  apiKey: process.env.AVALAI_API_KEY,
  baseURL: "https://api.avalai.ir/v1", // نقطه پایانی API AvalAI
});

گو (Go) ​

go
package main

import (
	"os"

	openai "github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

func main() {
	client := openai.NewClient(
		option.WithAPIKey(os.Getenv("AVALAI_API_KEY")),
		option.WithBaseURL("https://api.avalai.ir/v1"),
	)
	_ = client
}

پی‌اچ‌پی (PHP) ​

php
<?php

require_once 'vendor/autoload.php';

// استفاده از کتابخانه کلاینت PHP OpenAI (https://github.com/openai-php/client)
$apiKey = getenv('AVALAI_API_KEY');

if (!$apiKey) {
    die("AvalAI API key not found. Please set the AVALAI_API_KEY environment variable.");
}

// Your custom base URL
$customBaseUrl = 'https://api.avalai.ir/v1';

// Create a custom client instance using the factory
$client = OpenAI::factory()
    ->withApiKey($apiKey)
    ->withBaseUri($customBaseUrl)
    ->make();

۳. انتخاب سبک API ​

برای برنامه‌های جدید تولید متن، وقتی مدل انتخابی از آن پشتیبانی می‌کند، از /v1/responses شروع کنید. Responses از input استفاده می‌کند، متن نهایی را در response.output_text می‌دهد و برای وضعیت مکالمه، استدلال و ابزارها مناسب‌تر است. /v1/chat/completions را برای برنامه‌های موجود، پوشش گسترده‌تر ارائه‌دهندگان و SDKها یا فریم‌ورک‌هایی که هنوز messages می‌خواهند نگه دارید.

۴. ارسال اولین درخواست ​

با یک درخواست ساده Responses شروع کنید:

Responses API (پیشنهادی برای برنامه‌های جدید) ​

bash
curl https://api.avalai.ir/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -d '{
    "model": "gpt-5.6-luna",
    "instructions": "You are a helpful assistant.",
    "input": "سلام، دنیا!"
  }'
python
response = client.responses.create(
    model="gpt-5.6-luna",
    instructions="You are a helpful assistant.",
    input="سلام، دنیا!",
)

print(response.output_text)
javascript
const response = await client.responses.create({
  model: "gpt-5.6-luna",
  instructions: "You are a helpful assistant.",
  input: "سلام، دنیا!",
});

console.log(response.output_text);
go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	payload := map[string]any{
		"model":        "gpt-5.6-luna",
		"instructions": "You are a helpful assistant.",
		"input":        "سلام، دنیا!",
	}

	body, _ := json.Marshal(payload)
	req, _ := http.NewRequest("POST", "https://api.avalai.ir/v1/responses", bytes.NewBuffer(body))
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AVALAI_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	responseBody, _ := io.ReadAll(resp.Body)
	fmt.Println(string(responseBody))
}
php
<?php
$apiKey = getenv('AVALAI_API_KEY');
$payload = [
    'model' => 'gpt-5.6-luna',
    'instructions' => 'You are a helpful assistant.',
    'input' => 'سلام، دنیا!',
];

$ch = curl_init('https://api.avalai.ir/v1/responses');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

هدرهای الزامی و محدودیت نرخ ​

هر درخواست احرازشده به Authorization: Bearer $AVALAI_API_KEY نیاز دارد. برای هر درخواست دارای بدنه JSON، هدر Content-Type: application/json را ارسال کنید. اگر API وضعیت HTTP 429 برگرداند، هدر Retry-After را رعایت کنید، از exponential backoff همراه jitter و سقف تعداد تلاش استفاده کنید و درخواست را بلافاصله تکرار نکنید. برای رفتار فعلی و راهنمای tierها، محدودیت نرخ را ببینید.

Chat Completions برای ادغام موجود

Chat Completions API (ادغام‌های موجود) ​

وقتی از قبل از messages استفاده می‌کنید یا مدل انتخابی فقط /v1/chat/completions را پشتیبانی می‌کند، این نسخه را نگه دارید.

پایتون (Python) ​

python
completion = client.chat.completions.create(
    model="gpt-5.6-luna",  # می‌توانید از هر مدل پشتیبانی شده استفاده کنید
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello, world!"},
    ],
)

print(completion.choices[0].message.content)

جاوااسکریپت/تایپ‌اسکریپت (JavaScript/TypeScript) ​

javascript
const completion = await client.chat.completions.create({
  model: "gpt-5.6-luna", // می‌توانید از هر مدل پشتیبانی شده استفاده کنید
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hello, world!" },
  ],
});

console.log(completion.choices[0].message.content);

گو (Go) ​

go
package main

import (
	"context"
	"fmt"
	"os"

	openai "github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

func main() {
	client := openai.NewClient(
		option.WithAPIKey(os.Getenv("AVALAI_API_KEY")),
		option.WithBaseURL("https://api.avalai.ir/v1"),
	)
	response, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
		Model: "gpt-5.6-luna",
		Messages: []openai.ChatCompletionMessageParamUnion{
			openai.SystemMessage("You are a helpful assistant."),
			openai.UserMessage("Hello, world!"),
		},
	})
	if err != nil {
		fmt.Println(err)
		return
	}
	if len(response.Choices) > 0 {
		fmt.Println(response.Choices[0].Message.Content)
	}
}

پی‌اچ‌پی (PHP) ​

php
try {
 // ایجاد درخواست تکمیل گفتگو
 $response = $client->chat()->create([
 'model' => 'gpt-5.6-luna', // می‌توانید از هر مدل پشتیبانی شده استفاده کنید
 'messages' => [
 ['role' => 'system', 'content' => 'You are a helpful assistant.'],
 ['role' => 'user', 'content' => 'Hello, world!']
 ]
 ]);

 // نمایش محتوای پاسخ
 echo $response->choices[0]->message->content;
} catch (\Exception $e) {
 echo "خطا: " . $e->getMessage() . "\n";
}

۵. کشف مدل‌ها و گسترش ادغام ​

فهرست عمومی مدل‌ها بدون احراز هویت در https://api.avalai.ir/public/models در دسترس است. وقتی برنامه به فهرست احرازشده نیاز دارد، از /v1/models همراه کلید API استفاده کنید.

پارامترهای مخصوص ارائه‌دهنده و گزینه‌های TypeScript

استفاده از پارامترهای مخصوص ارائه‌دهنده ​

هنگام کار با ارائه‌دهندگان غیر OpenAI از طریق AvalAI (مانند Stability AI، Anthropic و غیره)، ممکن است نیاز به استفاده از پارامترهایی داشته باشید که به طور مستقیم توسط کتابخانه کلاینت OpenAI پشتیبانی نمی‌شوند. AvalAI دو روش برای ارسال این پارامترها فراهم می‌کند.

استفاده از extra_body ​

پارامتر extra_body به شما امکان می‌دهد هر پارامتر اضافی مورد نیاز توسط ارائه دهنده خاص را ارسال کنید:

پایتون (Python) ​

python
# مثال استفاده از پارامترهای مخصوص ارائه دهنده
response = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello, world!"},
    ],
    extra_body={"provider_param1": "value1", "provider_param2": "value2"},
)

جاوااسکریپت/تایپ‌اسکریپت (JavaScript/TypeScript) ​

استفاده مستقیم از پارامترهای مستندنشده ​

برای کاربران تایپ‌اسکریپت، می‌توانید پارامترهای مستندنشده را با استفاده از // @ts-expect-error به صورت مستقیم ارسال کنید:

javascript
// مثال استفاده از پارامترهای مستندنشده به صورت مستقیم
const response = await client.chat.completions.create({
  model: "claude-sonnet-4-6",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hello, world!" },
  ],
  // @ts-expect-error پارامتر مستندنشده
  provider_param1: "value1",
  // @ts-expect-error پارامتر مستندنشده دیگر
  provider_param2: "value2",
});

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

اگر می‌خواهید آرگومان‌های اضافی را به صورت صریح ارسال کنید، می‌توانید از گزینه‌های درخواست query، body و headers نیز استفاده کنید.

کاوش مدل‌های موجود ​

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

  • مدل‌های OpenAI: gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4-pro, gpt-5.3-codex, gpt-image-2 و غیره.
  • مدل‌های Anthropic: claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5 و غیره.
  • مدل‌های Google: gemini-3.5-flash, gemini-3.1-pro-preview, gemini-3.1-flash-lite, gemini-3.1-flash-image, gemini-embedding-2, gemini-3-flash-preview, gemini-2.5-pro, gemma-4-26b-a4b-it و غیره.
  • مدل‌های XAI: grok-4.3, grok-4.20-reasoning, grok-4.20-non-reasoning, grok-4-1-fast-reasoning و غیره.
  • مدل‌های DeepSeek: deepseek-v4-pro, deepseek-v4-flash, deepseek-chat و غیره.
  • مدل‌های Alibaba: qwen3.7-max, qwen3.7-plus, qwen3.6-plus, qwen3.6-flash, qwen3.6-max-preview, qwen-image-2.0-pro, qwen-image-2.0 و غیره.
  • مدل‌های Moonshot.ai: kimi-k2.7-code, kimi-k2.7-code-highspeed, kimi-k2.6, kimi-k2-thinking, kimi-latest و غیره.
  • مدل‌های Z.AI: glm-5.2, glm-5.1, glm-5v-turbo, glm-5-turbo و غیره.
  • مدل‌های MiniMax: minimax-m3, minimax-m2.7, minimax-m2.7-highspeed, minimax-m2.5 و غیره.
  • مدل‌های Fireworks.ai: nemotron-3-ultra و مدل‌های متن‌باز سریع دیگر.
  • مدل‌های Meta، Mistral، Cohere، Cloudflare، BytePlus و سایر ارائه‌دهندگان نیز در دسترس هستند.

لیست مدل‌های موجود از طریق API ​

می‌توانید لیست تمام مدل‌های موجود را به صورت برنامه‌نویسی دریافت کنید:

python
# لیست تمام مدل‌ها
models = client.models.list()
for model in models.data:
    print(f"{model.id} - {model.owned_by}")

# دریافت اطلاعات دقیق یک مدل خاص (شامل قیمت‌گذاری، قابلیت‌ها، محدودیت‌های نرخ)
model = client.models.retrieve("gpt-5.6-luna")
print(model)
bash
# نقطه پایانی عمومی (بدون نیاز به احراز هویت)
curl https://api.avalai.ir/public/models

# نقطه پایانی با احراز هویت
curl https://api.avalai.ir/v1/models -H "Authorization: Bearer $AVALAI_API_KEY"

# دریافت جزئیات یک مدل خاص
curl https://api.avalai.ir/v1/models/gpt-5.5 -H "Authorization: Bearer $AVALAI_API_KEY"

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

۶. ردیابی استفاده و انتخاب گام بعدی ​

مثال‌های Responses در Python و JavaScript متن مدل را با output_text چاپ می‌کنند. مثال‌های cURL و HTTP مستقیم، JSON برمی‌گردانند؛ پیام تولیدشده در output قرار دارد. دریافت پاسخ موفق HTTP با محتوای مورد انتظار، نخستین اتصال موفق برنامه شما به API است.

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

اگر نخستین درخواست ناموفق بود ​

آنچه می‌بینیدگام بعدی
کلید تنظیم نشده است یا invalid_api_keyراهنمای پایانه در بالا و کلیدهای API را بررسی کنید. فعال شدن کلید تازه ممکن است تا ۶۰ ثانیه طول بکشد.
insufficient_quotaاعتبار API را بررسی کنید و فقط اگر موجودی قابل استفاده هزینه درخواست را پوشش نمی‌دهد، اعتبار بخرید.
insufficient_tier یا مدل پشتیبانی نمی‌شودسطوح حساب و نقطه پایانی پشتیبانی‌شده مدل را در مدل‌ها بررسی کنید.
محدودیت نرخ یا خطای موقت سرویسپیش از تلاش دوباره، راهنمای مدیریت خطا و وضعیت سرویس را بررسی کنید.
هنوز نمی‌توانید درخواست را کامل کنیدتیکت پشتیبانی بسازید و مدل، نقطه پایانی، وضعیت HTTP، پیام خطا، زمان و منطقه زمانی، و در صورت وجود avalai-request-id را بنویسید. کلید API را ارسال نکنید.
اختیاری: ردیابی هزینه در برنامه‌ها و سامانه‌های نمایندگان فروش

ردیابی هزینه‌ها و استفاده از API (اختیاری) ​

برای برنامه‌های تولیدی، فروشندگان و سازمان‌های بزرگ، AvalAI API کاربر را برای ردیابی دقیق هزینه‌ها و تحلیل استفاده فراهم می‌کند.

دریافت شناسه درخواست ​

هر پاسخ API شامل یک هدر avalai-request-id است که درخواست را به طور منحصر به فرد شناسایی می‌کند:

python
# مثال Python - دریافت هدرهای پاسخ
response = client.chat.completions.create(
    model="gpt-5.4-mini", messages=[{"role": "user", "content": "سلام!"}]
)

# شیء پاسخ به طور مستقیم هدرها را در SDK OpenAI نمایش نمی‌دهد
# برای دریافت هدرها، مستقیما از کلاینت HTTP استفاده کنید یا لاگ‌های برنامه خود را بررسی کنید
bash
# استفاده از curl برای مشاهده هدرها
curl -i "https://api.avalai.ir/v1/chat/completions" \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5.4-mini", "messages": [{"role": "user", "content": "سلام"}]}'

# به دنبال این بگردید: avalai-request-id: 019ac4a0-a8f4-7041-845f-3ea8f15dcf1a

برای درخواست Responses، همین هدر را از /v1/responses دریافت کنید:

bash
curl -i "https://api.avalai.ir/v1/responses" \
  -H "Authorization: Bearer $AVALAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5.6-luna", "input": "سلام"}'

دریافت هزینه‌های دقیق ​

از avalai-request-id برای جستجوی هزینه‌های دقیق استفاده کنید (ظرف 30 ثانیه در دسترس است):

python
import requests
import os

# جستجوی هزینه دقیق
response = requests.post(
    "https://api.avalai.ir/user/v1/transactions/lookup",
    headers={
        "Authorization": f"Bearer {os.environ['AVALAI_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={"transaction_ids": ["019ac4a0-a8f4-7041-845f-3ea8f15dcf1a"]},
)

data = response.json()
# هزینه دقیق را به دلار و تومان با جزئیات کامل تراکنش برمی‌گرداند

چرا از User API استفاده کنیم؟ ​

  • هزینه‌های دقیق 100٪ - برخلاف estimated_cost در پاسخ‌ها، User API هزینه‌های دقیق تضمین‌شده را فراهم می‌کند
  • صورتحساب برای فروشندگان - بر اساس هزینه‌های واقعی بدون اختلاف به مشتریان صورتحساب صادر کنید
  • تحلیل استفاده - هزینه‌ها را بر اساس مدل، ارائه‌دهنده، تاریخ یا ساعت ردیابی کنید
  • رد تراکنش‌ها - تاریخچه کامل تراکنش‌ها برای انطباق

اطلاعات بیشتر:

رفع اشکال با آدرس مستندات

دریافت کمک با استفاده از مستندات ​

💡 نکته کاربردی: می‌توانید آدرس هر صفحه از مستندات docs.avalai.ir را کپی کرده و مستقیما در پیام خود در chat.avalai.ir (پلتفرم چت AvalAI) قرار دهید. وقتی آدرس مستندات را در پیام خود وارد می‌کنید، مدل‌های هوش مصنوعی می‌توانند به محتوای آن صفحه دسترسی داشته باشند و به شما کمک کنند:

  • از هر مدلی بخواهید بخش‌های خاص مستندات را توضیح دهد
  • در رفع اشکال با استفاده از مستندات مربوطه کمک بگیرید
  • نمونه‌های پیاده‌سازی بر اساس مستندات درخواست کنید
  • مفاهیم پیچیده را با پرسش و پاسخ تعاملی روشن کنید

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

مراحل بعدی ​