Spaces:
Runtime error
Runtime error
File size: 1,864 Bytes
35d05d3 a86df80 6c2bcb4 2f65818 a86df80 35d05d3 2d85080 35d05d3 a86df80 6c2bcb4 65567a2 6c2bcb4 a86df80 65567a2 65cfba9 2d85080 35d05d3 65cfba9 2f65818 65cfba9 a86df80 6c2bcb4 90d9359 6c2bcb4 90d9359 a86df80 90d9359 2aa79c0 2f65818 2aa79c0 a86df80 2d85080 a86df80 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 81 82 83 84 85 86 87 88 89 90 |
import { ChatCompletionRequestMessage, OpenAIApi } from "openai";
import { nanoid } from "nanoid";
import { extractCode, miniPrompt } from "@/utils/prompt";
import { systemMessage } from "@/constants";
interface ToOpenAIProps {
command: string;
prompt: string;
temperature: string;
template: string;
model: string;
maxTokens: string;
client: OpenAIApi | null;
signal?: AbortSignal;
}
export async function toOpenAI({
command = "CREATE_GAME",
prompt = "extend the code",
temperature = "0.2",
template = "",
model = "gpt-3.5-turbo",
maxTokens = "2048",
client = null,
signal,
}: ToOpenAIProps) {
if (client === null) {
throw new Error("OpenAI client is not defined");
}
const prompt_ = prompt.trim();
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),
},
{ signal }
);
const { message } = response.data.choices[0];
if (message) {
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;
}
}
|