Spaces:
Runtime error
Runtime error
const express = require('express'); | |
const fetch = require('node-fetch').default; | |
const { jsonParser } = require('../../express-common'); | |
const { readSecret, SECRET_KEYS } = require('../secrets'); | |
const router = express.Router(); | |
router.post('/generate', jsonParser, async function (request, response) { | |
if (!request.body) return response.sendStatus(400); | |
try { | |
const cookie = readSecret(request.user.directories, SECRET_KEYS.SCALE_COOKIE); | |
if (!cookie) { | |
console.log('No Scale cookie found'); | |
return response.sendStatus(400); | |
} | |
const body = { | |
json: { | |
variant: { | |
name: 'New Variant', | |
appId: '', | |
taxonomy: null, | |
}, | |
prompt: { | |
id: '', | |
template: '{{input}}\n', | |
exampleVariables: {}, | |
variablesSourceDataId: null, | |
systemMessage: request.body.sysprompt, | |
}, | |
modelParameters: { | |
id: '', | |
modelId: 'GPT4', | |
modelType: 'OpenAi', | |
maxTokens: request.body.max_tokens, | |
temperature: request.body.temp, | |
stop: 'user:', | |
suffix: null, | |
topP: request.body.top_p, | |
logprobs: null, | |
logitBias: request.body.logit_bias, | |
}, | |
inputs: [ | |
{ | |
index: '-1', | |
valueByName: { | |
input: request.body.prompt, | |
}, | |
}, | |
], | |
}, | |
meta: { | |
values: { | |
'variant.taxonomy': ['undefined'], | |
'prompt.variablesSourceDataId': ['undefined'], | |
'modelParameters.suffix': ['undefined'], | |
'modelParameters.logprobs': ['undefined'], | |
}, | |
}, | |
}; | |
console.log('Scale request:', body); | |
const result = await fetch('https://dashboard.scale.com/spellbook/api/trpc/v2.variant.run', { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json', | |
'cookie': `_jwt=${cookie}`, | |
}, | |
timeout: 0, | |
body: JSON.stringify(body), | |
}); | |
if (!result.ok) { | |
const text = await result.text(); | |
console.log('Scale request failed', result.statusText, text); | |
return response.status(500).send({ error: { message: result.statusText } }); | |
} | |
const data = await result.json(); | |
const output = data?.result?.data?.json?.outputs?.[0] || ''; | |
console.log('Scale response:', data); | |
if (!output) { | |
console.warn('Scale response is empty'); | |
return response.sendStatus(500).send({ error: { message: 'Empty response' } }); | |
} | |
return response.json({ output }); | |
} catch (error) { | |
console.log(error); | |
return response.sendStatus(500); | |
} | |
}); | |
module.exports = { router }; | |