মূল কনটেন্টে যান
এআই টিউটোরিয়াল

AIrecall দিয়ে স্থায়ী AI এজেন্ট মেমোরি তৈরি করুন

AIrecall কীভাবে ইনস্টল করতে হয়, স্থায়ী লোকাল স্টোরেজ চালু করতে হয়, কথোপকথন ও দীর্ঘস্থায়ী তথ্য সংরক্ষণ করতে হয়, প্রাসঙ্গিক মেমোরি পুনরুদ্ধার করতে হয় এবং এর রিট্রিভারকে একটি এজেন্ট ফ্রেমওয়ার্কের সঙ্গে যুক্ত করতে হয় তা শিখুন। টিউটোরিয়ালে হাইব্রিড রিট্রিভাল, স্বয়ংক্রিয় সারসংক্ষেপ, ডিপ্লয়মেন্টের বিকল্প এবং সাধারণ সমস্যা সমাধানের ধাপও ব্যাখ্যা করা হয়েছে।

AIrecall দিয়ে স্থায়ী AI এজেন্ট মেমোরি তৈরি

AIrecall কী?

AIrecall হলো AI এজেন্টের জন্য একটি সরাসরি সংযুক্ত করা যায় এমন দীর্ঘমেয়াদি মেমরি স্তর। এটি সেশনগুলোর মধ্যে কার্যকর তথ্য সংরক্ষণ করে, ফলে কোনো এজেন্টকে শুধু তার বর্তমান কনটেক্সট উইন্ডারের ওপর নির্ভর করতে হয় না। প্রকল্পটিতে একটি Python SDK, একটি Go মেমরি সার্ভার, SQLite স্টোরেজ এবং একটি ইন-প্রসেস ভেক্টর ইনডেক্স একসঙ্গে কাজ করে।

AIrecall প্রম্পটকে নির্দিষ্ট ও সংক্ষিপ্ত রাখার জন্য তৈরি। প্রতিটি অনুরোধে সম্পূর্ণ ইন্টারঅ্যাকশন ইতিহাস যোগ করার পরিবর্তে, আপনার এজেন্ট বর্তমান টার্নের সঙ্গে সবচেয়ে প্রাসঙ্গিক মেমরিগুলো পুনরুদ্ধার করতে পারে।

মূল মেমরি ধরন ও বৈশিষ্ট্য

  • এপিসোডিক মেমরি: কথোপকথন, কার্যক্রম ও ফলাফলসহ ঘটনাগুলো ক্রমানুসারে সংরক্ষণ করে।
  • সেমান্টিক মেমরি: অতীতের এপিসোড থেকে সংক্ষেপিত স্থায়ী তথ্য ও পছন্দগুলো সংরক্ষণ করে।
  • হাইব্রিড রিট্রিভাল: এপিসোডিক ও সেমান্টিক মেমরিতে কীওয়ার্ড মিল এবং ভেক্টর সাদৃশ্য একত্র করে।
  • স্বয়ংক্রিয় সারসংক্ষেপ: পুরোনো এপিসোড পর্যায়ক্রমে সংক্ষিপ্ত করে এবং ইতিহাস শুধু মুছে না দিয়ে স্থায়ী তথ্য বের করে।
  • স্থায়ী স্থানীয় স্টোরেজ: ইন-প্রসেস ভেক্টর ইনডেক্সসহ SQLite ব্যবহার করে।
  • নমনীয় পরিচালনা: মেমরি সার্ভার স্থানীয়ভাবে বা সাইডকার হিসেবে চালানো যায়।

AIrecall কীভাবে কাজ করে

প্রতিটি টার্নে Python SDK একটি স্থানীয় কল বা gRPC-এর মাধ্যমে বর্তমান ক্যোয়ারি AIrecall Core-এ পাঠায়। Core কীওয়ার্ড ও ভেক্টর সাদৃশ্য ব্যবহার করে এপিসোডিক এবং সেমান্টিক মেমরিতে অনুসন্ধান চালায়, ফলাফল র‍্যাঙ্ক করে এবং এজেন্টের প্রম্পটে যোগ করার জন্য সবচেয়ে প্রাসঙ্গিক মেমরিগুলো ফেরত দেয়।

পেছনে একটি সারসংক্ষেপকারী পুরোনো এপিসোড প্রক্রিয়া করে। এটি স্থায়ী তথ্য সেমান্টিক মেমরিতে স্থানান্তর করে এবং বাকি ইতিহাস সংক্ষিপ্ত করে। ফলে দীর্ঘ সময় চলা এজেন্টগুলো সক্রিয় কনটেক্সট ক্রমাগত বড় না করেই কার্যকর জ্ঞান ধরে রাখতে পারে।

ইনস্টলেশন ও সেটআপ

Python SDK ইনস্টল করুন

