enzostvs HF Staff commited on
Commit
6be9a77
·
1 Parent(s): 5654d12

rewrite first prompt

Browse files
app/actions/rewrite-prompt.ts ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { InferenceClient } from "@huggingface/inference";
2
+
3
+ const START_REWRITE_PROMPT = ">>>>>>> START PROMPT >>>>>>";
4
+ const END_REWRITE_PROMPT = ">>>>>>> END PROMPT >>>>>>";
5
+
6
+ export const callAiRewritePrompt = async (prompt: string, { token, billTo }: { token: string, billTo?: string | null }) => {
7
+ const client = new InferenceClient(token);
8
+ const response = await client.chatCompletion(
9
+ {
10
+ model: "deepseek-ai/DeepSeek-V3.1",
11
+ provider: "novita",
12
+ messages: [{
13
+ role: "system",
14
+ content: `You are a helpful assistant that rewrites prompts to make them better. All the prompts will be about creating a website or app.
15
+ Try to make the prompt more detailed and specific to create a good UI/UX Design and good code.
16
+ Format the result by following this format:
17
+ ${START_REWRITE_PROMPT}
18
+ new prompt here
19
+ ${END_REWRITE_PROMPT}
20
+ If you don't rewrite the prompt, return the original prompt.
21
+ Make sure to return the prompt in the same language as the prompt you are given. Also IMPORTANT: Make sure to keep the original intent of the prompt. Improve it it needed, but don't change the original intent.
22
+ `
23
+ },{ role: "user", content: prompt }],
24
+ },
25
+ billTo ? { billTo } : {}
26
+ );
27
+
28
+ const responseContent = response.choices[0]?.message?.content;
29
+ if (!responseContent) {
30
+ return prompt;
31
+ }
32
+ const startIndex = responseContent.indexOf(START_REWRITE_PROMPT);
33
+ const endIndex = responseContent.indexOf(END_REWRITE_PROMPT);
34
+ return responseContent.substring(startIndex + START_REWRITE_PROMPT.length, endIndex);
35
+ };
app/api/ask-ai/route.ts CHANGED
@@ -19,6 +19,7 @@ import {
19
  } from "@/lib/prompts";
20
  import MY_TOKEN_KEY from "@/lib/get-cookie-name";
21
  import { Page } from "@/types";
 
22
 
23
  const ipAddresses = new Map();
24
 
@@ -97,6 +98,13 @@ export async function POST(request: NextRequest) {
97
  ? PROVIDERS[selectedModel.autoProvider as keyof typeof PROVIDERS]
98
  : PROVIDERS[provider as keyof typeof PROVIDERS] ?? DEFAULT_PROVIDER;
99
 
 
 
 
 
 
 
 
100
  try {
101
  const encoder = new TextEncoder();
102
  const stream = new TransformStream();
@@ -131,7 +139,7 @@ export async function POST(request: NextRequest) {
131
  role: "user",
132
  content: redesignMarkdown
133
  ? `Here is my current design as a markdown:\n\n${redesignMarkdown}\n\nNow, please create a new design based on this markdown.`
134
- : prompt,
135
  },
136
  ],
137
  max_tokens: selectedProvider.max_tokens,
 
19
  } from "@/lib/prompts";
20
  import MY_TOKEN_KEY from "@/lib/get-cookie-name";
21
  import { Page } from "@/types";
22
+ import { callAiRewritePrompt } from "@/app/actions/rewrite-prompt";
23
 
24
  const ipAddresses = new Map();
25
 
 
98
  ? PROVIDERS[selectedModel.autoProvider as keyof typeof PROVIDERS]
99
  : PROVIDERS[provider as keyof typeof PROVIDERS] ?? DEFAULT_PROVIDER;
100
 
101
+ let rewrittenPrompt = prompt;
102
+
103
+ if (prompt?.length < 240) {
104
+
105
+ rewrittenPrompt = await callAiRewritePrompt(prompt, { token, billTo });
106
+ }
107
+
108
  try {
109
  const encoder = new TextEncoder();
110
  const stream = new TransformStream();
 
139
  role: "user",
140
  content: redesignMarkdown
141
  ? `Here is my current design as a markdown:\n\n${redesignMarkdown}\n\nNow, please create a new design based on this markdown.`
142
+ : rewrittenPrompt,
143
  },
144
  ],
145
  max_tokens: selectedProvider.max_tokens,