نظرة عامة
توفّر هذه النقطة الطرفية توافقًا أصليًا مع Anthropic Messages API. استخدم هذا مع نماذج Claude وميزات مثل التفكير الممتد.
يحافظ هذا المسار على عقد Anthropic الأصلي. يجب أن تكون messages مصفوفة رسائل بأدوار user / assistant فقط، ويجب وضع system في الحقل العلوي system، كما أن max_tokens مطلوب. إذا كانت حمولة الطلب تستخدم أدوار OpenAI مثل system أو developer أو tool داخل messages، فأرسلها إلى /v1/chat/completions بدلًا من ذلك.
عنوان URL الأساسي لـ Anthropic SDK: https://api.tokenlab.sh (بدون اللاحقة /v1)
ترويسات الطلب
مفتاح TokenLab API الخاص بك. بديل عن Bearer token.
إصدار Anthropic API. استخدم 2023-06-01.
جسم الطلب
معرّف نموذج Claude (على سبيل المثال، claude-sonnet-4-6 أو claude-opus-4-6).
مصفوفة من كائنات الرسائل تحتوي على role و content.
الحد الأقصى لعدد الـ tokens المطلوب إنشاؤها.
System prompt (منفصل عن مصفوفة messages).
درجة حرارة أخذ العينات (0-1).
تمكين الاستجابات المتدفقة.
إعدادات التفكير الممتد (Claude Opus 4.5).
type (string): "enabled" للتمكين
budget_tokens (integer): ميزانية الـ tokens الخاصة بالتفكير
كيفية استخدام النموذج للأدوات. الخيارات: auto، any، tool (أداة محددة).
معلمة Nucleus sampling. استخدم إما temperature أو top_p، وليس كليهما.
أخذ العينات فقط من أعلى K خيارات لكل token.
تسلسلات إيقاف مخصصة ستؤدي إلى توقف النموذج عن التوليد.
بيانات وصفية لإرفاقها بالطلب لأغراض التتبع.
الاستجابة
مصفوفة من كتل المحتوى (text، thinking، tool_use).
سبب توقف التوليد (end_turn، max_tokens، tool_use).
استخدام الـ tokens مع input_tokens و output_tokens.
cURL
Python
JavaScript
Go
PHP
curl -X POST "https://api.tokenlab.sh/v1/messages" \
-H "x-api-key: sk-your-api-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"system": "You are a helpful assistant.",
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'
from anthropic import Anthropic
client = Anthropic(
api_key = "sk-your-api-key" ,
base_url = "https://api.tokenlab.sh"
)
message = client.messages.create(
model = "claude-sonnet-4-6" ,
max_tokens = 1024 ,
system = "You are a helpful assistant." ,
messages = [
{ "role" : "user" , "content" : "Hello, Claude!" }
]
)
print (message.content[ 0 ].text)
import Anthropic from '@anthropic-ai/sdk' ;
const client = new Anthropic ({
apiKey: 'sk-your-api-key' ,
baseURL: 'https://api.tokenlab.sh'
});
const message = await client . messages . create ({
model: 'claude-sonnet-4-6' ,
max_tokens: 1024 ,
system: 'You are a helpful assistant.' ,
messages: [
{ role: 'user' , content: 'Hello, Claude!' }
]
});
console . log ( message . content [ 0 ]. text );
package main
import (
" bytes "
" encoding/json "
" fmt "
" io "
" net/http "
)
func main () {
payload := map [ string ] interface {}{
"model" : "claude-sonnet-4-6" ,
"max_tokens" : 1024 ,
"system" : "You are a helpful assistant." ,
"messages" : [] map [ string ] string {
{ "role" : "user" , "content" : "Hello, Claude!" },
},
}
jsonData , _ := json . Marshal ( payload )
req , _ := http . NewRequest ( "POST" , "https://api.tokenlab.sh/v1/messages" , bytes . NewBuffer ( jsonData ))
req . Header . Set ( "x-api-key" , "sk-your-api-key" )
req . Header . Set ( "anthropic-version" , "2023-06-01" )
req . Header . Set ( "Content-Type" , "application/json" )
client := & http . Client {}
resp , _ := client . Do ( req )
defer resp . Body . Close ()
body , _ := io . ReadAll ( resp . Body )
fmt . Println ( string ( body ))
}
<? php
$payload = [
'model' => 'claude-sonnet-4-6' ,
'max_tokens' => 1024 ,
'system' => 'You are a helpful assistant.' ,
'messages' => [
[ 'role' => 'user' , 'content' => 'Hello, Claude!' ]
]
];
$ch = curl_init ( 'https://api.tokenlab.sh/v1/messages' );
curl_setopt_array ( $ch , [
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_HTTPHEADER => [
'x-api-key: sk-your-api-key' ,
'anthropic-version: 2023-06-01' ,
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode ( $payload )
]);
$response = curl_exec ( $ch );
curl_close ( $ch );
$data = json_decode ( $response , true );
echo $data [ 'content' ][ 0 ][ 'text' ];
{
"id" : "msg_abc123" ,
"type" : "message" ,
"role" : "assistant" ,
"content" : [
{
"type" : "text" ,
"text" : "Hello! How can I help you today?"
}
],
"model" : "claude-sonnet-4-6" ,
"stop_reason" : "end_turn" ,
"usage" : {
"input_tokens" : 15 ,
"output_tokens" : 10
}
}
مثال على إدخال الرؤية
بالنسبة إلى نماذج Claude التي تدعم الرؤية، ضع الصور داخل messages[].content ككتل صور مُنظَّمة.
{
"model" : "claude-sonnet-4-6" ,
"max_tokens" : 1024 ,
"messages" : [
{
"role" : "user" ,
"content" : [
{
"type" : "text" ,
"text" : "Please describe this image."
},
{
"type" : "image" ,
"source" : {
"type" : "url" ,
"url" : "https://example.com/demo.jpg"
}
}
]
}
]
}
{
"model" : "claude-sonnet-4-6" ,
"max_tokens" : 1024 ,
"messages" : [
{
"role" : "user" ,
"content" : [
{
"type" : "text" ,
"text" : "Please describe this image."
},
{
"type" : "image" ,
"source" : {
"type" : "base64" ,
"media_type" : "image/jpeg" ,
"data" : "/9j/4AAQSkZJRgABAQ..."
}
}
]
}
]
}
مثال على التفكير الممتد
message = client.messages.create(
model = "claude-opus-4-6" ,
max_tokens = 16000 ,
thinking = {
"type" : "enabled" ,
"budget_tokens" : 10000
},
messages = [{ "role" : "user" , "content" : "Solve this math problem..." }]
)
for block in message.content:
if block.type == "thinking" :
print ( f "Thinking: { block.thinking } " )
elif block.type == "text" :
print ( f "Response: { block.text } " )
دفعات رسائل Anthropic
يوفّر TokenLab الآن تدفق Anthropic Message Batches الأصلي إلى جانب /v1/messages.
المسارات المتاحة:
POST /v1/messages/batches
GET /v1/messages/batches
GET /v1/messages/batches/:message_batch_id
GET /v1/messages/batches/:message_batch_id/results
POST /v1/messages/batches/:message_batch_id/cancel
DELETE /v1/messages/batches/:message_batch_id
ملاحظات تشغيلية:
استخدم نفس مفتاح TokenLab API مع ترويسات Anthropic الأصلية.
إذا كانت عناصر الـ batch تشير إلى file_id، فأضف أيضًا anthropic-beta: files-api-2025-04-14.
تحافظ مهام الـ batch على شكل الطلب/الاستجابة الأصلي لـ Anthropic، بينما يتتبع TokenLab داخليًا دورة التسوية الخاصة بها.