আমরা কীভাবে OWL তৈরি করেছি, আমাদের ChatGPT‑ভিত্তিক ব্রাউজার অ্যাটলাস-এর পেছনের নতুন আর্কিটেকচার
আমাদের নতুন প্রক্রিয়া আর্কিটেকচারের মধ্যে, যা আপনাকে ওয়েব ব্যবহারের একটি দ্রুততর, আরও চৌকশ উপায় প্রদান করে.
কেন রকেট, টেকনিক্যাল স্টাফের সদস্য এবং বেন গুজার, প্রধান প্রকৌশলী, ChatGPT অ্যাটলাস দ্বারা
গত সপ্তাহে, আমরা ChatGPT অ্যাটলাস চালু করেছি, যা আপনার জন্য ChatGPT দিয়ে ওয়েব ব্রাউজ করার একটি নতুন উপায়. একটি পূর্ণাঙ্গ বৈশিষ্ট্যযুক্ত ওয়েব ব্রাউজার হওয়ার পাশাপাশি, অ্যাটলাস ভবিষ্যতের এক ঝলক আনে: এমন একটি বিশ্ব যেখানে আপনি ইন্টারনেটে ChatGPT নিয়ে যেতে পারেন তাকে প্রশ্ন জিজ্ঞাসা করতে, পরামর্শ পেতে এবং আপনার জন্য কাজ সম্পন্ন করতে. এই পোস্টে, আমরা পণ্যের সবচেয়ে জটিল প্রকৌশলগত দিকগুলির একটি বিশ্লেষণ করেছি: কীভাবে আমরা ChatGPT‑কে একটি ব্রাউজারে রূপান্তর করেছি যা আপনার ব্যবহারের সাথে সাথে আরও কার্যকর হয়ে ওঠে.
ওয়েবের জন্য ChatGPT‑কে একটি সত্যিকারের কো-পাইলট বানানোর অর্থই হচ্ছে একটি ব্রাউজারের সম্পূর্ণ স্থাপত্যকে পুনর্ককল্পনা করা: অ্যাটলাসকে ক্রোমিয়াম রানটাইম থেকে আলাদা করা. এর মধ্যে ক্রোমিয়াম একীভূত করার একটি নতুন উপায় তৈরি করা যা আমাদের পণ্যের লক্ষ্য অর্জনে সহায়তা করে: তাৎক্ষণিক চালু হওয়া, আরও ট্যাব খোলার সাথে সাথে প্রতিক্রিয়াশীলতা এবং এজেন্টিক ব্যবহারের ক্ষেত্রে একটি শক্তিশালী ভিত্তি তৈরি করা.

