Bu, Ollama'ya ve yerel Yüksek Lisans'lar hakkında öğrendiklerime ve bunları çıkarım tabanlı uygulamalar için nasıl kullanabileceğinize daha derinlemesine bakmanın ilk kısmı. Bu yazıda şunları öğreneceksiniz: Ollama nasıl kullanılır? Ollama'da kendi modelinizi nasıl yaratabilirsiniz? Bir sohbet robotu oluşturmak için Ollama'yı kullanma LLM'lerin (Yerel LLM'ler dahil) temellerini anlamak için bu konuyla ilgili önceki paylaşımıma bakabilirsiniz. buradan İlk olarak, Biraz Arka Plan Yerel Yüksek Lisans'lar alanında ilk olarak LMStudio ile karşılaştım. Uygulamanın kullanımı kolay olsa da Ollama'nın sağladığı basitlik ve manevra kabiliyeti hoşuma gitti. Ollama hakkında daha fazla bilgi edinmek için gidebilirsiniz. buraya tl;dr: Ollama, erişebileceğiniz modellerin kendi seçilmiş listesine ev sahipliği yapıyor. Bu modelleri yerel makinenize indirebilir ve ardından bu modellerle komut satırı istemi aracılığıyla etkileşimde bulunabilirsiniz. Alternatif olarak, modeli çalıştırdığınızda Ollama, API'ler ve Langchain gibi diğer kütüphaneler aracılığıyla etkileşimde bulunabileceğiniz, 11434 numaralı bağlantı noktasında (varsayılan olarak) barındırılan bir çıkarım sunucusunu da çalıştırır. Bu yazı itibariyle Ollama'nın gömme modelleri gibi kategorileri de içeren 74 modeli var. Ollama Nasıl Kullanılır? Seçtiğiniz işletim sistemi için Ollama'yı . Bunu yaptıktan sonra, çalıştığını doğrulamak için komutunu çalıştırırsınız. Size yardım menüsünü göstermeli — indirin 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. Herhangi bir modeli kullanmak için, tıpkı Dockerhub'dan (geçmişte kullandıysanız) veya Elastic Container Registry (ECR) gibi bir şeyden bir görüntüyü indirdiğiniz gibi, önce onları Ollama'dan "çekmeniz" gerekir. Ollama, çalıştırarak görebileceğiniz bazı varsayılan modellerle (Facebook'un açık kaynaklı LLM'si olan gibi) birlikte gelir. llama2 ollama list etkileşim kurmak istediğiniz modeli ( diyelim) seçin. Artık komutu çalıştırarak bu modeli aşağı çekebilirsiniz. Ollama kütüphane sayfasından phi ollama pull phi İndirme işlemi tamamlandıktan sonra aşağıdaki komutu çalıştırarak modelin yerel olarak mevcut olup olmadığını kontrol edebilirsiniz: ollama list Artık model mevcut olduğuna göre çalıştırılmaya hazırdır. Bir modeli şu komutu kullanarak çalıştırabilirsiniz — ollama run phi Yanıtların doğruluğu her zaman birinci sınıf olmayabilir, ancak farklı modeller seçerek veya belki bazı ince ayarlar yaparak veya doğruluğu artırmak için RAG benzeri bir çözümü kendi başınıza uygulayarak bunu çözebilirsiniz. Yukarıda gösterdiğim şey Ollama modellerini komut satırı istemini kullanarak nasıl kullanabileceğinizi gösteriyor. Ancak, Llama'nın çalıştırdığı çıkarım sunucusunu kontrol ederseniz, 11434 numaralı bağlantı noktasına basarak buna erişmenin programlı yolları olduğunu görebilirsiniz. Ollama modelinize erişmek için Langchain'i kullanmak istiyorsanız şunun gibi bir şey kullanabilirsiniz: 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) Ollama'da Kendi Modelinizi Nasıl Oluşturabilirsiniz? Ollama'daki konseptini kullanarak kendi model varyantınızı da oluşturabilirsiniz. Model dosyanızda yapılandırılacak daha fazla parametre için bu dokümanlara bakabilirsiniz. Modelfile Örnek Model Dosyası — # 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. """ Model dosyasına sahip olduğunuzda, modelinizi kullanarak oluşturabilirsiniz. ollama create arjunrao87/financellm -f Modelfile burada , LLM modelinizin adıdır ve ollama.com kullanıcı adınız (aynı zamanda çevrimiçi ollama kayıt defterinizin ad alanı olarak da işlev görür) ile değiştirilecektir. Bu noktada oluşturduğunuz modelinizi Ollama'daki diğer modeller gibi kullanabilirsiniz. financellm arjunrao87 Modelinizi uzak ollama kayıt defterine göndermeyi de seçebilirsiniz. Bunu gerçekleştirmek için yapmanız gerekenler ollama.com'da hesabınızı oluşturun Yeni bir model ekle Uzak makinenizden modelleri aktarmanıza izin verecek şekilde genel anahtarları ayarlayın. Yerel LLM'nizi oluşturduktan sonra, şunu kullanarak onu ollama kayıt defterine gönderebilirsiniz: ollama push arjunrao87/financellm 🦄 Şimdi gelelim işin güzel kısmına. Chatbot Oluşturmak için Ollama'yı Kullanmak Ollama'yı kullanma arayışım sırasında en hoş keşiflerden biri, karşılaştığım Python tabanlı web uygulaması geliştiricilerinden oluşan ekosistemdi. ChatGPT gibi tam teşekküllü bir sohbet robotu oluşturmak için kullanılabilir. Sayfalarının dediği gibi, Chainlit, Chainlit, üretime hazır Konuşmalı Yapay Zeka oluşturmaya yönelik açık kaynaklı bir Python paketidir Chainlit ile neler yapabileceğinizi öğrenmek için Chainlit eğitimlerinden birkaçını inceledim; bu, görev dizileri oluşturma ("adımlar" olarak adlandırılır), düğmeleri ve eylemleri etkinleştirme, görüntü gönderme ve her türlü şeyi içerir. Yolculuğumun bu kısmını takip edebilirsiniz. buradan Chainlit'i öğrendikten sonra, sohbet etmek için yerel bir LLM'yi (ChatGPT veya Claude demek yerine) kullanabilmek için temelde Ollama'yı kullanan basit bir sohbet robotu oluşturmak istedim. 50 satırdan az kodla bunu Chainlit + Ollama'yı kullanarak yapabilirsiniz. Bu çılgınca değil mi? Chainlit'in bir kütüphane olarak kullanımı son derece basittir. Ollama'yı kullanmak ve onunla etkileşimde bulunmak için de Langchain'i kullandım. from langchain_community.llms import Ollama from langchain.prompts import ChatPromptTemplate import chainlit as cl Bir sonraki adım, Chainlit'in dekoratörünü kullanarak chatbot'un yükleme ekranının nasıl görünmesini istediğinizi tanımlamaktır — @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() .... .... arayüzü, Chainlit'in yanıtları kullanıcı arayüzüne geri göndermek için kullandığı arayüzdür. Basit anahtarıyla mesajlar oluşturabilir ve ardından bunu gibi şeylerle süsleyebilirsiniz; benim durumumda, kullanıcı ilk kez oturum açtığında bir resim göstermek için bir ekledim. Message content elements Image Bir sonraki adım, Ollama'yı (seçtiğiniz modelle) başlatmak için Langchain'i çağırmak ve bilgi istemi şablonunu oluşturmaktır. kullanımı çoğunlukla kullanıcı bağlamları ve geçmişlerinin ayrımını korumak içindir; yalnızca hızlı bir demo çalıştırmak amacıyla kesinlikle gerekli değildir. cl.user_session Zincir, özel zincirler oluşturmak için kullanılan adlı bir Langchain arayüzüdür. daha fazlasını okuyabilirsiniz . Runnable Buradan @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) Artık bir chatbot kullanıcı arayüzüne sahip olmak ve kullanıcı girişlerini kabul etmek için gereken tüm parçalara sahipsiniz. Kullanıcının sağladığı istemlerle ne yaparsınız? Kullanıcının sağladığı mesajla ilgili bir şeyler yapmak için Chainlit'in işleyicisini kullanacaksınız. @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() dokümanların önerdiği gibi "zaman uyumsuz yanıtın parçalarını geri aktar", botumuz için istediğimiz de budur. chain.astream Gerçekten bu kadar. Birkaç ithalat, birkaç işlev, biraz şeker ve işlevsel bir sohbet robotunuz var. Kodun tamamı için adresimi görebilirsiniz. GitHub 👏 Bu içerik ilginizi çekiyorsa düğmesine basın veya bültenime buradan abone olun → . Bana bir şeyin daha fazlasını veya daha azını yapmam gerektiğine dair geri bildirim veriyor! Teşekkürler ❤️ https://a1engineering.beehiiv.com/subscribe da yayınlandı Burada