ps method not working through OpenWebUI - ValidationError #258

Closed
opened 2026-02-15 16:29:16 -05:00 by yindo · 1 comment
Owner

Originally created by @ckuethe on GitHub (Apr 6, 2025).

As the subject says, the Client.ps method doesn't work through OpenWebUI. I'm using python 3.10 under jupyter on Ubuntu 22.04, with ollama-python 0.4.7. The server is running Ubuntu 24.04, ollama 0.6.4, and OpenWebUI 0.6.1 (or whatever the latest is at the time)

I think my library versions are all up to date:

>>> !pip install --upgrade ollama
Requirement already satisfied: ollama in /home/ckuethe/jupyter/lib/python3.10/site-packages (0.4.7)
Requirement already satisfied: pydantic<3.0.0,>=2.9.0 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from ollama) (2.9.2)
Requirement already satisfied: httpx<0.29,>=0.27 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from ollama) (0.28.1)
Requirement already satisfied: anyio in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (4.6.0)
Requirement already satisfied: httpcore==1.* in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (1.0.6)
Requirement already satisfied: certifi in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (2025.1.31)
Requirement already satisfied: idna in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (3.10)
Requirement already satisfied: h11<0.15,>=0.13 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpcore==1.*->httpx<0.29,>=0.27->ollama) (0.14.0)
Requirement already satisfied: typing-extensions>=4.6.1 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from pydantic<3.0.0,>=2.9.0->ollama) (4.12.2)
Requirement already satisfied: pydantic-core==2.23.4 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from pydantic<3.0.0,>=2.9.0->ollama) (2.23.4)
Requirement already satisfied: annotated-types>=0.6.0 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from pydantic<3.0.0,>=2.9.0->ollama) (0.7.0)
Requirement already satisfied: sniffio>=1.1 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from anyio->httpx<0.29,>=0.27->ollama) (1.3.1)
Requirement already satisfied: exceptiongroup>=1.0.2 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from anyio->httpx<0.29,>=0.27->ollama) (1.2.2)

I can connect to my LLM server and list the models I have downloaded... apparently 53 today.

>>> c = ollama.Client(
    host=f'https://{llm_svc}/ollama',
    headers={'Authorization': f'Bearer {apikey}'})
>>> len(c.list().models)
53

If I run a model directly on the ollama host I can see that it runs and consumes VRAM:

$ ollama run phi4 "why is the sky blue?" | wc
      6     199    1215
$ ollama ps
NAME           ID              SIZE     PROCESSOR    UNTIL              
phi4:latest    ac896e5b8b34    12 GB    100% GPU     4 minutes from now    

I can do the same thing with ollama-python and get some reasonable output:

>>> resp = c.generate("phi4", "why is the sky blue?")
>>> print((resp.done, resp.done_reason, len(resp.response), len(resp.context)))
(True, 'stop' 1393, 281)

Seems like OpenWebUI is correctly passing my commands through to the backend ollama instance, but...

>>> c.ps()
---------------------------------------------------------------------------
ValidationError                           Traceback (most recent call last)
Cell In[57], line 1
----> 1 c.ps()

File ~/jupyter/lib/python3.10/site-packages/ollama/_client.py:609, in Client.ps(self)
    608 def ps(self) -> ProcessResponse:
--> 609   return self._request(
    610     ProcessResponse,
    611     'GET',
    612     '/api/ps',
    613   )

File ~/jupyter/lib/python3.10/site-packages/ollama/_client.py:178, in Client._request(self, cls, stream, *args, **kwargs)
    174         yield cls(**part)
    176   return inner()
--> 178 return cls(**self._request_raw(*args, **kwargs).json())

File ~/jupyter/lib/python3.10/site-packages/pydantic/main.py:212, in BaseModel.__init__(self, **data)
    210 # `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks
    211 __tracebackhide__ = True
--> 212 validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
    213 if self is not validated_self:
    214     warnings.warn(
    215         'A custom validator is returning a value other than `self`.\n'
    216         "Returning anything other than `self` from a top level model validator isn't supported when validating via `__init__`.\n"
    217         'See the `model_validator` docs (https://docs.pydantic.dev/latest/concepts/validators/#model-validators) for more details.',
    218         category=None,
    219     )

ValidationError: 1 validation error for ProcessResponse
models
  Field required [type=missing, input_value={'http://llmhost:1143...e_vram/': 12298193578}]}}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.9/v/missing

But when I just issue the API call directly, then I do get a meaningful response:

>>> resp = c._request_raw('GET', '/api/ps')
>>> resp.json()
{'http://llmhost:11434/': {'models': [{'name': 'phi4:latest',
    'model': 'phi4:latest',
    'size': 12298193578,
    'digest': 'ac896e5b8b34a1f4efa7b14d7520725140d5512484457fab45d2a4ea14c69dba',
    'details': {'parent_model': '',
     'format': 'gguf',
     'family': 'phi3',
     'families': ['phi3'],
     'parameter_size': '14.7B',
     'quantization_level': 'Q4_K_M'},
    'expires_at': '2025-04-06T13:59:14.013026708-07:00',
    'size_vram': 12298193578}]}}
