paint-brush
ओलामा का उपयोग कैसे करें: स्थानीय एलएलएम के साथ व्यावहारिक व्यवहार और एक चैटबॉट का निर्माणद्वारा@arjunrao1987
34,310 रीडिंग
34,310 रीडिंग

ओलामा का उपयोग कैसे करें: स्थानीय एलएलएम के साथ व्यावहारिक व्यवहार और एक चैटबॉट का निर्माण

द्वारा Arjun 7m2024/03/14
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

स्थानीय एलएलएम के क्षेत्र में, मैं पहली बार एलएमस्टूडियो में गया। जबकि ऐप का उपयोग करना स्वयं आसान है, मुझे ओलामा द्वारा प्रदान की जाने वाली सरलता और गतिशीलता पसंद आई। ओलामा के बारे में अधिक जानने के लिए आप यहां जा सकते हैं। टीएल;डॉ: ओलामा उन मॉडलों की अपनी स्वयं की क्यूरेटेड सूची होस्ट करता है जिन तक आपकी पहुंच है। आप इन मॉडलों को अपनी स्थानीय मशीन पर डाउनलोड कर सकते हैं, और फिर कमांड लाइन प्रॉम्प्ट के माध्यम से उन मॉडलों के साथ बातचीत कर सकते हैं। वैकल्पिक रूप से, जब आप मॉडल चलाते हैं, तो ओलामा पोर्ट 11434 (डिफ़ॉल्ट रूप से) पर होस्ट किया गया एक अनुमान सर्वर भी चलाता है, जिसके साथ आप एपीआई और लैंगचैन जैसी अन्य लाइब्रेरी के माध्यम से बातचीत कर सकते हैं।
featured image - ओलामा का उपयोग कैसे करें: स्थानीय एलएलएम के साथ व्यावहारिक व्यवहार और एक चैटबॉट का निर्माण
Arjun  HackerNoon profile picture

यह ओलामा और उन चीजों के बारे में गहराई से जानने का पहला भाग है जो मैंने स्थानीय एलएलएम के बारे में सीखी हैं और आप उन्हें अनुमान-आधारित अनुप्रयोगों के लिए कैसे उपयोग कर सकते हैं। इस पोस्ट में आप जानेंगे -


  1. ओलामा का उपयोग कैसे करें
  2. ओलामा में अपना खुद का मॉडल कैसे बनाएं
  3. चैटबॉट बनाने के लिए ओलामा का उपयोग करना


एलएलएम (स्थानीय एलएलएम सहित) की मूल बातें समझने के लिए, आप यहां इस विषय पर मेरी पिछली पोस्ट देख सकते हैं।

सबसे पहले, कुछ पृष्ठभूमि

स्थानीय एलएलएम के क्षेत्र में, मैं पहली बार एलएमस्टूडियो में गया। जबकि ऐप का उपयोग करना स्वयं आसान है, मुझे ओलामा द्वारा प्रदान की जाने वाली सरलता और गतिशीलता पसंद आई। ओलामा के बारे में अधिक जानने के लिए आप यहां जा सकते हैं।

टीएल;डॉ: ओलामा उन मॉडलों की अपनी स्वयं की क्यूरेटेड सूची होस्ट करता है जिन तक आपकी पहुंच है।


आप इन मॉडलों को अपनी स्थानीय मशीन पर डाउनलोड कर सकते हैं, और फिर कमांड लाइन प्रॉम्प्ट के माध्यम से उन मॉडलों के साथ बातचीत कर सकते हैं। वैकल्पिक रूप से, जब आप मॉडल चलाते हैं, तो ओलामा पोर्ट 11434 (डिफ़ॉल्ट रूप से) पर होस्ट किया गया एक अनुमान सर्वर भी चलाता है, जिसके साथ आप एपीआई और लैंगचैन जैसी अन्य लाइब्रेरी के माध्यम से बातचीत कर सकते हैं।


