OllamaInterface/Documentation/Source/Plugin_AI_Ollama.OllamaInterface.OllamaClient.html

changeset 18
0a5b9c233a6e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/OllamaInterface/Documentation/Source/Plugin_AI_Ollama.OllamaInterface.OllamaClient.html	Thu Aug 29 13:15:36 2024 +0200
@@ -0,0 +1,742 @@
+<!DOCTYPE html>
+<html><head>
+<title>Plugin_AI_Ollama.OllamaInterface.OllamaClient</title>
+<meta charset="UTF-8">
+<link rel="stylesheet" href="styles.css">
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>Plugin_AI_Ollama.OllamaInterface.OllamaClient</h1>
+<p>
+Module implementing the 'ollama' client.
+</p>
+
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#OllamaClient">OllamaClient</a></td>
+<td>Class implementing the 'ollama' client.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClientState">OllamaClientState</a></td>
+<td>Class defining the various client states.</td>
+</tr>
+</table>
+
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<hr />
+<hr />
+<a NAME="OllamaClient" ID="OllamaClient"></a>
+<h2>OllamaClient</h2>
+<p>
+    Class implementing the 'ollama' client.
+</p>
+
+<h3>Signals</h3>
+<dl>
+
+<dt>errorOccurred(error:str)</dt>
+<dd>
+emitted to indicate a network error occurred
+        while processing the request
+</dd>
+<dt>finished()</dt>
+<dd>
+emitted to indicate the completion of a request
+</dd>
+<dt>modelsList(modelNames:list[str])</dt>
+<dd>
+emitted after the list of model
+        names was obtained from the 'ollama' server
+</dd>
+<dt>pullError(msg:str)</dt>
+<dd>
+emitted to indicate an error during a pull operation
+</dd>
+<dt>pullStatus(msg:str, id:str, total:int, completed:int)</dt>
+<dd>
+emitted to indicate
+        the status of a pull request as reported by the 'ollama' server
+</dd>
+<dt>replyReceived(content:str, role:str, done:bool)</dt>
+<dd>
+emitted after a response
+        from the 'ollama' server was received
+</dd>
+<dt>serverStateChanged(ok:bool, msg:str)</dt>
+<dd>
+emitted to indicate a change of the
+        server responsiveness
+</dd>
+<dt>serverVersion(version:str)</dt>
+<dd>
+emitted after the server version was obtained
+        from the 'ollama' server
+</dd>
+</dl>
+<h3>Derived from</h3>
+QObject
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#OllamaClient.__init__">OllamaClient</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__errorOccurred">__errorOccurred</a></td>
+<td>Private method to handle a network error of the given reply.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__getHeartbeatUrl">__getHeartbeatUrl</a></td>
+<td>Private method to get the current heartbeat URL.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__getServerReply">__getServerReply</a></td>
+<td>Private method to send a request to the 'ollama' server and return a reply object.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__periodicHeartbeat">__periodicHeartbeat</a></td>
+<td>Private slot to do a periodic check of the 'ollama' server responsiveness.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__processChatResponse">__processChatResponse</a></td>
+<td>Private method to process the chat response of the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__processData">__processData</a></td>
+<td>Private method to receive data from the 'ollama' server and process it with a given processing function or method.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__processGenerateResponse">__processGenerateResponse</a></td>
+<td>Private method to process the generate response of the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__processModelsList">__processModelsList</a></td>
+<td>Private method to process the tags response of the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__processPullResponse">__processPullResponse</a></td>
+<td>Private method to process a pull response of the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__processVersion">__processVersion</a></td>
+<td>Private method to process the version response of the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__replyFinished">__replyFinished</a></td>
+<td>Private method to handle the finished signal of the reply.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__sendRequest">__sendRequest</a></td>
+<td>Private method to send a request to the 'ollama' server and handle its responses.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__sendSyncRequest">__sendSyncRequest</a></td>
+<td>Private method to send a request to the 'ollama' server and handle its responses.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__serverNotRespondingMessage">__serverNotRespondingMessage</a></td>
+<td>Private method to assemble and return a message for a non-responsive server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.__setHeartbeatTimer">__setHeartbeatTimer</a></td>
+<td>Private slot to configure the heartbeat timer.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.abortPull">abortPull</a></td>
+<td>Public method to abort an ongoing pull operation.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.chat">chat</a></td>
+<td>Public method to request a chat completion from the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.generate">generate</a></td>
+<td>Public method to request to generate a completion from the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.heartbeat">heartbeat</a></td>
+<td>Public method to check, if the 'ollama' server has started and is responsive.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.list">list</a></td>
+<td>Public method to request a list of models available locally from the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.listDetails">listDetails</a></td>
+<td>Public method to request a list of models available locally from the 'ollama' server with some model details.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.listRunning">listRunning</a></td>
+<td>Public method to request a list of running models from the 'ollama' server.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.pull">pull</a></td>
+<td>Public method to ask the 'ollama' server to pull the given model.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.remove">remove</a></td>
+<td>Public method to ask the 'ollama' server to delete the given model.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.setMode">setMode</a></td>
+<td>Public method to set the client mode to local.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.state">state</a></td>
+<td>Public method to get the current client state.</td>
+</tr>
+<tr>
+<td><a href="#OllamaClient.version">version</a></td>
+<td>Public method to request the version from the 'ollama' server.</td>
+</tr>
+</table>
+
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+
+<a NAME="OllamaClient.__init__" ID="OllamaClient.__init__"></a>
+<h4>OllamaClient (Constructor)</h4>
+<b>OllamaClient</b>(<i>plugin, parent=None</i>)
+<p>
+        Constructor
+</p>
+
+<dl>
+
+<dt><i>plugin</i> (PluginOllamaInterface)</dt>
+<dd>
+reference to the plugin object
+</dd>
+<dt><i>parent</i> (QObject (optional))</dt>
+<dd>
+reference to the parent object (defaults to None)
+</dd>
+</dl>
+<a NAME="OllamaClient.__errorOccurred" ID="OllamaClient.__errorOccurred"></a>
+<h4>OllamaClient.__errorOccurred</h4>
+<b>__errorOccurred</b>(<i>errorCode, reply</i>)
+<p>
+        Private method to handle a network error of the given reply.
+</p>
+
+<dl>
+
+<dt><i>errorCode</i> (QNetworkReply.NetworkError)</dt>
+<dd>
+error code reported by the reply
+</dd>
+<dt><i>reply</i> (QNetworkReply)</dt>
+<dd>
+reference to the network reply object
+</dd>
+</dl>
+<a NAME="OllamaClient.__getHeartbeatUrl" ID="OllamaClient.__getHeartbeatUrl"></a>
+<h4>OllamaClient.__getHeartbeatUrl</h4>
+<b>__getHeartbeatUrl</b>(<i></i>)
+<p>
+        Private method to get the current heartbeat URL.
+</p>
+
+<dl>
+<dt>Return:</dt>
+<dd>
+URL to be contacted by the heartbeat check
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="OllamaClient.__getServerReply" ID="OllamaClient.__getServerReply"></a>
+<h4>OllamaClient.__getServerReply</h4>
+<b>__getServerReply</b>(<i>endpoint, data=None, delete=False</i>)
+<p>
+        Private method to send a request to the 'ollama' server and return a reply
+        object.
+</p>
+
+<dl>
+
+<dt><i>endpoint</i> (str)</dt>
+<dd>
+'ollama' API endpoint to be contacted
+</dd>
+<dt><i>data</i> (dict (optional))</dt>
+<dd>
+dictionary containing the data to send to the server
+            (defaults to None)
+</dd>
+<dt><i>delete</i> (bool (optional))</dt>
+<dd>
+flag indicating to send a delete request (defaults to False)
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+'ollama' server reply
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+QNetworkReply
+</dd>
+</dl>
+<a NAME="OllamaClient.__periodicHeartbeat" ID="OllamaClient.__periodicHeartbeat"></a>
+<h4>OllamaClient.__periodicHeartbeat</h4>
+<b>__periodicHeartbeat</b>(<i></i>)
+<p>
+        Private slot to do a periodic check of the 'ollama' server responsiveness.
+</p>
+
+<a NAME="OllamaClient.__processChatResponse" ID="OllamaClient.__processChatResponse"></a>
+<h4>OllamaClient.__processChatResponse</h4>
+<b>__processChatResponse</b>(<i>response</i>)
+<p>
+        Private method to process the chat response of the 'ollama' server.
+</p>
+
+<dl>
+
+<dt><i>response</i> (dict)</dt>
+<dd>
+dictionary containing the chat response
+</dd>
+</dl>
+<a NAME="OllamaClient.__processData" ID="OllamaClient.__processData"></a>
+<h4>OllamaClient.__processData</h4>
+<b>__processData</b>(<i>reply, processResponse</i>)
+<p>
+        Private method to receive data from the 'ollama' server and process it with a
+        given processing function or method.
+</p>
+
+<dl>
+
+<dt><i>reply</i> (QNetworkReply)</dt>
+<dd>
+reference to the network reply object
+</dd>
+<dt><i>processResponse</i> (function)</dt>
+<dd>
+processing function
+</dd>
+</dl>
+<a NAME="OllamaClient.__processGenerateResponse" ID="OllamaClient.__processGenerateResponse"></a>
+<h4>OllamaClient.__processGenerateResponse</h4>
+<b>__processGenerateResponse</b>(<i>response</i>)
+<p>
+        Private method to process the generate response of the 'ollama' server.
+</p>
+
+<dl>
+
+<dt><i>response</i> (dict)</dt>
+<dd>
+dictionary containing the generate response
+</dd>
+</dl>
+<a NAME="OllamaClient.__processModelsList" ID="OllamaClient.__processModelsList"></a>
+<h4>OllamaClient.__processModelsList</h4>
+<b>__processModelsList</b>(<i>response</i>)
+<p>
+        Private method to process the tags response of the 'ollama' server.
+</p>
+
+<dl>
+
+<dt><i>response</i> (dict)</dt>
+<dd>
+dictionary containing the tags response
+</dd>
+</dl>
+<a NAME="OllamaClient.__processPullResponse" ID="OllamaClient.__processPullResponse"></a>
+<h4>OllamaClient.__processPullResponse</h4>
+<b>__processPullResponse</b>(<i>response</i>)
+<p>
+        Private method to process a pull response of the 'ollama' server.
+</p>
+
+<dl>
+
+<dt><i>response</i> (dict)</dt>
+<dd>
+dictionary containing the pull response
+</dd>
+</dl>
+<a NAME="OllamaClient.__processVersion" ID="OllamaClient.__processVersion"></a>
+<h4>OllamaClient.__processVersion</h4>
+<b>__processVersion</b>(<i>response</i>)
+<p>
+        Private method to process the version response of the 'ollama' server.
+</p>
+
+<dl>
+
+<dt><i>response</i> (dict)</dt>
+<dd>
+dictionary containing the version response
+</dd>
+</dl>
+<a NAME="OllamaClient.__replyFinished" ID="OllamaClient.__replyFinished"></a>
+<h4>OllamaClient.__replyFinished</h4>
+<b>__replyFinished</b>(<i>reply</i>)
+<p>
+        Private method to handle the finished signal of the reply.
+</p>
+
+<dl>
+
+<dt><i>reply</i> (QNetworkReply)</dt>
+<dd>
+reference to the finished network reply object
+</dd>
+</dl>
+<a NAME="OllamaClient.__sendRequest" ID="OllamaClient.__sendRequest"></a>
+<h4>OllamaClient.__sendRequest</h4>
+<b>__sendRequest</b>(<i>endpoint, data=None, processResponse=None</i>)
+<p>
+        Private method to send a request to the 'ollama' server and handle its
+        responses.
+</p>
+
+<dl>
+
+<dt><i>endpoint</i> (str)</dt>
+<dd>
+'ollama' API endpoint to be contacted
+</dd>
+<dt><i>data</i> (dict (optional))</dt>
+<dd>
+dictionary containing the data to send to the server
+            (defaults to None)
+</dd>
+<dt><i>processResponse</i> (function (optional))</dt>
+<dd>
+function handling the received data (defaults to None)
+</dd>
+</dl>
+<a NAME="OllamaClient.__sendSyncRequest" ID="OllamaClient.__sendSyncRequest"></a>
+<h4>OllamaClient.__sendSyncRequest</h4>
+<b>__sendSyncRequest</b>(<i>endpoint, data=None, delete=False</i>)
+<p>
+        Private method to send a request to the 'ollama' server and handle its
+        responses.
+</p>
+
+<dl>
+
+<dt><i>endpoint</i> (str)</dt>
+<dd>
+'ollama' API endpoint to be contacted
+</dd>
+<dt><i>data</i> (dict (optional))</dt>
+<dd>
+dictionary containing the data to send to the server
+            (defaults to None)
+</dd>
+<dt><i>delete</i> (bool (optional))</dt>
+<dd>
+flag indicating to send a delete request (defaults to False)
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+tuple containing the data sent by the 'ollama' server and the HTTP
+            status code
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (Any, int)
+</dd>
+</dl>
+<a NAME="OllamaClient.__serverNotRespondingMessage" ID="OllamaClient.__serverNotRespondingMessage"></a>
+<h4>OllamaClient.__serverNotRespondingMessage</h4>
+<b>__serverNotRespondingMessage</b>(<i></i>)
+<p>
+        Private method to assemble and return a message for a non-responsive server.
+</p>
+
+<dl>
+<dt>Return:</dt>
+<dd>
+error message
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="OllamaClient.__setHeartbeatTimer" ID="OllamaClient.__setHeartbeatTimer"></a>
+<h4>OllamaClient.__setHeartbeatTimer</h4>
+<b>__setHeartbeatTimer</b>(<i></i>)
+<p>
+        Private slot to configure the heartbeat timer.
+</p>
+
+<a NAME="OllamaClient.abortPull" ID="OllamaClient.abortPull"></a>
+<h4>OllamaClient.abortPull</h4>
+<b>abortPull</b>(<i></i>)
+<p>
+        Public method to abort an ongoing pull operation.
+</p>
+
+<a NAME="OllamaClient.chat" ID="OllamaClient.chat"></a>
+<h4>OllamaClient.chat</h4>
+<b>chat</b>(<i>model, messages, streaming=True</i>)
+<p>
+        Public method to request a chat completion from the 'ollama' server.
+</p>
+
+<dl>
+
+<dt><i>model</i> (str)</dt>
+<dd>
+name of the model to be used
+</dd>
+<dt><i>messages</i> (list of dict)</dt>
+<dd>
+list of message objects
+</dd>
+<dt><i>streaming</i> (bool)</dt>
+<dd>
+flag indicating to receive a streaming response
+</dd>
+</dl>
+<a NAME="OllamaClient.generate" ID="OllamaClient.generate"></a>
+<h4>OllamaClient.generate</h4>
+<b>generate</b>(<i>model, prompt, suffix=None</i>)
+<p>
+        Public method to request to generate a completion from the 'ollama' server.
+</p>
+
+<dl>
+
+<dt><i>model</i> (str)</dt>
+<dd>
+name of the model to be used
+</dd>
+<dt><i>prompt</i> (str)</dt>
+<dd>
+prompt to generate a response for
+</dd>
+<dt><i>suffix</i> (str (optional))</dt>
+<dd>
+text after the model response (defaults to None)
+</dd>
+</dl>
+<a NAME="OllamaClient.heartbeat" ID="OllamaClient.heartbeat"></a>
+<h4>OllamaClient.heartbeat</h4>
+<b>heartbeat</b>(<i></i>)
+<p>
+        Public method to check, if the 'ollama' server has started and is responsive.
+</p>
+
+<dl>
+<dt>Return:</dt>
+<dd>
+flag indicating a responsive 'ollama' server
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<a NAME="OllamaClient.list" ID="OllamaClient.list"></a>
+<h4>OllamaClient.list</h4>
+<b>list</b>(<i></i>)
+<p>
+        Public method to request a list of models available locally from the 'ollama'
+        server.
+</p>
+
+<a NAME="OllamaClient.listDetails" ID="OllamaClient.listDetails"></a>
+<h4>OllamaClient.listDetails</h4>
+<b>listDetails</b>(<i></i>)
+<p>
+        Public method to request a list of models available locally from the 'ollama'
+        server with some model details.
+</p>
+
+<dl>
+<dt>Return:</dt>
+<dd>
+list of dictionaries containing the available models and related data
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list[dict[str, Any]]
+</dd>
+</dl>
+<a NAME="OllamaClient.listRunning" ID="OllamaClient.listRunning"></a>
+<h4>OllamaClient.listRunning</h4>
+<b>listRunning</b>(<i></i>)
+<p>
+        Public method to request a list of running models from the 'ollama' server.
+</p>
+
+<dl>
+<dt>Return:</dt>
+<dd>
+list of dictionaries containing the running models and related data
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list[dict[str, Any]]
+</dd>
+</dl>
+<a NAME="OllamaClient.pull" ID="OllamaClient.pull"></a>
+<h4>OllamaClient.pull</h4>
+<b>pull</b>(<i>model</i>)
+<p>
+        Public method to ask the 'ollama' server to pull the given model.
+</p>
+
+<dl>
+
+<dt><i>model</i> (str)</dt>
+<dd>
+name of the model
+</dd>
+</dl>
+<a NAME="OllamaClient.remove" ID="OllamaClient.remove"></a>
+<h4>OllamaClient.remove</h4>
+<b>remove</b>(<i>model</i>)
+<p>
+        Public method to ask the 'ollama' server to delete the given model.
+</p>
+
+<dl>
+
+<dt><i>model</i> (str)</dt>
+<dd>
+name of the model
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+flag indicating success
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<a NAME="OllamaClient.setMode" ID="OllamaClient.setMode"></a>
+<h4>OllamaClient.setMode</h4>
+<b>setMode</b>(<i>local</i>)
+<p>
+        Public method to set the client mode to local.
+</p>
+
+<dl>
+
+<dt><i>local</i> (bool)</dt>
+<dd>
+flag indicating to connect to a locally started ollama server
+</dd>
+</dl>
+<a NAME="OllamaClient.state" ID="OllamaClient.state"></a>
+<h4>OllamaClient.state</h4>
+<b>state</b>(<i></i>)
+<p>
+        Public method to get the current client state.
+</p>
+
+<dl>
+<dt>Return:</dt>
+<dd>
+current client state
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+OllamaClientState
+</dd>
+</dl>
+<a NAME="OllamaClient.version" ID="OllamaClient.version"></a>
+<h4>OllamaClient.version</h4>
+<b>version</b>(<i></i>)
+<p>
+        Public method to request the version from the 'ollama' server.
+</p>
+
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+<hr />
+<a NAME="OllamaClientState" ID="OllamaClientState"></a>
+<h2>OllamaClientState</h2>
+<p>
+    Class defining the various client states.
+</p>
+
+<h3>Derived from</h3>
+enum.Enum
+<h3>Class Attributes</h3>
+<table>
+<tr><td>Finished</td></tr>
+<tr><td>Receiving</td></tr>
+<tr><td>Requesting</td></tr>
+<tr><td>Waiting</td></tr>
+</table>
+
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<h3>Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+
+
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>

eric ide

mercurial