Make response reordering more efficient

This commit is contained in:
Ian Arawjo 2023-11-26 21:48:36 -05:00
parent eb6c39947b
commit a861695c87
7 changed files with 20 additions and 12 deletions

View File

@ -1,15 +1,15 @@
{
"files": {
"main.css": "/static/css/main.8665fcca.css",
"main.js": "/static/js/main.18a9333e.js",
"main.js": "/static/js/main.72fd301c.js",
"static/js/787.4c72bb55.chunk.js": "/static/js/787.4c72bb55.chunk.js",
"index.html": "/index.html",
"main.8665fcca.css.map": "/static/css/main.8665fcca.css.map",
"main.18a9333e.js.map": "/static/js/main.18a9333e.js.map",
"main.72fd301c.js.map": "/static/js/main.72fd301c.js.map",
"787.4c72bb55.chunk.js.map": "/static/js/787.4c72bb55.chunk.js.map"
},
"entrypoints": [
"static/css/main.8665fcca.css",
"static/js/main.18a9333e.js"
"static/js/main.72fd301c.js"
]
}

View File

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><script async src="https://www.googletagmanager.com/gtag/js?id=G-RN3FDBLMCR"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-RN3FDBLMCR")</script><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="A visual programming environment for prompt engineering"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>ChainForge</title><script defer="defer" src="/static/js/main.18a9333e.js"></script><link href="/static/css/main.8665fcca.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><script async src="https://www.googletagmanager.com/gtag/js?id=G-RN3FDBLMCR"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-RN3FDBLMCR")</script><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="A visual programming environment for prompt engineering"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>ChainForge</title><script defer="defer" src="/static/js/main.72fd301c.js"></script><link href="/static/css/main.8665fcca.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

View File

@ -721,14 +721,22 @@ export async function queryLLM(id: string,
let res = Object.values(responses).flatMap(rs => rs.map(to_standard_format));
// Reorder the responses to match the original vars dict ordering of keys and values
let vars_lookup = {}; // we create a lookup table for faster sort
Object.entries(vars).forEach(([varname, vals]) => {
vars_lookup[varname] = {};
vals.forEach((vobj: Dict | string, i: number) => {
const v = typeof vobj === "string" ? vobj : vobj?.text;
vars_lookup[varname][v] = i;
});
});
res.sort((a, b) => {
if (!a.vars || !b.vars) return 0;
for (const [varname, vals] of Object.entries(vars)) {
for (const [varname, vals] of Object.entries(vars_lookup)) {
if (varname in a.vars && varname in b.vars) {
const a_val = a.vars[varname];
const b_val = b.vars[varname];
const a_idx = vals.findIndex(v => v === a_val || v?.text === a_val);
const b_idx = vals.findIndex(v => v === b_val || v?.text === b_val);
const a_idx = vals[a_val];
const b_idx = vals[b_val];
if (a_idx > -1 && b_idx > -1 && a_idx !== b_idx)
return a_idx - b_idx;
}

View File

@ -6,7 +6,7 @@ def readme():
setup(
name='chainforge',
version='0.2.7.3',
version='0.2.7.4',
packages=find_packages(),
author="Ian Arawjo",
description="A Visual Programming Environment for Prompt Engineering",