Spaces:
Running
Running
File size: 3,880 Bytes
ceb472c 4189f9e 8993dbb 4189f9e ceb472c 9a02618 4fbd4b0 4189f9e b23bba4 5ede890 b23bba4 4d4ea35 b23bba4 4d4ea35 b23bba4 eb4bd74 b23bba4 eb800fb 2988cff 4d4ea35 6ff171e eb800fb 855a94a ceb472c b23bba4 4d4ea35 b23bba4 6ff171e b23bba4 2988cff e659e75 4189f9e 2988cff b23bba4 6ff171e 855a94a ceb472c eb800fb ceb472c eb800fb 60949e3 eb800fb 9f84ffb eb800fb ceb472c 90bf77f 60949e3 227827f 60949e3 227827f 8448a0a 9a02618 60949e3 4fbd4b0 e659e75 9a02618 e659e75 9a02618 60949e3 aa87ec6 60949e3 e37c55c 7171e66 2988cff 4fbd4b0 e37c55c 4fbd4b0 9a02618 4fbd4b0 b23bba4 4fbd4b0 b23bba4 514097e 4fbd4b0 7171e66 5599fc0 4d4ea35 60949e3 2e68462 60949e3 |
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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
// IMPORT LIBRARIES TOOLS
import { pipeline, env } from 'https://cdn.jsdelivr.net/npm/@xenova/[email protected]';
// skip local model check
env.allowLocalModels = false;
// GLOBAL VARIABLES
let PROMPT_INPUT = `Happy people are better than [MASK].` // a field for writing or changing a text value
let pField
// RUN TEXT-GEN MODEL
async function textGenTask(input){
console.log('text-gen task initiated')
const pipe = await pipeline('text-generation', 'HuggingFaceH4/zephyr-7b-beta')
var out = await pipe(input)
console.log(await out)
console.log('text-gen task completed')
let OUTPUT_LIST = [] // a blank array to store the results from the model
// parsing of output
await out.forEach(o => {
console.log(o)
OUTPUT_LIST.push(o.generated_text)
})
console.log(OUTPUT_LIST)
console.log('text-gen parsing complete')
return await OUTPUT_LIST
// return await out
}
// RUN FILL-IN MODEL
async function fillInTask(input){
console.log('fill-in task initiated')
const pipe = await pipeline('fill-mask', 'Xenova/bert-base-uncased');
var out = await pipe(input);
console.log(await out) // yields { score, sequence, token, token_str } for each result
let OUTPUT_LIST = [] // a blank array to store the results from the model
// parsing of output
await out.forEach(o => {
console.log(o) // yields { score, sequence, token, token_str } for each result
OUTPUT_LIST.push(o.sequence) // put only the full sequence in a list
})
console.log(await OUTPUT_LIST)
// displayResults(await OUTPUT_LIST)
console.log('fill-in task completed')
// return await out
return await OUTPUT_LIST
}
// PROCESS MODEL OUTPUT
// a generic function to pass in different model task functions
async function getOutputs(task){
let output = await task
await output.forEach(o => {
OUTPUT_LIST.push(o.sequence) // put only the full sequence in a list
})
console.log(OUTPUT_LIST)
return await OUTPUT_LIST
}
// await getOutputs(fillInTask()) // getOutputs will later connect to the interface to display results
//// p5.js Instance
new p5(function (p5){
p5.setup = function(){
p5.noCanvas()
console.log('p5 instance loaded')
makeTextDisplay()
makeFields()
makeButtons()
}
p5.draw = function(){
//
}
function makeTextDisplay(){
let title = p5.createElement('h1','p5.js Critical AI Prompt Battle')
let intro = p5.createP(`This tool lets you explore several AI prompts results at once.`)
p5.createP(`Use it to explore what models 'know' about various concepts, communities, and cultures. For more information on prompt programming and critical AI, see [Tutorial & extra info][TO-DO][XXX]`)
}
function makeFields(){
pField = p5.createInput(PROMPT_INPUT) // turns the string into an input; now access the text via PROMPT_INPUT.value()
pField.size(700)
pField.attribute('label', `Write a text prompt with one [MASK] that the model will fill in.`)
p5.createP(pField.attribute('label'))
pField.addClass("prompt")
// pField.value(PROMPT_INPUT)
// console.log(pField.value())
}
function makeButtons(){
let submitButton = p5.createButton("SUBMIT")
submitButton.size(170)
submitButton.class('submit')
submitButton.mousePressed(displayResults)
let outHeader = p5.createElement('h3',"Results")
}
async function displayResults(){
console.log('displayed, pressed')
PROMPT_INPUT = pField.value() // updates prompt if it's changed
console.log("latest prompt: ", PROMPT_INPUT)
// let fillIn = await fillInTask(PROMPT_INPUT)
// let outs = await getOutputs(fillIn)
let outs = await textGenTask(PROMPT_INPUT)
console.log(outs)
// text = str(outs)
let outText = p5.createP('')
await outText.html(outs) // true appends text instead of replaces
}
});
|