আপনার Python এজেন্টে ইমপোর্ট করা প্যাকেজটি ইনস্টল করুন:

pip install airecall-sdk

স্থানীয় স্টোরেজ初始化 করুন

কমান্ড-লাইন ইন্টারফেসের মাধ্যমে একটি স্থানীয় SQLite-ভিত্তিক মেমরি স্টোর তৈরি করুন:

airecall init

এই সেটআপের মাধ্যমে আলাদা কোনো সার্ভিসের প্রয়োজন ছাড়াই আপনি সঙ্গে সঙ্গে মেমরি সংরক্ষণ ও পুনরুদ্ধার শুরু করতে পারবেন।

মেমরি সার্ভার ইনস্টল বা চালান

আপনি যদি Core মেমরি সার্ভারটি স্থানীয়ভাবে বা সাইডকার হিসেবে চালু রাখতে চান, সার্ভার এক্সট্রা ইনস্টল করুন:

pip install airecall-sdk[server]

এরপর সার্ভারটি স্বতন্ত্র প্রসেস হিসেবে চালাতে পারেন:

airecall serve

SDK নিজে শুধুমাত্র স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে। প্রকল্পের README অনুযায়ী, সার্ভার একটি pure-Go নির্ভরতা ব্যবহার করে।

মৌলিক ব্যবহার

একটি মেমরি ইনস্ট্যান্স তৈরি করুন

Memory ইমপোর্ট করে এজেন্টের জন্য একটি শনাক্তকারী নির্ধারণ করুন:

from airecall import Memory

memory = Memory(agent_id="support-bot")

agent_id দিয়ে সেই এজেন্টকে শনাক্ত করা হয়, যার মেমরি সংরক্ষণ ও পুনরুদ্ধার করা হচ্ছে। পরবর্তী সেশনগুলোতে একই মেমরি সংগ্রহ ব্যবহারের জন্য একই শনাক্তকারী ব্যবহার করুন।

একটি এপিসোডিক মেমরি সংরক্ষণ করুন

ইন্টারঅ্যাকশনের সময় ঘটে যাওয়া কোনো ঘটনা রেকর্ড করতে remember ব্যবহার করুন:

memory.remember(
    "User asked about refund policy for order ORD-9921, told 30-day window applies."
)

এটি একটি এপিসোডিক মেমরি, কারণ এতে একটি নির্দিষ্ট ঘটনা ও তার ফলাফল রেকর্ড করা হয়।

প্রাসঙ্গিক কনটেক্সট পুনরুদ্ধার করুন

পরবর্তী কোনো সেশনে বর্তমান প্রশ্নসহ recall কল করুন:

context = memory.recall(
    "what did we tell this user about refunds?"
)

AIrecall তার সংরক্ষিত মেমরিতে অনুসন্ধান চালিয়ে প্রাসঙ্গিক এপিসোডটি প্রাসঙ্গিকতার ভিত্তিতে র‍্যাঙ্ক করে ফেরত দেয়। এরপর আপনার অ্যাপ্লিকেশন মডেলে পাঠানো প্রম্পটে ফেরত পাওয়া কনটেক্সট যোগ করতে পারে।

একটি স্থায়ী তথ্য সংরক্ষণ করুন

একটি ঘটনার বাইরেও যে তথ্য কার্যকর থাকা উচিত, তা remember_fact দিয়ে স্পষ্টভাবে স্থায়ী করা যায়:

memory.remember_fact(
    key="preferred_contact",
    value="email, not phone"
)

এতে আরেকটি কালানুক্রমিক এপিসোড রেকর্ড করার পরিবর্তে একটি স্থায়ী পছন্দের জন্য সেমান্টিক মেমরি তৈরি হয়।

LangChain অ্যাডাপ্টার ব্যবহার

AIrecall-এ MemoryRetriever নামে একটি LangChain অ্যাডাপ্টার রয়েছে। রিট্রিভার তৈরি করতে বিদ্যমান Memory ইনস্ট্যান্সটি এতে ব্যবহার করুন:

from airecall import Memory
from airecall.adapters.langchain import MemoryRetriever

memory = Memory(agent_id="support-bot")
retriever = MemoryRetriever(memory)

README-তে অ্যাডাপ্টার তৈরির উদাহরণ দেখানো হয়েছে, তবে পরবর্তী চেইন বা রিট্রিভার কনফিগারেশন নির্দিষ্ট করা হয়নি। বৃহত্তর LangChain অ্যাপ্লিকেশনে তৈরি অবজেক্টটি একীভূত করার সময় অ্যাডাপ্টারের বর্তমান API অনুসরণ করুন।

