插件配置#

插件是一个基于 FastAPI 的服务器,它使 ACE Agent 能够通过 REST 接口与第三方应用程序或 API 进行交互。

定义插件#

plugin_config.yaml 文件是配置应用程序插件的核心组件。配置文件中的字段及其用途如下。

plugins:
- name: calculator
    path: ./plugins/calculator/calculate.py

- name: plugin_name
    path: config/relative/path/to/entrypoint.py # path will be relative to plugins directory
    tags: ["plugin_tag1", "plugin_tag2"]
    prefix: "prefix/path"
    parameters:
        param_1: value_of_param

config:
workers: 1
timeout: 30
  • plugins - plugins 部分列出了可用于应用程序的插件。它允许你为每个插件指定多个属性,包括其 namepathtagsprefixparameters

  • name - name 字段定义插件的唯一标识符。它既充当插件的名称,又充当 prefixtags 属性的默认值。

  • path - path 字段指定从 plugin_config.yaml 文件到插件入口点的相对路径。此 path 指导应用程序找到插件的位置。

  • prefix - prefix 字段允许你定义一个端点路径,该路径将附加到 path 字段中指定的路径之前。如果未明确指定,则 name 将用作 prefix 的默认值。

  • tags - tags 字段允许你将标签与插件服务器关联。标签有助于组织应用程序的 Swagger 文档,从而更轻松地对插件进行分类和访问。如果未明确指定,则 name 将用作默认值。

  • parameters - parameters 字段允许包含要传递到插件服务器的附加参数或配置信息。这允许根据需要自定义和配置插件。

  • config - config 部分包含 Gunicorn 服务器配置详细信息。这些详细信息确保插件服务器有效且高效地运行。

  • worker - worker 字段指定要由 Gunicorn 服务器启动的工作进程数。调整此值可以优化服务器性能和资源利用率。其默认值设置为 1

  • timeout - timeout 字段定义 Gunicorn 主进程在终止子进程并启动新进程之前等待的持续时间。配置此 timeout 对于管理服务器稳定性和响应能力至关重要。其默认值为 30

添加自定义插件#

你可以为你的用例构建一个自定义插件,并将其作为插件服务器的一部分托管。这允许你扩展插件服务器的功能,以满足你的特定需求。例如,你可以构建一个自定义插件,该插件使用 iTunes REST API 来提取歌曲艺术家信息。

插件服务器支持插件依赖管理。这允许你指定你的自定义插件所依赖的外部包。例如,你可以创建一个使用 Wikipedia API 来检索信息的自定义插件。然后,你可以在插件服务器中将 Wikipedia 添加为外部插件依赖项。这有助于防止错误并确保订单正确完成。

将参数导入插件#

插件服务器提供了一种灵活的机制,用于合并可以在插件中轻松访问的配置参数。此示例概述了如何从 plugin_config.yaml 文件导入和使用插件配置参数。

你可以在 plugin_config.yaml 文件中为插件配置指定参数。这些参数与单个插件关联。在以下示例中,weather 插件配置了一个 mock 参数,设置为 true

plugins:
- name: weather
    path: weather.py
    parameters:
        mock: true

在插件代码中(例如,weather.py),可以使用以下方法导入和访问参数

from fastapi import APIRouter
from parameters import param

router = APIRouter()

# Accessing the 'mock' parameter for the 'weather' plugin
mock = param.get("weather").get("mock", False)

# Additional weather plugin details can be implemented here