इस पोस्ट के अनुसार, ओलामा के पास 74 मॉडल हैं, जिनमें एम्बेडिंग मॉडल जैसी श्रेणियां भी शामिल हैं।

ओलामा का उपयोग कैसे करें

अपनी पसंद के ओएस के लिए ओलामा डाउनलोड करें । एक बार जब आप ऐसा कर लेते हैं, तो यह पुष्टि करने के लिए कि यह काम कर रहा है, आप कमांड ollama चलाते हैं। इसे आपको सहायता मेनू दिखाना चाहिए -

 Usage: ollama [flags] ollama [command] Available Commands: serve Start ollama create Create a model from a Modelfile show Show information for a model run Run a model pull Pull a model from a registry push Push a model to a registry list List models cp Copy a model rm Remove a model help Help about any command Flags: -h, --help help for ollama -v, --version Show version information Use "ollama [command] --help" for more information about a command.


किसी भी मॉडल का उपयोग करने के लिए, आपको सबसे पहले उन्हें ओलामा से "खींचना" होगा, ठीक उसी तरह जैसे आप डॉकरहब (यदि आपने पहले इसका उपयोग किया है) या इलास्टिक कंटेनर रजिस्ट्री (ईसीआर) जैसी किसी छवि से खींचते हैं।


ओलामा कुछ डिफ़ॉल्ट मॉडलों के साथ आता है (जैसे कि llama2 जो फेसबुक का ओपन-सोर्स एलएलएम है) जिसे आप चलाकर देख सकते हैं।


 ollama list 


उस मॉडल का चयन करें (मान लीजिए phi ) जिसके साथ आप ओलामा लाइब्रेरी पेज से इंटरैक्ट करना चाहते हैं। अब आप कमांड चलाकर इस मॉडल को नीचे खींच सकते हैं

 ollama pull phi 


एक बार डाउनलोड पूरा हो जाने पर, आप यह जांच कर सकते हैं कि मॉडल स्थानीय रूप से उपलब्ध है या नहीं -

 ollama list


अब जब मॉडल उपलब्ध है, तो यह चलाने के लिए तैयार है। आप कमांड का उपयोग करके एक मॉडल चला सकते हैं -

 ollama run phi


उत्तरों की सटीकता हमेशा शीर्ष स्तर की नहीं होती है, लेकिन सटीकता में सुधार के लिए आप अलग-अलग मॉडलों का चयन करके या शायद कुछ फाइन-ट्यूनिंग करके या अपने आप पर आरएजी-जैसा समाधान लागू करके इसका समाधान कर सकते हैं।


मैंने ऊपर जो प्रदर्शित किया है वह यह है कि आप कमांड लाइन प्रॉम्प्ट का उपयोग करके ओलामा मॉडल का उपयोग कैसे कर सकते हैं। हालाँकि, यदि आप लामा द्वारा चलाए जा रहे अनुमान सर्वर की जांच करते हैं तो आप देख सकते हैं कि पोर्ट 11434 पर क्लिक करके इस तक पहुंचने के प्रोग्रामेटिक तरीके हैं।

यदि आप अपने ओलामा मॉडल तक पहुंचने के लिए लैंगचैन का उपयोग करना चाहते हैं, तो आप कुछ इस तरह का उपयोग कर सकते हैं -

 from langchain_community.llms import Ollama from langchain.chains import RetrievalQA prompt = "What is the difference between an adverb and an adjective?" llm = Ollama(model="mistral") qa = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever, return_source_documents=True, ) response = qa(prompt)

ओलामा में अपना खुद का मॉडल कैसे बनाएं

आप ओलामा में Modelfile की अवधारणा का उपयोग करके अपना स्वयं का मॉडल संस्करण भी बना सकते हैं। अपने मॉडलफ़ाइल में कॉन्फ़िगर करने के लिए अधिक पैरामीटर के लिए, आप इन दस्तावेज़ों को देख सकते हैं।


