OpenWebUI হল একটি ব্যাপক মিডিয়া প্ল্যাটফর্ম যেখানে AI টুলগুলির একটি স্যুট রয়েছে: OpenAI, Ollama, Automatic1111, ComfyUI, Whisper API, কাস্টম মডেল প্রশিক্ষণ, ChromaDB এর সাথে ল্যাংচেইন-ভিত্তিক RAG, হাইব্রিড BM25/ওয়েব অনুসন্ধান এবং আরও অনেক কিছু।
যদিও এই সমস্ত কিছু সময়ের জন্য উপলব্ধ, নথিভুক্ত এবং পাইথন প্রোগ্রামিং জ্ঞানের সাথে বাস্তবায়নযোগ্য, OpenWebUI বিস্তৃত কোডিং অভিজ্ঞতা ছাড়াই আকর্ষণীয় এবং দরকারী চ্যাটবট তৈরি করার একটি অনন্য সুযোগ প্রদান করে।
এই নিবন্ধে, আমরা একটি প্রযুক্তিগত সহায়তা চ্যাটবট তৈরির আমাদের যাত্রা ভাগ করব যা ব্যবহারকারীর প্রশ্নের উত্তর দিয়ে আমাদের ফ্রন্ট-লাইন টিমকে সহায়তা করার জন্য ডিজাইন করা হয়েছে (এবং অবশেষে আমাদের দলের অংশ হয়ে উঠবে)।
তাত্ক্ষণিক স্থাপনার সাথে GPU সার্ভার ভাড়া করুন বা পেশাদার-গ্রেড NVIDIA Tesla A100 / H100 80Gb বা A5000 / A4000 কার্ড সহ একটি কাস্টম কনফিগারেশন সহ একটি সার্ভার। গেমিং RTX4090 কার্ড সহ GPU সার্ভারগুলিও উপলব্ধ।
আমাদের কাছে MkDocs-এর জন্য উপাদান ব্যবহার করে নির্মিত ব্যবহারকারীর ডকুমেন্টেশন রয়েছে। এর ফলে মার্কডাউন ফরম্যাটিং সহ .md ফাইল রয়েছে এমন একটি ডিরেক্টরি কাঠামোতে পরিণত হয়। আমাদের কাছে llama3-8b-নির্দেশনা মডেল লোড সহ একটি স্থাপন করা OpenWebUI এবং Ollama সেটআপ রয়েছে।
প্রকল্পের লক্ষ্য:
আমাদের প্রাথমিক প্রচেষ্টা ছিল কেবলমাত্র আমাদের বিদ্যমান ডকুমেন্টেশনগুলিকে মূল মার্কডাউন বিন্যাসে লোড করা এবং কোনো পরিবর্তন ছাড়াই llama3 মডেলটি ব্যবহার করা। ফলাফল, এটি হালকাভাবে বলতে, হতাশাজনক ছিল:
প্রথম: আমাদের মার্কডাউন ফাইলগুলিতে বিভিন্ন উপাদান রয়েছে যেমন ইমেজ ট্যাগ, পাদটীকা, কোড ব্লক, বোল্ড এবং ইটালিক ফরম্যাটিং, অভ্যন্তরীণ এবং বাহ্যিক লিঙ্ক, আইকন এবং এমনকি " ** " বোতামগুলির জন্য নির্মাণ। প্রক্রিয়াকরণের জন্য ডকুমেন্টেশনকে খণ্ডে ভাঙ্গার সময় এই সমস্ত অতিরিক্ত "গোলমাল" সমস্যা তৈরি করে।
দ্বিতীয়: বাক্য-ট্রান্সফরমার/all-MiniLM-L6-v2 মডেল, যেটি OpenWebUI ডিফল্টরূপে 384-মাত্রিক ভেক্টর স্পেসে বাক্য এবং অনুচ্ছেদ উপস্থাপনের জন্য ব্যবহার করে (ক্লাস্টারিং এবং শব্দার্থিক অনুসন্ধানের মতো RAG কাজগুলির জন্য অপরিহার্য), প্রাথমিকভাবে ইংরেজিতে প্রশিক্ষিত। . আমরা আমাদের বটকে শেষ পর্যন্ত অন্যান্য ভাষাকেও সমর্থন করতে চাই।
তৃতীয়: যদিও llama3 একটি নির্দেশনা মডেল, এটি এখনও ব্যবহারকারীর প্রশ্নের উত্তর দেওয়ার উপর ফোকাস করার পরিবর্তে বিষয়বস্তুর বাইরের আলোচনায় পরিচালিত হতে পারে। একটি 70b মডেল আরও উপযুক্ত হতে পারে, তবে এটির জন্য 40GB ভিডিও মেমরি সহ একটি GPU প্রয়োজন, যেখানে llama3-8b শুধুমাত্র 8GB সহ একটি GPU-তে চলতে পারে।
যদিও তৃতীয় সমস্যাটি সম্ভাব্যভাবে একটি কাস্টম মডেল (ওপেনএআই পরিভাষায় এজেন্ট) তৈরি করে সমাধান করা যেতে পারে, প্রথম দুটির জন্য আরও উল্লেখযোগ্য সমাধান প্রয়োজন। আমরা এ পর্যন্ত যা নিয়ে এসেছি তা এখানে।
প্রথমত, আমরা ডকুমেন্টেশনটিকে আমাদের RAG (রিট্রিভাল অগমেন্টেড জেনারেশন) সিস্টেমে লোড করার জন্য উপযুক্ত বিন্যাসে রূপান্তর করব। আমরা এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করতে ai_text_generator নামে একটি শক্তিশালী ব্যাশ স্ক্রিপ্ট তৈরি করেছি।
স্ক্রিপ্টটি সমস্ত ডকুমেন্টেশন ডিরেক্টরি অতিক্রম করে এবং sed, awk এবং পার্লের মধ্যে রেগুলার এক্সপ্রেশন ব্যবহার করে মার্কডাউন মার্কআপ অপসারণ এবং প্রতিস্থাপন করতে যা RAG-এর প্রয়োজন নেই। অবশেষে, এটি প্রতিটি নথির শেষে https://hostkey.com/documentation এ হোস্ট করা মূল ডকুমেন্টেশনের একটি লিঙ্ক যোগ করে।
এই স্ক্রিপ্টটি ওপেনওয়েবইউআই-তে একটি RAG সিস্টেমের সাথে ব্যবহারের জন্য আপনার ডকুমেন্টেশনকে সাবধানতার সাথে প্রস্তুত করে। এখানে এর কর্মের একটি ধাপে ধাপে সংক্ষিপ্তসার দেওয়া হল:
স্ক্রিপ্ট চালানোর পরে, ai_data ডিরেক্টরিতে OpenWebUI এর RAG সিস্টেমে লোড করার জন্য প্রস্তুত ফাইলগুলির একটি সেট থাকবে।
এরপরে, আমাদের ডকুমেন্ট ভেক্টর ডাটাবেস এবং ওল্লামা এলএলএম-এর সাথে কাজ করার জন্য OpenWebUI-তে একটি নতুন মডেল যোগ করতে হবে। এই মডেলটিকে আরও নৈমিত্তিক, 'তুমি' (ты) টোন সমর্থন করা উচিত, শুধু ইংরেজিতে নয়। আমরা ভবিষ্যতে তুর্কি ভাষার মতো অন্যান্য ভাষার জন্য সমর্থন যোগ করার পরিকল্পনা করছি।
শুরু করতে, আমরা অ্যাডমিন প্যানেল - সেটিংস - ডকুমেন্টে যাব। এমবেডিং মডেল ক্ষেত্রে, আমরা বাক্য-ট্রান্সফরমার/all-MiniLM-L12-v2 নির্বাচন করব। আমরা এই তালিকা থেকে প্রস্তাবিত সমস্ত মডেল পরীক্ষা করেছি (https://www.sbert.net/docs/sentence_transformer/pretrained_models.html) এবং এটিকে সবচেয়ে উপযুক্ত বলে মনে হয়েছে।
আমরা এম্বেডিং মডেল ক্ষেত্রের পাশের ডাউনলোড আইকনে ক্লিক করে এটি ডাউনলোড এবং ইনস্টল করব।
এখনই, আমরা RAG প্যারামিটার সেট আপ করব:
• Top K = 10: এর মানে হল সিস্টেমটি প্রতিক্রিয়া তৈরি করার সময় শীর্ষ 10টি সবচেয়ে প্রাসঙ্গিক নথি বিবেচনা করবে৷
• খণ্ডের আকার = 1024: নথিগুলি প্রক্রিয়াকরণের জন্য 1024 টোকেনের খণ্ডে বিভক্ত করা হবে।
• খণ্ড ওভারল্যাপ = 100: পরপর খণ্ডগুলির মধ্যে একটি 100-টোকেন ওভারল্যাপ থাকবে।
এর পরে, আপনি ওয়ার্কস্পেস - ডকুমেন্টস বিভাগে যেতে পারেন এবং আমাদের ডকুমেন্টেশন আপলোড করতে পারেন। পরবর্তীতে মডেল বা API অনুরোধগুলির সাথে সংযোগ করা সহজ করতে এটিকে একটি নির্দিষ্ট সংগ্রহ ট্যাগ (আমাদের ক্ষেত্রে, hostkey_en) দেওয়া একটি ভাল ধারণা৷
এরপরে, আমরা আমাদের চ্যাটবটের জন্য একটি কাস্টম মডেল তৈরি করব। এটি করার জন্য, আমরা ওয়ার্কস্পেস - মডেলগুলিতে ফিরে যাব এবং প্লাস আইকনে ক্লিক করব।
আমরা আমাদের চ্যাটবটকে একটি নাম দেব এবং বেস মডেল নির্বাচন করব (আমাদের ক্ষেত্রে, llama3-latest)।
তারপর, আমরা সিস্টেম প্রম্পট সংজ্ঞায়িত করব। এটিই চ্যাটবটকে বলে যে কীভাবে নিজেকে দেখতে এবং আচরণ করতে হয়। এটি এর ভূমিকা, সীমাবদ্ধতা এবং আমাদের কাঙ্ক্ষিত ফলাফলের রূপরেখা দেয়।
আমাদের প্রযুক্তি সহায়তা চ্যাটবটের জন্য আমরা ডিজাইন করেছি সিস্টেম প্রম্পট এখানে:
You are HOSTKEY an IT Support Assistant Bot, focused on providing users with IT support based on the content from knowledge base. Stay in character and maintain your focus on IT support, avoiding unrelated activities such as creative writing or engaging in non-IT discussions.
If you cannot find relevant information in the knowledge base or if the user asks non-related questions that are not part of the knowledge base, do not attempt to answer and inform the user that you are unable to assist and print text "Visit https://hostkey.com/documentation for more information" at the end.
Provide short step-by-step instructions and external links
Provide a link to relevant doc page about user question started with 'See more information here:'Add text "Visit https://hostkey.com/documentation for more information" at the end.
Example of answer: " User: How can I cancel my server?
Bot:
You can cancel your server at any time. To do this, you need to access the Invapi control panel and follow these steps:
- Go to the "Billing" tab in the specific server management menu.
- Click the [Cancel service] button.
- Describe the reason for the cancellation and select its type.
- Click the [Confirm termination] button.
Please note that for immediate cancellation, we will not refund the hours of actual server usage, including the time to provision the server itself, order software, and process the cancellation request (up to 12 hours). The unused balance will be returned to your credit balance. Withdrawal of funds from the credit balance will be made in accordance with our refund policy.
You can cancel the service cancellation request in the Billing tab using the [Revoke] button.
Additionally, if you need to cancel a service that includes an OS/software license or has a customized/non-standard configuration, please contact us via a ticketing system for manual refund processing.
See more information here: https://hostkey.com/documentation/billing/services_cancellation/ "
পরবর্তী, আমরা প্রয়োজনীয় নথি সংগ্রহ সংযুক্ত করব। জ্ঞান বিভাগে, আমরা নথি নির্বাচন করুন বোতামে ক্লিক করব এবং এর ট্যাগের উপর ভিত্তি করে আমাদের প্রয়োজনীয় সংগ্রহটি বেছে নেব।
তাত্ক্ষণিক স্থাপনার সাথে GPU সার্ভার ভাড়া করুন বা পেশাদার-গ্রেড NVIDIA Tesla A100 / H100 80Gb বা A5000 / A4000 কার্ড সহ একটি কাস্টম কনফিগারেশন সহ একটি সার্ভার। গেমিং RTX4090 কার্ড সহ GPU সার্ভারগুলিও উপলব্ধ।
আমাদের অ্যাডভান্সড প্যারামস ট্যাবের নিচে লুকানো কিছু অতিরিক্ত প্যারামিটার কনফিগার করতে হবে। শোতে ক্লিক করলে এই সেটিংস প্রকাশ পাবে। আমরা তাপমাত্রা 0.3 এবং প্রসঙ্গ দৈর্ঘ্য 4089 এ সেট করব।
অবশেষে, আমরা আমাদের কাস্টম প্রযুক্তি সহায়তা চ্যাটবট মডেল তৈরি করতে সংরক্ষণ এবং আপডেট ক্লিক করি।
এবং সেখানে আপনি এটা আছে! আমাদের চ্যাটবট কাজ করতে এবং ব্যবহারকারীর অনুরোধগুলি পরিচালনা করতে প্রস্তুত৷ এটি নম্র, ধৈর্যশীল এবং 24/7 উপলব্ধ।
মনে রাখার জন্য এখানে কিছু গুরুত্বপূর্ণ টিপস রয়েছে:
এখন যেহেতু আমরা চ্যাটবট পরীক্ষা করেছি, পরবর্তী ধাপ হল এটিকে আমাদের কোম্পানির বিদ্যমান চ্যাট সিস্টেমে একীভূত করা। OpenWebUI একটি API অফার করে এবং এটির নিজস্ব অনন্য বৈশিষ্ট্য যোগ করে ওল্লামার প্রক্সি হিসেবে কাজ করতে পারে। যাইহোক, ডকুমেন্টেশনের এখনও অভাব রয়েছে, একীকরণকে কিছুটা চ্যালেঞ্জ করে তুলেছে।
কোড এবং কমিট ইতিহাস পরীক্ষা করে, আমরা API অনুরোধগুলিকে কীভাবে গঠন করতে হয় সে সম্পর্কে কিছু অন্তর্দৃষ্টি সংগ্রহ করেছি, কিন্তু এটি এখনও প্রত্যাশিতভাবে কাজ করছে না। আমরা কাস্টম মডেল কল করতে পরিচালিত করেছি, কিন্তু RAG কার্যকারিতা ছাড়াই।
আমরা আসন্ন রিলিজে বিকাশকারীদের প্রতিশ্রুত বৈশিষ্ট্যগুলির জন্য অধীর আগ্রহে অপেক্ষা করছি, যার মধ্যে রয়েছে RAG, ওয়েব অনুসন্ধান এবং বিস্তারিত উদাহরণ এবং বিবরণ৷
পরীক্ষার প্রক্রিয়াটি আমাদের ডকুমেন্টেশনে কিছু অসঙ্গতি এবং অপ্রয়োজনীয়তাও প্রকাশ করেছে। এটি চ্যাটবটের কার্যকারিতা উন্নত করার এবং আমাদের ডকুমেন্টেশনের সামগ্রিক স্বচ্ছতা এবং নির্ভুলতা উভয়েরই একটি সুযোগ উপস্থাপন করে।
তাত্ক্ষণিক স্থাপনার সাথে GPU সার্ভার ভাড়া করুন বা পেশাদার-গ্রেড NVIDIA Tesla A100 / H100 80Gb বা A5000 / A4000 কার্ড সহ একটি কাস্টম কনফিগারেশন সহ একটি সার্ভার। গেমিং RTX4090 কার্ড সহ GPU সার্ভারগুলিও উপলব্ধ।