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

API پیام‌ها

API پیام‌ها امکان دسترسی به مدل‌های Anthropic از طریق نقطه پایانی v1/messages API Claude را فراهم می‌کند. این نقطه پایانی بخشی از پشتیبانی چند ارائه دهنده AvalAI است که به شما امکان می‌دهد با مدل‌های Anthropic با استفاده از فرمت API بومی آنها تعامل داشته باشید. تمام مدل‌های Claude از جمله claude-sonnet-5، claude-opus-4-8، claude-opus-4-7، claude-opus-4-6، claude-sonnet-4-6 و سایر فضاهای نام مدل پایه با مسیریابی هوشمند پشتیبانی می‌شوند. API پیام‌ها از Claude Sonnet 5 و Claude Opus 4.8 پشتیبانی کامل دارد، شامل قابلیت‌های جدید مانند پیام‌های role: "system" در میانه مکالمه (با حفظ hit کش پرامپت) و شی stop_details به‌طور عمومی مستند شده در پاسخ‌های امتناع.

نقطه پایانی

POST https://api.avalai.ir/v1/messages

بدنه درخواست

پارامترنوعضروریتوضیحات
modelstringبلهشناسه مدل Anthropic برای استفاده. برای گزینه‌های موجود به مدل‌های Anthropic مراجعه کنید.
messagesarrayبلهآرایه‌ای از اشیا پیام که نمایانگر تاریخچه مکالمه هستند.
systemstringخیردستورالعمل‌های سیستم که مدل را برای مکالمه آماده می‌کنند.
max_tokensintegerبلهحداکثر تعداد توکن‌ها برای تولید. مقدار پیش‌فرض بسته به مدل متفاوت است.
temperaturenumberخیردمای نمونه‌گیری بین 0 و 1. مقادیر بالاتر مانند 0.8 خروجی را تصادفی‌تر می‌کنند، در حالی که مقادیر پایین‌تر مانند 0.2 آن را متمرکزتر می‌کنند. مقدار پیش‌فرض 1 است.
top_pnumberخیرجایگزینی برای دما، نمونه‌گیری هسته. مقدار پیش‌فرض 1 است.
top_kintegerخیرفقط از K گزینه برتر برای هر توکن بعدی نمونه‌گیری کنید. مقدار پیش‌فرض -1 (غیرفعال) است.
streambooleanخیراگر به true تنظیم شود، دلتاهای جزئی پیام ارسال خواهند شد. مقدار پیش‌فرض false است.
stop_sequencesarrayخیردنباله‌های متنی سفارشی که باعث می‌شوند مدل تولید را متوقف کند.
metadataobjectخیرمتادیتای اختیاری برای گنجاندن در پاسخ.

شی پیام

هر پیام در آرایه messages باید ساختار زیر را داشته باشد:

پارامترنوعضروریتوضیحات
rolestringبلهنقش نویسنده پیام. یکی از: user یا assistant.
contentstring یا arrayبلهمحتوای پیام. می‌تواند یک رشته یا آرایه‌ای از بلوک‌های محتوا هنگام استفاده از ورودی‌های چندرسانه‌ای باشد.

مثال‌ها

تکمیل پیام پایه

bash
curl https://api.avalai.ir/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: $AVALAI_API_KEY" \
  -d '{
 "model": "anthropic.claude-sonnet-4-20250514-v1:0",
 "messages": [
 {
 "role": "user",
 "content": "سلام! آیا می‌توانید به من کمک کنید تا محاسبات کوانتومی را درک کنم؟"
 }
 ],
 "max_tokens": 1024
}'
python
from anthropic import Anthropic

client = Anthropic(
    api_key="AVALAI_API_KEY",
    base_url="https://api.avalai.ir",  # نقطه پایانی API AvalAI بدون /v1
)

response = client.messages.create(
    model="anthropic.claude-sonnet-4-20250514-v1:0",
    messages=[
        {
            "role": "user",
            "content": "سلام! آیا می‌توانید به من کمک کنید تا محاسبات کوانتومی را درک کنم؟",
        }
    ],
    max_tokens=1024,
)

print(response.content)
javascript
import { Anthropic } from "@anthropic-ai/sdk";

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

const response = await client.messages.create({
  model: "anthropic.claude-sonnet-4-20250514-v1:0",
  messages: [
    {
      role: "user",
      content:
        "سلام! آیا می‌توانید به من کمک کنید تا محاسبات کوانتومی را درک کنم؟",
    },
  ],
  max_tokens: 1024,
});

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

import (
	"context"
	"fmt"
	"os"

	"github.com/anthropic/anthropic-sdk-go"
)

func main() {
	client := anthropic.NewClient(
		anthropic.WithAPIKey(os.Getenv("AVALAI_API_KEY")),
		anthropic.WithBaseURL("https://api.avalai.ir"),
	)

	resp, err := client.Messages.Create(context.Background(), &anthropic.MessagesRequest{
		Model: "anthropic.claude-sonnet-4-20250514-v1:0",
		Messages: []anthropic.Message{
			{
				Role:    "user",
				Content: "سلام! آیا می‌توانید به من کمک کنید تا محاسبات کوانتومی را درک کنم؟",
			},
		},
		MaxTokens: 1024,
	})

	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}

	fmt.Println(resp.Content)
}
php
<?php
// مثال PHP برای API پیام‌ها از طریق AvalAI