उदाहरण मॉडलफ़ाइल -

 # Downloaded from Hugging Face https://huggingface.co/TheBloke/finance-LLM-GGUF/tree/main FROM "./finance-llm-13b.Q4_K_M.gguf" PARAMETER temperature 0.001 PARAMETER top_k 20 TEMPLATE """ {{.Prompt}} """ # set the system message SYSTEM """ You are Warren Buffet. Answer as Buffet only, and do so in short sentences. """


एक बार जब आपके पास मॉडलफ़ाइल हो, तो आप इसका उपयोग करके अपना मॉडल बना सकते हैं

 ollama create arjunrao87/financellm -f Modelfile

जहां financellm आपके एलएलएम मॉडल का नाम है और arjunrao87 आपके ollama.com उपयोगकर्ता नाम से बदल दिया जाएगा (जो आपके ऑनलाइन ओलामा रजिस्ट्री के नेमस्पेस के रूप में भी कार्य करता है)। इस बिंदु पर, आप ओलामा पर किसी भी अन्य मॉडल की तरह अपने बनाए गए मॉडल का उपयोग कर सकते हैं।


आप अपने मॉडल को दूरस्थ ओलामा रजिस्ट्री में धकेलना भी चुन सकते हैं। ऐसा करने के लिए, आपको यह करना होगा


  • ollama.com पर अपना अकाउंट बनाएं
  • एक नया मॉडल जोड़ें
  • आपको अपनी रिमोट मशीन से मॉडल पुश करने की अनुमति देने के लिए सार्वजनिक कुंजियाँ सेट करें।


एक बार जब आप अपना स्थानीय एलएलएम बना लेते हैं, तो आप इसका उपयोग करके इसे ओलामा रजिस्ट्री में भेज सकते हैं -

 ollama push arjunrao87/financellm

🦄अब, अच्छे हिस्से पर आते हैं।

चैटबॉट बनाने के लिए ओलामा का उपयोग करना

ओलामा का उपयोग करने की मेरी खोज के दौरान, अधिक सुखद खोजों में से एक मुझे पायथन-आधारित वेब एप्लिकेशन बिल्डरों का यह पारिस्थितिकी तंत्र मिला। चैनलिट का उपयोग चैटजीपीटी जैसा पूर्ण विकसित चैटबॉट बनाने के लिए किया जा सकता है। जैसा कि उनका पेज कहता है,


चैनलिट उत्पादन के लिए तैयार कन्वर्सेशनल एआई बनाने के लिए एक ओपन-सोर्स पायथन पैकेज है


आप चेनलिट के साथ क्या कर सकते हैं, यह जानने के लिए मैंने कुछ चैनलिट ट्यूटोरियल देखे, जिसमें कार्यों का क्रम बनाना (जिन्हें "चरण" कहा जाता है), बटन और क्रियाओं को सक्षम करना, चित्र भेजना और सभी प्रकार की चीज़ें शामिल हैं। आप यहां मेरी यात्रा के इस भाग का अनुसरण कर सकते हैं।


एक बार जब मुझे चैनलिट का ज्ञान हो गया, तो मैं एक सीधा चैटबॉट तैयार करना चाहता था जो मूल रूप से ओलामा का उपयोग करता था ताकि मैं चैट करने के लिए स्थानीय एलएलएम का उपयोग कर सकूं (चैटजीपीटी या क्लाउड कहने के बजाय)।


कोड की 50 से कम पंक्तियों के साथ, आप चैनलिट + ओलामा का उपयोग करके ऐसा कर सकते हैं। क्या वह पागलपन नहीं है?

लाइब्रेरी के रूप में चेनलिट का उपयोग करना बहुत आसान है। मैंने ओलामा का उपयोग करने और उसके साथ बातचीत करने के लिए लैंगचैन का भी उपयोग किया।


 from langchain_community.llms import Ollama from langchain.prompts import ChatPromptTemplate import chainlit as cl


