将多个YAML文件合并为一个Python实现
在实际应用中,您可能需要多个共享相同实现逻辑的插件。例如,您可能希望有两个插件都从数据库提取数据,但一个从数据库A提取,另一个从数据库B提取。这种情况下,插件的实现代码是相同的,但插件配置不同。如果将相同的实现代码复制粘贴到两个不同文件中会显得非常繁琐。
为了解决这个问题,TaskWeaver允许您配置多个共享相同实现的插件。 以下是两个分别从数据库A和B提取数据的插件配置示例:
从数据库A提取数据的插件配置:
name: sql_pull_data_from_A
code: sql_pull_data
...
description: >-
Pull data from a SQL database A. The database A contains information about merchandise sales.
examples: |-
df, description = sql_pull_data_from_A("pull data from time_series table")
parameters:
...
returns:
...
configurations:
...
sqlite_db_path: /path/to/sqlite_A.db
从数据库B提取数据的插件配置:
name: sql_pull_data_from_B
code: sql_pull_data
...
description: >-
Pull data from a SQL database B. The database B contains information about customer information.
examples: |-
df, description = sql_pull_data_from_B("pull data from time_series table")
parameters:
...
returns:
...
configurations:
...
sqlite_db_path: /path/to/sqlite_B.db
让我们来讨论这两种配置之间的区别。
首先,你可以看到name字段是不同的,这些名称与Python文件名(不带扩展名)sql_pull_data.py也不相同。
这个名称用于CodeInterpreter中的代码生成。因此,你可以在examples字段中看到,
函数名称分别是sql_pull_data_from_A和sql_pull_data_from_B。
其次,你可以看到code字段是相同的,代码文件名为sql_pull_data.py。
这意味着两个插件共享相同的实现代码。
code字段是可选的,如果不指定,插件名称将被用作不带扩展名的代码文件名。
第三,你可以看到configurations字段是不同的,而且sqlite_db_path也不同。
这意味着两个插件具有不同的配置。
这通常是你希望多个插件配置共享相同实现的关键原因。
最后,您可以看到description字段是不同的,描述内容也有所不同。
这一点很重要,因为规划器和代码解释器将根据描述内容来做出决策并生成代码。
这两个描述应该足够明确以区分这两个插件。
否则,规划器和代码解释器可能无法做出正确的决策。
结论
当您遇到需要多个共享相同实现的插件配置时,可以使用code字段指定代码文件名,并使用configurations字段指定配置。name字段用于区分不同插件,而description字段则用于帮助规划器和代码解释器做出正确决策。