@peopl-health/nexus 3.11.2 → 3.11.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/eval/EvalProvider.js
CHANGED
|
@@ -168,7 +168,15 @@ class EvalProvider {
|
|
|
168
168
|
|
|
169
169
|
_buildApiConfig(devContent, messages, assistantId, promptVariables, toolSchemas) {
|
|
170
170
|
const convertedMessages = this.provider._convertItemsToApiFormat(messages);
|
|
171
|
-
|
|
171
|
+
|
|
172
|
+
const memoryParts = [];
|
|
173
|
+
if (promptVariables?.patient_memories) memoryParts.push(`--- Memoria del paciente ---\n${promptVariables.patient_memories}`);
|
|
174
|
+
if (promptVariables?.conversation_summaries) memoryParts.push(`--- Resumen de conversaciones recientes ---\n${promptVariables.conversation_summaries}`);
|
|
175
|
+
const memoryMessage = memoryParts.length > 0
|
|
176
|
+
? [{ role: 'developer', content: memoryParts.join('\n\n') }]
|
|
177
|
+
: [];
|
|
178
|
+
|
|
179
|
+
const input = [{ role: 'developer', content: devContent }, ...memoryMessage, ...convertedMessages];
|
|
172
180
|
const apiConfig = { input, instructions: devContent || '' };
|
|
173
181
|
|
|
174
182
|
if (assistantId) {
|
|
@@ -32,22 +32,8 @@ class EnhancedMemoryManager extends DefaultMemoryManager {
|
|
|
32
32
|
const formattedMemories = this._formatMemoriesForPrompt(memories);
|
|
33
33
|
const formattedSummaries = this._formatSummariesForPrompt(summaries);
|
|
34
34
|
|
|
35
|
-
// Append memories and summaries to clinicalContext so they flow through
|
|
36
|
-
// the existing {{clinical_context}} placeholder without template changes
|
|
37
|
-
let clinicalContext = baseClinicalData?.clinicalContext ?? '';
|
|
38
|
-
if (formattedMemories) {
|
|
39
|
-
clinicalContext += '\n\n--- Memoria del paciente ---\n'
|
|
40
|
-
+ 'IMPORTANTE: Usa la siguiente información para personalizar tu respuesta. '
|
|
41
|
-
+ 'Adapta tu tono, contenido y recomendaciones según las preferencias, '
|
|
42
|
-
+ 'contexto emocional y situación específica del paciente.\n'
|
|
43
|
-
+ formattedMemories;
|
|
44
|
-
}
|
|
45
|
-
if (formattedSummaries) {
|
|
46
|
-
clinicalContext += `\n\n--- Resumen de conversaciones recientes ---\n${formattedSummaries}`;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
35
|
return {
|
|
50
|
-
clinicalContext,
|
|
36
|
+
clinicalContext: baseClinicalData?.clinicalContext ?? '',
|
|
51
37
|
lastSymptoms: baseClinicalData?.lastSymptoms ?? '',
|
|
52
38
|
patientMemories: formattedMemories,
|
|
53
39
|
conversationSummaries: formattedSummaries,
|
|
@@ -378,7 +378,14 @@ class OpenAIResponsesProvider {
|
|
|
378
378
|
messages = [...messages, ...this._convertItemsToApiFormat(prePromptResult.additionalMessages)];
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
-
const
|
|
381
|
+
const memoryParts = [];
|
|
382
|
+
if (promptVariables?.patient_memories) memoryParts.push(`--- Memoria del paciente ---\n${promptVariables.patient_memories}`);
|
|
383
|
+
if (promptVariables?.conversation_summaries) memoryParts.push(`--- Resumen de conversaciones recientes ---\n${promptVariables.conversation_summaries}`);
|
|
384
|
+
const memoryMessage = memoryParts.length > 0
|
|
385
|
+
? [{ role: 'developer', content: memoryParts.join('\n\n') }]
|
|
386
|
+
: [];
|
|
387
|
+
|
|
388
|
+
const input = [{ role: 'developer', content: devContent }, ...memoryMessage, ...messages];
|
|
382
389
|
|
|
383
390
|
const promptConfig = { id: resolvedPromptId || assistantId };
|
|
384
391
|
if (promptVariables) promptConfig.variables = promptVariables;
|
|
@@ -79,35 +79,33 @@ async function composePrompt({ presetId = null, presetVersion = null, promptId =
|
|
|
79
79
|
let presetToolIds = null;
|
|
80
80
|
let resolvedPresetVersion = null;
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
const preset = await fetchPreset(
|
|
84
|
-
if (preset) {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
resolvedPresetVersion = preset.version ? String(preset.version) : null;
|
|
88
|
-
const promptRecordId = preset.prompt?.[0];
|
|
89
|
-
if (promptRecordId) {
|
|
90
|
-
const promptRecords = await getRecordByFilter(Config_ID, 'responses', `RECORD_ID()="${promptRecordId}"`);
|
|
91
|
-
const presetPromptId = promptRecords?.[0]?.prompt_id;
|
|
92
|
-
if (presetPromptId) resolvedPromptId = presetPromptId;
|
|
93
|
-
}
|
|
94
|
-
} else {
|
|
95
|
-
logger.error('[promptComposer] Preset not found in Airtable', { presetId, presetVersion });
|
|
82
|
+
async function applyPreset(id, version = null) {
|
|
83
|
+
const preset = await fetchPreset(id, version);
|
|
84
|
+
if (!preset) {
|
|
85
|
+
logger.error('[promptComposer] Preset not found in Airtable', { presetId: id, presetVersion: version });
|
|
86
|
+
return;
|
|
96
87
|
}
|
|
88
|
+
presetSnippetIds = preset.snippets || [];
|
|
89
|
+
presetToolIds = preset.tools || [];
|
|
90
|
+
resolvedPresetVersion = preset.version ? String(preset.version) : null;
|
|
91
|
+
const promptRecordId = preset.prompt?.[0];
|
|
92
|
+
if (promptRecordId) {
|
|
93
|
+
const promptRecords = await getRecordByFilter(Config_ID, 'responses', `RECORD_ID()="${promptRecordId}"`);
|
|
94
|
+
const presetPromptId = promptRecords?.[0]?.prompt_id;
|
|
95
|
+
if (presetPromptId) resolvedPromptId = presetPromptId;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (presetId) {
|
|
100
|
+
await applyPreset(presetId, presetVersion);
|
|
97
101
|
}
|
|
98
102
|
|
|
99
|
-
|
|
103
|
+
let baseRecord = await fetchBasePrompt(resolvedPromptId);
|
|
100
104
|
|
|
101
105
|
if (!presetId && baseRecord?.preset_id) {
|
|
102
106
|
presetId = baseRecord.preset_id;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
presetSnippetIds = preset.snippets || [];
|
|
106
|
-
presetToolIds = preset.tools || [];
|
|
107
|
-
resolvedPresetVersion = preset.version ? String(preset.version) : null;
|
|
108
|
-
} else {
|
|
109
|
-
logger.error('[promptComposer] Prompt-level preset not found in Airtable', { presetId, promptId: resolvedPromptId });
|
|
110
|
-
}
|
|
107
|
+
await applyPreset(presetId);
|
|
108
|
+
baseRecord = await fetchBasePrompt(resolvedPromptId);
|
|
111
109
|
}
|
|
112
110
|
|
|
113
111
|
if (!baseRecord) {
|