Skip to content

Commit f5d6ca8

Browse files
authored
Merge pull request #217 from mindsdb/del-skills
Delete `skills` to align with changes in `mindsdb v26.0.0`
2 parents 3b10e93 + 3f0cabc commit f5d6ca8

File tree

11 files changed

+15
-414
lines changed

11 files changed

+15
-414
lines changed

docs/source/index.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ API documentation
121121
jobs
122122

123123
knowledge_bases
124-
skills
125124
agents
126125

127126

docs/source/skills.rst

Lines changed: 0 additions & 7 deletions
This file was deleted.

mindsdb_sdk/agents.py

Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
from requests.exceptions import HTTPError
21
from typing import Iterable, List, Union
32
from urllib.parse import urlparse
43
from uuid import uuid4
54
import datetime
6-
import json
5+
6+
from requests.exceptions import HTTPError
77

88
from mindsdb_sdk.knowledge_bases import KnowledgeBase
99
from mindsdb_sdk.models import Model
10-
from mindsdb_sdk.skills import Skill
1110
from mindsdb_sdk.utils.objects_collection import CollectionBase
1211

1312

@@ -82,24 +81,20 @@ def __init__(
8281
created_at: datetime.datetime,
8382
updated_at: datetime.datetime,
8483
model: Union[Model, str, dict] = None,
85-
skills: List[Skill] = [],
8684
provider: str = None,
8785
data: dict = {},
8886
prompt_template: str = None,
8987
params: dict = {},
90-
skills_extra_parameters: dict = {},
9188
collection: CollectionBase = None
9289
):
9390
self.name = name
9491
self.created_at = created_at
9592
self.updated_at = updated_at
9693
self.model = model
97-
self.skills = skills
9894
self.provider = provider
9995
self.data = data
10096
self.prompt_template = prompt_template
10197
self.params = params
102-
self.skills_extra_parameters = skills_extra_parameters
10398
self.collection = collection
10499

