Metadata-Version: 2.1 Name: ollama Version: 0.3.3 Summary: The official Python client for Ollama. Home-page: https://ollama.ai License: MIT Author: Ollama Author-email: hello@ollama.com Requires-Python: >=3.8,<4.0 Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Requires-Dist: httpx (>=0.27.0,<0.28.0) Project-URL: Repository, https://github.com/jmorganca/ollama-python Description-Content-Type: text/markdown # Ollama Python Library The Ollama Python library provides the easiest way to integrate Python 3.8+ projects with [Ollama](https://github.com/ollama/ollama). ## Install ```sh pip install ollama ``` ## Usage ```python 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. ```python 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](https://github.com/ollama/ollama/blob/main/docs/api.md) ### Chat ```python ollama.chat(model='llama3.1', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}]) ``` ### Generate ```python ollama.generate(model='llama3.1', prompt='Why is the sky blue?') ``` ### List ```python ollama.list() ``` ### Show ```python ollama.show('llama3.1') ``` ### Create ```python modelfile=''' FROM llama3.1 SYSTEM You are mario from super mario bros. ''' ollama.create(model='example', modelfile=modelfile) ``` ### Copy ```python ollama.copy('llama3.1', 'user/llama3.1') ``` ### Delete ```python ollama.delete('llama3.1') ``` ### Pull ```python ollama.pull('llama3.1') ``` ### Push ```python ollama.push('user/llama3.1') ``` ### Embeddings ```python ollama.embeddings(model='llama3.1', prompt='The sky is blue because of rayleigh scattering') ``` ### Ps ```python 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 ```python 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 ```python 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: ```python 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. ```python 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) ```