Getting Started with Ollama and Gemma
Once you have installed Ollama. You can download any of Ollamas many supported models directly to your machine, this will mean that you dont need to pay for your AI model usage.
In this sample we are going to use Googles Gemma2 model.
ollama pull gemma2:27bAccessing your local AI model
Once you have download the model you can then run it and access your local AI model like you would any other AI system like Gemini or ChatGTP.
ollama run gemma2:27bYou can then exit the model again by simply typing bye.
/byeWhy use a local AI model
For me this boils down to two main factors.
- Using a local AI model is free.
- Privacy my local AI models are on my own machine they none of my data is leaving my machine.
Draw backs.
Depending upon your machine using a local AI model will return slower then your standard AI chat model on the web.
Code
You can also access these models programmatically. Ollama provides us with a pip package which enables us to access Ollama models directly from our code. In the following example I have created a Python project which does just that.
.env
MODEL_NAME_LATEST=gemma2:27brequirments.txt
ollama
python-dotenv
coloramaCode
import os
import colorama
import ollama
from dotenv import load_dotenv
# Initialize colorama for colored text output
colorama.init()
# Load environment variables from a .env file (optional)
load_dotenv()
# Define the environment variable name for the model name
CHAT_MODEL_NAME = os.getenv("MODEL_NAME_LATEST")
class ConversationTurns:
"""
This class represents a collection of conversation turns.
A conversation turn is a single interaction between the user and the model.
It includes the role (user or model) and the content of the message.
"""
def __init__(self):
self.messages = [] # List to store conversation turns
def add_turn(self, role, content):
"""
Adds a new conversation turn to the list.
Args:
role (str): The role of the participant (user or model).
content (str): The content of the message.
"""
self.messages.append(Turn(role, content)) # Create and append a Turn object
def to_list(self):
"""
Converts the conversation turns into a list of dictionaries.
This is useful for sending the conversation history to the Ollama model.
Returns:
list: A list of dictionaries representing conversation turns.
"""
return [message.to_dict() for message in self.messages] # Convert Turn objects to dicts
class Turn:
"""
This class represents a single conversation turn.
It includes the role of the participant (user or model) and the content of the message.
"""
def __init__(self, role, content):
self.role = role
self.content = content
def to_dict(self):
"""
Converts the turn into a dictionary.
This dictionary format is expected by the send_chat function.
Returns:
dict: A dictionary representing the conversation turn.
"""
return {
"role": self.role,
"content": self.content
}
def send_chat(turn_history, content):
"""
Sends a message to the Ollama model and updates the conversation history.
Args:
turn_history (ConversationTurns): An object storing the conversation history.
content (str): The user's message to be sent to the model.
Returns:
tuple: A tuple containing the updated conversation history and the model's response.
"""
turn_history.add_turn("user", content) # Add user turn to history
# Use Ollama's chat function to get a response from the specified model
model_response = ollama.chat(
model=CHAT_MODEL_NAME,
messages=history.to_list(),
)
turn_history.add_turn("model", model_response['message']['content']) # Add model turn to history
# Return the updated history and the model's response
return turn_history, model_response['message']['content']
# Initialize an empty conversation history object
history = ConversationTurns()
# Continuously loop until the user enters "exit"
user_input = ""
while user_input != "exit":
user_input = input(colorama.Fore.GREEN + "User: ")
history, model_answer = send_chat(history, user_input)
print(colorama.Fore.BLU + "Model: " + colorama.Fore.WHITE + model_answer)
Conclusion
Having a local AI model for testing is invaluable. It allows for efficient experimentation and troubleshooting without relying on external APIs. Ollama’s compatibility with Langchain further enhances this approach, enabling you to test your applications locally using free models and seamlessly transition to paid options when ready for production.
The post Unleashing the Power of Ollama and Gemma: A Python Playground first appeared on Daimto.
Discover more from RSS Feeds Cloud
Subscribe to get the latest posts sent to your email.
