تلگرام در حال آماده‌سازی ربات @agent است که به آن می‌توان کلید API شخصی خود را از سرویس‌های هوش مصنوعی مانند Claude, ChatGPT, Gemini, Grok یا OpenRouter متصل کرد. صفحه اتصال این ربات در بیلد‌های بتای تلگرام برای macOS 13.1.0 صبح روز ۲۳ اکتبر ظاهر شد و بدون تغییر تا بیلد ۲۸۳۳۹۲ مورخ ۲۷ اکتبر باقی ماند. بر اساس طرح API در نسخه بتا، کلید API روی سرورهای تلگرام باقی می‌ماند: سرور فقط چهار کاراکتر آخر کلید و تاریخ اتصال را به کلاینت بازمی‌گرداند. این قابلیت برای کسانی است که قبلاً اشتراک یکی از این ارائه‌دهندگان (AI providers) را خریداری کرده‌اند. در سرور اصلی، لیست ربات‌های عامل (agent bots) خالی است: کلید agent_bot_ids تا ساعت ۲۱:۲۱ UTC روز ۲۲ اکتبر فقط در پیکربندی سرور تست تلگرام ظاهر شد و تا ۲۶ اکتبر در سرور اصلی وجود نداشت. ویدئویی در بحث‌ها، گفتگوی فعال با @agent را در سرور تست نشان می‌دهد.

محتویات بیلد

نسخه بتای macOS از طریق فید به‌روزرسانی mac-updates.telegram.org توزیع می‌شود و هر بیلد در آن یک فایل zip حاوی برنامه است. در نسخه ۱۳.۱.۰.۲۸۳۳۵۹ مورخ ۲۱ اکتبر، هیچ اثری از عامل (agent) نیست. این قابلیت در نسخه ۱۳.۱.۰.۲۸۳۳۶۲ که صبح ۲۳ اکتبر منتشر شد، ظاهر گشت و به همین شکل در نسخه‌های ۱۳.۱.۰.۲۸۳۳۹۱ مورخ ۲۶ اکتبر و ۱۳.۱.۰.۲۸۳۳۹۲ مورخ ۲۷ اکتبر نیز موجود است.

متون صفحه جدید به شرح زیر است:

  • «Use the API key from an AI service you have already purchased to set up your own AI chatbot» — کلید API از یک سرویس هوش مصنوعی که قبلاً خریداری کرده‌اید، به چت‌بات شخصی شما تبدیل می‌شود.
  • «Select the AI provider you have an account with» — ارائه‌دهنده‌ای که در آن حساب کاربری دارید، انتخاب می‌شود.
  • «Add Your AI API Key»، «Enter your API key» و راهنمایی «Get your API key or API token in your AI provider's settings»: کلید از تنظیمات خود ارائه‌دهنده گرفته می‌شود.
  • «This chatbot works only if you have an active subscription for an AI service» — بدون اشتراک فعال در ارائه‌دهنده، ربات کار نمی‌کند.
  • «Add Another Provider» و «Right-click a provider to delete it» — می‌توان چندین ارائه‌دهنده را متصل کرد و آن‌ها را یکی‌یکی حذف نمود.
  • «You can reconnect this provider with an API key later» — ارائه‌دهنده قطع‌شده را می‌توان بعداً با یک کلید جدید بازگرداند.
  • «Could not connect. Try again.» و «The provider is unavailable. Try again.» — پیام‌هایی برای اتصال ناموفق.
  • «You can now use @agent» — پیام نهایی پس از اتصال.

پنج ارائه‌دهنده در کد وجود دارد: AgentProviderClaude, AgentProviderChatGPT, AgentProviderGemini, AgentProviderGrok و AgentProviderOpenRouter. یکی از آن‌ها دارای برچسب «Hundreds of models» است. OpenRouter یک تجمیع‌کننده است که با یک کلید واحد، دسترسی به مدل‌های شرکت‌های مختلف را فراهم می‌کند و این برچسب، به احتمال زیاد، مربوط به آن است.

آنچه سرور ذخیره می‌کند

در طرح MTProto که در بیلد جاسازی شده است، چهار نوع جدید و یک به‌روزرسانی ظاهر شده‌اند. فیلدهای آن‌ها به شرح زیر است:

نوعفیلدهامعنی
agentProvidervendor, keyUrl, iconEmojiId, modelsSearchableتوضیحات ارائه‌دهنده: کیست، لینک به صفحه کلیدها، آیکون، آیا مدل‌های آن قابل جستجو هستند
providerKeyprovider, keyLast4, dateConnectedکلید متصل‌شده: به کدام ارائه‌دهنده، چهار کاراکتر آخر، تاریخ اتصال
settingsactiveProviderکدام یک از ارائه‌دهندگان متصل‌شده در حال حاضر مسئول @agent است
providers / providersNotModified—لیست ارائه‌دهندگان از سرور
updateAgentSettings—با توجه به نام، به‌روزرسانی که سرور هنگام تغییر تنظیمات ارسال می‌کند

جفت «لیست و NotModified» در API تلگرام به لیستی اشاره دارد که کلاینت از سرور درخواست می‌کند و آن را بر اساس هش کش می‌کند، مانند تم‌ها (account.themes/account.themesNotModified) یا والپیپرها. بنابراین، لیست ارائه‌دهندگان همراه با آیکون‌ها و لینک‌های صفحات کلید از سرور می‌آید و می‌تواند بدون نیاز به بیلد جدید، به‌روز شود. آدرس صفحات کلید در برنامه وجود ندارد؛ یک تکه رشته «Get your API key in [» وجود دارد که، با توجه به فیلد keyUrl، لینک از سرور در آن قرار می‌گیرد.

کلید به طور کامل در توضیحات اتصال ذخیره نمی‌شود — فقط keyLast4. خطاها در قالبی که سرور تلگرام به درخواست‌ها پاسخ می‌دهد، ثبت شده‌اند: AGENT_KEY_INVALID, AGENT_KEY_MISSING, AGENT_NOT_AVAILABLE, AGENT_PROVIDER_UNAVAILABLE. با توجه به طرح، کلید توسط سرور تلگرام بررسی می‌شود و به احتمال زیاد، پس از اتصال نیز روی همان سرور باقی می‌ماند. اینکه آیا خود درخواست‌ها به مدل نیز از طریق همان سرور انجام می‌شوند، از روی طرح مشخص نیست. آدرس‌های API Claude, OpenAI, Google, xAI یا OpenRouter در بیلد وجود ندارد، بنابراین برنامه به احتمال زیاد مستقیماً با ارائه‌دهنده ارتباط برقرار نمی‌کند. به‌روزرسانی updateAgentSettings، با توجه به نام آن، برای این است که تغییر ارائه‌دهنده فعال در یک دستگاه به دستگاه‌های دیگر نیز برسد.

محل قرارگیری صفحه در کلاینت

رشته اتصال AgentConnectRowItem نام دارد و در ماژول PeerInfoUI قرار دارد که صفحات پروفایل کاربران، ربات‌ها و کانال‌ها را ترسیم می‌کند. در کنار آن، AgentProfileRow, AgentConnections و سرویس TelegramAgentService قرار دارند. در توضیحات پروفایل، یک نشانگر isAgent ظاهر شده است و در دکمه پروفایل، در کنار پرچم launchApp که برای راه‌اندازی مینی‌اپلیکیشن استفاده می‌شود، پرچم agentSetup نیز وجود دارد. به نظر می‌رسد که تنظیمات از طریق یک دکمه در صفحه خود ربات عامل باز می‌شود و نه از تنظیمات عمومی برنامه، اما این فقط یک برداشت بر اساس نام‌ها است.

نحوه گفتگو با @agent پس از اتصال، در بیلد مشخص نیست. در بحث‌ها ویدئویی نشان داده می‌شود که مدل در یک گفتگوی جداگانه با @agent در سرور تست پاسخ می‌دهد.

آنچه در سرور تست وجود دارد

تا ساعت ۲۱:۲۱ UTC روز ۲۲ اکتبر، در پاسخ help.getAppConfig سرور تست، کلید agent_bot_ids با دو مقدار ۵۰00448925 و ۲۲۰۲۹۳۱۰۱۴ ظاهر شد؛ در اسنپ‌شات قبلی فایل، مورخ ۲۰ اکتبر ۱۹:۰۹ UTC، این کلید وجود نداشت. تا ۲۶ اکتبر تغییری نکرد. در پیکربندی سرور اصلی چنین کلیدی تا ۲۶ اکتبر وجود ندارد. سرور تست تلگرام یک محیط جداگانه با حساب‌های کاربری خاص خود است، بنابراین با این شناسه‌ها نمی‌توان فهمید که این ربات‌ها در تلگرام عادی چه ربات‌هایی هستند.

در همان پیکربندی و در سرور اصلی، از ۲۰ اکتبر bot_allowed_suffixes وجود دارد — پسوندهای agent, ai, app, game و gay که با آن‌ها ربات می‌تواند نام کاربری دوم را دریافت کند. ربات‌های از نوع «…agent» و @agent دو چیز متفاوت هستند: پسوند برای هر صاحب رباتی با Premium در دسترس است، در حالی که @agent یک حساب کاربری خاص است.

نام کاربری @agent اشغال شده است: در حراج Fragment در ۲۷ نوامبر ۲۰۲۲ به قیمت ۷۰,۰۰۰ TON فروخته شد، صفحه t.me/agent تا ۲۷ اکتبر خالی است. اینکه آیا اشاره به @agent در نسخه بتا با این حساب کاربری مرتبط است، از داده‌های عمومی مشخص نیست.

جایی که این قابلیت هنوز وجود ندارد

تا ۲۷ اکتبر، عامل (agent) نه در طرح عمومی API — نه در api.tl Telegram Desktop (لایه ۲۳۲) و نه در td_api.tl TDLib — و نه در کد منبع باز کلاینت‌ها وجود ندارد. در Info.plist مخزن telegram-macos که در ۲۳ اکتبر منتشر شد، بیلد ۲۸۳۳۵۷ است که پنج شماره قبل از بیلدی است که عامل در آن ظاهر شد؛ فایل‌های عامل در مخزن وجود ندارد. کد مشترک با iOS در Telegram-iOS نیز آن را شامل نمی‌شود، اگرچه در بتای macOS خطاهای AGENT_* دقیقاً در بخش مشترک، TelegramCore، قرار دارند.

در همان نسخه‌های بتای macOS، کار بر روی ویجت‌های پیام‌ها که به ربات می‌نویسند در حال انجام است؛ آن‌ها نیز، مانند عامل، هنوز نه در طرح عمومی و نه در Bot API وجود ندارند.

تفاوت این با هوش مصنوعی فعلی در تلگرام

تلگرام در حال حاضر توابع هوش مصنوعی خود را برای متن دارد: در پیکربندی سرور اصلی پارامترهای aicompose_tone_* قرار دارند — تعداد نمونه‌های لحن، طول نام و پرامپت آن، و محدودیت لحن‌های ذخیره‌شده.