راهنمای شروع سریع
این راهنما به شما کمک میکند تا در عرض چند دقیقه با پلتفرم AvalAI شروع به کار کنید.
مسیر پیشنهادی برای اولین اجرا:
- یک کلید API بسازید و اعتبار قابل استفاده و دسترسی به مدل را بررسی کنید.
- متغیر
AVALAI_API_KEYرا تنظیم کنید، سپس یک کلاینت را پیکربندی کنید یا از cURL استفاده کنید. - نخستین درخواست زیر را ارسال کنید. برای برنامه جدید با Responses شروع کنید؛ اگر برنامه شما از Chat Completions استفاده میکند، همان را نگه دارید.
- پاسخ را بررسی کنید، سپس برای مشاهده فعالیت و هزینه به نمای کلی مصرف بروید.
۱. ساخت و محافظت از کلید API
- کلیدهای API را باز کنید و در صورت نیاز وارد شوید یا حساب بسازید.
- یک کلید API جدید بسازید.
- کلید را در محل امن نگه دارید؛ فقط یک بار نمایش داده میشود.
بررسی اعتبار API و دسترسی به مدل
در صفحه اعتبار API، موجودی قابل استفاده را بررسی کنید. اگر اعتبار کافی دارید، از جمله اعتبار ثبتنامی که به حساب شما تعلق گرفته است، میتوانید از همان استفاده کنید؛ فقط در صورت نیاز اعتبار بخرید. خرید بسته اعتباری اختیاری است.
شرایط دسترسی به مدل انتخابی را در مدلها و سطوح حساب و محدودیتهای نرخ بررسی کنید. حتی با موجودی مثبت، ممکن است مدل به سطح حساب بالاتری نیاز داشته باشد. Chat Plus اشتراک جداگانه چت است؛ اعتبار API محسوب نمیشود و برای فراخوانی API لازم نیست.
تنظیم متغیر محیطی کلید API
پیش از اجرای مثالهای SDK یا cURL، مقدار AVALAI_API_KEY را تنظیم کنید. برای برنامه مستقرشده از سامانه مدیریت اطلاعات محرمانه یا متغیرهای محیط استقرار استفاده کنید. کلید API را در کد منبع، تصویر صفحه، گزارش خطا یا JavaScript سمت مرورگر قرار ندهید.
# macOS / Linux
export AVALAI_API_KEY="sk-..."# Windows PowerShell
setx AVALAI_API_KEY "sk-..."در macOS/Linux، مثالها را در همان پایانهای اجرا کنید که دستور export را در آن وارد کردهاید؛ این مقدار برای پایانه جدید ذخیره نمیشود. در Windows، دستور setx مقدار را برای فرایندهای بعدی ذخیره میکند؛ بنابراین پیش از اجرای مثالها یک پنجره PowerShell جدید باز کنید.
۲. نصب و پیکربندی کلاینت
نصب یک SDK سازگار با OpenAI
AvalAI از سه رویکرد SDK پشتیبانی میکند:
ادغامهای جایگزین با SDK رسمی
پیش از انتخاب ادغام بومی هر ارائهدهنده، مستندات کتابخانهها را بخوانید.
زبان مورد نظر خود را انتخاب کنید:
پایتون (Python)
pip install openaiنود.جیاس (Node.js)
npm install openaiگو (Go)
go get github.com/openai/openai-goپیاچپی (PHP)
composer require openai-php/clientاستفاده از آدرس پایه AvalAI
AvalAI چندین دامنه را برای اطمینان از اتصال بهینه بر اساس موقعیت و شرایط شبکه شما فراهم میکند.
1. دامنه اصلی - پیشنهادی
- آدرس:
api.avalai.ir - CDN: شبکه جهانی
- بهترین برای: کاربرانی که به دنبال عملکرد بهینه با کمترین تاخیر هستند
نحوه استفاده
کاربران میتوانند بسته به شرایط شبکه خود، از هر یک از این دامنهها استفاده کنند. تمام API endpoint ها و قابلیتها در هر دو دامنه یکسان هستند.
مثال Python
import os
from openai import OpenAI
# استفاده از دامنه اصلی
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1", # آدرس پایه
)پیکربندی کلاینت
پایتون (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)
import { OpenAI } from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1", // نقطه پایانی API AvalAI
});گو (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
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 (پیشنهادی برای برنامههای جدید)
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": "سلام، دنیا!"
}'response = client.responses.create(
model="gpt-5.6-luna",
instructions="You are a helpful assistant.",
input="سلام، دنیا!",
)
print(response.output_text)const response = await client.responses.create({
model: "gpt-5.6-luna",
instructions: "You are a helpful assistant.",
input: "سلام، دنیا!",
});
console.log(response.output_text);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
$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)
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)
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)
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)
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)
# مثال استفاده از پارامترهای مخصوص ارائه دهنده
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 به صورت مستقیم ارسال کنید:
// مثال استفاده از پارامترهای مستندنشده به صورت مستقیم
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
میتوانید لیست تمام مدلهای موجود را به صورت برنامهنویسی دریافت کنید:
# لیست تمام مدلها
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)# نقطه پایانی عمومی (بدون نیاز به احراز هویت)
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 - دریافت هدرهای پاسخ
response = client.chat.completions.create(
model="gpt-5.4-mini", messages=[{"role": "user", "content": "سلام!"}]
)
# شیء پاسخ به طور مستقیم هدرها را در SDK OpenAI نمایش نمیدهد
# برای دریافت هدرها، مستقیما از کلاینت HTTP استفاده کنید یا لاگهای برنامه خود را بررسی کنید# استفاده از 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 دریافت کنید:
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 ثانیه در دسترس است):
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 هزینههای دقیق تضمینشده را فراهم میکند - صورتحساب برای فروشندگان - بر اساس هزینههای واقعی بدون اختلاف به مشتریان صورتحساب صادر کنید
- تحلیل استفاده - هزینهها را بر اساس مدل، ارائهدهنده، تاریخ یا ساعت ردیابی کنید
- رد تراکنشها - تاریخچه کامل تراکنشها برای انطباق
اطلاعات بیشتر:
- مستندات User API - مرجع کامل API
- راهنمای ردیابی هزینه برای فروشندگان - راهنمای گام به گام برای صورتحساب دقیق
- راهنمای استفاده برای سازمانها - الگوهای پیشرفته برای استقرارهای در مقیاس بزرگ
رفع اشکال با آدرس مستندات
دریافت کمک با استفاده از مستندات
💡 نکته کاربردی: میتوانید آدرس هر صفحه از مستندات docs.avalai.ir را کپی کرده و مستقیما در پیام خود در chat.avalai.ir (پلتفرم چت AvalAI) قرار دهید. وقتی آدرس مستندات را در پیام خود وارد میکنید، مدلهای هوش مصنوعی میتوانند به محتوای آن صفحه دسترسی داشته باشند و به شما کمک کنند:
- از هر مدلی بخواهید بخشهای خاص مستندات را توضیح دهد
- در رفع اشکال با استفاده از مستندات مربوطه کمک بگیرید
- نمونههای پیادهسازی بر اساس مستندات درخواست کنید
- مفاهیم پیچیده را با پرسش و پاسخ تعاملی روشن کنید
کافیست آدرس صفحه مستندات را همراه با سؤال خود در پیام چت وارد کنید و مدل آن مستندات را دریافت کرده و برای کمک به شما استفاده میکند. این امکان با ترکیب مستندات جامع ما با کمک هوش مصنوعی، اشکالزدایی و پیادهسازی سریعتر را فراهم میکند.
مراحل بعدی
برای بررسی فعالیت و هزینه، مصرف API را ببینید.
برای انتخاب مدل بعدی متناسب با کار خود، مدلها را بررسی کنید.
اگر به مشکل خوردید، راهنمای مدیریت خطا را بخوانید یا تیکت پشتیبانی بسازید.
در مورد پشتیبانی چند ارائه دهنده SDK Anthropic بیاموزید - از SDK های رسمی Anthropic برای مدلهای چندین ارائه دهنده استفاده کنید
اطلاعیه اصلی پشتیبانی از SDK Anthropic را مطالعه کنید
مستندات کتابخانهها را برای راهنمای کامل راهاندازی SDK از جمله SDK های Anthropic کاوش کنید
مرجع API را برای اطلاعات دقیق در مورد تمام نقاط پایانی موجود کاوش کنید.
در مورد روشهای احراز هویت و بهترین شیوهها بیاموزید.
راهنماها را برای نکاتی در مورد استفاده مؤثر از API بررسی کنید.
سیاست محتوای API ما را برای جزئیات مربوط به مدیریت دادهها و حریم خصوصی مرور کنید.