Skip to main content

The official Python client for Ollama.

Project description

Ollama Python Library

The Ollama Python library provides the easiest way to integrate Python 3.8+ projects with Ollama.

Install

pip install ollama

Usage

import ollama
response = ollama.chat(model='llama3.1', messages=[
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
])
print(response['message']['content'])

Streaming responses

Response streaming can be enabled by setting stream=True, modifying function calls to return a Python generator where each part is an object in the stream.

import ollama

stream = ollama.chat(
    model='llama3.1',
    messages=[{'role': 'user', 'content': 'Why is the sky blue?'}],
    stream=True,
)

for chunk in stream:
  print(chunk['message']['content'], end='', flush=True)

API

The Ollama Python library's API is designed around the Ollama REST API

Chat

ollama.chat(model='llama3.1', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}])

Generate

ollama.generate(model='llama3.1', prompt='Why is the sky blue?')

List

ollama.list()

Show

ollama.show('llama3.1')

Create

modelfile='''
FROM llama3.1
SYSTEM You are mario from super mario bros.
'''

ollama.create(model='example', modelfile=modelfile)

Copy

ollama.copy('llama3.1', 'user/llama3.1')

Delete

ollama.delete('llama3.1')

Pull

ollama.pull('llama3.1')

Push

ollama.push('user/llama3.1')

Embeddings

ollama.embeddings(model='llama3.1', prompt='The sky is blue because of rayleigh scattering')

Ps

ollama.ps()

Custom client

A custom client can be created with the following fields:

  • host: The Ollama host to connect to
  • timeout: The timeout for requests
from ollama import Client
client = Client(host='http://localhost:11434')
response = client.chat(model='llama3.1', messages=[
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
])

Async client

import asyncio
from ollama import AsyncClient

async def chat():
  message = {'role': 'user', 'content': 'Why is the sky blue?'}
  response = await AsyncClient().chat(model='llama3.1', messages=[message])

asyncio.run(chat())

Setting stream=True modifies functions to return a Python asynchronous generator:

import asyncio
from ollama import AsyncClient

async def chat():
  message = {'role': 'user', 'content': 'Why is the sky blue?'}
  async for part in await AsyncClient().chat(model='llama3.1', messages=[message], stream=True):
    print(part['message']['content'], end='', flush=True)

asyncio.run(chat())

Errors

Errors are raised if requests return an error status or if an error is detected while streaming.

model = 'does-not-yet-exist'

try:
  ollama.chat(model)
except ollama.ResponseError as e:
  print('Error:', e.error)
  if e.status_code == 404:
    ollama.pull(model)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ollama-0.3.3.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

ollama-0.3.3-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file ollama-0.3.3.tar.gz.

File metadata

  • Download URL: ollama-0.3.3.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for ollama-0.3.3.tar.gz
Algorithm Hash digest
SHA256 f90a6d61803117f40b0e8ff17465cab5e1eb24758a473cfe8101aff38bc13b51
MD5 437ca6a41c5225283de3392f3e9ad9a7
BLAKE2b-256 a68e60a9b065eb796ef3996451cbe2d8044f6b030696166693b9805ae33b8b4c

See more details on using hashes here.

File details

Details for the file ollama-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: ollama-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for ollama-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ca6242ce78ab34758082b7392df3f9f6c2cb1d070a9dede1a4c545c929e16dba
MD5 0ea6d64afa669ece1d70b701ac0b80a9
BLAKE2b-256 6acad22905ac3f768523f778189d38c9c6cd9edf4fa9dd09cb5a3fc57b184f90

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page