Spaces:
Runtime error
Runtime error
File size: 1,760 Bytes
65567a2 a86df80 2f65818 6c2bcb4 2f65818 a86df80 6c2bcb4 65567a2 6c2bcb4 a86df80 65567a2 2f65818 34bac1b a86df80 2f65818 a86df80 6c2bcb4 90d9359 6c2bcb4 90d9359 a86df80 90d9359 2aa79c0 2f65818 2aa79c0 a86df80 2f65818 65567a2 2aa79c0 6c2bcb4 34bac1b a86df80 6c2bcb4 90d9359 6c2bcb4 90d9359 a86df80 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import { ChatCompletionRequestMessage } from "openai";
import { nanoid } from "nanoid";
import { createClient, openai } from "@/services/api/openai";
import { extractCode, miniPrompt } from "@/utils/prompt";
import { systemMessage } from "@/constants";
export async function toOpenAI({
command = "CREATE_GAME",
prompt = "extend the code",
temperature = "0.2",
template = "",
model = "gpt-3.5-turbo",
maxTokens = "2048",
openAIAPIKey = "",
}) {
const prompt_ = prompt.trim();
let client = openai;
if (openAIAPIKey !== "") {
client = createClient(openAIAPIKey);
}
const nextMessage: ChatCompletionRequestMessage = {
role: "user",
content: miniPrompt`
"${command}": ${prompt_}. Return the full source code of the game.
TEMPLATE:
\`\`\`javascript
${template.trim().replace(/^\s+/gm, "").replace(/^\n+/g, "").replace(/\s+/, " ")}
\`\`\`
`,
};
const task = `${prompt_}`;
const messages: ChatCompletionRequestMessage[] = [
{
role: "system",
content: miniPrompt`${systemMessage}`,
},
nextMessage,
];
try {
const response = await client.createChatCompletion({
model,
messages,
max_tokens: Number.parseInt(maxTokens),
temperature: Number.parseFloat(temperature),
});
const { message } = response.data.choices[0];
if (message) {
console.log("ORIGINAL OUTPUT");
console.log(message.content);
return {
...message,
content: extractCode(message.content).replace(
/(COMMANDS|CREATE_GAME|ADD_FEATURE|REMOVE_FEATURE|UPDATE_FEATURE|FIX_BUG|TEMPLATE|OUTPUT FORMAT).*\n/,
""
),
task,
id: nanoid(),
};
}
// Something broke
// ToDo: fix it :)
return {
content: "/* BROKEN */",
task,
id: nanoid(),
};
} catch (error) {
throw error;
}
}
|