OpenWebUI, bir dizi yapay zeka aracı içeren kapsamlı bir medya platformudur: OpenAI, Ollama, Otomatik1111, ComfyUI, Whisper API, özel model eğitimi, ChromaDB ile Langchain tabanlı RAG, hibrit BM25/web araması ve daha fazlası.
Bunların hepsi bir süredir mevcut, belgelenmiş ve Python programlama bilgisiyle uygulanabilir olmasına rağmen, OpenWebUI, kapsamlı kodlama deneyimi olmasa bile büyüleyici ve kullanışlı sohbet robotları oluşturmak için eşsiz bir fırsat sunuyor.
Bu makalede, kullanıcı sorularını yanıtlayarak (ve sonunda ekibimizin bir parçası haline gelerek) ön saflardaki ekibimize yardımcı olmak üzere tasarlanmış bir teknik destek sohbet robotu oluşturma yolculuğumuzu paylaşacağız.
Anında dağıtımlı GPU sunucuları veya profesyonel düzeyde NVIDIA Tesla A100 / H100 80Gb veya A5000 / A4000 kartlarıyla özel yapılandırmaya sahip bir sunucu kiralayın. Oyun RTX4090 kartlarına sahip GPU sunucuları da mevcuttur.
MkDocs için Malzeme kullanılarak oluşturulmuş kullanıcı belgelerimiz var. Bu, Markdown biçimlendirmesine sahip .md dosyalarını içeren bir dizin yapısıyla sonuçlanır. Ayrıca llama3-8b-instruct modelinin yüklü olduğu konuşlandırılmış bir OpenWebUI ve Ollama kurulumumuz da var.
Proje hedefleri:
İlk girişimimiz mevcut belgelerimizi orijinal Markdown formatında yüklemek ve hiçbir değişiklik yapmadan lama3 modelini kullanmaktı. En hafif tabirle, sonuçlar hayal kırıklığı yarattı:
Birincisi: Markdown dosyalarımız resim etiketleri, dipnotlar, kod blokları, kalın ve italik biçimlendirme, iç ve dış bağlantılar, simgeler ve hatta düğmeler için " ** " yapıları gibi çeşitli öğeleri içerir. Tüm bu ekstra "gürültü", dokümantasyonun işlenmek üzere parçalara ayrılması sırasında sorun yaratır.
İkincisi: OpenWebUI'nin cümleleri ve paragrafları 384 boyutlu bir vektör uzayında temsil etmek için varsayılan olarak kullandığı cümle-transformers/all-MiniLM-L6-v2 modeli (kümeleme ve anlamsal arama gibi RAG görevleri için gereklidir), öncelikle İngilizce üzerine eğitim almıştır. . Botumuzun zamanla diğer dilleri de desteklemesini istiyoruz.
Üçüncüsü: Llama3 bir talimat modeli olmasına rağmen, kullanıcı sorgularını yanıtlamaya odaklanmak yerine yine de konu dışı tartışmalara yönlendirilebilir. 70b modeli daha uygun olabilir, ancak 40 GB video belleği olan bir GPU gerektirirken, llama3-8b yalnızca 8 GB'lık bir GPU üzerinde çalışabilir.
Üçüncü sorun, özel bir model (OpenAI terminolojisinde aracı) oluşturularak potansiyel olarak çözülebilirken, ilk ikisi daha önemli geçici çözümler gerektirir. Şu ana kadar bulduklarımız bunlar.
Öncelikle belgeleri RAG (Retrieval Augmented Generation) sistemimize yüklemeye uygun bir formata dönüştüreceğiz. Bu işlemi otomatikleştirmek için ai_text_generator adında güçlü bir bash betiği oluşturduk.
Komut dosyası, tüm belge dizinlerini dolaşır ve RAG tarafından gerekmeyen Markdown işaretlemesini kaldırmak ve değiştirmek için sed, awk ve Perl içindeki normal ifadeleri kullanır. Son olarak, her belgenin sonuna https://hostkey.com/documentation adresinde barındırılan orijinal belgelere bir bağlantı eklenir.
Bu komut dosyası, belgelerinizi OpenWebUI'da bir RAG sistemiyle kullanılmak üzere titizlikle hazırlar. İşte eylemlerinin adım adım özeti:
Komut dosyasını çalıştırdıktan sonra ai_data dizini, OpenWebUI'nin RAG sistemine yüklenmeye hazır bir dizi dosya içerecektir.
Daha sonra, belge vektör veritabanımız ve Ollama LLM ile çalışmak için OpenWebUI'ye yeni bir model eklememiz gerekiyor. Bu model, yalnızca İngilizce'de değil, daha gündelik bir 'sen' (ты) tonunu da desteklemelidir. Gelecekte Türkçe gibi diğer dillere de destek eklemeyi planlıyoruz.
Başlamak için Yönetici Paneli - Ayarlar - Belgeler'e gideceğiz. Embedding Model alanında cümle-transformers/all-MiniLM-L12-v2 seçeneğini seçeceğiz. Bu listedeki (https://www.sbert.net/docs/sentence_transformer/pretrained_models.html) önerilen tüm modelleri test ettik ve bunun en uygun olduğunu gördük.
İndirip kurmak için Embedding Model alanının yanındaki indirme ikonuna tıklayacağız.
Hemen RAG parametrelerini ayarlayacağız:
• Top K = 10: Bu, sistemin bir yanıt oluştururken en alakalı 10 belgeyi dikkate alacağı anlamına gelir.
• Parça Boyutu = 1024: Belgeler işlenmek üzere 1024 jetonluk parçalara bölünecektir.
• Parça Örtüşmesi = 100: Ardışık parçalar arasında 100 jetonluk bir çakışma olacaktır.
Bundan sonra Çalışma Alanı - Belgeler bölümüne giderek belgelerimizi yükleyebilirsiniz. Daha sonra modele veya API isteklerine bağlanmayı kolaylaştırmak için ona belirli bir koleksiyon etiketi (bizim durumumuzda hostkey_en) vermek iyi bir fikirdir.
Daha sonra chatbotumuz için özel bir model oluşturacağız. Bunu yapmak için Çalışma Alanı - Modeller'e geri döneceğiz ve artı simgesine tıklayacağız.
Chatbotumuza bir isim vereceğiz ve temel modeli seçeceğiz (bizim durumumuzda, lama3-en son).
Daha sonra Sistem İstemini tanımlayacağız. Chatbot'a kendisini nasıl görmesi ve davranması gerektiğini söyleyen şey budur. Rolünü, sınırlamalarını ve istediğimiz sonuçları özetlemektedir.
İşte teknik destek sohbet robotumuz için tasarladığımız Sistem İstemi:
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/ "
Daha sonra gerekli belge koleksiyonunu bağlayacağız. Knowledge kısmında Belge Seç butonuna tıklayıp ihtiyacımız olan koleksiyonu etiketine göre seçeceğiz.
Anında dağıtımlı GPU sunucuları veya profesyonel düzeyde NVIDIA Tesla A100 / H100 80Gb veya A5000 / A4000 kartlarıyla özel yapılandırmaya sahip bir sunucu kiralayın. Oyun RTX4090 kartlarına sahip GPU sunucuları da mevcuttur.
Ayrıca Gelişmiş Paramlar sekmesi altında gizlenen bazı ek parametreleri de yapılandırmamız gerekiyor. Göster'e tıklamak bu ayarları ortaya çıkaracaktır. Sıcaklığı 0,3'e ve Bağlam Uzunluğunu 4089'a ayarlayacağız.
Son olarak, özel teknik destek chatbot modelimizi oluşturmak için Kaydet ve Güncelle'ye tıklıyoruz.
İşte buyur! Chatbotumuz çalışmaya ve kullanıcı isteklerini karşılamaya hazır. Kibar, sabırlı ve 7/24 ulaşılabilirdir.
Akılda tutulması gereken bazı önemli ipuçları:
Artık chatbot'u test ettiğimize göre bir sonraki adım onu şirketimizin mevcut sohbet sistemine entegre etmektir. OpenWebUI bir API sunar ve kendi benzersiz özelliklerini ekleyerek Ollama'ya proxy işlevi görebilir. Ancak belgelerin hâlâ eksik olması entegrasyonu biraz zorlaştırıyor.
Kodu ve taahhüt geçmişini inceleyerek API isteklerinin nasıl yapılandırılacağına dair bazı bilgiler topladık, ancak henüz tam olarak beklendiği gibi çalışmıyor. Özel modeli çağırmayı başardık ancak RAG işlevselliği olmadan.
RAG, web araması ve ayrıntılı örnekler ve açıklamalar dahil olmak üzere geliştiricilerin gelecek sürümlerde vaat ettiği özellikleri sabırsızlıkla bekliyoruz.
Test süreci ayrıca belgelerimizdeki bazı tutarsızlıkları ve fazlalıkları da ortaya çıkardı. Bu, hem sohbet robotunun performansını artırma hem de belgelerimizin genel netliğini ve doğruluğunu iyileştirme fırsatı sunuyor.
Anında dağıtımlı GPU sunucuları veya profesyonel düzeyde NVIDIA Tesla A100 / H100 80Gb veya A5000 / A4000 kartlarıyla özel yapılandırmaya sahip bir sunucu kiralayın. Oyun RTX4090 kartlarına sahip GPU sunucuları da mevcuttur.