ক্রোমিয়াম একটি প্রাকৃতিক নির্মাণ উপাদান ছিল. এটি একটি অত্যাধুনিক ওয়েব ইঞ্জিন প্রদান করে যার মধ্যে রয়েছে একটি শক্তিশালী নিরাপত্তা মডেল, প্রতিষ্ঠিত কর্মক্ষমতা প্রমাণপত্রাদি এবং অতুলনীয় ওয়েব কম্প্যাটিবিলিটি. অতিরিক্তভাবে, এটি একটি বিশ্বব্যাপী সম্প্রদায় দ্বারা বিকাশিত যা ক্রমাগত এটি উন্নত করে. এটি আধুনিক ডেস্কটপ ওয়েব ব্রাউজারের জন্য একটি সাধারণ পছন্দ.
আমাদের প্রতিভাবান ডিজাইন দলের আমাদের ব্যবহারকারীর অভিজ্ঞতার জন্য উচ্চাভিলাষী লক্ষ্য ছিল, যার মধ্যে রয়েছে সমৃদ্ধ অ্যানিমেশন এবং ভিজ্যুয়াল ইফেক্টস এজেন্ট মোডের মতো ফিচারের জন্য. এর জন্য আমাদের ইঞ্জিনিয়ারিং দলকে ওপেন সোর্স ক্রোমিয়াম ইউএক্সকে পুনরায় স্কিন করার পরিবর্তে আমাদের ইউআই (সুইফটইউআই, অ্যাপকিট এবং মেটাল) এর জন্য সবচেয়ে আধুনিক নেটিভ ফ্রেমওয়ার্কগুলি ব্যবহার করতে হয়েছিল. ফলস্বরূপ, অ্যাটলাসের ইউআই পুরো অ্যাপ্লিকেশন ইউএক্স-এর একটি বিস্তৃত পুনর্নির্মাণ.
আমাদের অন্যান্য পণ্যের লক্ষ্যও ছিল যেমন দ্রুত চালু হওয়ার সময় এবং পারফরম্যান্সের উপর প্রভাব না ফেলে শত শত ট্যাব সমর্থন করা. ক্রোমিয়াম আউট-অফ-দ্য-বক্সের সাহায্যে এই লক্ষ্যগুলি অর্জন করা চ্যালেঞ্জিং ছিল, কারণ এটি বুট সিকোয়েন্স, থ্রেডিং মডেল এবং ট্যাব মডেল সম্পর্কিত অনেক বিবরণে মতামতপ্রকাশ করে. আমরা এখানে উল্লেখযোগ্য পরিবর্তন আনার কথা বিবেচনা করেছি, কিন্তু আমরা আমাদের প্যাচগুলির সেটকে Chromium-এর জন্য লক্ষ্যযুক্ত রাখতে চেয়েছিলাম যাতে আমরা দ্রুত নতুন সংস্করণগুলি সংহত করতে পারি. আমাদের উন্নয়নের গতি সর্বাধিক ত্বরান্বিত করতে, আমাদের ক্রোমিয়াম রানটাইমকে একীভূত এবং চালানোর জন্য একটি ভিন্ন উপায় উদ্ভাবন করতে হবে.
আমাদের প্রযুক্তিগত বিনিয়োগের জন্য একটি লিটমাস পরীক্ষা ছিল যে এটি কেবল দ্রুত পরীক্ষা, পুনরাবৃত্তি এবং নতুন বৈশিষ্ট্যগুলির বিতরণ সক্ষম করবে না – এটি আমাদের OpenAI-এর প্রকৌশল সংস্কৃতির একটি মূল অংশ বজায় রাখতে সক্ষম করবে: প্রথম দিনেই শিপিং. প্রতিটি নতুন প্রকৌশলী তাদের প্রথম দিনের বিকেলে একটি ছোট পরিবর্তন করে এবং মার্জ করে. যদিও ক্রোমিয়াম চেক আউট এবং তৈরি করতে ঘণ্টার পর ঘণ্টা সময় নিতে পারে, তবুও আমাদের নিশ্চিত করতে হয়েছিল যে এটি সম্ভব.
এই চ্যালেঞ্জগুলির প্রতি আমাদের উত্তর ছিল একটি নতুন স্থাপত্য স্তর তৈরি করা, যাকে আমরা OWL: OpenAI-এর ওয়েব লেয়ার বলি. OWL হল আমাদের ক্রোমিয়ামের একীকরণ, যা মূল অ্যাটলাস অ্যাপ প্রক্রিয়ার বাইরে ক্রোমিয়ামের ব্রাউজার প্রক্রিয়া চালানোর সাথে জড়িত.
এটি এইভাবে ভাবুন: ক্রোমিয়াম ট্যাবগুলোকে পৃথক প্রক্রিয়ায় সরিয়ে ব্রাউজারগুলিতে বিপ্লব ঘটিয়েছে. আমরা মূল অ্যাপ্লিকেশন প্রক্রিয়া থেকে ক্রোমিয়ামকে বের করে একটি বিচ্ছিন্ন পরিষেবা স্তরে স্থানান্তরিত করে সেই ধারণাটিকে আরও এগিয়ে নিয়ে যাচ্ছি. এই পরিবর্তনের ফলে নানাবিধ সুবিধার সূচনা হয়:
- একটি সহজ, আধুনিক অ্যাপ: অ্যাটলাস প্রায় সম্পূর্ণরূপে SwiftUI এবং AppKit-এ নির্মিত. একটি ভাষা, একটি প্রযুক্তি স্ট্যাক, একটি পরিষ্কার কোডবেস.
- দ্রুত চালু হওয়া: ক্রোমিয়াম ব্যাকগ্রাউন্ডে অ্যাসিঙ্ক্রোনাসভাবে বুট হয়. অ্যাটলাস অপেক্ষা করে না — পিক্সেলগুলি প্রায় তাত্ক্ষণিকভাবে পর্দায় আঘাত করে.
- জাঙ্ক এবং ক্র্যাশ থেকে বিচ্ছিন্নতা: ক্রোমিয়াম একটি শক্তিশালী এবং জটিল ওয়েব ইঞ্জিন. যদি এর প্রধান থ্রেড ঝুলে যায়, অ্যাটলাস তা করে না. যদি এটি ক্র্যাশ করে, অ্যাটলাস সচল থাকে.
- কম মার্জের ঝামেলা: যেহেতু আমরা ক্রোমিয়াম ওপেন সোর্স ইউআইয়ের উপর ততটা নির্ভর করছি না, আপস্ট্রিম ক্রোমিয়ামের সাথে আমাদের পার্থক্য অনেক ছোট এবং এটি বজায় রাখা সহজ.
- দ্রুত পুনরাবৃত্তি: বেশিরভাগ ইঞ্জিনিয়ারদের কখনই স্থানীয়ভাবে ক্রোমিয়াম তৈরি করার প্রয়োজন হয় না. OWL অভ্যন্তরীণভাবে একটি পূর্বনির্মিত বাইনারি হিসেবে প্রেরিত হয়, তাই অ্যাটলাস বিল্ড করতে কয়েক মিনিট সময় লাগে, ঘণ্টা নয়.
কারণ আমাদের টিমের বেশিরভাগ ইঞ্জিনিয়ার নিয়মিতভাবে সোর্স থেকে ক্রোমিয়াম বিল্ড করেন না, তাই উন্নয়ন আরও দ্রুত হতে পারে—এমনকি নতুন সদস্যরাও তাদের প্রথম বিকেলে সহজ পরিবর্তনগুলি মার্জ করতে পারেন.
উচ্চ স্তরে, অ্যাটলাস ব্রাউজার হল OWL ক্লায়েন্ট, এবং ক্রোমিয়াম ব্রাউজার প্রক্রিয়া হল OWL হোস্ট. তারা আইপিসির মাধ্যমে যোগাযোগ করে, বিশেষত মোজো(একটি নতুন উইন্ডোতে খোলে), ক্রোমিয়াম-এর নিজস্ব বার্তা আদান-প্রদান পদ্ধতি. আমরা মোজো-এর জন্য কাস্টম Swift (এবং এমনকি টাইপস্ক্রিপ্ট) বাইন্ডিং লিখেছি, যাতে আমাদের Swift অ্যাপ সরাসরি হোস্ট-সাইড ইন্টারফেসগুলোকে কল করতে পারে.
OWL ক্লায়েন্ট লাইব্রেরির একটি সাধারণ পাবলিক Swift এপিআই আছে, যা হোস্টের পরিষেবা স্তর দ্বারা প্রকাশিত বেশ কয়েকটি মূল ধারণাকে বিমূর্ত করে
- সেশন: বিশ্বব্যাপী হোস্ট কনফিগার এবং নিয়ন্ত্রণ করুন
- প্রোফাইল: নির্দিষ্ট ব্যবহারকারী প্রোফাইলের জন্য ব্রাউজার স্টেট পরিচালনা করা
- ওয়েবভিউ: পৃথক ওয়েব কনটেন্ট নিয়ন্ত্রণ এবং এম্বেড করুন (যেমন রেন্ডার, ইনপুট, নেভিগেট, জুম, ইত্যাদি.)
- WebContentRenderer: ইনপুট ইভেন্টগুলি ক্রোমিয়াম-এর রেন্ডারিং পাইপলাইনে ফরোয়ার্ড করে এবং রেন্ডারার থেকে প্রতিক্রিয়া গ্রহণ করে
- LayerHost/ক্লায়েন্ট: ইউআই এবং ক্রোমিয়াম-এর মধ্যে কম্পোজিটিং তথ্য বিনিময় করে
বুকমার্ক, ডাউনলোড, এক্সটেনশন এবং অটোফিলের মতো উচ্চ-স্তরের বৈশিষ্ট্য পরিচালনার জন্য পরিষেবা এন্ডপয়েন্টগুলির বিস্তৃত পরিসরও রয়েছে.
WebViews, যা ক্লায়েন্ট অ্যাপে একটি পারস্পরিক একচেটিয়া উপস্থাপনা স্থান ভাগ করে, একটি ভাগ করা কম্পোজিটিং কনটেইনারে ঢোকানো এবং বের করা হয়. উদাহরণস্বরূপ, একটি ব্রাউজার উইন্ডোতে প্রায়শই একটি একক ভাগ করা কনটেইনার দৃশ্যমান থাকে এবং ট্যাব স্ট্রিপে একটি ট্যাব নির্বাচন করলে সেই ট্যাবের ওয়েবভিউ ধারকটিতে স্থানান্তরিত হয়. ক্রোমিয়ামের ক্ষেত্রে, এই ধারকটি একটি gfx::AcceleratedWidget এর সাথে মিলে যায় যা শেষ পর্যন্ত একটি CALayer দ্বারা সমর্থিত. আমরা সেই লেয়ারের কনটেক্সট আইডি ক্লায়েন্টের কাছে প্রকাশ করি, যেখানে একটি NSView ব্যক্তিগত CALayerHost API ব্যবহার করে এটি এম্বেড করে.
<select> ড্রপডাউন বা কালার পিকারের মতো বিশেষ কেসগুলি, যা ক্রোমিয়াম পৃথক পপআপ উইজেটে রেন্ডার করে, একই পদ্ধতি ব্যবহার করে. তাদের কাছে content::WebContents নেই, কিন্তু তাদের কাছে আছে content::RenderWidgetHostView এবং তাদের নিজস্ব gfx::AcceleratedWidget, তাই একই ডেলিগেটেড রেন্ডারিং মডেল প্রযোজ্য.
OWL অভ্যন্তরীণভাবে ভিউর জ্যামিতি ক্রোমিয়াম সাইডের সাথে সিঙ্ক করে রাখে, যাতে জিপিইউ কম্পোজিটরটি সেই অনুযায়ী আপডেট হতে পারে এবং সর্বদা সঠিক আকার এবং ডিভাইস স্কেলের স্তরের বিষয়বস্তু তৈরি করতে পারে.
আমরা ক্রোমিয়ামের নিজস্ব নেটিভ Views ইউআইয়ের উপাদানগুলিকে নির্বাচন করে অ্যাটলাসে প্রজেক্ট করার জন্যও এই কৌশলটি পুনর্ব্যব্যবহার করি (এটি SwiftUI-এ স্ক্র্যাচ থেকে প্রতিস্থাপন তৈরি না করেই দ্রুত অনুমতি প্রম্পটের মতো বৈশিষ্ট্যগুলির বুটস্ট্র্যাপিংয়ের জন্যও উপকারী). এই পদ্ধতিটি ম্যাকওএস-এ ইনস্টলযোগ্য ওয়েব অ্যাপের জন্য ক্রোমিয়াম-এর বিদ্যমান অবকাঠামো থেকে ব্যাপকভাবে ধার করে.
ক্রোমিয়াম ইউআই প্ল্যাটফর্ম ইভেন্টগুলি (যেমন macOS NSEvents) রেন্ডারারদের কাছে ফরোয়ার্ড করার আগে Blink-এর WebInputEvent মডেলে অনুবাদ করে. কিন্তু যেহেতু OWL একটি লুকানো প্রক্রিয়ায় ক্রোমিয়াম চালায়, আমরা Swift ক্লায়েন্ট লাইব্রেরির মধ্যে নিজেরাই সেই অনুবাদ করি এবং ইতোমধ্যে অনূদিত ইভেন্টগুলি ক্রোমিয়ামে পাঠাই.
সেখান থেকে, তারা একই জীবনচক্র অনুসরণ করে যা প্রকৃত ইনপুট ইভেন্টগুলি সাধারণত ওয়েব কনটেন্টের জন্য অনুসরণ করে. এর মধ্যে রয়েছে ইভেন্টগুলি ক্লায়েন্টের কাছে ফেরৎ পাঠানো যখনই কোনও পৃষ্ঠা ইঙ্গিত দেয় যে এটি ইভেন্টটি পরিচালনা করেনি. যখন এটি ঘটে, আমরা একটি NSEvent পুনঃসংশ্লেষণ করি এবং বাকি অ্যাপকে ইনপুট পরিচালনার সুযোগ দিই.
অ্যাটলাসের এজেন্টিক ব্রাউজিং বৈশিষ্ট্যটি রেন্ডারিং, ইনপুট ইভেন্ট ফরওয়ার্ডিং এবং ডেটা স্টোরেজের জন্য আমাদের পদ্ধতির জন্য কিছু অনন্য চ্যালেঞ্জ সৃষ্টি করে.
আমাদের কম্পিউটার ব্যবহারের মডেল ইনপুট হিসেবে স্ক্রিনের একটি একক চিত্র প্রত্যাশা করে. কিন্তু কিছু UI উপাদান, যেমন <select> ড্রপডাউন, ট্যাবের সীমার বাইরে পৃথক উইন্ডোতে রেন্ডার হয়. এজেন্ট মোডে, আমরা সেই পপআপগুলোকে সঠিক সমন্বয়ে মূল পৃষ্ঠার চিত্রে পুনঃসংকলন করি যাতে মডেল একটি ফ্রেমে পুরো প্রসঙ্গ দেখতে পারে.
ইনপুটের জন্য, আমরা একই নীতি প্রয়োগ করি: এজেন্ট-উৎপন্ন ইভেন্টগুলি সরাসরি রেন্ডারারে রাউট করা হয়, কখনোই প্রিভিলেজড ব্রাউজার স্তরের মাধ্যমে নয়. এটি স্বয়ংক্রিয় নিয়ন্ত্রণের অধীনে থাকলেও স্যান্ডবক্সের সীমানা সংরক্ষণ করে. উদাহরণস্বরূপ, আমরা চাই না যে এই শ্রেণির ইভেন্টগুলি এমন কীবোর্ড শর্টকাট তৈরি করুক যা ব্রাউজারকে প্রদর্শিত ওয়েব কনটেন্ট সম্পর্কিত নয় এমন কাজ করতে বাধ্য করে.
এজেন্ট ব্রাউজিং একটি অস্থায়ী "লগ-আউট হওয়া" প্রসঙ্গে চলতে পারে. ব্যবহারকারীর বিদ্যমান ইনকগনিটো প্রোফাইল শেয়ার করার পরিবর্তে, যা স্টেট ফাঁস করতে পারে, আমরা বিচ্ছিন্ন, ইন-মেমরি স্টোর তৈরি করতে ক্রোমিয়াম-এর StoragePartition অবকাঠামো ব্যবহার করি. প্রতিটি এজেন্ট সেশন নতুনভাবে শুরু হয় এবং এটি শেষ হলে সমস্ত কুকি এবং সাইটের ডেটা মুছে ফেলা হয়. আপনি একাধিক "লগ-আউট হওয়া" এজেন্ট সেশন চালাতে পারেন, প্রতিটি নিজস্ব ব্রাউজার ট্যাবে এবং প্রতিটি অন্যদের থেকে সম্পূর্ণরূপে বিচ্ছিন্ন.
বিশ্বব্যাপী ক্রোমিয়াম সম্প্রদায় এবং আধুনিক ওয়েবের ভিত্তি তৈরিতে তাদের অবিশ্বাস্য অবদান ছাড়া এর কোনোটিই সম্ভব হবে না. OWL একটি নতুন উপায়ে সেই ভিত্তির উপর গড়ে তোলে: অ্যাপ্লিকেশন থেকে ইঞ্জিনকে বিচ্ছিন্ন করা, আধুনিক নেটিভ ফ্রেমওয়ার্কের সাথে একটি বিশ্বমানের ওয়েব প্ল্যাটফর্মের মিশ্রণ এবং একটি দ্রুত, আরও নমনীয় স্থাপত্যের উন্মোচন করা.
একটি ব্রাউজার কীভাবে ক্রোমিয়াম ধারণ করে তা পুনর্বিবেচনা করে আমরা নতুন ধরনের অভিজ্ঞতার জন্য স্থান তৈরি করছি: মসৃণতর শুরু হওয়া, সমৃদ্ধ ইউআই, বাকি অপারেটিং সিস্টেমের সাথে আরও ঘনিষ্ঠ সমন্বয় এবং একটি ডেভেলপমেন্ট লুপ যা চিন্তার গতিতে চলে. যদি এটি আপনার জন্য চ্যালেঞ্জের মতো শোনায়, তাহলে Atlas-এ সফটওয়্যার প্রকৌশলী, অ্যাটলাস, সফটওয়্যার ইঞ্জিনিয়ার, iOS এবং আরও কাজ করার জন্য আমাদের সুযোগগুলি দেখুন.
chatgpt.com/atlas (একটি নতুন উইন্ডোতে খোলে)এ অ্যাটলাস ব্যবহার করে দেখুন.
কৃতজ্ঞতা প্রকাশ
ড্যারিন ফিশার এবং ম্যারি শিনকে বিশেষ ধন্যবাদ, যারা এই পোস্টে অবদান রেখেছেন এবং পুরো OpenAI দল যারা অ্যাটলাস তৈরি করেছেন.


