Action Plugins¶
Action plugins add custom buttons below messages in the chat interface, allowing you to trigger specific functionalities with a single click.
What are Actions?¶
Actions are interactive plugins that:
- Add buttons to the message action bar
- Generate and export content (mind maps, charts, files)
- Interact with external services and APIs
- Create visualizations and interactive content
Available Action Plugins¶
-
Smart Mind Map
Intelligently analyzes text content and generates interactive mind maps with beautiful visualizations.
Version: 0.9.1
-
Smart Infographic
Transform text into professional infographics using AntV visualization engine with various templates.
Version: 1.4.9
-
Flash Card
Quickly generates beautiful flashcards from text, extracting key points and categories.
Version: 0.2.4
-
Export to Excel
Export chat conversations to Excel spreadsheet format for analysis and archiving.
Version: 0.3.7
-
Export to Word (Enhanced Formatting)
Export the current conversation to a formatted Word doc with syntax highlighting, native math equations, Mermaid diagrams, citations, and enhanced table formatting.
Version: 0.4.2
-
Deep Dive
A comprehensive thinking lens that dives deep into any content - Context → Logic → Insight → Path. Supports theme auto-adaptation.
Version: 1.0.0
Quick Installation¶
- Download the desired plugin
.pyfile - Navigate to Admin Panel → Settings → Functions
- Upload the file and configure settings
- Use the action button in chat messages
Development Template¶
Want to create your own Action plugin? Use our template:
"""
title: My Custom Action
author: Your Name
version: 1.0.0
description: Description of your action plugin
"""
from pydantic import BaseModel, Field
from typing import Optional, Dict, Any
class Action:
class Valves(BaseModel):
# Add your configuration options here
show_status: bool = Field(
default=True,
description="Show status updates during processing"
)
def __init__(self):
self.valves = self.Valves()
async def action(
self,
body: dict,
__user__: Optional[Dict[str, Any]] = None,
__event_emitter__: Optional[Any] = None,
__request__: Optional[Any] = None,
) -> Optional[dict]:
"""
Main action method triggered when user clicks the action button.
Args:
body: Message body containing conversation data
__user__: Current user information
__event_emitter__: For sending notifications and status updates
__request__: FastAPI request object
Returns:
Modified body dict or None
"""
# Send status update
if __event_emitter__ and self.valves.show_status:
await __event_emitter__({
"type": "status",
"data": {"description": "Processing...", "done": False}
})
# Your plugin logic here
messages = body.get("messages", [])
if messages:
last_message = messages[-1].get("content", "")
# Process the message...
# Complete status
if __event_emitter__ and self.valves.show_status:
await __event_emitter__({
"type": "status",
"data": {"description": "Done!", "done": True}
})
return body
For more details, check our Plugin Development Guide.