Gregor Adams commited on
Commit
90d9359
•
1 Parent(s): 6be1f45

feat: better prompt (#3)

Browse files
public/assets/rick-sanchez.png DELETED
Binary file (162 kB)
 
src/pages/index.tsx CHANGED
@@ -187,7 +187,7 @@ export default function Home() {
187
  Run
188
  </Button>
189
  <Typography sx={{ flex: 1, pl: 1 }}>
190
- {current?.task} - ${current?.id ?? ""}
191
  </Typography>
192
  <IconButton
193
  edge="end"
 
187
  Run
188
  </Button>
189
  <Typography sx={{ flex: 1, pl: 1 }}>
190
+ {current?.task} - {current?.id ?? ""}
191
  </Typography>
192
  <IconButton
193
  edge="end"
src/services/api/index.ts CHANGED
@@ -40,10 +40,15 @@ export async function toOpenAI({
40
  content: miniPrompt`
41
  ADD: ${prompt_}
42
  ${negativePrompt_ ? `REMOVE: ${negativePrompt_}` : ""}
43
- INPUT: ${template.trim()}
44
- OUTPUT FORMAT: pure valid JavaScript
45
- `,
 
 
46
  };
 
 
 
47
  const task = `${prompt_}${negativePrompt_ ? ` | not(${negativePrompt_})` : ""}`;
48
 
49
  try {
@@ -54,21 +59,14 @@ export async function toOpenAI({
54
  {
55
  role: "system",
56
  content: miniPrompt`
57
- All UPPERCASE words are IMPORTANT, all "UPPERCASE" words in QUOTES (") indicate KEYWORDS.
58
- You are: expert JavaScript Developer, creative, Canvas-2d expert, performance guru, interaction expert.
59
- You strictly follow all "DOCS".
60
- You extend "CHANGELOG" and the CODE.
61
- You ALWAYS follow the "ADD", "REMOVE", "INPUT" and "OUTPUT FORMAT".
62
- You NEVER explain anything.
63
- You NEVER add KEYWORDS to the OUTPUT
64
-
65
- DOCS:
66
- "ADD" is a set of features that You write code for
67
- "REMOVE" is a set of things that should be removed or changed to something else
68
- "INPUT" is the code that should be EXTENDED, ADJUSTED or FIXED
69
- "OUTPUT FORMAT" is always pure valid JavaScript. the output should always be just JavaScript and NOTHING ELSE
70
 
71
- You EXCLUSIVELY answer in the requested "OUTPUT FORMAT" and NOTHING ELSE
72
  `,
73
  },
74
  nextMessage,
@@ -79,9 +77,17 @@ You EXCLUSIVELY answer in the requested "OUTPUT FORMAT" and NOTHING ELSE
79
  const { message } = response.data.choices[0];
80
 
81
  if (message) {
82
- const extracted = extractCode(message.content);
83
- const cleanContent = extracted ?? message.content;
84
- return { ...message, content: cleanContent, task, id: nanoid() };
 
 
 
 
 
 
 
 
85
  }
86
 
87
  // Something broke
 
40
  content: miniPrompt`
41
  ADD: ${prompt_}
42
  ${negativePrompt_ ? `REMOVE: ${negativePrompt_}` : ""}
43
+ TEMPLATE:
44
+ \`\`\`js
45
+ ${template.trim().replace(/^\s+/gm, "").replace(/^\n+/g, "").replace(/\s+/, " ")}
46
+ \`\`\`
47
+ `,
48
  };
49
+ console.log("<<< INPUT Message >>>");
50
+ console.log(nextMessage.content);
51
+
52
  const task = `${prompt_}${negativePrompt_ ? ` | not(${negativePrompt_})` : ""}`;
53
 
54
  try {
 
59
  {
60
  role: "system",
61
  content: miniPrompt`
62
+ You are an expert JavaScript developer with a creative mindset and a specialization in Canvas-2d.
63
+ You have a keen eye for performance optimization and are highly skilled in creating interactive experiences.
64
+ You always adhere to documentation and meticulously extend the "CHANGELOG" and code.
65
+ When working on new features, you follow the "ADD" guidelines, and when necessary, remove or exclude elements using "REMOVE".
66
+ You also pay close attention to "TEMPLATE" code, extending or fixing it as needed.
67
+ Your "OUTPUT FORMAT" must be exclusively valid JavaScript in a markdown code block, which you achieve by using the provided "TEMPLATE".
 
 
 
 
 
 
 
68
 
69
+ And remember, the "ADD", "REMOVE", "TEMPLATE", and "OUTPUT FORMAT" guidelines are crucial to follow for optimal results.
70
  `,
71
  },
72
  nextMessage,
 
77
  const { message } = response.data.choices[0];
78
 
79
  if (message) {
80
+ console.log("<<< OUTPUT Message >>>");
81
+ console.log(message.content);
82
+ return {
83
+ ...message,
84
+ content: extractCode(message.content).replace(
85
+ /(ADD|TEMPLATE|OUTPUT FORMAT|REMOVE).*\n/,
86
+ ""
87
+ ),
88
+ task,
89
+ id: nanoid(),
90
+ };
91
  }
92
 
93
  // Something broke