Last active
March 18, 2023 16:07
-
-
Save epaulsen/af3cf644c7c70fa799e610e4e610117f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"id": "b89fb45572d6615c", | |
"type": "link in", | |
"z": "c47a770c26e3be71", | |
"name": "ChatGPTRandom", | |
"links": [], | |
"x": 85, | |
"y": 580, | |
"wires": [ | |
[ | |
"119f80ab1d33c0b2" | |
] | |
] | |
}, | |
{ | |
"id": "119f80ab1d33c0b2", | |
"type": "function", | |
"z": "c47a770c26e3be71", | |
"name": "Prompt generator", | |
"func": "\nconst moods = [\n \"på en morsom og sprudlende måte\",\n \"på en spøkefull måte\",\n \"på en sarkastisk og ironisk måte\",\n \"på en militær og autoritær måte\",\n \"som et haiku-dikt\",\n];\n\nvar mood = moods[Math.floor(Math.random() * moods.length)];\nnode.status({ fill: \"green\", shape: \"ring\", text: mood });\n\nvar instructions = [\n { \"role\": \"system\", \"content\": \"Du er homeassistant, et smarthus, og liker å gi beskjeder \" + mood },\n { \"role\": \"system\", \"content\": \"Formater resultatet som SSML.\" },\n { \"role\": \"system\", \"content\": \"Du snakker norsk bokmål.\" }, \n { \"role\": \"user\", \"content\": msg.payload }\n];\n\nvar payload = {\n \"model\": \"gpt-3.5-turbo\",\n \"messages\": instructions, \n \"temperature\": 0.8\n};\nmsg.mood = mood;\nmsg.payload = JSON.stringify(payload);\n\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 240, | |
"y": 580, | |
"wires": [ | |
[ | |
"81c8b7e4bd47c74c" | |
] | |
] | |
}, | |
{ | |
"id": "389fba21f27469a5", | |
"type": "debug", | |
"z": "c47a770c26e3be71", | |
"name": "debug 4", | |
"active": true, | |
"tosidebar": true, | |
"console": false, | |
"tostatus": false, | |
"complete": "true", | |
"targetType": "full", | |
"statusVal": "", | |
"statusType": "auto", | |
"x": 840, | |
"y": 720, | |
"wires": [] | |
}, | |
{ | |
"id": "7f168eec46e31331", | |
"type": "link call", | |
"z": "c47a770c26e3be71", | |
"name": "", | |
"links": [ | |
"b89fb45572d6615c" | |
], | |
"linkType": "static", | |
"timeout": "30", | |
"x": 650, | |
"y": 720, | |
"wires": [ | |
[ | |
"389fba21f27469a5" | |
] | |
] | |
}, | |
{ | |
"id": "c0727a48c22ded7d", | |
"type": "function", | |
"z": "c47a770c26e3be71", | |
"name": "SSML-eksempel(brukes til høyttalere)", | |
"func": "msg.payload = \"Informer om at tørketrommelen er ferdig og er klar for tømming.\";\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 370, | |
"y": 720, | |
"wires": [ | |
[ | |
"7f168eec46e31331" | |
] | |
] | |
}, | |
{ | |
"id": "fead9e1959ca0684", | |
"type": "inject", | |
"z": "c47a770c26e3be71", | |
"name": "", | |
"props": [ | |
{ | |
"p": "payload" | |
}, | |
{ | |
"p": "topic", | |
"vt": "str" | |
} | |
], | |
"repeat": "", | |
"crontab": "", | |
"once": false, | |
"onceDelay": 0.1, | |
"topic": "", | |
"payload": "", | |
"payloadType": "date", | |
"x": 130, | |
"y": 720, | |
"wires": [ | |
[ | |
"c0727a48c22ded7d" | |
] | |
] | |
}, | |
{ | |
"id": "041269d60d3ba10f", | |
"type": "link out", | |
"z": "c47a770c26e3be71", | |
"name": "link out 2", | |
"mode": "return", | |
"links": [], | |
"x": 805, | |
"y": 580, | |
"wires": [] | |
}, | |
{ | |
"id": "81c8b7e4bd47c74c", | |
"type": "http request", | |
"z": "c47a770c26e3be71", | |
"name": "", | |
"method": "POST", | |
"ret": "obj", | |
"paytoqs": "body", | |
"url": "https://api.openai.com/v1/chat/completions", | |
"tls": "", | |
"persist": false, | |
"proxy": "", | |
"insecureHTTPParser": false, | |
"authType": "bearer", | |
"senderr": false, | |
"headers": [ | |
{ | |
"keyType": "other", | |
"keyValue": "Content-Type", | |
"valueType": "other", | |
"valueValue": "application/json" | |
} | |
], | |
"x": 440, | |
"y": 580, | |
"wires": [ | |
[ | |
"a0c9e64e73148850" | |
] | |
] | |
}, | |
{ | |
"id": "a0c9e64e73148850", | |
"type": "function", | |
"z": "c47a770c26e3be71", | |
"name": "Hent resultat", | |
"func": "// Hent ut tekst mellom <speak>tekst</speak>\n// Det hender nemlig at ChatGPT kan finne på å sende\n// \"Selvfølgelig, her er en mulig beskjed som balanserer format og poesi:<speak>...\"\nfunction extractGeneratedText(inputString) {\n const regex = /\\<speak\\>[\\w\\sæøåÆØÅ,.!?\\<\\>\\/\\n]+\\<\\/speak\\>/;\n const match = inputString.match(regex);\n if (match) {\n return wrapWithSpeakTags(match[0]);\n } else {\n return wrapWithSpeakTags(inputString);\n }\n}\n\nfunction wrapWithSpeakTags(inputString) {\n const startTag = '<speak>';\n const endTag = '</speak>';\n if (inputString.startsWith(startTag) && inputString.endsWith(endTag)) {\n return inputString;\n } else {\n return startTag + inputString + endTag;\n }\n}\nmsg = {\n \"_linkSource\": msg._linkSource,\n \"mood\":msg.mood,\n \"payload\": extractGeneratedText(msg.payload.choices[0].message.content),\n}\n\nreturn msg;", | |
"outputs": 1, | |
"noerr": 0, | |
"initialize": "", | |
"finalize": "", | |
"libs": [], | |
"x": 650, | |
"y": 580, | |
"wires": [ | |
[ | |
"041269d60d3ba10f" | |
] | |
] | |
}, | |
{ | |
"id": "f09063b0f2c26a5a", | |
"type": "comment", | |
"z": "c47a770c26e3be71", | |
"name": "ChatGPT-tekst-generator", | |
"info": "## input:\n**msg.payload**\nTekstinput som skal sendes til OpenAI-endpointet.\nFormater denne slik at OpenAI forstår hva den\nskal gjøre, f.eks \"Informer om at oppvaskmaskinen er ferdig og klar til å tømmes.\"\n\nHer er mine tekster, til eksempel for andre:\n- \"Informer om at oppvaskmaskinen er ferdig og kan tømmes\"\n- \"Gi beskjed om at vaskemaskinen er ferdig og kan tømmes.\"\n- \"Tørketrommelen er ferdig, informer husstanden om dette.\"\n- \"Informer om at det tømmedag for søppel i morgen, og at følgende søppelsorter skal tømmes: matavfall, restavfall, papp/papir\"\n(Teksten til siste blir autogenerert via jinja-template)\n\n**msg.nossml**\nOptional bool-input som angir om teksten \nskal skrives ut ssml-formatert eller ikke.\nSett denne til `true` dersom man ønsker ren tekst\nuten ssml-formatering innblandet.\n", | |
"x": 170, | |
"y": 540, | |
"wires": [] | |
}, | |
{ | |
"id": "9ffe3291203e9a64", | |
"type": "comment", | |
"z": "c47a770c26e3be71", | |
"name": "Legg til auth-token her!", | |
"info": "Her må du sette inn auth-token generert fra \nOpenAI. Forutsetter at man registererer seg \nhos OpenAI, gå deretter hit:\nhttps://platform.openai.com/account/api-keys\n\nGenerer token, åpne http request noden,\nkryss av for \"Use authentication\",\nvelg \"Bearer token\" og lim inn tokenet du \ngenererte i tekstfeltet.\n", | |
"x": 440, | |
"y": 540, | |
"wires": [] | |
}, | |
{ | |
"id": "bdb34e6e87775a7d", | |
"type": "comment", | |
"z": "c47a770c26e3be71", | |
"name": "Test, trykk her for å teste.", | |
"info": "", | |
"x": 150, | |
"y": 680, | |
"wires": [] | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment