কম্পিউটার টিউটোরিয়াল

রেডিস ব্যবহার করে এআই এজেন্টদের জন্য একটি বিদ্যুত-দ্রুত ইন-মেমরি ফাইল সিস্টেম ডিজাইন করা

কোডেক্স বা ক্লড কোডের মতো এআই এজেন্ট স্বাভাবিকভাবেই ব্যাশ কমান্ড চালানোর ক্ষেত্রে অত্যন্ত ভালো . ফাইল সিস্টেমের মাধ্যমে অনুসন্ধান করা, গ্রেপ করা, শেলের মাধ্যমে প্রসঙ্গ পাওয়া।

তাই আমি চেষ্টা করতে চেয়েছিলাম:একটি AI এজেন্ট পুরো ফাইল সিস্টেমটি একটি ডিস্কের পরিবর্তে রেডিসে বাস করলে কী হবে? যদি AI এজেন্টের কাছে মনে হয় যে এটি অন্য কোনো ফাইলসিস্টেম ব্যবহার করছে, কিন্তু আসলে এটি একটি দ্রুত ইন-মেমরি স্টোর?

এখানে আমি এটি কিভাবে কাজ করতে চেয়েছিলাম 👇

রেডিস ব্যবহার করে এআই এজেন্টদের জন্য একটি বিদ্যুত-দ্রুত ইন-মেমরি ফাইল সিস্টেম ডিজাইন করা

যখন এজেন্ট একটি grep কমান্ড চালায় (যেটিতে তারা সবাই ব্যতিক্রমী), আমরা Vercel এর just-bash ব্যবহার করে এটিকে আটকাই লাইব্রেরি এবং এটি একটি Redis অনুসন্ধান ক্যোয়ারীতে অনুবাদ করুন।

এইভাবে, শুধুমাত্র-পঠন অ্যাক্সেসের জন্য আমাদের কোনো স্যান্ডবক্সের প্রয়োজন হবে না এবং (তত্ত্বগতভাবে) এটি অনেক দ্রুত হওয়া উচিত। . এবং দেখা যাচ্ছে মিন্টলিফাই ইতিমধ্যেই এর মতো কিছু করেছে৷

ধারণা

এটি কাজ করতে পারে কিনা তা দেখার জন্য, আমি যুক্তিটিকে তিনটি ভাগে বিভক্ত করেছি

  1. প্রতিটি ফাইল একটি Redis JSON নথি . আমরা পাথ, বিষয়বস্তু, আকার, টাইমস্ট্যাম্প, সবই এক কী-এর অধীনে সংরক্ষণ করি।
  2. একটি ম্যানিফেস্ট ডিরেক্টরি ট্রি ট্র্যাক করে . একটি রেডিস কী পুরো ফোল্ডার কাঠামোকে ধরে রাখে তাই ls এবং tree কখনই স্ক্যান করতে হবে না।
  3. গ্রেপিংয়ের জন্য পুনরায় অনুসন্ধান করুন . এইভাবে grep একটি মিল খুঁজে পেতে প্রতিটি ফাইল পড়তে হবে না।

আর এটাই! এই খুব কম জিনিসের জায়গায়, আমরা একটি নিয়মিত (শুধু-পঠনযোগ্য) ফাইল সিস্টেমের সম্পূর্ণ সমতার খুব কাছাকাছি পেতে পারি, কিন্তু অনেক দ্রুত। আমি আপাতত রাইট বাস্তবায়ন না করার সিদ্ধান্ত নিয়েছি।

সবচেয়ে বড় চ্যালেঞ্জ:গ্রেপিং

cat এর মত কমান্ড অথবা ls বেশ সোজা। আমরা হয় একটি একক ফাইল সম্পূর্ণরূপে পড়ি বা আমরা একটি ডিরেক্টরি কাঠামো তালিকাভুক্ত করি, উভয়ই রেডিসের সাথে করা সহজ। sed -n '1,240p' এর মত কমান্ড একটু বেশি জটিল, কিন্তু আমরা সেগুলিকে সাজানো সেট ব্যবহার করে কাজ করতে পারি৷

গ্রেপিং একটু ভিন্ন। একটি সাধারণ grep -R "oauth" /workspace সেই ডিরেক্টরির অধীনে প্রতিটি ফাইল পড়তে হবে। একটি ভার্চুয়াল ফাইল-সিস্টেমে এর অর্থ হল শব্দটি আছে কিনা তা পরীক্ষা করার জন্য Redis থেকে প্রতিটি নথি টেনে বের করা। এটি সত্যিই ধীর এবং ব্যয়বহুল৷

কিন্তু আমরা সম্প্রতি Upstash Redis সার্চ চালু করেছি, একটি মরিচা-ভিত্তিক, অত্যন্ত দ্রুত এবং কার্যকর উপায় Redis ডেটার মাধ্যমে অনুসন্ধান করার। Redis অনুসন্ধানের মাধ্যমে, আমরা grep কে আটকাতে পারি এটি চালানোর আগে, এটিকে একটি ক্যোয়ারীতে অনুবাদ করুন এবং ফাইল আনয়ন না করে দ্রুত ফলাফল পান৷

একটি অনুসন্ধান ক্যোয়ারী এইরকম কিছু দেখায়:

import { Redis } from "@upstash/redis";
 
const redis = new Redis.fromEnv();
const index = redis.search.index({ name: "vfs" });
 
const matches = await index.query({
 filter: {
 $must: [
 { workspaceId: "demo" },
 { kind: "file" },
 { content: { $phrase: "oauth" } },
 ],
 },
 select: { path: true },
});

এজেন্ট এখনও একই আউটপুট দেখতে পায় যে এটি একটি সাধারণ শেল থেকে হবে।

একজন এজেন্টকে শেল দেওয়া

শেষ অংশটি এটিকে just-bash পর্যন্ত ওয়্যারিং করছে তাই একজন এজেন্ট এর বিরুদ্ধে কমান্ড চালাতে পারে। Mintlify কীভাবে তাদের সহকারীর ফাইল সিস্টেম তৈরি করেছে তা থেকে অনুপ্রাণিত হয়ে, আমরা /workspace এ একটি Redis-ব্যাকড fs অ্যাডাপ্টার মাউন্ট করি একটি MountableFs-এ :

import { InMemoryFs, MountableFs } from "just-bash";
 
const mountableFs = new MountableFs({ base: new InMemoryFs() });
mountableFs.mount("/workspace", redisFs); // redisFs talks to Upstash
 
const bash = new Bash({ fs: mountableFs, cwd: "/workspace" });

যখন এজেন্ট cat /workspace/src/index.ts চালায় , যে readFile কল সরাসরি রেডিসের মাধ্যমে যায়। grep আটকানো হয় এবং রিডিস অনুসন্ধানে পুনঃনির্দেশিত হয়৷

এজেন্টের দৃষ্টিকোণ থেকে এটি কেবল একটি শেল। ls , cat , grep , find , এটা সব কাজ করে. যখন আমরা এটিকে Vercel AI SDK-এ bash হিসেবে রাখি টুল, আমাদের একটি এজেন্ট আছে যেটি একটি কোডবেস অন্বেষণ করতে পারে যা সম্পূর্ণরূপে রেডিসে থাকে৷

আমি কিভাবে ধারণা পেলাম

এক জন্য, Mintlify থেকে মহান নিবন্ধ আমি উপরে লিঙ্ক. এবং দ্বিতীয়, বেশিরভাগ এজেন্ট স্যান্ডবক্স ভারী। আমরা একটি কন্টেইনার বুট করি, একটি ডিস্ক মাউন্ট করি এবং এজেন্ট একটি ফাইল বা হাজারটি স্পর্শ করুক না কেন তার সমস্ত খরচ পরিশোধ করি৷

Redis-এর সাথে একটি ভার্চুয়াল ফাইল সিস্টেম সবসময় চালু থাকে, বিশ্বব্যাপী প্রতিলিপি করা, টেকসই এবং সবচেয়ে ব্যয়বহুল অপারেশন (ফাইল জুড়ে সার্চ করা) হল একটি Redis সার্চ খুবই ভালো।

চিয়ার্স 🙌জোশ


  1. HTML DOM ফর্ম অ্যাকশন প্রপার্টি

  2. আইওএস-এ সুইফট থেকে এক্সটার্নাল হোস্টকে কীভাবে পিং করবেন?

  3. কিভাবে HTML5 ক্যানভাস ব্যবহার করে লাইন আঁকতে হয়?

  4. কিভাবে অ্যান্ড্রয়েডে ডিফল্ট ফোন MmsUserAgent পাবেন?