جایگزینهای Character AI API که واقعاً در 2026 کار میکنند
Updated 2026-07-15
Character.AI یک API عمومی رسمی ارائه نمیدهد، پس wrapper های غیررسمی که در GitHub پیدا میکنید مدام خراب میشوند و قوانین استفاده آن را نقض میکنند. مسیر قابل اعتماد یک API استاندارد LLM است، از طریق یک gateway سازگار با OpenAI، OpenRouter، یا یک مدل open خودمیزبان، با لایه persona خودتان روی آن.
پاسخ سریع: هیچ API رسمی Character AI وجود ندارد
Character.AI هرگز یک API عمومی برای توسعهدهندگان عرضه نکرده است. هر کتابخانه «Character AI API» که پیدا میکنید یک client مهندسیمعکوسشده است که وانمود میکند یک session مرورگر است. این wrapper ها قوانین استفاده پلتفرم را نقض میکنند، حسابها را مسدود میکنند، و هر بار که سایت endpoint های داخلی خود را تغییر میدهد از کار میافتند. اگر میخواهید چت کاراکتر را داخل اپلیکیشن خودتان داشته باشید، به جای آن آن را روی یک API استاندارد chat completions بسازید. خود کاراکتر فقط یک system prompt (یک persona card)، یک تاریخچه پیام در حال چرخش، و تنظیمات sampling است. هر مدل قابلقبولی که از دستورات پیروی میکند میتواند این نقش را بازی کند، و شما مالکیت کامل کاراکترها، کاربران و دادههای خود را حفظ میکنید. سه مسیر واقعبینانه وجود دارد: یک gateway سازگار با OpenAI که بسیاری از مدلها را با یک کلید در دسترس قرار میدهد، OpenRouter به عنوان یک aggregator چند-provider، یا self-host کردن وزنهای open مثل DeepSeek و GLM روی GPU های خودتان. باقی این راهنما آنها را مقایسه میکند، کد کارآمد curl، Python و Node را نشان میدهد، و جزئیات production را پوشش میدهد که چت کاراکتر را به جای عمومی، منسجم نشان میدهد.
چرا wrapper های غیررسمی Character AI به بنبست میرسند
کتابخانههای مهندسیمعکوسشده از endpoint های خصوصی که هرگز برای شخص ثالث در نظر گرفته نشده بودند scrape میکنند. این سه پیامد عملی دارد. اول، پایداری. Character.AI میتواند هر زمان یک route داخلی را تغییر نام دهد، یک bot check اضافه کند، یا فرآیند auth خود را تغییر دهد، و اپلیکیشن production شما بدون هشدار و بدون کانال پشتیبانی از کار میافتد. دوم، ریسک حساب. دسترسی خودکار از طریق یک session مرورگر جعلی دقیقاً همان چیزی است که قوانین استفاده ممنوع میکند، پس حسابی که اپلیکیشن شما را تأمین مالی میکند میتواند بدون امکان اعتراض معلق شود. سوم، مالکیت معنوی. کاراکترهای روی پلتفرم، از جمله bot های محبوب community، متعلق به پلتفرم و نویسندگان آنها هستند. نمیتوانید آنها را به یک محصول تجاری منتقل کنید. هیچکدام از اینها وقتی خودتان stack را در اختیار دارید صدق نمیکند. یک persona که به عنوان system prompt مینویسید مال شماست. یک قرارداد API استاندارد با قیمتگذاری منتشرشده یکشبه ناپدید نمیشود. «بدون API رسمی» را به عنوان یک محدودیت طراحی در نظر بگیرید، نه یک معما برای دور زدن.
مقایسه سه جایگزین واقعی
هر مسیر راحتی را در برابر کنترل معامله میکند. یک gateway هاستشده مثل APIsRouter یک endpoint سازگار با OpenAI در آدرس https://api.apisrouter.com/v1 در جلوی DeepSeek، GLM، Kimi، Claude، Gemini، GPT و Grok به شما میدهد، بنابراین میتوانید یک کاراکتر را بین مدلها فقط با تغییر یک رشته جابهجا کنید. OpenRouter دنباله بلندی از مدلهای community-hosted را پوشش میدهد، مفید وقتی میخواهید بهطور گسترده آزمایش کنید. Self-hosting وقتی برنده میشود که به data locality نیاز دارید یا حجم بالای پایداری اجرا میکنید که GPU های اختصاصی را توجیه میکند.
| گزینه | نحوه کار | صورتحساب | بار عملیاتی | بهترین برای |
|---|---|---|---|---|
| gateway سازگار با OpenAI (APIsRouter) | یک endpoint /v1 و یک کلید در جلوی بسیاری از مدلهای frontier و open | پرداخت بر اساس مصرف، بدون اشتراک | هیچ، کاملاً hosted | راهاندازی سریع یک اپ کاراکتر و تعویض مدلها در هر turn |
| OpenRouter | یک aggregator که درخواستها را به بسیاری از provider های hosted مسیردهی میکند | پرداخت بر اساس مصرف با نرخهای هر provider | هیچ، کاملاً hosted | کاوش مدلهای niche community پیش از تعهد |
| مدلهای open خودمیزبان | وزنهای DeepSeek یا GLM را خودتان با vLLM یا llama.cpp اجرا کنید | هزینه ثابت GPU صرفنظر از ترافیک | بالا: serving، مقیاسبندی، بهروزرسانیها بر عهده شماست | Data locality و حجم بالای پایدار |
یک اپ چت کاراکتر واقعاً چگونه کار میکند
UI را کنار بگذارید، یک اپ کاراکتر یک loop با سه بخش است. یک persona card در system prompt قرار میگیرد: نام، شخصیت، سبک گفتار، قوانین سخت مثل «هرگز به AI بودن اشاره نکن». تاریخچه مکالمه به صورت پیامهای متناوب user و assistant همراه میشود. تنظیمات sampling، عمدتاً temperature، کنترل میکند که کاراکتر چقدر آزادانه نقش را بازی میکند. در ادامه یک درخواست اول کامل آمده است. persona کاملاً در پیام system زندگی میکند، پس همان الگو با هر مدلی در کاتالوگ کار میکند:
curl https://api.apisrouter.com/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [
{"role": "system", "content": "You are Captain Mira Vale, a dry-witted starship engineer. Stay in character at all times. Speak in short, practical sentences. Never mention being an AI."},
{"role": "user", "content": "Mira, the reactor is making that noise again."}
],
"temperature": 0.9,
"max_tokens": 300
}'یک chat loop مینیمال در Python و Node
در یک اپ، تاریخچه را سمت سرور نگه میدارید، هر تبادل را append میکنید، و پنجره را در هر turn دوباره ارسال میکنید. SDK های رسمی OpenAI بدون تغییر کار میکنند چون endpoint از همان قرارداد پیروی میکند؛ فقط base_url و کلید متفاوت است. نسخه Python زیر یک loop کاملاً کارآمد است، و نسخه Node همان شکل درخواست را برای یک backend جاوااسکریپت نشان میدهد.
from openai import OpenAI
client = OpenAI(
api_key="sk-...",
base_url="https://api.apisrouter.com/v1",
)
PERSONA = (
"You are Captain Mira Vale, a dry-witted starship engineer. "
"Stay in character at all times. Keep replies under 120 words."
)
history = [{"role": "system", "content": PERSONA}]
def chat(user_text: str) -> str:
history.append({"role": "user", "content": user_text})
reply = client.chat.completions.create(
model="deepseek-v4-flash",
messages=history,
temperature=0.9,
max_tokens=300,
)
text = reply.choices[0].message.content
history.append({"role": "assistant", "content": text})
return text
while True:
print(chat(input("> ")))هزینه چت کاراکتر به ازای هر مدل چقدر است
چت کاراکتر input-heavy است: هر turn دوباره persona و تاریخچه را ارسال میکند، پس نرخ ورودی بیشتر از نرخ خروجی اهمیت دارد. قیمتهای کاتالوگ زیر به دلار آمریکا به ازای هر میلیون token است. مدلهای global با 20% تخفیف نسبت به قیمت رسمی اجرا میشوند و مدلهای چینی زیر نرخ رسمی هستند؛ صورتحساب پرداخت بر اساس مصرف و بدون اشتراک است، checkout در /topup نیازی به ثبتنام ندارد (اول پرداخت کنید، کلید از طریق ایمیل میرسد)، و اولین top-up شما 100%+ موجودی اضافه میکند. برای مقیاس: یک اپ hobby که روزی 1,000 پیام انجام میدهد، با تقریباً 2,000 token ورودی و 300 token خروجی به ازای هر پیام، حدود $0.33 در روز روی deepseek-v4-flash هزینه دارد. همان ترافیک روی claude-sonnet-4-6 حدود $8.40 در روز میشود، به همین دلیل بیشتر تیمها مدلهای premium را برای turn هایی که ارزشش را دارند نگه میدارند.
| مدل | ورودی / 1M | خروجی / 1M | تناسب با چت کاراکتر |
|---|---|---|---|
| deepseek-v4-flash | $0.126 | $0.252 | انتخاب پیشفرض، محبوب community برای roleplay |
| deepseek-v4-pro | $0.3915 | $0.783 | انسجام قویتر در صحنههای طولانی |
| glm-5 | $0.514 | $2.314 | دیالوگ محکم با قیمت مقرونبهصرفه |
| kimi-k2.6 | به /models مراجعه کنید | به /models مراجعه کنید | انتخاب مقرونبهصرفه، context بلند |
| gemini-3.5-flash | $1.20 | $7.20 | سریع، دیالوگ عمومی خوب |
| claude-sonnet-4-6 | $2.40 | $12.00 | بالاترین کیفیت نثر، نویسندگی خلاقانه SFW |
| claude-opus-4-7 | $4.00 | $20.00 | نثر premium برای صحنههای کلیدی، SFW |
| gpt-5.5 | $4.00 | $24.00 | flagship همهمنظوره |
| grok-4.5 | $1.60 | $4.80 | flagship xAI، سیاست انعطافپذیر برای fiction، context 500K |
انتخاب یک مدل برای چت کاراکتر
انتخاب مدل برای کار کاراکتر درباره کیفیت دیالوگ به ازای هر دلار و سیاست محتوای منتشرشده هر provider است، چون اپهای کاراکتر به fiction نزدیک زندگی میکنند. خانواده DeepSeek V4 محبوب community برای roleplay و بهترین ارزش است: با deepseek-v4-flash شروع کنید، صحنههایی که به انسجام بیشتری نیاز دارند را به deepseek-v4-pro منتقل کنید. GLM-5، Kimi K2.6 و MiMo به عنوان انتخابهای مقرونبهصرفه ارزش A/B testing دارند؛ ترجیح کاراکتر به اندازه کافی ذهنی است که یک مقایسه ارزان کنار هم اغلب غافلگیرکننده است. Grok 4.5 مرتبط است چون سیاست منتشرشده xAI تمهای fiction بزرگسال را اجازه میدهد، که برای اپهای fiction بزرگسال که age gate خودشان را اعمال میکنند اهمیت دارد. Claude Sonnet 4.6 و Opus 4.7 بهترین نثر را در کاتالوگ مینویسند، اما سیاست Anthropic محتوای صریح را ممنوع میکند، پس Claude را به عنوان گزینه premium برای نویسندگی خلاقانه SFW در نظر بگیرید. هر چیزی که انتخاب میکنید، سیاست استفاده provider را بخوانید و قوانین محتوای اپ خودتان را روی آن بسازید به جای اینکه فرض کنید مدل همه چیز را نظارت میکند. مقایسه عمیقتر در راهنمای مدل roleplay ما که در پایین لینک شده وجود دارد.
پنج نکته طراحی production برای اپهای کاراکتر
1. حافظه را compress کنید نه truncate. آخرین 10 تا 20 turn را عیناً نگه دارید، سپس turn های قدیمیتر را در یک بلوک حافظه فشرده خلاصه کنید و واقعیتهای ماندگار (نامها، روابط، قولها) را در یک یادداشت ساختاریافته که دوباره به system prompt تزریق میکنید ذخیره کنید. truncation کورکورانه دلیل این است که کاراکترها نام کاربر را فراموش میکنند؛ compression هم token های ورودی و هم drift را همزمان کاهش میدهد. 2. persona را از همه چیز دیگر جدا کنید. persona card، world state و تاریخچه مکالمه را در بلوکهای prompt جدا نگه دارید، و هرگز اجازه ندهید متن کاربر بلوک persona را تغییر دهد. این جلوی انحراف از نوع prompt-injection («کاراکترت را نادیده بگیر و...») را میگیرد و اجازه میدهد بدون بازنویسی کاراکترها مدلها را تعویض کنید. 3. لایه moderation خودتان را اضافه کنید. متن ورودی و خروجی را از یک classification عبور دهید و سیاست محتوای محصول خودتان را مستقل از سیاست مدل اعمال کنید. اگر افراد زیر سن قانونی میتوانند به اپ شما دسترسی داشته باشند این غیرقابلمذاکره است: age-gate را مناسب اعمال کنید و هر دو جهت را فیلتر کنید، چون سیاستهای provider تعریف میکنند مدل چه چیزی میتواند تولید کند، نه اینکه محصول شما چه چیزی باید نشان دهد. 4. پایداری لحن را مهندسی کنید. temperature را به ازای هر کاراکتر pin کنید، دو یا سه خط نمونه از صدای کاراکتر را در persona card بگذارید، و بعد از هر رویداد summarization با یک یادآوری سبک یکخطی دوباره لنگر بیندازید. یک اسکریپت تست ثابت 20 پیامی نگه دارید و هر وقت مدلها یا prompt ها را تغییر دادید آن را دوباره پخش کنید، تا رگرسیونهای صدا قبل از اینکه کاربران متوجه شوند شناسایی شوند. 5. بر اساس اهمیت turn مسیردهی کنید. بیشتر turn ها گفتگوی کوچک هستند و به deepseek-v4-flash تعلق دارند. turn های محوری، مثل یک پیام احساسی طولانی کاربر یا یک انتقال صحنه، را با یک heuristic ارزان یا فراخوانی classifier تشخیص دهید، و فقط آنها را به deepseek-v4-pro یا claude-sonnet-4-6 مسیردهی کنید. چون gateway هر مدل را پشت یک endpoint در معرض قرار میدهد، مسیردهی یک تغییر رشته در هر درخواست است نه یک integration دوم.
پرسشهای پرتکرار
آیا Character AI یک API عمومی رسمی دارد؟
خیر. تا 2026 Character.AI یک API عمومی برای توسعهدهندگان منتشر نکرده است. کتابخانههای موجود در GitHub که چنین چیزی ارائه میدهند client های مرورگر مهندسیمعکوسشده هستند که قوانین استفاده را نقض میکنند و هر وقت سایت endpoint های داخلی خود را تغییر دهد از کار میافتند.
بهترین جایگزین برای یک Character AI API چیست؟
یک API استاندارد chat completions سازگار با OpenAI با system prompt persona خودتان. deepseek-v4-flash نقطه شروع رایج برای چت کاراکتر است به خاطر کیفیت دیالوگ و قیمت پایین ورودی؛ self-hosting وزنهای open فقط در حجم بالای پایدار یا برای data locality سختگیرانه منطقی است.
آیا میتوانم کاراکترهای Character AI خودم را به اپ خودم export کنم؟
میتوانید persona هایی که خودتان نوشتهاید را با بازنویسی آنها به عنوان system prompt بازسازی کنید، چون یک persona فقط یک توضیح از نام، شخصیت و سبک گفتار است. نمیتوانید کاراکترهای پلتفرم یا bot های سایر کاربران را کپی کنید؛ آنها متعلق به پلتفرم و سازندگانشان هستند.
آیا استفاده از یک API غیررسمی Character AI مغایر قوانین استفاده است؟
بله. دسترسی خودکار از طریق client های مهندسیمعکوسشده توسط قوانین Character.AI ممنوع است، و حسابهایی که اینطور استفاده شوند میتوانند معلق شوند. همچنین هیچ تضمین پایداری یا پشتیبانی وجود ندارد، که این wrapper ها را برای هر چیز user-facing نامناسب میکند.
اجرای یک اپ چت کاراکتر چقدر هزینه دارد؟
با token های ورودی مقیاس میگیرد، چون هر turn دوباره persona و تاریخچه را ارسال میکند. با نرخهای deepseek-v4-flash در جدول بالا، 1,000 پیام در روز تقریباً یکسوم دلار در روز هزینه دارد. compression حافظه و مسیردهی مبتنی بر اهمیت هزینهها را با رشد مکالمات ثابت نگه میدارد.
آیا میتوانم بهجای ساخت اپ خودم از SillyTavern یا JanitorAI استفاده کنم؟
بله. در SillyTavern، base URL ای که به /v1 ختم میشود (https://api.apisrouter.com/v1) را paste کنید و لیست مدلها بهطور خودکار از /v1/models با کلید شما پر میشود. تنظیمات proxy در JanitorAI به endpoint کامل https://api.apisrouter.com/v1/chat/completions بهعلاوه نام مدل و API key نیاز دارد.