From 57054f86544ca7ce8e913aed8c0856d54ee07be7 Mon Sep 17 00:00:00 2001 From: Alec Dilanchian Date: Sun, 20 Nov 2022 21:29:16 -0500 Subject: [PATCH] Adding css and adding prompt chainging --- assets/buildspace-logo.png | Bin 1898 -> 1561 bytes package.json | 1 - pages/_app.js | 9 +- pages/api/generate.js | 28 ++++- pages/index.js | 202 ++++++++++--------------------------- pages/styles.css | 161 +++++++++++++++++++++++++++++ 6 files changed, 242 insertions(+), 159 deletions(-) create mode 100644 pages/styles.css diff --git a/assets/buildspace-logo.png b/assets/buildspace-logo.png index 030570a867567ea4491dc40216fbedecab974a69..2000b807da0d56552be18a72b0439b4fbf011946 100644 GIT binary patch delta 1529 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 Hu0mjfI^&v9 diff --git a/package.json b/package.json index a4d9a30..6cac4f8 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "lint": "next lint" }, "dependencies": { - "@chakra-ui/react": "^2.4.1", "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", "eslint": "8.27.0", diff --git a/pages/_app.js b/pages/_app.js index b19eb75..e139a05 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -1,11 +1,6 @@ -import { ChakraProvider } from '@chakra-ui/react'; - +import './styles.css'; const App = ({ Component, pageProps }) => { - return ( - - - - ); + return ; }; export default App; diff --git a/pages/api/generate.js b/pages/api/generate.js index f3f4fcc..a0c3515 100644 --- a/pages/api/generate.js +++ b/pages/api/generate.js @@ -6,15 +6,35 @@ const configuration = new Configuration({ const openai = new OpenAIApi(configuration); +const basePromptPrefix = + 'Help me write lyrics in the style of Drake, Canadian Rapper\n'; +const finalPromptPrefix = 'Take the lyrics below and generate 5 song titles:\n'; + const generateAction = async (req, res) => { - const completion = await openai.createCompletion({ + // Run first prompt + const baseCompletion = await openai.createCompletion({ model: 'text-davinci-002', - prompt: req.body.input, + prompt: `${basePromptPrefix}${req.body.input}`, temperature: 0.7, + max_tokens: 2048, }); - const choice = completion.data.choices.pop(); - res.status(200).json({ choice }); + const baseChoice = baseCompletion.data.choices.pop(); + + // Run second prompt with prefix + const finalPrompt = `${finalPromptPrefix}${req.body.input}${baseChoice.text}`; + console.log(finalPrompt); + + const prefixCompletion = await openai.createCompletion({ + model: 'text-davinci-002', + prompt: finalPrompt, + temperature: 0.7, + max_tokens: 2048, + }); + + const finalChoice = prefixCompletion.data.choices.pop(); + + res.status(200).json({ baseChoice, finalChoice }); }; export default generateAction; diff --git a/pages/index.js b/pages/index.js index 8365435..aac220c 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,21 +1,10 @@ import { useCallback, useEffect, useState } from 'react'; import Image from 'next/image'; -import { - Box, - Text, - Flex, - VStack, - Textarea, - Link, - Kbd, - Spinner, - HStack, -} from '@chakra-ui/react'; import buildspaceLogo from '../assets/buildspace-logo.png'; const Home = () => { const [input, setInput] = useState(''); - const [finishReason, setFinishReason] = useState(''); + const [output, setOutput] = useState(''); const [isGenerating, setIsGenerating] = useState(false); const onChange = (event) => { @@ -33,150 +22,69 @@ const Home = () => { }); const data = await response.json(); - const { choice } = data; + const { baseChoice, finalChoice } = data; + + setOutput( + `Song Titles:${finalChoice.text}\n\nLyrics:\n${input}${baseChoice.text}` + ); setIsGenerating(false); - - setFinishReason(choice.finish_reason); - - if (choice.finish_reason === 'stop') { - console.log('end of the completion!'); - } - - setInput((prevState) => { - return prevState + choice.text; - }); }, [input]); - useEffect(() => { - const scratchPadText = localStorage.getItem('scratchpad'); - setInput(scratchPadText); - }, []); - - useEffect(() => { - const keydownHandler = async (event) => { - if ((event.metaKey || event.ctrlKey) && event.code === 'Enter') { - event.preventDefault(); - await generateAction(); - } - localStorage.setItem('scratchpad', input); - }; - - window.addEventListener('keydown', keydownHandler); - - return () => { - window.removeEventListener('keydown', keydownHandler); - }; - }, [input, generateAction]); - return ( - - - - - - Scratchpad - - - Write your own song, movie script, or anime in 2 minutes. - - - - {isGenerating && ( - - - - )} - {!isGenerating && finishReason === 'stop' && ( - - - Keep writing to generate more! - - - )} -