Endpoint¶
Note: ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版。
Endpoint¶
本文档以 Neko Cat 项目为例,介绍插件中 Endpoint 的结构。Endpoint 是插件暴露的 HTTP 接口,可用于与外部系统集成。完整的插件代码请参考 GitHub 仓库。
分组定义¶
Endpoint 分组是多个 Endpoint 的集合。在 FlexAI 插件中创建新的 Endpoint 时,你可能需要填写以下配置。

除了 Endpoint Name 之外,你可以通过编写分组的配置信息来添加新的表单项。点击保存后,你可以看到它包含的多个接口,这些接口将使用相同的配置信息。

结构¶
settings(map[string] ProviderConfig):Endpoint 配置定义。endpoints(list[string], 必填):指向具体的endpoint接口定义。
settings:
api_key:
type: secret-input
required: true
label:
en_US: API key
zh_Hans: API key
ja_Jp: API key
pt_BR: API key
placeholder:
en_US: Please input your API key
zh_Hans: 请输入你的 API key
ja_Jp: あなたの API key を入れてください
pt_BR: Por favor, insira sua chave API
endpoints:
- endpoints/duck.yaml
- endpoints/neko.yaml
接口定义¶
path(string):遵循 Werkzeug 接口标准。method(string):接口方法,仅支持HEAD、GET、POST、PUT、DELETE、OPTIONS。extra(object):基本详情之外的配置信息。python(object)source(string):实现此接口的源代码。
接口实现¶
你需要实现一个继承自 flexai_plugin.Endpoint 的子类,并实现 _invoke 方法。
- 输入参数
r(Request):来自werkzeug的Request对象。values(Mapping):从路径解析的路径参数。settings(Mapping):此Endpoint的配置信息。
- 返回
- 来自
werkzeug的Response对象,支持流式响应。 - 不支持直接返回字符串。
- 来自
示例代码:
from typing import Mapping
from werkzeug import Request, Response
from flexai_plugin import Endpoint
class Duck(Endpoint):
def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
"""
Invokes the endpoint with the given request.
"""
app_id = values["app_id"]
def generator():
yield f"{app_id} <br>"
return Response(generator(), status=200, content_type="text/html")
注意事项¶
- Endpoint 仅在插件被调用时实例化;它们不是长期运行的服务。
- 开发 Endpoint 时请注意安全性,避免执行危险操作。
- Endpoint 可用于处理 Webhook 回调或为其他系统提供连接接口。
如果你正在学习插件开发,建议先阅读插件开发入门和开发者速查表。
相关资源¶
- 插件开发基本概念 - 了解插件开发的整体架构。
- Neko Cat 示例 - 扩展插件开发示例。
- 通用规范定义 - 了解 ProviderConfig 等通用结构。
- 开发 Slack Bot 插件示例 - 另一个插件开发示例。
- 插件开发入门 - 从零开始开发插件。
- 反向调用 FlexAI 服务 - 了解如何使用反向调用功能。
{/ Contributing Section DO NOT edit this section! It will be automatically generated by the script. /}