Originally created by @ckuethe on GitHub (Apr 6, 2025). As the subject says, the `Client.ps` method doesn't work through OpenWebUI. I'm using python 3.10 under jupyter on Ubuntu 22.04, with ollama-python 0.4.7. The server is running Ubuntu 24.04, ollama 0.6.4, and OpenWebUI 0.6.1 (or whatever the latest is at the time) I think my library versions are all up to date: ``` >>> !pip install --upgrade ollama Requirement already satisfied: ollama in /home/ckuethe/jupyter/lib/python3.10/site-packages (0.4.7) Requirement already satisfied: pydantic<3.0.0,>=2.9.0 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from ollama) (2.9.2) Requirement already satisfied: httpx<0.29,>=0.27 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from ollama) (0.28.1) Requirement already satisfied: anyio in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (4.6.0) Requirement already satisfied: httpcore==1.* in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (1.0.6) Requirement already satisfied: certifi in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (2025.1.31) Requirement already satisfied: idna in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpx<0.29,>=0.27->ollama) (3.10) Requirement already satisfied: h11<0.15,>=0.13 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from httpcore==1.*->httpx<0.29,>=0.27->ollama) (0.14.0) Requirement already satisfied: typing-extensions>=4.6.1 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from pydantic<3.0.0,>=2.9.0->ollama) (4.12.2) Requirement already satisfied: pydantic-core==2.23.4 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from pydantic<3.0.0,>=2.9.0->ollama) (2.23.4) Requirement already satisfied: annotated-types>=0.6.0 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from pydantic<3.0.0,>=2.9.0->ollama) (0.7.0) Requirement already satisfied: sniffio>=1.1 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from anyio->httpx<0.29,>=0.27->ollama) (1.3.1) Requirement already satisfied: exceptiongroup>=1.0.2 in /home/ckuethe/jupyter/lib/python3.10/site-packages (from anyio->httpx<0.29,>=0.27->ollama) (1.2.2) ``` I can connect to my LLM server and list the models I have downloaded... apparently 53 today. ```python >>> c = ollama.Client( host=f'https://{llm_svc}/ollama', headers={'Authorization': f'Bearer {apikey}'}) >>> len(c.list().models) 53 ``` If I run a model directly on the ollama host I can see that it runs and consumes VRAM: ``` $ ollama run phi4 "why is the sky blue?" | wc 6 199 1215 $ ollama ps NAME ID SIZE PROCESSOR UNTIL phi4:latest ac896e5b8b34 12 GB 100% GPU 4 minutes from now ``` I can do the same thing with ollama-python and get some reasonable output: ```python >>> resp = c.generate("phi4", "why is the sky blue?") >>> print((resp.done, resp.done_reason, len(resp.response), len(resp.context))) (True, 'stop' 1393, 281) ``` Seems like OpenWebUI is correctly passing my commands through to the backend ollama instance, but... ``` >>> c.ps() --------------------------------------------------------------------------- ValidationError Traceback (most recent call last) Cell In[57], line 1 ----> 1 c.ps() File ~/jupyter/lib/python3.10/site-packages/ollama/_client.py:609, in Client.ps(self) 608 def ps(self) -> ProcessResponse: --> 609 return self._request( 610 ProcessResponse, 611 'GET', 612 '/api/ps', 613 ) File ~/jupyter/lib/python3.10/site-packages/ollama/_client.py:178, in Client._request(self, cls, stream, *args, **kwargs) 174 yield cls(**part) 176 return inner() --> 178 return cls(**self._request_raw(*args, **kwargs).json()) File ~/jupyter/lib/python3.10/site-packages/pydantic/main.py:212, in BaseModel.__init__(self, **data) 210 # `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks 211 __tracebackhide__ = True --> 212 validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self) 213 if self is not validated_self: 214 warnings.warn( 215 'A custom validator is returning a value other than `self`.\n' 216 "Returning anything other than `self` from a top level model validator isn't supported when validating via `__init__`.\n" 217 'See the `model_validator` docs (https://docs.pydantic.dev/latest/concepts/validators/#model-validators) for more details.', 218 category=None, 219 ) ValidationError: 1 validation error for ProcessResponse models Field required [type=missing, input_value={'http://llmhost:1143...e_vram/': 12298193578}]}}, input_type=dict] For further information visit https://errors.pydantic.dev/2.9/v/missing ``` But when I just issue the API call directly, then I do get a meaningful response: ``` >>> resp = c._request_raw('GET', '/api/ps') >>> resp.json() {'http://llmhost:11434/': {'models': [{'name': 'phi4:latest', 'model': 'phi4:latest', 'size': 12298193578, 'digest': 'ac896e5b8b34a1f4efa7b14d7520725140d5512484457fab45d2a4ea14c69dba', 'details': {'parent_model': '', 'format': 'gguf', 'family': 'phi3', 'families': ['phi3'], 'parameter_size': '14.7B', 'quantization_level': 'Q4_K_M'}, 'expires_at': '2025-04-06T13:59:14.013026708-07:00', 'size_vram': 12298193578}]}} ```
yindo closed this issue 2026-02-15 16:29:16 -05:00
Author
Owner

@ckuethe commented on GitHub (Sep 18, 2025):

Somebody changed something, and it seems to work now (ollama-python 0.5.8, ollama 0.11.11, openwebui 0.6.30)

@ckuethe commented on GitHub (Sep 18, 2025): Somebody changed something, and it seems to work now (ollama-python 0.5.8, ollama 0.11.11, openwebui 0.6.30)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ollama/ollama-python#258