extraction error logging

This commit is contained in:
Storme-bit
2026-04-20 23:28:46 -07:00
parent 980053a0ee
commit 405676edb5

View File

@@ -29,6 +29,9 @@ function buildExtractionPrompt(userMessage, aiResponse, knownEntities = []) {
' "type": one of the valid types above',
' "notes": one sentence describing this entity based on the conversation',
'',
'Extract all named entities from this conversation.',
'Respond with ONLY a JSON array. Start your response with [ and end with ].',
'Do not include any text before or after the array.',
`User: ${userMessage}`,
`Assistant: ${aiResponse}`,
'<|end|>',
@@ -68,7 +71,7 @@ async function extractAndStoreEntities(userMessage, aiResponse, projectId=null)
stream: false,
options: {
temperature: 0.1,
num_predict: 768,
num_predict: 1024,
},
}),
});
@@ -80,8 +83,15 @@ async function extractAndStoreEntities(userMessage, aiResponse, projectId=null)
console.log('[entities] raw response:', JSON.stringify(raw.slice(0, 300)));
// Extract just the JSON array — everything from [ to the last ]
const stripped = raw.replace(/```(?:json)?/g, '').trim();
const match = stripped.match(/\[[\s\S]*\]/);
let normalized = raw.replace(/```(?:json)?/g, '').trim();
if (!normalized.startsWith('[')) {
normalized = '[' + normalized;
}
if (!normalized.endsWith(']')) {
// Trim any trailing comma or incomplete object before closing
normalized = normalized.replace(/,?\s*\{[^}]*$/, '') + ']';
}
const match = normalized.match(/\[[\s\S]*\]/);
if (!match) throw new Error('No JSON array found in response');
const clean = match[0];