diff --git a/README.md b/README.md index b5eb6a33..16f382c7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ The Ollama Python library provides the easiest way to integrate Python 3.8+ proj ## Prerequisites - [Ollama](https://ollama.com/download) should be installed and running -- Pull a model to use with the library: `ollama pull ` e.g. `ollama pull gemma3` +- Pull a model to use with the library: `ollama pull ` e.g. `ollama pull gemma4` - See [Ollama.com](https://ollama.com/search) for more information on the models available. ## Install @@ -20,12 +20,15 @@ pip install ollama from ollama import chat from ollama import ChatResponse -response: ChatResponse = chat(model='gemma3', messages=[ - { - 'role': 'user', - 'content': 'Why is the sky blue?', - }, -]) +response: ChatResponse = chat( + model='gemma4', + 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) @@ -41,9 +44,9 @@ 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, + model='gemma4', + messages=[{'role': 'user', 'content': 'Why is the sky blue?'}], + stream=True, ) for chunk in stream: @@ -110,10 +113,7 @@ curl https://ollama.com/api/tags import os from ollama import Client -client = Client( - host='https://ollama.com', - headers={'Authorization': 'Bearer ' + os.environ.get('OLLAMA_API_KEY')} -) +client = Client(host='https://ollama.com', headers={'Authorization': 'Bearer ' + os.environ.get('OLLAMA_API_KEY')}) messages = [ { @@ -133,16 +133,17 @@ All extra keyword arguments are passed into the [`httpx.Client`](https://www.pyt ```python from ollama import Client -client = Client( - host='http://localhost:11434', - headers={'x-some-header': 'some-value'} + +client = Client(host='http://localhost:11434', headers={'x-some-header': 'some-value'}) +response = client.chat( + model='gemma4', + messages=[ + { + 'role': 'user', + 'content': 'Why is the sky blue?', + }, + ], ) -response = client.chat(model='gemma3', messages=[ - { - 'role': 'user', - 'content': 'Why is the sky blue?', - }, -]) ``` ## Async client @@ -153,9 +154,11 @@ The `AsyncClient` class is used to make asynchronous requests. It can be configu 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]) + response = await AsyncClient().chat(model='gemma4', messages=[message]) + asyncio.run(chat()) ``` @@ -166,11 +169,13 @@ Setting `stream=True` modifies functions to return a Python asynchronous generat 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): + async for part in await AsyncClient().chat(model='gemma4', messages=[message], stream=True): print(part['message']['content'], end='', flush=True) + asyncio.run(chat()) ``` @@ -181,13 +186,13 @@ The Ollama Python library's API is designed around the [Ollama REST API](https:/ ### Chat ```python -ollama.chat(model='gemma3', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}]) +ollama.chat(model='gemma4', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}]) ``` ### Generate ```python -ollama.generate(model='gemma3', prompt='Why is the sky blue?') +ollama.generate(model='gemma4', prompt='Why is the sky blue?') ``` ### List @@ -199,49 +204,49 @@ ollama.list() ### Show ```python -ollama.show('gemma3') +ollama.show('gemma4') ``` ### Create ```python -ollama.create(model='example', from_='gemma3', system="You are Mario from Super Mario Bros.") +ollama.create(model='example', from_='gemma4', system='You are Mario from Super Mario Bros.') ``` ### Copy ```python -ollama.copy('gemma3', 'user/gemma3') +ollama.copy('gemma4', 'user/gemma4') ``` ### Delete ```python -ollama.delete('gemma3') +ollama.delete('gemma4') ``` ### Pull ```python -ollama.pull('gemma3') +ollama.pull('gemma4') ``` ### Push ```python -ollama.push('user/gemma3') +ollama.push('user/gemma4') ``` ### Embed ```python -ollama.embed(model='gemma3', input='The sky is blue because of rayleigh scattering') +ollama.embed(model='gemma4', input='The sky is blue because of rayleigh scattering') ``` ### Embed (batch) ```python -ollama.embed(model='gemma3', input=['The sky is blue because of rayleigh scattering', 'Grass is green because of chlorophyll']) +ollama.embed(model='gemma4', input=['The sky is blue because of rayleigh scattering', 'Grass is green because of chlorophyll']) ``` ### Ps diff --git a/examples/async-chat.py b/examples/async-chat.py index d312621b..52960aca 100644 --- a/examples/async-chat.py +++ b/examples/async-chat.py @@ -12,7 +12,7 @@ async def main(): ] client = AsyncClient() - response = await client.chat('gemma3', messages=messages) + response = await client.chat('gemma4', messages=messages) print(response['message']['content']) diff --git a/examples/async-generate.py b/examples/async-generate.py index 125be817..62b4ec1c 100644 --- a/examples/async-generate.py +++ b/examples/async-generate.py @@ -5,7 +5,7 @@ async def main(): client = ollama.AsyncClient() - response = await client.generate('gemma3', 'Why is the sky blue?') + response = await client.generate('gemma4', 'Why is the sky blue?') print(response['response']) diff --git a/examples/chat-logprobs.py b/examples/chat-logprobs.py index b5eea18e..107f6eb7 100644 --- a/examples/chat-logprobs.py +++ b/examples/chat-logprobs.py @@ -22,7 +22,7 @@ def print_logprobs(logprobs: Iterable[dict], label: str) -> None: ] response = ollama.chat( - model='gemma3', + model='gemma4', messages=messages, logprobs=True, top_logprobs=3, diff --git a/examples/chat-stream.py b/examples/chat-stream.py index 4e7625ef..547f8bdf 100644 --- a/examples/chat-stream.py +++ b/examples/chat-stream.py @@ -7,5 +7,5 @@ }, ] -for part in chat('gemma3', messages=messages, stream=True): +for part in chat('gemma4', messages=messages, stream=True): print(part['message']['content'], end='', flush=True) diff --git a/examples/chat-with-history.py b/examples/chat-with-history.py index 72754718..183ffc1f 100644 --- a/examples/chat-with-history.py +++ b/examples/chat-with-history.py @@ -23,7 +23,7 @@ while True: user_input = input('Chat with history: ') response = chat( - 'gemma3', + 'gemma4', messages=[*messages, {'role': 'user', 'content': user_input}], ) diff --git a/examples/chat.py b/examples/chat.py index fd498430..9cd1520d 100644 --- a/examples/chat.py +++ b/examples/chat.py @@ -7,5 +7,5 @@ }, ] -response = chat('gemma3', messages=messages) +response = chat('gemma4', messages=messages) print(response['message']['content']) diff --git a/examples/create.py b/examples/create.py index 4ed8376f..ba526242 100755 --- a/examples/create.py +++ b/examples/create.py @@ -3,7 +3,7 @@ client = Client() response = client.create( model='my-assistant', - from_='gemma3', + from_='gemma4', system='You are mario from Super Mario Bros.', stream=False, ) diff --git a/examples/generate-logprobs.py b/examples/generate-logprobs.py index 494eb3e0..a5054872 100644 --- a/examples/generate-logprobs.py +++ b/examples/generate-logprobs.py @@ -15,7 +15,7 @@ def print_logprobs(logprobs: Iterable[dict], label: str) -> None: response = ollama.generate( - model='gemma3', + model='gemma4', prompt='hi! be concise.', logprobs=True, top_logprobs=3, diff --git a/examples/generate-stream.py b/examples/generate-stream.py index 5abc2f33..d0624074 100644 --- a/examples/generate-stream.py +++ b/examples/generate-stream.py @@ -1,4 +1,4 @@ from ollama import generate -for part in generate('gemma3', 'Why is the sky blue?', stream=True): +for part in generate('gemma4', 'Why is the sky blue?', stream=True): print(part['response'], end='', flush=True) diff --git a/examples/generate.py b/examples/generate.py index 69483e58..68e58d25 100644 --- a/examples/generate.py +++ b/examples/generate.py @@ -1,4 +1,4 @@ from ollama import generate -response = generate('gemma3', 'Why is the sky blue?') +response = generate('gemma4', 'Why is the sky blue?') print(response['response']) diff --git a/examples/multimodal-chat.py b/examples/multimodal-chat.py index db9209b1..836cf359 100644 --- a/examples/multimodal-chat.py +++ b/examples/multimodal-chat.py @@ -11,7 +11,7 @@ # img = Path(path).read_bytes() response = chat( - model='gemma3', + model='gemma4', messages=[ { 'role': 'user', diff --git a/examples/ps.py b/examples/ps.py index 0aa2cac1..f3f03031 100644 --- a/examples/ps.py +++ b/examples/ps.py @@ -1,7 +1,7 @@ from ollama import ProcessResponse, chat, ps, pull # Ensure at least one model is loaded -response = pull('gemma3', stream=True) +response = pull('gemma4', stream=True) progress_states = set() for progress in response: if progress.get('status') in progress_states: @@ -12,7 +12,7 @@ print('\n') print('Waiting for model to load... \n') -chat(model='gemma3', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}]) +chat(model='gemma4', messages=[{'role': 'user', 'content': 'Why is the sky blue?'}]) response: ProcessResponse = ps() diff --git a/examples/pull.py b/examples/pull.py index ce3a09ca..d333667a 100644 --- a/examples/pull.py +++ b/examples/pull.py @@ -3,7 +3,7 @@ from ollama import pull current_digest, bars = '', {} -for progress in pull('gemma3', stream=True): +for progress in pull('gemma4', stream=True): digest = progress.get('digest', '') if digest != current_digest and current_digest in bars: bars[current_digest].close() diff --git a/examples/show.py b/examples/show.py index 184a1e3e..d38ba857 100644 --- a/examples/show.py +++ b/examples/show.py @@ -1,6 +1,6 @@ from ollama import ShowResponse, show -response: ShowResponse = show('gemma3') +response: ShowResponse = show('gemma4') print('Model Information:') print(f'Modified at: {response.modified_at}') print(f'Template: {response.template}') diff --git a/examples/structured-outputs-image.py b/examples/structured-outputs-image.py index c72f51f2..9c43be7c 100644 --- a/examples/structured-outputs-image.py +++ b/examples/structured-outputs-image.py @@ -33,7 +33,7 @@ class ImageDescription(BaseModel): # Set up chat as usual response = chat( - model='gemma3', + model='gemma4', format=ImageDescription.model_json_schema(), # Pass in the schema for the response messages=[ {