अगला कदम यह परिभाषित करना है कि आप चेनलिट के @cl.on_chat_start डेकोरेटर का उपयोग करके चैटबॉट की लोडिंग स्क्रीन को कैसा दिखाना चाहते हैं -

 @cl.on_chat_start async def on_chat_start(): elements = [cl.Image(name="image1", display="inline", path="assets/gemma.jpeg")] await cl.Message( content="Hello there, I am Gemma. How can I help you?", elements=elements ).send() .... ....


Message इंटरफ़ेस वह है जिसका उपयोग चैनलिट यूआई पर प्रतिक्रियाएँ भेजने के लिए करता है। आप सरल content कुंजी के साथ संदेश बना सकते हैं, और फिर आप इसे elements जैसी चीज़ों से सजा सकते हैं, मेरे मामले में, जब उपयोगकर्ता पहली बार लॉग इन करता है तो एक छवि दिखाने के लिए मैंने एक Image जोड़ी है।


अगला कदम ओलामा (अपनी पसंद के मॉडल के साथ) को इंस्टेंट करने के लिए लैंगचैन को आमंत्रित करना है, और प्रॉम्प्ट टेम्पलेट का निर्माण करना है। cl.user_session का उपयोग अधिकतर उपयोगकर्ता संदर्भों और इतिहासों को अलग करने के लिए है, जो कि केवल त्वरित डेमो चलाने के प्रयोजनों के लिए सख्ती से आवश्यक नहीं है।


चेन एक लैंगचैन इंटरफ़ेस है जिसे Runnable कहा जाता है जिसका उपयोग कस्टम चेन बनाने के लिए किया जाता है। आप यहाँ उसके बारे में और अधिक पढ़ सकते हैं ।


 @cl.on_chat_start async def on_chat_start(): .... .... model = Ollama(model="mistral") prompt = ChatPromptTemplate.from_messages( [ ( "system", "You are a knowledgeable historian who answers super concisely", ), ("human", "{question}"), ] ) chain = prompt | model cl.user_session.set("chain", chain)


अब, आपके पास चैटबॉट यूआई और उपयोगकर्ता इनपुट स्वीकार करने के लिए सभी सुविधाएं हैं। आप उपयोगकर्ता द्वारा दिए गए संकेतों के साथ क्या करते हैं? उपयोगकर्ता द्वारा दिए गए संदेश के साथ कुछ करने के लिए आप चेनलिट से @cl.on_message हैंडलर का उपयोग करेंगे।


 @cl.on_message async def on_message(message: cl.Message): chain = cl.user_session.get("chain") msg = cl.Message(content="") async for chunk in chain.astream( {"question": message.content}, ): await msg.stream_token(chunk) await msg.send()


chain.astream जैसा कि डॉक्स सुझाव देते हैं "प्रतिक्रिया एसिंक के हिस्सों को वापस स्ट्रीम करें" जो कि हम अपने बॉट के लिए चाहते हैं।


वास्तव में यही है. कुछ आयात, कुछ कार्य, थोड़ी सी चीनी, और आपके पास एक कार्यात्मक चैटबॉट है।

एक अच्छी इतिहासकार प्रतिक्रिया


एक मूर्ख इतिहासकार जो (समझ में आता है) गणित में अच्छा नहीं है;)


पूरे कोड के लिए, आप मेरा GitHub देख सकते हैं।


यदि यह सामग्री आपके लिए दिलचस्प है, तो उस 👏 बटन को दबाएं या यहां मेरे न्यूज़लेटर की सदस्यता लें → https://a1engineered.beehiiv.com/subscribe । यह मुझे फीडबैक देता है कि मुझे कुछ कम या ज्यादा करने की जरूरत है! धन्यवाद ❤️


यहाँ भी प्रकाशित किया गया