MCPcopy Index your code
hub / github.com/ollama/ollama-python

github.com/ollama/ollama-python @v0.6.2 sqlite

repository ↗ · DeepWiki ↗ · release v0.6.2 ↗
290 symbols 1,186 edges 41 files 51 documented · 18%
README

Ollama Python Library

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

Prerequisites

  • Ollama should be installed and running
  • Pull a model to use with the library: ollama pull <model> e.g. ollama pull gemma3
  • See Ollama.com for more information on the models available.

Install

pip install ollama

Usage

from ollama import chat
from ollama import ChatResponse

response: ChatResponse = chat(model='gemma3', messages=[
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
])
print(response['message']['content'])
# or access fields directly from the response object
print(response.message.content)

See _types.py for more information on the response types.

Streaming responses

Response streaming can be enabled by setting stream=True.

from ollama import chat

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

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

Cloud Models

Run larger models by offloading to Ollama’s cloud while keeping your local workflow.

  • Supported models: deepseek-v3.1:671b-cloud, gpt-oss:20b-cloud, gpt-oss:120b-cloud, kimi-k2:1t-cloud, qwen3-coder:480b-cloud, kimi-k2-thinking See Ollama Models - Cloud for more information

Run via local Ollama

1) Sign in (one-time):

ollama signin

2) Pull a cloud model:

ollama pull gpt-oss:120b-cloud

3) Make a request:

from ollama import Client

client = Client()

messages = [
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
]

for part in client.chat('gpt-oss:120b-cloud', messages=messages, stream=True):
  print(part.message.content, end='', flush=True)

Cloud API (ollama.com)

Access cloud models directly by pointing the client at https://ollama.com.

1) Create an API key from ollama.com , then set:

export OLLAMA_API_KEY=your_api_key

2) (Optional) List models available via the API:

curl https://ollama.com/api/tags

3) Generate a response via the cloud API:

import os
from ollama import Client

client = Client(
    host='https://ollama.com',
    headers={'Authorization': 'Bearer ' + os.environ.get('OLLAMA_API_KEY')}
)

messages = [
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
]

for part in client.chat('gpt-oss:120b', messages=messages, stream=True):
  print(part.message.content, end='', flush=True)

Custom client

A custom client can be created by instantiating Client or AsyncClient from ollama.

All extra keyword arguments are passed into the httpx.Client.

from ollama import Client
client = Client(
  host='http://localhost:11434',
  headers={'x-some-header': 'some-value'}
)
response = client.chat(model='gemma3', messages=[
  {
    'role': 'user',
    'content': 'Why is the sky blue?',
  },
])

Async client

The AsyncClient class is used to make asynchronous requests. It can be configured with the same fields as the Client class.

import asyncio
from ollama import AsyncClient

async def chat():
  message = {'role': 'user', 'content': 'Why is the sky blue?'}
  response = await AsyncClient().chat(model='gemma3', 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='gemma3', messages=[message], stream=True):
    print(part['message']['content'], end='', flush=True)

asyncio.run(chat())

API

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

Chat

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

Generate

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

List

ollama.list()

Show

ollama.show('gemma3')

Create

ollama.create(model='example', from_='gemma3', system="You are Mario from Super Mario Bros.")

Copy

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

Delete

ollama.delete('gemma3')

Pull

ollama.pull('gemma3')

Push

ollama.push('user/gemma3')

Embed

ollama.embed(model='gemma3', input='The sky is blue because of rayleigh scattering')

Embed (batch)

ollama.embed(model='gemma3', input=['The sky is blue because of rayleigh scattering', 'Grass is green because of chlorophyll'])

Ps

ollama.ps()

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)

Core symbols most depended-on inside this repo

get
called by 61
ollama/_types.py
get_state
called by 17
examples/web_search_gpt_oss_helper.py
chat
called by 15
ollama/_client.py
convert_function_to_tool
called by 14
ollama/_utils.py
_request
called by 12
ollama/_client.py
generate
called by 12
ollama/_client.py
_request
called by 12
ollama/_client.py
chat
called by 11
ollama/_client.py

Shape

Function 148
Method 79
Class 63

Languages

Python100%

Modules by API surface

tests/test_client.py83 symbols
ollama/_types.py55 symbols
ollama/_client.py52 symbols
examples/web_search_gpt_oss_helper.py32 symbols
tests/test_utils.py23 symbols
tests/test_type_serialization.py10 symbols
examples/web-search-mcp.py5 symbols
examples/web-search-gpt-oss.py4 symbols
examples/async-tools.py3 symbols
examples/async-structured-outputs.py3 symbols
ollama/_utils.py2 symbols
examples/tools.py2 symbols

Dependencies from manifests, versioned

annotated-types0.7.0 · 1×
anyio4.5.2 · 1×
certifi2025.1.31 · 1×
exceptiongroup1.2.2 · 1×
h110.14.0 · 1×
httpcore1.0.7 · 1×
httpx0.28.1 · 1×
idna3.10 · 1×
pydantic2.10.6 · 1×
pydantic-core2.27.2 · 1×
sniffio1.3.1 · 1×
typing-extensions4.12.2 · 1×

For agents

$ claude mcp add ollama-python \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact