mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-10-30 04:15:45 +08:00
* 重构文档结构:移除 docs 目录,调整文件组织结构 * Reorder "插件 SDK API" section in docs.json * Refactor and clarify various documentation sections * Refine warnings and info boxes across multiple docs * Refactor and simplify Japanese documentation content * Update package.json to include mintlify as a dependency and add pnpm-lock.yaml for dependency management * Update blog link and add description in docs.json --------- Co-authored-by: Junyan Chin <[email protected]>
242 lines
6.3 KiB
Plaintext
242 lines
6.3 KiB
Plaintext
---
|
|
title: "Completing Plugin Configuration Information"
|
|
---
|
|
|
|
## Modifying the Manifest File
|
|
|
|
The `manifest.yaml` file in the plugin directory declares the basic information about the plugin, which will be displayed in the LangBot UI or plugin marketplace interfaces.
|
|
|
|
```yaml
|
|
apiVersion: v1 # Do not modify
|
|
kind: Plugin # Do not modify
|
|
metadata:
|
|
author: RockChinQ # Author, must match regex ^[a-zA-Z0-9_-]+$
|
|
name: HelloPlugin # Plugin name, used to distinguish plugins, must match regex ^[a-zA-Z0-9-]+$
|
|
repository: 'https://github.com/langbot-app/HelloPlugin' # Plugin repository URL
|
|
version: 0.1.0 # Plugin version
|
|
description:
|
|
en_US: 'Hello LangBot Plugin' # Plugin description, multilingual
|
|
zh_Hans: 'Hello LangBot Plugin'
|
|
label:
|
|
en_US: HelloPlugin # Plugin label, displayed in the interface, multilingual
|
|
zh_Hans: HelloPlugin
|
|
icon: assets/icon.svg # Plugin icon, defaults to assets/icon.svg, can be replaced with various image formats
|
|
spec:
|
|
config: [] # Plugin configuration item format
|
|
components: {} # Plugin component list, no need to modify manually
|
|
execution:
|
|
python:
|
|
path: main.py # Do not modify
|
|
attr: HelloPlugin # Do not modify
|
|
```
|
|
|
|
Plugin multilingual support follows the [RFC 4646](https://datatracker.ietf.org/doc/html/rfc4646) standard. Currently supported languages include:
|
|
|
|
- `en_US` English
|
|
- `zh_Hans` Simplified Chinese
|
|
- `zh_Hant` Traditional Chinese
|
|
- `ja_JP` Japanese
|
|
|
|
## Plugin Configuration Item Format
|
|
|
|
In the `manifest.yaml` file, fields declared in `spec.config` will be rendered by LangBot as configuration item forms for users to fill out. Plugins can retrieve user-filled configuration items through APIs provided by the SDK (see later sections).
|
|
|
|
For example:
|
|
|
|
```yaml
|
|
spec:
|
|
config:
|
|
- name: github_token # Required; configuration item name, used for retrieval in the plugin
|
|
type: string # Required; configuration item type, supports string, integer, float, boolean, select, prompt-editor, llm-model-selector, bot-selector, etc.
|
|
label: # Required; configuration item display name, supports multilingual. Language codes follow RFC 4646 standard.
|
|
en_US: Github Token
|
|
zh_Hans: Github Token
|
|
description: # Configuration item description, supports multilingual. Optional.
|
|
en_US: Image downloading requires a Github token
|
|
zh_Hans: 如果不填的话,图片可能会下载失败
|
|
default: '' # Configuration item default value, optional.
|
|
required: false # Whether the configuration item is required, optional.
|
|
- name: mode
|
|
type: select
|
|
...
|
|
```
|
|
|
|
The supported types and fields for configuration items are as follows:
|
|
|
|
### type: string
|
|
|
|
String type.
|
|
|
|
```yaml
|
|
- name: api_key
|
|
type: string
|
|
...
|
|
```
|
|
|
|
### type: array[string]
|
|
|
|
String array.
|
|
|
|
```yaml
|
|
- name: tags
|
|
type: array[string]
|
|
...
|
|
```
|
|
|
|
### type: integer
|
|
|
|
Integer type.
|
|
|
|
```yaml
|
|
- name: progress
|
|
type: integer
|
|
...
|
|
```
|
|
|
|
### type: float
|
|
|
|
Float type.
|
|
|
|
```yaml
|
|
- name: temperature
|
|
type: float
|
|
...
|
|
```
|
|
|
|
### type: boolean
|
|
|
|
Boolean type.
|
|
|
|
```yaml
|
|
- name: is_enabled
|
|
type: boolean
|
|
...
|
|
```
|
|
|
|
### type: select
|
|
|
|
Dropdown menu. Requires configuring `options`, which represents the dropdown menu options.
|
|
|
|
```yaml
|
|
- name: mode
|
|
type: select
|
|
options: # Dropdown options, supports multilingual.
|
|
- name: mode1 # Value
|
|
label: # Display name, supports multilingual.
|
|
en_US: Mode 1
|
|
zh_Hans: 模式 1
|
|
- name: mode2
|
|
label: # Display name, supports multilingual.
|
|
en_US: Mode 2
|
|
zh_Hans: 模式 2
|
|
...
|
|
```
|
|
|
|
### type: prompt-editor
|
|
|
|
Prompt editor. Displays a prompt editor from the pipeline configuration page, with the final result represented in OpenAI's `messages` format.
|
|
|
|
```yaml
|
|
- name: prompt
|
|
type: prompt-editor
|
|
...
|
|
```
|
|
|
|
### type: text
|
|
|
|
Large text input. Rendered as a textarea in the frontend for user input, and passed to the plugin as a string.
|
|
|
|
```yaml
|
|
- name: prompt
|
|
type: text
|
|
...
|
|
```
|
|
|
|
### type: file
|
|
|
|
File upload. Supports file uploads up to 10MB, passed to the plugin in the format `{"file_key": "xxxxx.xxx", "mimetype": "xxxxx"}`. The plugin can use the `get_config_file` API to retrieve the file content.
|
|
|
|
```yaml
|
|
- name: config_file
|
|
type: file
|
|
accept: 'application/json' # Optional, specify accepted file MIME types
|
|
...
|
|
```
|
|
|
|
Retrieving the file in the plugin:
|
|
|
|
```python
|
|
# Get file information from config
|
|
file_config = self.get_config()['config_file']
|
|
file_key = file_config['file_key']
|
|
mimetype = file_config['mimetype']
|
|
|
|
# Example output: {'file_input': {'file_key': 'plugin_config_d2234fd802054faf80babe0679a97fa9.json', 'mimetype': 'application/json'}}
|
|
print(file_config)
|
|
|
|
# Get file content
|
|
file_bytes = await self.get_config_file(file_key)
|
|
```
|
|
|
|
<Info>
|
|
Common MIME type and file extension reference: [MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types)
|
|
</Info>
|
|
|
|
### type: array[file]
|
|
|
|
Multiple file upload. Similar to the file type, but supports uploading multiple files, passed to the plugin in the format `[{"file_key": "xxxxx.xxx", "mimetype": "xxxxx"}]`.
|
|
|
|
```yaml
|
|
- name: resource_files
|
|
type: array[file]
|
|
accept: 'image/*' # Optional, specify accepted file MIME types
|
|
...
|
|
```
|
|
|
|
Retrieving files in the plugin:
|
|
|
|
```python
|
|
# Get file list from config
|
|
files_config = self.get_config()['resource_files']
|
|
|
|
for file_config in files_config:
|
|
file_key = file_config['file_key']
|
|
mimetype = file_config['mimetype']
|
|
|
|
# Get file content
|
|
file_bytes = await self.get_config_file(file_key)
|
|
```
|
|
|
|
### type: llm-model-selector
|
|
|
|
LLM model selector. Displays an LLM model selector where you can choose configured LLM models, with the final result represented as the LLM model UUID.
|
|
|
|
```yaml
|
|
- name: model
|
|
type: llm-model-selector
|
|
...
|
|
```
|
|
|
|
### type: bot-selector
|
|
|
|
Bot selector. Displays a Bot selector where you can choose configured Bots, with the final result represented as the Bot UUID.
|
|
|
|
```yaml
|
|
- name: bot
|
|
type: bot-selector
|
|
...
|
|
```
|
|
|
|
Using the Bot UUID in the plugin:
|
|
|
|
```python
|
|
# Get Bot UUID from config
|
|
bot_uuid = self.get_config()['bot']
|
|
print(bot_uuid) # Output: '550e8400-e29b-41d4-a716-446655440000'
|
|
```
|
|
|
|
## What's Next
|
|
|
|
This tutorial will guide you through step-by-step completion of plugin functionality.
|
|
|
|
- Adding Components: Plugin components are the core functional units of plugins. You can [add components](/en/plugin/dev/components/add) based on your needs. |