跳至主要内容

将多个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_Asql_pull_data_from_B

其次,你可以看到code字段是相同的,代码文件名为sql_pull_data.py。 这意味着两个插件共享相同的实现代码。 code字段是可选的,如果不指定,插件名称将被用作不带扩展名的代码文件名。

第三,你可以看到configurations字段是不同的,而且sqlite_db_path也不同。 这意味着两个插件具有不同的配置。 这通常是你希望多个插件配置共享相同实现的关键原因。

最后,您可以看到description字段是不同的,描述内容也有所不同。 这一点很重要,因为规划器和代码解释器将根据描述内容来做出决策并生成代码。 这两个描述应该足够明确以区分这两个插件。 否则,规划器和代码解释器可能无法做出正确的决策。

结论

当您遇到需要多个共享相同实现的插件配置时,可以使用code字段指定代码文件名,并使用configurations字段指定配置。name字段用于区分不同插件,而description字段则用于帮助规划器和代码解释器做出正确决策。