105100
def completion(self, messages: List[dict]) -> AgentCompletion:
@@ -178,7 +173,7 @@ def add_database(self, database: str, tables: List[str], description: str):
178173
179174
:param database: Name of the database to be added.
180175
:param tables: List of tables to be added.
181-
:param description: Description of the database tables. Used by the agent to know when to use SQL skill.
176+
:param description: Description of the database tables. Used by the agent to know when to query the database.
182177
"""
183178
self.collection.add_database(self.name, database, tables, description)
184179

@@ -196,35 +191,25 @@ def __eq__(self, other):
196191
return False
197192
if self.prompt_template != other.prompt_template:
198193
return False
199-
if self.skills != other.skills:
200-
return False
201194
if self.params != other.params:
202195
return False
203-
if self.skills_extra_parameters != other.skills_extra_parameters:
204-
return False
205196
if self.created_at != other.created_at:
206197
return False
207198
return self.updated_at == other.updated_at
208199

209200
@classmethod
210201
def from_json(cls, json: dict, collection: CollectionBase):
211-
skills = []
212-
if json.get('skills'):
213-
skills = [Skill.from_json(skill) for skill in json['skills']]
214-
215202
model = json.get('model') or json.get('model_name')
216203

217204
return cls(
218205
json['name'],
219206
json['created_at'],
220207
json['updated_at'],
221208
model,
222-
skills,
223209
json.get('provider'),
224210
json.get('data', {}),
225211
json.get('prompt_template'),
226212
json.get('params', {}),
227-
json.get('skills_extra_parameters', {}),
228213
collection
229214
)
230215

@@ -238,7 +223,6 @@ def __init__(self, project, api):
238223

239224
self.knowledge_bases = project.knowledge_bases
240225
self.models = project.models
241-
self.skills = project.skills
242226

243227
self.databases = project.server.databases
244228
self.ml_engines = project.server.ml_engines
@@ -477,7 +461,6 @@ def create(
477461
name: str,
478462
model: Union[Model, str, dict] = None,
479463
provider: str = None,
480-
skills: List[Union[Skill, str]] = None,
481464
data: dict = None,
482465
prompt_template: str = None,
483466
params: dict = None,
@@ -488,26 +471,12 @@ def create(
488471
489472
:param name: Name of the agent to be created
490473
:param model: Model to be used by the agent. This can be a Model object, a string with model name, or a dictionary with model parameters.
491-
:param skills: List of skills to be used by the agent. Currently only 'sql' is supported.
492474
:param provider: Provider of the model, e.g. 'mindsdb', 'openai', etc.
493475
:param data: Data to be used by the agent. This is usually a dictionary with 'tables' and/or 'knowledge_base' keys.
494476
:param params: Parameters for the agent
495477
496478
:return: created agent object
497479
"""
498-
skills = skills or []
499-
skill_names = []
500-
for skill in skills:
501-
if isinstance(skill, str):
502-
# Check if skill exists.
503-
# TODO what this line does?
504-
_ = self.skills.get(skill)
505-
skill_names.append(skill)
506-
continue
507-
# Create the skill if it doesn't exist.
508-
_ = self.skills.create(skill.name, skill.type, skill.params)
509-
skill_names.append(skill.name)
510-
511480
if params is None:
512481
params = {}
513482
params.update(kwargs)
@@ -526,7 +495,6 @@ def create(
526495
name,
527496
model_name,
528497
provider,
529-
skill_names,
530498
data,
531499
model,
532500
prompt_template,
@@ -543,29 +511,6 @@ def update(self, name: str, updated_agent: Agent):
543511
544512
:return: updated agent object
545513
"""
546-
updated_skills = set()
547-
for skill in updated_agent.skills:
548-
if isinstance(skill, str):
549-
# Skill must exist.
550-
_ = self.skills.get(skill)
551-
updated_skills.add(skill)
552-
continue
553-
try:
554-
# Create the skill if it doesn't exist.
555-
_ = self.skills.get(skill.name)
556-
except HTTPError as e:
557-
if e.response.status_code != 404:
558-
raise e
559-
# Doesn't exist
560-
_ = self.skills.create(skill.name, skill.type, skill.params)
561-
updated_skills.add(skill.name)
562-
563-
existing_agent = self.api.agent(self.project.name, name)
564-
565-
existing_skills = set([s['name'] for s in existing_agent.get('skills', [])])
566-
skills_to_add = updated_skills.difference(existing_skills)
567-
skills_to_remove = existing_skills.difference(updated_skills)
568-
569514
updated_model_name = None
570515
updated_provider = updated_agent.provider
571516
updated_model = None
@@ -583,8 +528,6 @@ def update(self, name: str, updated_agent: Agent):
583528
updated_agent.name,
584529
updated_provider,
585530
updated_model_name,
586-
list(skills_to_add),
587-
list(skills_to_remove),
588531
updated_agent.data,
589532
updated_model,
590533
updated_agent.prompt_template,

mindsdb_sdk/connectors/rest_api.py

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,6 @@ def create_agent(
322322
name: str,
323323
model_name: str = None,
324324
provider: str = None,
325-
skills: List[str] = None,
326325
data: dict = None,
327326
model: dict = None,
328327
prompt_template: str = None,
@@ -336,7 +335,6 @@ def create_agent(
336335
'name': name,
337336
'model_name': model_name,
338337
'provider': provider,
339-
'skills': skills,
340338
'data': data,
341339
'model': model,
342340
'prompt_template': prompt_template,
@@ -355,8 +353,6 @@ def update_agent(
355353
updated_name: str,
356354
updated_provider: str,
357355
updated_model_name: str,
358-
skills_to_add: List[str],
359-
skills_to_remove: List[str],
360356
updated_data: dict,
361357
updated_model: dict,
362358
updated_prompt_template: str,
@@ -370,8 +366,6 @@ def update_agent(
370366
'name': updated_name,
371367
'model_name': updated_model_name,
372368
'provider': updated_provider,
373-
'skills_to_add': skills_to_add,
374-
'skills_to_remove': skills_to_remove,
375369
'data': updated_data,
376370
'model': updated_model,
377371
'prompt_template': updated_prompt_template,
@@ -388,67 +382,6 @@ def delete_agent(self, project: str, name: str):
388382
r = self.session.delete(url)
389383
_raise_for_status(r)
390384

391-
# Skills operations.
392-
@_try_relogin
393-
def skills(self, project: str):
394-
r = self.session.get(self.url + f'/api/projects/{project}/skills')
395-
_raise_for_status(r)
396-
397-
return r.json()
398-
399-
@_try_relogin
400-
def skill(self, project: str, name: str):
401-
r = self.session.get(self.url + f'/api/projects/{project}/skills/{name}')
402-
_raise_for_status(r)
403-
404-
return r.json()
405-
406-
@_try_relogin
407-
def create_skill(self, project: str, name: str, type: str, params: dict):
408-
url = self.url + f'/api/projects/{project}/skills'
409-
r = self.session.post(
410-
url,
411-
json={
412-
'skill': {
413-
'name': name,
414-
'type': type,
415-
'params': params
416-
}
417-
}
418-
)
419-
_raise_for_status(r)
420-
421-
return r.json()
422-
423-
@_try_relogin
424-
def update_skill(
425-
self,
426-
project: str,
427-
name: str,
428-
updated_name: str,
429-
updated_type: str,
430-
updated_params: dict
431-
):
432-
url = self.url + f'/api/projects/{project}/skills/{name}'
433-
r = self.session.put(
434-
url,
435-
json={
436-
'skill': {
437-
'name': updated_name,
438-
'type': updated_type,
439-
'params': updated_params
440-
}
441-
}
442-
)
443-
_raise_for_status(r)
444-
return r.json()
445-
446-
@_try_relogin
447-
def delete_skill(self, project: str, name: str):
448-
url = self.url + f'/api/projects/{project}/skills/{name}'
449-
r = self.session.delete(url)
450-
_raise_for_status(r)
451-
452385
# Knowledge Base operations.
453386
@_try_relogin
454387
def insert_into_knowledge_base(self, project: str, knowledge_base_name: str, data):

mindsdb_sdk/databases.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,9 @@ class Databases(CollectionBase):
110110
111111
"""
112112

113-
def __init__(self, api):
113+
def __init__(self, server, api):
114114
self.api = api
115+
self.server = server
115116

116117
def _list_databases(self) -> Dict[str, Database]:
117118
data = self.api.sql_query(
@@ -120,7 +121,7 @@ def _list_databases(self) -> Dict[str, Database]:
120121
name_to_db = {}
121122
for _, row in data.iterrows():
122123
name_to_db[row["NAME"]] = Database(
123-
self, row["NAME"], engine=row["ENGINE"], params=row["CONNECTION_DATA"]
124+
self.server, row["NAME"], engine=row["ENGINE"], params=row["CONNECTION_DATA"]
124125
)
125126
return name_to_db
126127

@@ -153,7 +154,7 @@ def create(
153154
parameters=connection_args,
154155
)
155156
self.api.sql_query(ast_query.to_string())
156-
return Database(self, name, engine=engine, params=connection_args)
157+
return Database(self.server, name, engine=engine, params=connection_args)
157158

158159
def drop(self, name: str):
159160
"""

mindsdb_sdk/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ def describe(self, type: str = None) -> Union[pd.DataFrame, Query]:
332332
"""
333333
Return description of the model
334334
335-
:param type: describe type (for lightwood is models, ensemble, features), optional
335+
:param type: describe type, optional
336336
:return: dataframe with result of description
337337
"""
338338
if self.version is not None:
@@ -455,7 +455,7 @@ def create(
455455
>>> model = models.create(
456456
... 'rentals_model',
457457
... predict='price',
458-
... engine='lightwood',
458+
... engine='my_byom_engine',
459459
... database='example_db',
460460
... query='select * from table',
461461
... options={

mindsdb_sdk/projects.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from mindsdb_sql_parser.ast import Identifier
66

77
from mindsdb_sdk.agents import Agents
8-
from mindsdb_sdk.skills import Skills
98
from mindsdb_sdk.utils.objects_collection import CollectionBase
109

1110
from .models import Models
@@ -77,7 +76,6 @@ def __init__(self, server, api, name):
7776

7877
self.knowledge_bases = KnowledgeBases(self, api)
7978

80-
self.skills = Skills(self, api)
8179
self.agents = Agents(self, api)
8280

8381
self.minds = self.agents #alias

mindsdb_sdk/server.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
from typing import List
22

3-
from .agents import Agents
43
from .databases import Databases
54
from .projects import Project, Projects
65
from .ml_engines import MLEngines
76
from .handlers import Handlers
8-
from .skills import Skills
97
from .tree import TreeNode
108
from .config import Config
119

@@ -29,9 +27,9 @@ class Server(Project):
2927
3028
"""
3129

32-
def __init__(self, api, skills: Skills = None, agents: Agents = None):
30+
def __init__(self, api):
3331
# server is also mindsdb project
34-
self.databases = Databases(api)
32+
self.databases = Databases(self, api)
3533
self.ml_engines = MLEngines(api)
3634
super().__init__(self, api, 'mindsdb')
3735

0 commit comments

Comments
 (0)