@@ -28,6 +28,9 @@ def __init__(
2828 self .name = name
2929 self .model_name = model_name
3030 self .provider = provider
31+ if parameters is None :
32+ parameters = {}
33+ self .prompt_template = parameters .pop ('prompt_template' , None )
3134 self .parameters = parameters
3235 self .created_at = created_at
3336 self .updated_at = updated_at
@@ -39,9 +42,27 @@ def update(
3942 name : str = None ,
4043 model_name : str = None ,
4144 provider = None ,
45+ prompt_template = None ,
46+ datasources = None ,
4247 parameters = None ,
43- datasources = None
4448 ):
49+ """
50+ Update mind
51+
52+ If parameter is set it will be applied to mind
53+
54+ Datasource can be passed as
55+ - name, str
56+ - Datasource object (minds.datasources.Database)
57+ - datasource config (minds.datasources.DatabaseConfig), in this case datasource will be created
58+
59+ :param name: new name of the mind, optional
60+ :param model_name: new llm model name, optional
61+ :param provider: new llm provider, optional
62+ :param prompt_template: new prompt template, optional
63+ :param datasources: alter list of datasources used by mind, optional
64+ :param parameters, dict: alter other parameters of the mind, optional
65+ """
4566 data = {}
4667
4768 if datasources is not None :
@@ -57,8 +78,13 @@ def update(
5778 data ['model_name' ] = model_name
5879 if provider is not None :
5980 data ['provider' ] = provider
60- if parameters is not None :
61- data ['parameters' ] = parameters
81+ if parameters is None :
82+ parameters = {}
83+
84+ data ['parameters' ] = parameters
85+
86+ if prompt_template is not None :
87+ data ['parameters' ]['prompt_template' ] = prompt_template
6288
6389 self .api .patch (
6490 f'/projects/{ self .project } /minds/{ self .name } ' ,
@@ -68,6 +94,15 @@ def update(
6894 self .name = name
6995
7096 def add_datasource (self , datasource : Datasource ):
97+ """
98+ Add datasource to mind
99+ Datasource can be passed as
100+ - name, str
101+ - Datasource object (minds.datasources.Database)
102+ - datasource config (minds.datasources.DatabaseConfig), in this case datasource will be created
103+
104+ :param datasource: input datasource
105+ """
71106
72107 ds_name = self .client .minds ._check_datasource (datasource )
73108
@@ -82,6 +117,15 @@ def add_datasource(self, datasource: Datasource):
82117 self .datasources = updated .datasources
83118
84119 def del_datasource (self , datasource : Union [Datasource , str ]):
120+ """
121+ Delete datasource from mind
122+
123+ Datasource can be passed as
124+ - name, str
125+ - Datasource object (minds.datasources.Database)
126+
127+ :param datasource: datasource to delete
128+ """
85129 if isinstance (datasource , Datasource ):
86130 datasource = datasource .name
87131 elif not isinstance (datasource , str ):
@@ -126,11 +170,11 @@ def completion(self, message: str, stream: bool = False) -> Union[str, Iterable[
126170 stream = stream
127171 )
128172 if stream :
129- return self .stream_response (response )
173+ return self ._stream_response (response )
130174 else :
131175 return response .choices [0 ].message .content
132176
133- def stream_response (self , response ):
177+ def _stream_response (self , response ):
134178 for chunk in response :
135179 yield chunk .choices [0 ].delta
136180
@@ -143,13 +187,26 @@ def __init__(self, client):
143187 self .project = 'mindsdb'
144188
145189 def list (self ) -> List [Mind ]:
190+ """
191+ Returns list of minds
192+
193+ :return: iterable
194+ """
195+
146196 data = self .api .get (f'/projects/{ self .project } /minds' ).json ()
147197 minds_list = []
148198 for item in data :
149199 minds_list .append (Mind (self .client , ** item ))
150200 return minds_list
151201
152202 def get (self , name : str ) -> Mind :
203+ """
204+ Get mind by name
205+
206+ :param name: name of the mind
207+ :return: a mind object
208+ """
209+
153210 item = self .api .get (f'/projects/{ self .project } /minds/{ name } ' ).json ()
154211 return Mind (self .client , ** item )
155212
@@ -172,10 +229,28 @@ def create(
172229 self , name ,
173230 model_name = None ,
174231 provider = None ,
175- parameters = None ,
232+ prompt_template = None ,
176233 datasources = None ,
234+ parameters = None ,
177235 replace = False ,
178236 ) -> Mind :
237+ """
238+ Create a new mind and return it
239+
240+ Datasource can be passed as
241+ - name, str
242+ - Datasource object (minds.datasources.Database)
243+ - datasource config (minds.datasources.DatabaseConfig), in this case datasource will be created
244+
245+ :param name: name of the mind
246+ :param model_name: llm model name, optional
247+ :param provider: llm provider, optional
248+ :param prompt_template: instructions to llm, optional
249+ :param datasources: list of datasources used by mind, optional
250+ :param parameters, dict: other parameters of the mind, optional
251+ :param replace: if true - to remove existing mind, default is false
252+ :return: created mind
253+ """
179254
180255 if replace :
181256 try :
@@ -193,6 +268,9 @@ def create(
193268
194269 if parameters is None :
195270 parameters = {}
271+
272+ if prompt_template is not None :
273+ parameters ['prompt_template' ] = prompt_template
196274 if 'prompt_template' not in parameters :
197275 parameters ['prompt_template' ] = DEFAULT_PROMPT_TEMPLATE
198276
@@ -211,4 +289,10 @@ def create(
211289 return mind
212290
213291 def drop (self , name : str ):
292+ """
293+ Drop mind by name
294+
295+ :param name: name of the mind
296+ """
297+
214298 self .api .delete (f'/projects/{ self .project } /minds/{ name } ' )
0 commit comments