63 lines
3.3 KiB
Markdown
63 lines
3.3 KiB
Markdown
# UserInputView
|
|
|
|
**Control Functionality**: Converts user-input data (including text, images, audio, video, etc.) into Markdown format for display. Audio and video media are presented using standalone player components.
|
|
**Type**: Container control
|
|
**Parent Control**: `bricks.VBox`
|
|
|
|
## Initialization Parameters
|
|
|
|
- `opts` (Object) - Configuration options, inheriting general parameters from `VBox`:
|
|
- `data` (Object) - Raw data object provided by the user, where keys correspond to field names and values to their respective content.
|
|
- `input_fields` (Array) - Array of field definitions, each containing:
|
|
- `name` (String) - Field name (e.g., `video1`, `audio2`, `image3`, plain text fields, etc.)
|
|
- `label` (String, optional) - Display label used as a heading in Markdown output.
|
|
|
|
> **Note**: Blob objects in `data` are converted to previewable URLs via `URL.createObjectURL()`.
|
|
|
|
## Main Events
|
|
|
|
No explicit custom events. Content layout is automatically refreshed when `show_input(data)` is called.
|
|
|
|
---
|
|
|
|
# LlmOut
|
|
|
|
**Control Functionality**: Dynamically constructs a response interface based on JSON data returned from a large language model (LLM), supporting rendering of various content types such as reasoning text, final responses, error messages, audio, video, and images.
|
|
**Type**: Container control
|
|
**Parent Control**: `bricks.VBox`
|
|
|
|
## Initialization Parameters
|
|
|
|
- `opts` (Object) - Configuration options, inheriting general parameters from `VBox`. No special constructor parameters.
|
|
|
|
Internal state properties (managed by the `update(data)` method):
|
|
- `reasoning_content` (String) - Accumulated reasoning process text.
|
|
- `content` (String) - Accumulated final response content.
|
|
- `error` (String) - Error message text.
|
|
- `images` (Array) - List of image URLs.
|
|
- Media widget instances: `rc_w`, `c_w`, `v_w`, `a_w`, `i_w`, etc.
|
|
|
|
## Main Events
|
|
|
|
### update(data)
|
|
|
|
**Trigger Condition**: Manually invoked when new output data from the LLM is received.
|
|
|
|
The `data` parameter (Object) supports the following optional properties:
|
|
|
|
| Property | Type | Description |
|
|
|--------|------|-------------|
|
|
| `reasoning_content` | String | Text describing the reasoning process, typically rendered with Markdown |
|
|
| `content` | String | Final response content, supports Markdown formatting |
|
|
| `error` | String | Error message, displayed in red styling |
|
|
| `audio` | String | Audio resource, either a URL or Base64-encoded string; protocol prefix is handled automatically |
|
|
| `video` | String | Video resource, supports URL or Base64 encoding |
|
|
| `image` | String or Array[String] | Single image URL or an array of multiple image URLs |
|
|
|
|
**Behavior Details**:
|
|
- Newly received content is automatically merged and appended to existing fields (append mode).
|
|
- When a media resource appears for the first time, the corresponding player component (e.g., `AudioPlayer`, `VideoPlayer`) is created; subsequent updates use its `add_url()` method.
|
|
- All content is added to the container in the following order: error → reasoning content → response content → video → audio → images.
|
|
- The method calls `clear_widgets()` to remove old components before re-rendering, ensuring visual consistency.
|
|
|
|
> **Registration Note**: This control is registered via `bricks.Factory.register('LlmOut', bricks.LlmOut)`, enabling configuration-driven instantiation. |