Skip to content

Commit 6affbed

Browse files
added the parser class for EvaluateKnowledgeBase
1 parent 75420c6 commit 6affbed

File tree

1 file changed

+65
-1
lines changed

1 file changed

+65
-1
lines changed

mindsdb_sql_parser/ast/mindsdb/knowledge_base.py

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from mindsdb_sql_parser.ast.base import ASTNode
2+
from mindsdb_sql_parser.ast import Identifier
23
from mindsdb_sql_parser.utils import indent
34

45

@@ -106,6 +107,7 @@ def get_string(self, *args, **kwargs):
106107
out_str = f'DROP KNOWLEDGE_BASE {"IF EXISTS " if self.if_exists else ""}{self.name.to_string()}'
107108
return out_str
108109

110+
109111
class CreateKnowledgeBaseIndex(ASTNode):
110112
"""
111113
Create a new index in the knowledge base
@@ -127,6 +129,7 @@ def get_string(self, *args, **kwargs):
127129
out_str = f'CREATE INDEX ON KNOWLEDGE_BASE {self.name.to_string()}'
128130
return out_str
129131

132+
130133
class DropKnowledgeBaseIndex(ASTNode):
131134
"""
132135
Delete an index in the knowledge base
@@ -146,4 +149,65 @@ def to_tree(self, *args, level=0, **kwargs):
146149

147150
def get_string(self, *args, **kwargs):
148151
out_str = f'DROP INDEX ON KNOWLEDGE_BASE {self.name.to_string()}'
149-
return out_str
152+
return out_str
153+
154+
155+
class EvaluateKnowledgeBase(ASTNode):
156+
"""
157+
Evaluate a knowledge base.
158+
"""
159+
def __init__(
160+
self,
161+
name: Identifier,
162+
test_table: Identifier,
163+
llm: dict,
164+
save_to: Identifier,
165+
generate_data: dict = None,
166+
*args,
167+
**kwargs):
168+
"""
169+
Args:
170+
name: Identifier -- name of the knowledge base.
171+
test_table: Identifier -- name of the table to use for testing.
172+
llm: dict -- parameters for the LLM to use for evaluation.
173+
save_to: Identifier -- name of the table to save the results to.
174+
generate_data: dict -- parameters for generating data, if available.
175+
"""
176+
super().__init__(*args, **kwargs)
177+
self.name = name
178+
self.test_table = test_table
179+
self.llm = llm
180+
self.save_to = save_to
181+
self.generate_data = generate_data
182+
183+
def to_tree(self, *args, level=0, **kwargs):
184+
ind = indent(level)
185+
generate_data_str = f"{ind}generate_data={self.generate_data},\n" if self.generate_data else ""
186+
out_str = f"""
187+
{ind}EvaluateKnowledgeBase(
188+
{ind} name={self.name.to_string()},
189+
{ind} test_table={self.test_table.to_string()},
190+
{ind} llm={self.llm},
191+
{ind} save_to={self.save_to.to_string()},
192+
{generate_data_str}{ind})
193+
"""
194+
return out_str
195+
196+
def get_string(self, *args, **kwargs):
197+
using_args = [
198+
f"LLM={repr(self.llm)}",
199+
f"TEST_TABLE={self.test_table.to_string()}",
200+
f"SAVE_TO={self.save_to.to_string()}"
201+
]
202+
203+
if self.generate_data:
204+
using_args.append(f"GENERATE_DATA={repr(self.generate_data)}")
205+
206+
using_str = "USING " + ", ".join(using_args)
207+
208+
output_str = (
209+
f"EVALUATE KNOWLEDGE_BASE {self.name.to_string()} "
210+
f"{using_str}"
211+
)
212+
213+
return output_str.strip()

0 commit comments

Comments
 (0)