1- import json
2- from typing import Union , List
3-
4- from mindsdb_sdk .utils .context import is_saving
1+ from typing import List
52from mindsdb_sdk .utils .objects_collection import CollectionBase
6- from .query import Query
7- from .databases import Database
3+
84
95class Chatbot :
106 """
@@ -20,11 +16,10 @@ class Chatbot:
2016 def __init__ (self , api , project , data : dict ):
2117 self .api = api
2218 self .project = project
23- self .name = data ['name' ]
24- self .database_name = data .get ('database_name' )
25- self .agent_name = data .get ('agent_name' )
26-
27-
19+ self .name = data .get ('name' )
20+ self .database_name = data .get ('database' )
21+ self .agent_name = data .get ('agent' )
22+ self .model_name = data .get ('model_name' )
2823
2924 def __repr__ (self ):
3025 return f"{ self .__class__ .__name__ } ({ self .project .name } .{ self .name } )"
@@ -45,27 +40,47 @@ def ask(self, query: str, **options):
4540 }
4641 return self .api .chatbot_interaction (self .project .name , self .name , payload )
4742
48- def update (self , model_name : str = None , database_name : str = None ):
43+ def update (self , name : str = None , agent_name : str = None , model_name : str = None , database_name : str = None , inplace : bool = False ):
4944 """
5045 Update chatbot properties.
5146
5247 >>> chatbot.update(model_name='gpt-4', database_name='slack_db')
5348
49+ :param name: New name for the chatbot.
5450 :param model_name: New model to use for the chatbot.
5551 :param database_name: New database connection name.
52+ :param inplace: If True, updates the current object in-place.
53+ :return: Updated Chatbot object or None if inplace is True.
5654 """
5755 payload = {}
58- if model_name :
59- payload ['agent_name' ] = model_name
56+
57+ if name :
58+ payload ['name' ] = name
59+
6060 if database_name :
6161 payload ['database_name' ] = database_name
6262
63- self .api .update_chatbot (
64- self .project .name ,
65- self .name ,
63+ if agent_name :
64+ payload ['agent_name' ] = agent_name
65+
66+ if model_name :
67+ payload ['model_name' ] = model_name
68+
69+ updated_chatbot = self .api .update_chatbot (
70+ project = self .project .name ,
71+ chatbot_name = self .name ,
6672 data = payload
6773 )
6874
75+ if inplace :
76+ self .name = updated_chatbot .get ('name' , self .name )
77+ self .database_name = updated_chatbot .get ('database' , self .database_name )
78+ self .agent_name = updated_chatbot .get ('agent' , self .agent_name )
79+ self .model_name = updated_chatbot .get ('model_name' , self .model_name )
80+ return None
81+
82+ return Chatbot (self .api , self .project , updated_chatbot )
83+
6984 def delete (self ):
7085 """
7186 Delete the chatbot.
@@ -129,7 +144,7 @@ def get(self, name: str) -> Chatbot:
129144 data = self .api .get_chatbot (self .project .name , name )
130145 return Chatbot (self .api , self .project , data )
131146
132- def create (self , name : str , model_name : str , database_name : str = None ) -> Chatbot :
147+ def create (self , name : str , agent_name : str = None , model_name : str = None , database_name : str = None ) -> Chatbot :
133148 """
134149 Create a new chatbot.
135150
@@ -146,11 +161,14 @@ def create(self, name: str, model_name: str, database_name: str = None) -> Chatb
146161 """
147162 payload = {
148163 'name' : name ,
149- 'agent_name ' : model_name
164+ 'database_name ' : database_name
150165 }
151166
152- if database_name :
153- payload ['database_name' ] = database_name
167+ if agent_name :
168+ payload ['agent_name' ] = agent_name
169+
170+ if model_name :
171+ payload ['model_name' ] = model_name
154172
155173 self .api .create_chatbot (self .project .name , data = payload )
156174
0 commit comments