مستندات
همهٔ چیزی که برای وصلکردن کدت به ۴۰۰+ مدل لازم است. اگر قبلاً با OpenAI SDK کار کردهای، فقط base_url را عوض کن.
curl https://api.uttapen.ir/v1/chat/completions \
-H "Authorization: Bearer sk-up-…" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5",
"messages": [{"role": "user", "content": "سلام! خودت را معرفی کن."}],
"stream": true
}'from openai import OpenAI
client = OpenAI(
base_url="https://api.uttapen.ir/v1",
api_key="sk-up-…",
)
stream = client.chat.completions.create(
model="openai/gpt-5",
messages=[{"role": "user", "content": "سلام! خودت را معرفی کن."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.uttapen.ir/v1",
apiKey: "sk-up-…",
});
const stream = await client.chat.completions.create({
model: "openai/gpt-5",
messages: [{ role: "user", content: "سلام! خودت را معرفی کن." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}<?php
// composer require openai-php/client guzzlehttp/guzzle
$client = OpenAI::factory()
->withBaseUri('https://api.uttapen.ir/v1')
->withApiKey('sk-up-…')
->make();
$result = $client->chat()->create([
'model' => 'openai/gpt-5',
'messages' => [['role' => 'user', 'content' => 'سلام! خودت را معرفی کن.']],
]);
echo $result->choices[0]->message->content;package main
import (
"context"
"fmt"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://api.uttapen.ir/v1"),
option.WithAPIKey("sk-up-…"),
)
resp, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: "openai/gpt-5",
Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage("سلام! خودت را معرفی کن.")},
})
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}شروع
- شروع سریع — اولین درخواست در ۵ دقیقهثبتنام با شماره موبایل، شارژ کیف پول تومانی، ساخت کلید sk-up و اولین فراخوانی مدل با SDK رسمی OpenAI در Python، Node و curl.
- احراز هویت و کلیدهای APIفرمت کلید sk-up، هدر Authorization و X-API-Key، تنظیمات هر کلید (سقف ماهانه، مدلهای مجاز، نرخ، انقضا)، لغو فوری و نکات امنیتی.
- سازگاری با OpenAI و مهاجرت از OpenAI، OpenRouter و دیگرانمهاجرت کد موجود به uttapen فقط با تغییر base_url؛ شکل شناسهٔ مدلها، مسیرهای پشتیبانیشده، فیلدهایی که عبور میکنند و جدول اشتباههای رایج.
قابلیتها
- استریم پاسخ (SSE)دریافت پاسخ مدل بهصورت زنده با stream=true، فرمت رویدادهای SSE، رویداد اختیاری uttapen.meta با هزینهٔ تومانی، مدیریت قطع اتصال و proxy در Next.js و Laravel.
- Tool calling (فراخوانی تابع)تعریف ابزار با اسکیمای OpenAI، حلقهٔ کامل اجرای tool call در Python، کنترل با tool_choice، استریم tool_calls و انتخاب مدل با نشان tools.
- ورودی تصویر و فایل (Vision)ارسال تصویر با URL یا data URI و فایل PDF با بخش file در chat/completions؛ سقف ۲۰ مگابایت، انتخاب مدل با نشان vision و files، و نحوهٔ محاسبهٔ هزینهٔ تصویر.
- خروجی ساختیافته (JSON)گرفتن JSON معتبر از مدل با response_format از نوع json_object و json_schema، نمونهٔ Python و Node، و اشتباههای رایج با متن و اعداد فارسی.
- مدلهای استدلالی (Reasoning)استفاده از مدلهای استدلالی مثل o3 و DeepSeek R1 با reasoning_effort یا بلوک reasoning، خواندن توکنهای استدلال در پاسخ و استریم، و اثر آن روی رزرو و هزینه.
مرجع
- خطاها و کدها — ۴۰۰ تا ۵۰۴ و راهحل هر کدامجدول کامل خطاهای API از 400 تا 504 با کد هر خطا، شکل JSON خطا و بلوک یوتاپن، کار درست در هر حالت، و نگاشت خطاها به exception های SDK رسمی OpenAI.
- محدودیت نرخ (Rate limits)سقف درخواست در دقیقهٔ هر کلید، هدرهای X-RateLimit و Retry-After، سقف استریم همزمان، سهم روزانهٔ مدلهای رایگان و سقف ماهانهٔ کلید با نمونهٔ کد backoff.
- قیمتگذاری و محاسبهٔ تومانقیمت تومانی هر مدل بهازای ۱M توکن، رزرو موقت قبل از درخواست و تسویه با مصرف واقعی بعد از پاسخ، هدر X-Uttapen-Cost-Toman و خواندن مصرف با GET.
- حریم خصوصی — چه چیزی ذخیره میشودgateway محتوای prompt و پاسخ API را ذخیره نمیکند؛ فهرست دقیق متادیتای ثبتشده، استثنای چت داشبورد، مسیر ترافیک تا provider و توصیهها برای دادهٔ حساس.
SDK و ابزارها
- SDK پایتون — نصب، استریم و tool callingپکیج رسمی openai در پایتون با یوتاپن: نصب، ساخت کلاینت، chat، استریم، tool calling، embeddings و مدیریت خطا با کد قابل اجرا.
- SDK Node.jsاستفاده از پکیج رسمی openai در Node.js و TypeScript با یوتاپن؛ نصب، کلاینت، chat با هدرهای هزینه، استریم و AbortController، tool calling، embeddings.
- SDK PHP (Laravel و openai-php)پکیج openai-php/client و openai-php/laravel با یوتاپن: نصب، ساخت کلاینت، chat، استریم، tool calling و مدیریت خطا با کد قابل اجرا.
- SDK Goاستفاده از پکیج رسمی openai-go با یوتاپن؛ نصب، کلاینت، chat، استریم با accumulator و رویداد uttapen.meta، tool calling، embeddings و مدیریت خطا با.
- curl و HTTP خامکار مستقیم با API uttapen بدون SDK؛ chat، استریم با curl -N، هدرهای هزینه و rate limit، رویداد uttapen.meta، embeddings، فهرست مدلها، وضعیت حساب و.
- یکپارچهسازی: LangChain، LlamaIndex، Cursorتنظیم LangChain، LlamaIndex، Vercel AI SDK، Cursor، Continue و Open WebUI برای کار با یوتاپن؛ فقط base URL و کلید، بدون تغییر کد.