راهنمای شروع سریع
این راهنما به شما کمک میکند تا در عرض چند دقیقه با پلتفرم AvalAI شروع به کار کنید.
مسیر پیشنهادی برای اولین اجرا:
- یک SDK نصب کنید.
- متغیر محیطی
AVALAI_API_KEYرا تنظیم کنید. - سبک API را انتخاب کنید:
/v1/responsesبرای برنامههای جدید متنی، استدلالی و ابزارمحور؛/v1/chat/completionsبرای ادغامهای چت موجود و بیشترین سازگاری با ارائهدهندگان. - اولین درخواست را ارسال کنید، سپس از
/v1/modelsوx-request-idبرای کشف مدلها و ردیابی هزینه استفاده کنید.
۱. ساخت و محافظت از کلید API
- در داشبورد AvalAI یک حساب کاربری ایجاد کنید.
- به بخش کلیدهای API بروید.
- یک کلید API جدید ایجاد کنید.
- کلید API خود را به صورت امن نگهداری کنید - فقط یک بار نمایش داده میشود!
تنظیم متغیر محیطی کلید API
پیش از اجرای مثالهای SDK یا curl، مقدار AVALAI_API_KEY را تنظیم کنید. آن را در shell profile، secret manager یا محیط deployment نگه دارید؛ کلید API را داخل source code، screenshot، issue report یا JavaScript سمت مرورگر قرار ندهید.
# macOS / Linux
export AVALAI_API_KEY="sk-..."# Windows PowerShell
setx AVALAI_API_KEY "sk-..."پس از تنظیم متغیر، یک terminal جدید باز کنید یا shell profile را reload کنید و سپس مثالهای زیر را اجرا کنید.
۲. نصب و پیکربندی کلاینت
نصب یک 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 (
openai "github.com/openai/openai-go"
"os"
)
func main() {
client := openai.NewClient(os.Getenv("AVALAI_API_KEY"))
client.BaseURL = "https://api.avalai.ir/v1" // نقطه پایانی API AvalAI
}پیاچپی (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.5",
"instructions": "You are a helpful assistant.",
"input": "سلام، دنیا!"
}'response = client.responses.create(
model="gpt-5.5",
instructions="You are a helpful assistant.",
input="سلام، دنیا!",
)
print(response.output_text)const response = await client.responses.create({
model: "gpt-5.5",
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.5",
"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.5',
'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.5", # میتوانید از هر مدل پشتیبانی شده استفاده کنید
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.5", // میتوانید از هر مدل پشتیبانی شده استفاده کنید
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "Hello, world!" },
],
});
console.log(completion.choices[0].message.content);گو (Go)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "gpt-5.5", // میتوانید از هر مدل پشتیبانی شده استفاده کنید
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleSystem,
Content: "You are a helpful assistant.",
},
{
Role: openai.ChatMessageRoleUser,
Content: "Hello, world!",
},
},
},
)
if err != nil {
fmt.Printf("ChatCompletion error: %v\n", err)
return
}
fmt.Println(resp.Choices[0].Message.Content)پیاچپی (PHP)
try {
// ایجاد درخواست تکمیل گفتگو
$response = $client->chat()->create([
'model' => 'gpt-5.5', // میتوانید از هر مدل پشتیبانی شده استفاده کنید
'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.5,gpt-5.4-pro,gpt-5.4,gpt-5.4-mini,gpt-5.4-nano,gpt-5.3-chat,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.5")
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 مدلها مراجعه کنید.
۶. ردیابی استفاده و انتخاب گام بعدی
ردیابی هزینهها و استفاده از API (اختیاری)
برای برنامههای تولیدی، فروشندگان و سازمانهای بزرگ، AvalAI API کاربر را برای ردیابی دقیق هزینهها و تحلیل استفاده فراهم میکند.
دریافت شناسه درخواست
هر پاسخ API شامل یک هدر x-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": "سلام"}]}'
# به دنبال این بگردید: x-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.5", "input": "سلام"}'دریافت هزینههای دقیق
از x-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) قرار دهید. وقتی آدرس مستندات را در پیام خود وارد میکنید، مدلهای هوش مصنوعی میتوانند به محتوای آن صفحه دسترسی داشته باشند و به شما کمک کنند:
- از هر مدلی بخواهید بخشهای خاص مستندات را توضیح دهد
- در رفع اشکال با استفاده از مستندات مربوطه کمک بگیرید
- نمونههای پیادهسازی بر اساس مستندات درخواست کنید
- مفاهیم پیچیده را با پرسش و پاسخ تعاملی روشن کنید
کافیست آدرس صفحه مستندات را همراه با سؤال خود در پیام چت وارد کنید و مدل آن مستندات را دریافت کرده و برای کمک به شما استفاده میکند. این امکان با ترکیب مستندات جامع ما با کمک هوش مصنوعی، اشکالزدایی و پیادهسازی سریعتر را فراهم میکند.
مراحل بعدی
- در مورد پشتیبانی چند ارائه دهنده SDK Anthropic بیاموزید - از SDK های رسمی Anthropic برای مدلهای چندین ارائه دهنده استفاده کنید
- اطلاعیه اصلی پشتیبانی از SDK Anthropic را مطالعه کنید
- مستندات کتابخانهها را برای راهنمای کامل راهاندازی SDK از جمله SDK های Anthropic کاوش کنید
- مرجع API را برای اطلاعات دقیق در مورد تمام نقاط پایانی موجود کاوش کنید.
- در مورد روشهای احراز هویت و بهترین شیوهها بیاموزید.
- راهنماها را برای نکاتی در مورد استفاده مؤثر از API بررسی کنید.
- سیاست محتوای API ما را برای جزئیات مربوط به مدیریت دادهها و حریم خصوصی مرور کنید.