--- /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>