Continuing my exploration of using a locally hosted Ollama on my Linux desktop computer, I have been doing a lot of reading and research. Today, while having lunch with a university professor, he asked me some questions I didn’t have an immediate answer to. So, I went back to my research to find the answers.
My computer is a Linux desktop with an 11th-generation Intel Core i7-1165G7 processor and 64 gigabytes of RAM. Until today, I have been interacting with Ollama and several models, including Gemma, Codegemma, Phi-3, and Llama3.1, from the command line. Running the Ollama command-line client and interacting with LLMs locally at the Ollama REPL is a good start, but I wanted to learn how to use Ollama in applications and today I made a good start.
Python is my preferred language, and I use VS Codium as my editor. First, I needed to set up a virtual Python environment. I have a ‘Coding’ directory on my computer, but I wanted to set up a separate one for this project.
$ python3 -m venv ollama
Next, I activated the virtual environment:
$ source ollama/bin/activate
Then, I needed to install the ‘ollama’ module for Python.
pip install ollama
Once the module was installed, I opened up VSCodium and tried the code snippet. I found that I used the ‘ollama list’ command to make sure that ‘codegemma’ was installed. Then I used a code snippet I found online and tailored it to generate some Python code to draw a circle.
import ollama
response = ollama.generate(model='codegemma', prompt='Write a Python program to draw a circle spiral in three colors')
print(response['response'])
The model query took some time to occur. Despite having a powerful computer, the lack of a GPU significantly impacted performance, even on such a minor task. The resulting code looked good.
import turtle
# Set up the turtle
t = turtle.Turtle()
t.speed(0)
# Set up the colors
colors = ['red', 'green', 'blue']
# Set up the circle spiral parameters
radius = 10
angle = 90
iterations = 100
# Draw the circle spiral
for i in range(iterations):
t.pencolor(colors[i % 3])
t.circle(radius)
t.right(angle)
radius += 1
# Hide the turtle
t.hideturtle()
# Keep the window open
turtle.done()