$apiKey = getenv('AVALAI_API_KEY'); // یا مستقیما با کلید واقعی خود جایگزین کنید
$apiUrl = 'https://api.avalai.ir/v1/messages';

$data = [
 'model' => 'claude-haiku-4-5',
 'messages' => [
 ['role' => 'user', 'content' => 'سلام! آیا می‌توانید به من کمک کنید تا محاسبات کوانتومی را درک کنم؟']
 ],
 'max_tokens' => 1024
];

$jsonData = json_encode($data);

$ch = curl_init($apiUrl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
 'Content-Type: application/json',
 'x-api-key: ' . $apiKey,
 'Content-Length: ' . strlen($jsonData)
]);

$response = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);

curl_close($ch);

if ($err) {
 echo "خطای cURL #:" . $err;
} elseif ($httpcode >= 400) {
 echo "خطای HTTP: " . $httpcode . "\n";
 echo $response;
} else {
 $responseData = json_decode($response, true);
 echo "دستیار: " . $responseData['content'][0]['text'] . "\n";
}
?>

فرمت پاسخ

json
{
  "id": "msg_01xyzabcdef",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "محاسبات کوانتومی یک زمینه جذاب است که از اصول مکانیک کوانتومی برای پردازش اطلاعات به روش‌هایی استفاده می‌کند که کامپیوترهای کلاسیک نمی‌توانند. به جای استفاده از بیت‌هایی که یا 0 یا 1 هستند، کامپیوترهای کوانتومی از بیت‌های کوانتومی یا 'کیوبیت‌ها' استفاده می‌کنند که می‌توانند به دلیل خاصیت کوانتومی به نام برهم‌نهی، همزمان در چندین حالت وجود داشته باشند..."
    }
  ],
  "model": "anthropic.claude-sonnet-4-20250514-v1:0",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 15,
    "output_tokens": 75
  }
}

پارامترهای پاسخ

پارامترنوعتوضیحات
idstringیک شناسه منحصر به فرد برای پیام.
typestringنوع شی، که همیشه "message" است.
rolestringنقش نویسنده پیام، که برای پاسخ‌ها "assistant" است.
contentarrayآرایه‌ای از بلوک‌های محتوا، معمولا حاوی متن.
modelstringمدل مورد استفاده برای تولید پیام.
stop_reasonstringدلیل توقف مدل در تولید توکن‌ها. می‌تواند "end_turn"، "max_tokens"، "stop_sequence" یا مقادیر دیگر باشد.
stop_sequencestring یا nullاگر مدل به دلیل تولید یک دنباله توقف متوقف شده باشد، این فیلد حاوی آن دنباله است. در غیر این صورت null است.
usageobjectیک شی حاوی اطلاعات استفاده از توکن.

بلوک محتوا

پارامترنوعتوضیحات
typestringنوع بلوک محتوا. در حال حاضر "text" یا "image".
textstringمحتوای متنی اگر نوع "text" باشد.

شی استفاده

پارامترنوعتوضیحات
input_tokensintegerتعداد توکن‌های استفاده شده در ورودی.
output_tokensintegerتعداد توکن‌های استفاده شده در خروجی.

جریان‌سازی

برای دریافت پاسخ‌های تدریجی مدل، stream: true را در درخواست خود تنظیم کنید:

javascript
const stream = await client.messages.create({
  model: "anthropic.claude-sonnet-4-20250514-v1:0",
  messages: [
    { role: "user", content: "داستانی درباره یک کامپیوتر کوانتومی بنویسید." },
  ],
  stream: true,
  max_tokens: 1024,
});

for await (const chunk of stream) {
  if (
    chunk.type === "content_block_delta" &&
    chunk.delta.type === "text_delta"
  ) {
    process.stdout.write(chunk.delta.text || "");
  }
}

مدیریت خطا

API ممکن است کدهای خطای مختلفی را برگرداند:

کد وضعیتتوضیحات
400درخواست نامعتبر - درخواست شما نامعتبر است.
401غیرمجاز - کلید API شما اشتباه است.
403ممنوع - شما اجازه دسترسی به این منبع را ندارید.
404یافت نشد - منبع مشخص شده یافت نشد.
429درخواست‌های بیش از حد - شما از محدودیت نرخ خود فراتر رفته‌اید.
500خطای داخلی سرور - ما مشکلی با سرور خود داشتیم.

برای اطلاعات بیشتر در مورد مدیریت خطاها، به راهنمای مدیریت خطا مراجعه کنید.

پشتیبانی چند ارائه دهنده

از ۱۹ خرداد ۱۴۰۴، پلتفرم AvalAI از فرمت API پیام‌های Anthropic برای دسترسی به مدل‌های چندین ارائه دهنده پشتیبانی می‌کند، از جمله:

  • Anthropic (مدل‌های Claude)
  • OpenAI
  • AWS Bedrock
  • Vertex AI
  • Gemini
  • MiniMax (شامل minimax-m3 با پشتیبانی کامل از بلوک‌های thinking بومی و استفاده از ابزار)

این رویکرد API یکپارچه به شما امکان می‌دهد از همان ساختار کد برای دسترسی به مدل‌های ارائه‌دهندگان مختلف استفاده کنید و در عین حال سازگاری با کتابخانه‌های کلاینت Anthropic را حفظ کنید.

منابع مرتبط