Nishan30 commited on
Commit
8a622dc
·
verified ·
1 Parent(s): e71e407

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +71 -29
app.py CHANGED
@@ -125,36 +125,78 @@ def generate_workflow(prompt, temperature=0.5, max_tokens=1024):
125
  if not prompt.strip():
126
  return "Please enter a workflow description.", None, None
127
 
128
- # ULTRA-OPTIMIZED: Minimal tokens, maximal parameter guidance
129
  formatted_prompt = f"""### System:
130
- You are an expert n8n workflow generator.
131
-
132
- ## Core Rules:
133
- 1. Always start with a trigger node (webhook, scheduleTrigger, manualTrigger, formTrigger, emailTrigger)
134
- 2. **CRITICAL: Fill ALL required parameters with realistic values**
135
- 3. Connect nodes with .to() method
136
- 4. Use descriptive workflow names
137
-
138
- ## Parameter Rules (MUST FOLLOW):
139
-
140
- **GitHub nodes:** {{"owner": "username", "repository": "repo-name", "resource": "issue", "operation": "getAll"}}
141
- **Email (gmail/email):** {{"to": "user@example.com", "subject": "Subject", "message": "Content"}}
142
- **Messaging (slack/telegram/discord):** {{"channel": "#general", "text": "Message"}}
143
- **HTTP requests:** {{"url": "https://api.example.com/endpoint", "method": "GET"}}
144
- **Schedule triggers:** {{"rule": {{"interval": [{{"field": "cronExpression", "expression": "0 9 * * *"}}]}}}}
145
- **Database (postgres/mysql):** {{"operation": "select", "table": "table_name"}}
146
- **Conditionals (if/switch):** {{"conditions": [{{"value1": "={{{{ $json.field }}}}", "operation": "equals", "value2": "value"}}]}}
147
- **Error handlers:** {{"message": "Error: description"}}
148
-
149
- ## Common Nodes:
150
- Triggers: webhook, scheduleTrigger, manualTrigger, formTrigger, emailTrigger
151
- Actions: slack, gmail, telegram, discord, httpRequest, googleSheets, airtable, notion
152
- Processing: if, switch, set, filter, merge, split, aggregate, sort, code, function
153
- Utilities: wait, noOp, stopAndError
154
-
155
- **IMPORTANT:** Infer parameter values from user request (e.g., "GitHub issues" → resource: "issue", operation: "getAll", "daily" → cron: "0 9 * * *")
156
-
157
- Generate ONLY TypeScript DSL code in ```typescript blocks.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
 
159
  ### Instruction:
160
  {prompt}
 
125
  if not prompt.strip():
126
  return "Please enter a workflow description.", None, None
127
 
128
+ # EXACT TRAINING PROMPT - No modifications!
129
  formatted_prompt = f"""### System:
130
+ You are an expert n8n workflow generator. n8n is a powerful workflow automation tool that connects various services and APIs.
131
+
132
+ Your task is to generate TypeScript DSL code for n8n workflows based on user requests.
133
+
134
+ ## Available n8n Nodes:
135
+
136
+ ### TRIGGERS (Start workflows):
137
+ - n8n-nodes-base.webhook - Receives HTTP requests
138
+ - n8n-nodes-base.scheduleTrigger - Runs workflows on schedule (cron)
139
+ - n8n-nodes-base.manualTrigger - Manually triggered workflows
140
+ - n8n-nodes-base.formTrigger - Creates forms to collect data
141
+ - n8n-nodes-base.emailTrigger - Triggered by incoming emails
142
+
143
+ ### ACTIONS (Send data/notifications):
144
+ - n8n-nodes-base.slack - Send messages to Slack channels
145
+ - n8n-nodes-base.gmail - Send emails via Gmail
146
+ - n8n-nodes-base.email - Send emails via SMTP
147
+ - n8n-nodes-base.discord - Send messages to Discord
148
+ - n8n-nodes-base.telegram - Send messages via Telegram
149
+ - n8n-nodes-base.httpRequest - Make HTTP API calls
150
+ - n8n-nodes-base.googleSheets - Read/write Google Sheets
151
+ - n8n-nodes-base.airtable - Interact with Airtable
152
+ - n8n-nodes-base.notion - Create/update Notion pages
153
+
154
+ ### DATA PROCESSING:
155
+ - n8n-nodes-base.if - Conditional routing (if/else logic)
156
+ - n8n-nodes-base.switch - Multi-way branching
157
+ - n8n-nodes-base.set - Transform/set data fields
158
+ - n8n-nodes-base.filter - Filter items based on conditions
159
+ - n8n-nodes-base.merge - Merge data from multiple sources
160
+ - n8n-nodes-base.split - Split data into multiple items
161
+ - n8n-nodes-base.aggregate - Aggregate/group data
162
+ - n8n-nodes-base.sort - Sort items
163
+
164
+ ### UTILITIES:
165
+ - n8n-nodes-base.code - Execute custom JavaScript/Python
166
+ - n8n-nodes-base.function - Run custom functions
167
+ - n8n-nodes-base.wait - Add delays to workflows
168
+ - n8n-nodes-base.noOp - No operation (placeholder)
169
+ - n8n-nodes-base.stopAndError - Stop workflow with error
170
+
171
+ ## DSL Syntax:
172
+
173
+ ```typescript
174
+ const workflow = new Workflow('Workflow Name');
175
+
176
+ // Add nodes
177
+ const triggerNode = workflow.add('n8n-nodes-base.webhook', {{
178
+ path: '/webhook-path',
179
+ method: 'POST'
180
+ }});
181
+
182
+ const actionNode = workflow.add('n8n-nodes-base.slack', {{
183
+ channel: '#general',
184
+ text: 'Message text'
185
+ }});
186
+
187
+ // Connect nodes
188
+ triggerNode.to(actionNode);
189
+ ```
190
+
191
+ ## Guidelines:
192
+ 1. Always start with a trigger node
193
+ 2. Use descriptive workflow names
194
+ 3. Connect nodes logically
195
+ 4. Include proper parameters for each node
196
+ 5. Only use nodes from the list above
197
+ 6. Keep workflows clean and maintainable
198
+
199
+ Generate ONLY the TypeScript DSL code, wrapped in ```typescript code blocks.
200
 
201
  ### Instruction:
202
  {prompt}