Applications
The dify_user_client provides several application types to suit different needs.
App Types
from dify_user_client import AppType
# Available app types
AppType.workflow # For workflow-based applications
AppType.chat # For simple chat applications
AppType.advanced_chat # For advanced chat with workflow features
AppType.agent # For agent-based applications
AppType.completion # For completion-based applications
Base App Class
The base App
class provides common functionality for all application types:
from dify_user_client import DifyClient, Credentials
# Create client
client = DifyClient("https://your-dify-instance", Credentials(...))
# Create app
app = client.create_app("My App", mode=AppType.chat)
# Common operations
app_info = app.info # Get app information
app.update_info({"name": "New Name"}) # Update app information
app.delete() # Delete the app
# Token management
token = app.token # Get or create default token
all_tokens = app.tokens # List all tokens
new_token = app.create_token() # Create new token
# Export configuration
yaml_config = app.export_yaml() # Export app configuration as YAML
Chat Management
All app types support chat functionality:
# List all chats
chats = app.chats
# Access chat messages
for chat in chats:
messages = chat.messages # Get chat messages
print(f"Chat {chat.id}: {len(messages)} messages")
Workflow Applications
WorkflowApp
provides additional features for workflow-based applications:
from dify_user_client import WorkflowDraft, Graph
workflow_app = client.create_app("My Workflow", mode=AppType.workflow)
# Update workflow draft
draft = WorkflowDraft(
graph=Graph(...),
features={},
environment_variables=[],
conversation_variables=[]
)
workflow_app.update_draft(draft)
# Get current draft
current_draft = workflow_app.get_draft()
# Import/Export
workflow_app.import_yaml(yaml_content)
# Publishing
workflow_app.publish() # Publish workflow
workflow_app.publish_as_tool(config) # Publish as tool
Agent Applications
AgentApp
is specialized for agent-based interactions:
agent_app = client.create_app("My Agent", mode=AppType.agent)
# Import configuration
agent_app.import_yaml(yaml_content)
Advanced Chat Applications
AdvancedChatApp
combines features of both ChatApp
and WorkflowApp
:
advanced_app = client.create_app("Advanced Chat", mode=AppType.advanced_chat)
# Use both chat and workflow features
chats = advanced_app.chats
advanced_app.update_draft(draft)
Type Safety
All models use Pydantic for type safety:
from dify_user_client.apps import WorkflowDraft, Graph, GraphNode, GraphEdge
# Create type-safe models
node = GraphNode(
id="node1",
type="start",
data={"type": "start", "title": "Start", "description": "", "variables": []},
position={"x": 0, "y": 0},
targetPosition="left",
sourcePosition="right",
positionAbsolute={"x": 0, "y": 0},
width=150,
height=50
)