set up per-novel temporary folders with generated data
Signed-off-by: Xe Iaso <me@xeiaso.net>
This commit is contained in:
parent
59ab305e1e
commit
239395747e
34
index.ts
34
index.ts
@ -1,24 +1,50 @@
|
||||
import * as dotenv from "dotenv";
|
||||
import { Configuration, OpenAIApi } from "openai";
|
||||
import PlotGenerator from "@xeserv/plottoriffic";
|
||||
import { generateName } from "@kotofurumiya/th-namegen";
|
||||
import * as fs from "node:fs/promises";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const pg = new PlotGenerator({});
|
||||
const dirName = `var/${generateName()}`;
|
||||
await fs.mkdir(dirName, { recursive: true });
|
||||
console.log(`dirName: ${dirName}`);
|
||||
|
||||
const pg = new PlotGenerator({ flipGenders: false });
|
||||
const plot = pg.generate();
|
||||
|
||||
await fs.writeFile(`${dirName}/plotto.json`, JSON.stringify(plot));
|
||||
|
||||
const configuration = new Configuration({
|
||||
apiKey: process.env.OPENAI_API_KEY,
|
||||
});
|
||||
const openai = new OpenAIApi(configuration);
|
||||
|
||||
const completion = await openai.createChatCompletion({
|
||||
plot.cast.forEach(async (ch) => {});
|
||||
|
||||
const promptBase = `Write me the following about the following plot summary for a novel:
|
||||
|
||||
- A two word title for the novel starting with "Title: " and followed by two newlines.
|
||||
- A detailed plot summary for the story starting with "Plot Summary: " and followed by two newlines.
|
||||
- The string "Chapter Summaries" followed by two newlines.
|
||||
- A markdown list of detailed chapter summaries in at least 3 sentences and titles for each of the 10 chapters that a novel based on the plot summary would have. Surround each chapter title in quotes and put a dash after the name like this: "Chapter name" - Chapter summary goes here.`;
|
||||
|
||||
const summary = await openai.createChatCompletion({
|
||||
model: "gpt-3.5-turbo",
|
||||
messages: [
|
||||
{
|
||||
role: "user",
|
||||
content: "Write me a plot summary for the following story:\n\n" + plot.plot,
|
||||
content: promptBase + "\n\n" + plot.plot,
|
||||
},
|
||||
],
|
||||
});
|
||||
console.log(completion.data.choices[0].message);
|
||||
|
||||
if (!!summary.data.usage) {
|
||||
const usage = summary.data.usage;
|
||||
console.log(
|
||||
`${usage.total_tokens} tokens (${usage.prompt_tokens} prompt, ${usage?.completion_tokens} completion)`
|
||||
);
|
||||
}
|
||||
|
||||
console.log(summary.data.choices[0].message?.content);
|
||||
await fs.writeFile(`${dirName}/summary.txt`, summary.data.choices[0].message?.content as string);
|
||||
|
2
var/.gitignore
vendored
Normal file
2
var/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
*
|
||||
!.gitignore
|
Loading…
x
Reference in New Issue
Block a user