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

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

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

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

  1. یک SDK نصب کنید.
  2. متغیر محیطی AVALAI_API_KEY را تنظیم کنید.
  3. سبک API را انتخاب کنید: /v1/responses برای برنامه‌های جدید متنی، استدلالی و ابزارمحور؛ /v1/chat/completions برای ادغام‌های چت موجود و بیشترین سازگاری با ارائه‌دهندگان.
  4. اولین درخواست را ارسال کنید، سپس از /v1/models و x-request-id برای کشف مدل‌ها و ردیابی هزینه استفاده کنید.

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

  1. در داشبورد AvalAI یک حساب کاربری ایجاد کنید.
  2. به بخش کلیدهای API بروید.
  3. یک کلید API جدید ایجاد کنید.
  4. کلید API خود را به صورت امن نگهداری کنید - فقط یک بار نمایش داده می‌شود!

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

پیش از اجرای مثال‌های SDK یا curl، مقدار AVALAI_API_KEY را تنظیم کنید. آن را در shell profile، secret manager یا محیط deployment نگه دارید؛ کلید API را داخل source code، screenshot، issue report یا JavaScript سمت مرورگر قرار ندهید.

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

پس از تنظیم متغیر، یک terminal جدید باز کنید یا shell profile را reload کنید و سپس مثال‌های زیر را اجرا کنید.

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

نصب یک 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 (
	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
<?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.5",
    "instructions": "You are a helpful assistant.",
    "input": "سلام، دنیا!"
  }'
python
response = client.responses.create(
    model="gpt-5.5",
    instructions="You are a helpful assistant.",
    input="سلام، دنیا!",
)

print(response.output_text)
javascript
const response = await client.responses.create({
  model: "gpt-5.5",
  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.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
<?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)

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)

javascript
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)

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)

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)

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.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

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

python
# لیست تمام مدل‌ها
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)
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 مدل‌ها مراجعه کنید.

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

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

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

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

هر پاسخ API شامل یک هدر x-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": "سلام"}]}'

# به دنبال این بگردید: x-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.5", "input": "سلام"}'

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

از x-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) قرار دهید. وقتی آدرس مستندات را در پیام خود وارد می‌کنید، مدل‌های هوش مصنوعی می‌توانند به محتوای آن صفحه دسترسی داشته باشند و به شما کمک کنند:

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

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

مراحل بعدی