mirror of
https://github.com/langgenius/dify-docs.git
synced 2026-03-27 13:28:32 +07:00
130 lines
4.7 KiB
Plaintext
130 lines
4.7 KiB
Plaintext
---
|
|
title: Endpoint
|
|
---
|
|
|
|
|
|
|
|
{/*
|
|
CONTRIBUTOR NOTE:
|
|
----------------
|
|
This is a legacy document that is being deprecated.
|
|
Please DO NOT make changes to this version.
|
|
All updates should be directed to the new version at:
|
|
/plugin-dev-en/0432-endpoint
|
|
*/}
|
|
|
|
<Card title="This Documentation is Being Deprecated" icon="circle-exclamation" href="/plugin-dev-en/0432-endpoint">
|
|
<p>This page is being phased out as part of our documentation reorganization.</p>
|
|
|
|
<p><strong>Click this card</strong> to be redirected to the updated version with the most current information.</p>
|
|
|
|
<p>If you notice any discrepancies or areas needing improvement in the new documentation, please use the "Report an issue" button at the bottom of the page.</p>
|
|
</Card>
|
|
|
|
In this article, we will use the [Quick Start: Rainbow Cat project](../quick-start/develop-plugins/extension-plugin) as an example to illustrate the structure of Endpoint within the plugin. For the complete plugin code, please refer to the [GitHub repository](https://github.com/langgenius/dify-plugin-sdks/tree/main/python/examples/neko).
|
|
|
|
### **Group Definition**
|
|
|
|
An `Endpoint` group is a collection of multiple `Endpoints`. When creating a new `Endpoint` in a `Dify` plugin, you may need to fill in the following configurations.
|
|
|
|

|
|
|
|
Besides the `Endpoint Name`, you can add new form items by writing group configuration information. After saving, you'll see multiple interfaces that will use the same configuration information.
|
|
|
|

|
|
|
|
#### **Structure**
|
|
|
|
* `settings` (map\[string] [ProviderConfig](general-specifications.md#providerconfig)): Endpoint configuration definitions
|
|
* `endpoints` (list\[string], required): Points to specific `endpoint` interface definitions
|
|
|
|
```yaml
|
|
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
|
|
```
|
|
|
|
### **Interface Definition**
|
|
|
|
* `path` (string): Follows werkzeug interface standard
|
|
* `method` (string): Interface method, only supports HEAD GET POST PUT DELETE OPTIONS
|
|
* `extra` (object): Configuration information beyond basic info
|
|
* `python` (object)
|
|
* `source` (string): Source code implementing this interface
|
|
|
|
```yaml
|
|
path: "/duck/<app_id>"
|
|
method: "GET"
|
|
extra:
|
|
python:
|
|
source: "endpoints/duck.py"
|
|
```
|
|
|
|
### **Endpoint Implementation**
|
|
|
|
Must implement a subclass inheriting from `dify_plugin.Endpoint` and implement the `_invoke` method.
|
|
|
|
* **Input Parameters**
|
|
* `r` (Request): Request object from werkzeug
|
|
* `values` (Mapping): Path parameters parsed from the path
|
|
* `settings` (Mapping): Configuration information for this Endpoint
|
|
* **Return**
|
|
* Response object from werkzeug, supports streaming return
|
|
* Does not support direct string return
|
|
|
|
**Example Code:**
|
|
|
|
```python
|
|
import json
|
|
from typing import Mapping
|
|
from werkzeug import Request, Response
|
|
from dify_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")
|
|
```
|
|
|
|
{/*
|
|
Contributing Section
|
|
DO NOT edit this section!
|
|
It will be automatically generated by the script.
|
|
*/}
|
|
|
|
<CardGroup cols="2">
|
|
<Card
|
|
title="Edit this page"
|
|
icon="pen-to-square"
|
|
href="https://github.com/langgenius/dify-docs-mintlify/edit/main/en/plugins/schema-definition/endpoint.mdx"
|
|
>
|
|
Help improve our documentation by contributing directly
|
|
</Card>
|
|
<Card
|
|
title="Report an issue"
|
|
icon="github"
|
|
href="https://github.com/langgenius/dify-docs-mintlify/issues/new?title=Documentation%20Issue%3A%20&body=%23%23%20Issue%20Description%0A%3C%21--%20Please%20briefly%20describe%20the%20issue%20you%20found%20--%3E%0A%0A%23%23%20Page%20Link%0Ahttps%3A%2F%2Fgithub.com%2Flanggenius%2Fdify-docs-mintlify%2Fblob%2Fmain%2Fen/plugins/schema-definition%2Fendpoint.mdx%0A%0A%23%23%20Suggested%20Changes%0A%3C%21--%20If%20you%20have%20specific%20suggestions%20for%20changes%2C%20please%20describe%20them%20here%20--%3E%0A%0A%3C%21--%20Thank%20you%20for%20helping%20improve%20our%20documentation%21%20--%3E"
|
|
>
|
|
Found an error or have suggestions? Let us know
|
|
</Card>
|
|
</CardGroup>
|