ব্যবহারিক ইন্টিগ্রেশন প্যাটার্ন

  1. এজেন্টের জন্য একটি Memory ইনস্ট্যান্স তৈরি করুন।
  2. উত্তর তৈরি করার আগে ব্যবহারকারীর বর্তমান ক্যোয়ারি দিয়ে recall কল করুন।
  3. ফেরত পাওয়া প্রাসঙ্গিক মেমরিগুলো সহায়ক কনটেক্সট হিসেবে মডেল প্রম্পটে যোগ করুন।
  4. ইন্টারঅ্যাকশনের পরে গুরুত্বপূর্ণ ঘটনা, কার্যক্রম বা ফলাফল সংরক্ষণ করতে remember কল করুন।
  5. আপনার অ্যাপ্লিকেশন কোনো স্থায়ী পছন্দ বা তথ্য শনাক্ত করলে, তা স্পষ্টভাবে ধরে রাখতে remember_fact ব্যবহার করুন।

এই প্যাটার্নটি প্রতিটি প্রম্পটে সম্পূর্ণ ইতিহাস যোগ করার প্রয়োজন এড়ায়, পাশাপাশি প্রয়োজনের সময় এজেন্টকে আগের সিদ্ধান্ত ও ব্যবহারকারীর পছন্দে অ্যাক্সেস দেয়।

উন্নত পরামর্শ

ঘটনা ও স্থায়ী জ্ঞান আলাদা রাখুন

কোনো নির্দিষ্ট ইন্টারঅ্যাকশনে কী ঘটেছে, তা সংরক্ষণ করতে এপিসোডিক মেমরি ব্যবহার করুন। স্থায়ী তথ্য ও পছন্দের জন্য সেমান্টিক মেমরি ব্যবহার করুন। উদাহরণস্বরূপ, রিফান্ড নিয়ে আলোচনা একটি এপিসোডে রাখা উচিত, আর ব্যবহারকারীর ইমেইলে যোগাযোগের পছন্দ একটি স্থায়ী তথ্য।

এজেন্ট শনাক্তকারী সামঞ্জস্যপূর্ণ রাখুন

যেসব সেশনে মেমোরি শেয়ার করা প্রয়োজন, সেগুলোর জন্য একটি স্থিতিশীল agent_id বেছে নিন। শনাক্তকারী পরিবর্তন করলে অ্যাপ্লিকেশনের দৃষ্টিকোণ থেকে একটি ভিন্ন মেমোরি স্কোপ তৈরি হয়।

উপযুক্ত ডিপ্লয়মেন্ট মোড বেছে নিন

সাধারণ লোকাল ওয়ার্কফ্লোর জন্য airecall init দিয়ে SQLite-ভিত্তিক স্টোর ইনিশিয়ালাইজ করুন। ডেডিকেটেড মেমোরি প্রসেসের প্রয়োজন হলে সার্ভার এক্সট্রা ইনস্টল করে লোকালি বা সাইডকার হিসেবে airecall serve চালান।

ইনডেক্স প্রস্তুত হওয়ার জন্য অপেক্ষা করুন

প্রথম কুয়েরিতে RecallTimeout দেখা দিলে ভেক্টর ইনডেক্সটি এখনও প্রস্তুত হতে পারে। হেলথ এন্ডপয়েন্টে status: ready দেখানোর পর আবার চেষ্টা করুন।

নির্ভরযোগ্য স্টোরেজ পাথ ব্যবহার করুন

রিস্টার্টের পর মেমোরি অনুপস্থিত মনে হলে storage.backend পাথ পরীক্ষা করুন। একটি আপেক্ষিক পাথ সার্ভার প্রসেসের ওয়ার্কিং ডিরেক্টরির ভিত্তিতে নির্ধারিত হয়, তাই ভিন্ন ডিরেক্টরি থেকে সার্ভার চালু করলে এটি অন্য একটি স্টোর নির্দেশ করতে পারে। একই ওয়ার্কিং ডিরেক্টরি বা স্টোরেজ পাথ ব্যবহার করুন।

উপসংহার

প্রতিটি পুরোনো ইন্টারঅ্যাকশন প্রম্পটে রেখে দেওয়ার প্রয়োজন ছাড়াই AIrecall AI এজেন্টদের স্থায়ী এপিসোডিক ও সেমান্টিক মেমোরি দেয়। ছোট একটি Python API, SQLite-ভিত্তিক স্টোরেজ, হাইব্রিড রিট্রিভাল এবং স্বয়ংক্রিয় সারসংক্ষেপের মাধ্যমে এটি সেশনজুড়ে প্রাসঙ্গিক প্রসঙ্গ সংরক্ষণের একটি বাস্তবসম্মত উপায় প্রদান করে। airecall init দিয়ে শুরু করুন, remember দিয়ে এপিসোড রেকর্ড করুন, recall দিয়ে সেগুলো পুনরুদ্ধার করুন এবং স্থায়ী জ্ঞান সংরক্ষণ করতে remember_fact ব্যবহার করুন।