Skip to main content

NOTE: This is a fork of the official Ollama Python library with loosened dependencies in order to make it compatible with Home Assistant.

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='llama2', 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='llama2',
    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='llama2', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}])

Generate

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

List

ollama.list()

Show

ollama.show('llama2')

Create

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

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

Copy

ollama.copy('llama2', 'user/llama2')

Delete

ollama.delete('llama2')

Pull

ollama.pull('llama2')

Push

ollama.push('user/llama2')

Embeddings

ollama.embeddings(model='llama2', prompt='They sky is blue because of rayleigh scattering')

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='llama2', 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='llama2', 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='llama2', 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)

Metadata

Release files for ollama-hass 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ollama-hass 0.1.7
File Size Uploaded
ollama_hass-0.1.7.tar.gz 9.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ollama-hass 0.1.7
File Interpreter ABI Platform
ollama_hass-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 19.2 kB

Release files / ollama_hass-0.1.7.tar.gz

Download URL ollama_hass-0.1.7.tar.gz
Size 9.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ac0ac9e68d97e2b74dfe8278671c2c67c3ed4b796df1b195c82e440350918684
BLAKE2b-256 checksum
How to use checksums
eedcc45d42f94fd05a94d00cc1ea02ca7e4553dac19540c87b169b6cfeb5e210
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.2

Release files / ollama_hass-0.1.7-py3-none-any.whl

Download URL ollama_hass-0.1.7-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
130fdf6cdd2bf86be0cce3e5328676c5de5c2fb4d34f9478c2890bec4fbcb7e2
BLAKE2b-256 checksum
How to use checksums
1625afb47ee6b27911de140bf4b53b41bea2b128f7f8c2aca59d5648f7a2f30c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.2

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page