paint-brush
Ollama Nasıl Kullanılır: Yerel Yüksek Lisans Dereceleri ile Uygulamalı Çalışma ve Bir Chatbot Oluşturmaile@arjunrao1987
13,708 okumalar
13,708 okumalar

Ollama Nasıl Kullanılır: Yerel Yüksek Lisans Dereceleri ile Uygulamalı Çalışma ve Bir Chatbot Oluşturma

ile Arjun 7m2024/03/14
Read on Terminal Reader

Çok uzun; Okumak

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 buraya gidebilirsiniz. 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.
featured image - Ollama Nasıl Kullanılır: Yerel Yüksek Lisans Dereceleri ile Uygulamalı Çalışma ve Bir Chatbot Oluşturma
Arjun  HackerNoon profile picture

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:


  1. Ollama nasıl kullanılır?
  2. Ollama'da kendi modelinizi nasıl yaratabilirsiniz?
  3. 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 buradan bakabilirsiniz.

İ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 buraya gidebilirsiniz.

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ı indirin . Bunu yaptıktan sonra, çalıştığını doğrulamak için ollama komutunu çalıştırırsınız. Size yardım menüsünü göstermeli —

 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 llama2 gibi) birlikte gelir.


 ollama list 


Ollama kütüphane sayfasından etkileşim kurmak istediğiniz modeli ( phi diyelim) seçin. Artık komutu çalıştırarak bu modeli aşağı çekebilirsiniz.

 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 Modelfile 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.


Ö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 financellm , LLM modelinizin adıdır ve arjunrao87 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.


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. Chainlit, ChatGPT gibi tam teşekküllü bir sohbet robotu oluşturmak için kullanılabilir. Sayfalarının dediği gibi,


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ı buradan takip edebilirsiniz.


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 @cl.on_chat_start 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 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 arayüzü, Chainlit'in yanıtları kullanıcı arayüzüne geri göndermek için kullandığı arayüzdür. Basit content anahtarıyla mesajlar oluşturabilir ve ardından bunu elements gibi şeylerle süsleyebilirsiniz; benim durumumda, kullanıcı ilk kez oturum açtığında bir resim göstermek için bir Image ekledim.


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. cl.user_session 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.


Zincir, özel zincirler oluşturmak için kullanılan Runnable adlı bir Langchain arayüzüdür. Buradan daha fazlasını okuyabilirsiniz .


 @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 @cl.on_message işleyicisini kullanacaksınız.


 @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 dokümanların önerdiği gibi "zaman uyumsuz yanıtın parçalarını geri aktar", botumuz için istediğimiz de budur.


Gerçekten bu kadar. Birkaç ithalat, birkaç işlev, biraz şeker ve işlevsel bir sohbet robotunuz var.

İyi bir tarihçi yanıtı


(Anlaşılır şekilde) matematikte iyi olmayan küstah bir tarihçi ;)


Kodun tamamı için GitHub adresimi görebilirsiniz.


Bu içerik ilginizi çekiyorsa 👏 düğmesine basın veya bültenime buradan abone olun → https://a1engineering.beehiiv.com/subscribe . Bana bir şeyin daha fazlasını veya daha azını yapmam gerektiğine dair geri bildirim veriyor! Teşekkürler ❤️


Burada da yayınlandı