使用数据表管理工具

本节内容可以参考文件"CaseStudy\DeepSeek.Table"的窗口"用数据表管理工具"。

本节的任务和上一节完全一样,只是不再直接在代码中定义工具,改为用数据表定义工具。


在前面为GroupTableBuilder编写工具定义的时候,你可能会感到一丝担忧:工具描述和参数描述很长,不仅可读性差,容易出错,且不容易维护。

我们可以通过数据表来管理工具。

示例文件创建了AITools和AIParameters两个表,分别用于输入工具定义和参数定义,两个表通过ToolID建立关联,二者的结构如下:

AITools表结构:

列名

说明

ToolID

工具ID,整数型

ToolName

工具名,字符串型

Description

工具描述,备注型

AIParameters表结构:

列名 说明

ToolID

工具ID,整数型

SortOrder

参数顺序,整数型

ParameterName

参数名称,字符串型

ParameterType

参数类型,字符串型

IsRequired

是否为必填参数,逻辑型

ArrayItemType

如果参数类型为数组(array),可用此列指定元素类型,字符串型

EnumValues

候选值,用逗号分割,字符串型

Description

参数描述,备注型

这两个表中已经输入了前两节中所有的工具和参数定义,现在修改窗口的AfterLoad事件代码,将工具定义代码修改为:

'从数据表中读取工具定义
For
Each tr As DataRow In DataTables("AITools").DataRows
   
Dim tool As AITool = caller.AddTool(tr("ToolName"), tr("Description")) '添加工具
   
For Each pr As DataRow In DataTables("AIParameters").Select("ToolID = " & tr("ToolID"), "SortOrder") '根据SortOrder列排序
       
Dim EnumValues() As String = Nothing
       
If pr.IsNull("EnumValues") = False Then
            EnumValues = pr(
"EnumValues").Split({","c, ","c}) '假定候选值是用逗号 隔开,用户容易混淆半角逗号和全角逗号,所以将两个都作为分割符号
       
End If
        tool.AddParameter(pr(
"ParameterName"), pr("ParameterType"), pr("Description"), pr("IsRequired"), pr("ArrayItemType"), EnumValues)
   
Next
Next

今后增加、删除或修改工具和参数的定义后,上述代码都可以保持不变。


本页地址:http://www.foxtable.com/webhelp/topics/7219.htm