@proofhound/optimization-strategy 0.1.6
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/LICENSE +190 -0
- package/dist/error-pattern-analysis/analysis-types.d.ts +45 -0
- package/dist/error-pattern-analysis/analysis-types.d.ts.map +1 -0
- package/dist/error-pattern-analysis/analysis-types.js +3 -0
- package/dist/error-pattern-analysis/analysis-types.js.map +1 -0
- package/dist/error-pattern-analysis/analyze.d.ts +81 -0
- package/dist/error-pattern-analysis/analyze.d.ts.map +1 -0
- package/dist/error-pattern-analysis/analyze.js +423 -0
- package/dist/error-pattern-analysis/analyze.js.map +1 -0
- package/dist/error-pattern-analysis/config.schema.d.ts +16 -0
- package/dist/error-pattern-analysis/config.schema.d.ts.map +1 -0
- package/dist/error-pattern-analysis/config.schema.js +26 -0
- package/dist/error-pattern-analysis/config.schema.js.map +1 -0
- package/dist/error-pattern-analysis/confusion-pairs.d.ts +37 -0
- package/dist/error-pattern-analysis/confusion-pairs.d.ts.map +1 -0
- package/dist/error-pattern-analysis/confusion-pairs.js +109 -0
- package/dist/error-pattern-analysis/confusion-pairs.js.map +1 -0
- package/dist/error-pattern-analysis/generate-initial.d.ts +36 -0
- package/dist/error-pattern-analysis/generate-initial.d.ts.map +1 -0
- package/dist/error-pattern-analysis/generate-initial.js +261 -0
- package/dist/error-pattern-analysis/generate-initial.js.map +1 -0
- package/dist/error-pattern-analysis/generate.d.ts +57 -0
- package/dist/error-pattern-analysis/generate.d.ts.map +1 -0
- package/dist/error-pattern-analysis/generate.js +369 -0
- package/dist/error-pattern-analysis/generate.js.map +1 -0
- package/dist/error-pattern-analysis/index.d.ts +8 -0
- package/dist/error-pattern-analysis/index.d.ts.map +1 -0
- package/dist/error-pattern-analysis/index.js +29 -0
- package/dist/error-pattern-analysis/index.js.map +1 -0
- package/dist/error-pattern-analysis/parse.d.ts +92 -0
- package/dist/error-pattern-analysis/parse.d.ts.map +1 -0
- package/dist/error-pattern-analysis/parse.js +456 -0
- package/dist/error-pattern-analysis/parse.js.map +1 -0
- package/dist/error-pattern-analysis/prompts/analyze-confusion.system.en-US.md +50 -0
- package/dist/error-pattern-analysis/prompts/analyze-confusion.system.md +61 -0
- package/dist/error-pattern-analysis/prompts/analyze-regression.system.en-US.md +50 -0
- package/dist/error-pattern-analysis/prompts/analyze-regression.system.md +61 -0
- package/dist/error-pattern-analysis/prompts/generate-initial.system.en-US.md +43 -0
- package/dist/error-pattern-analysis/prompts/generate-initial.system.md +49 -0
- package/dist/error-pattern-analysis/prompts/generate.system.en-US.md +53 -0
- package/dist/error-pattern-analysis/prompts/generate.system.md +68 -0
- package/dist/error-pattern-analysis/prompts/loader.d.ts +46 -0
- package/dist/error-pattern-analysis/prompts/loader.d.ts.map +1 -0
- package/dist/error-pattern-analysis/prompts/loader.js +109 -0
- package/dist/error-pattern-analysis/prompts/loader.js.map +1 -0
- package/dist/error-pattern-analysis/prompts/optimization-tips.en-US.md +25 -0
- package/dist/error-pattern-analysis/prompts/optimization-tips.md +38 -0
- package/dist/error-pattern-analysis/prompts/summarize.system.en-US.md +48 -0
- package/dist/error-pattern-analysis/prompts/summarize.system.md +69 -0
- package/dist/error-pattern-analysis/prompts.d.ts +79 -0
- package/dist/error-pattern-analysis/prompts.d.ts.map +1 -0
- package/dist/error-pattern-analysis/prompts.js +659 -0
- package/dist/error-pattern-analysis/prompts.js.map +1 -0
- package/dist/error-pattern-analysis/token-budget.d.ts +20 -0
- package/dist/error-pattern-analysis/token-budget.d.ts.map +1 -0
- package/dist/error-pattern-analysis/token-budget.js +88 -0
- package/dist/error-pattern-analysis/token-budget.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/loop/best.d.ts +3 -0
- package/dist/loop/best.d.ts.map +1 -0
- package/dist/loop/best.js +43 -0
- package/dist/loop/best.js.map +1 -0
- package/dist/loop/goals.d.ts +6 -0
- package/dist/loop/goals.d.ts.map +1 -0
- package/dist/loop/goals.js +38 -0
- package/dist/loop/goals.js.map +1 -0
- package/dist/loop/round-outcome.d.ts +14 -0
- package/dist/loop/round-outcome.d.ts.map +1 -0
- package/dist/loop/round-outcome.js +18 -0
- package/dist/loop/round-outcome.js.map +1 -0
- package/dist/loop/run-iteration-loop.d.ts +5 -0
- package/dist/loop/run-iteration-loop.d.ts.map +1 -0
- package/dist/loop/run-iteration-loop.js +247 -0
- package/dist/loop/run-iteration-loop.js.map +1 -0
- package/dist/loop/types.d.ts +190 -0
- package/dist/loop/types.d.ts.map +1 -0
- package/dist/loop/types.js +13 -0
- package/dist/loop/types.js.map +1 -0
- package/dist/registry.d.ts +5 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +19 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type InvokeLLMDependencies, type ModelInvocationConfig } from '@proofhound/llm-client';
|
|
2
|
+
import { type PromptLanguageDto, type PromptOutputSchemaDto, type PromptVariableDto } from '@proofhound/shared';
|
|
3
|
+
import type { OptimizationGoal, FieldWhitelist } from '../loop/types';
|
|
4
|
+
import { type OptimizationRunResultMeta } from './analyze';
|
|
5
|
+
import type { ErrorPatternAnalysisConfig } from './config.schema';
|
|
6
|
+
export declare class FirstVersionParseError extends Error {
|
|
7
|
+
readonly rawContent: string;
|
|
8
|
+
constructor(message: string, rawContent: string);
|
|
9
|
+
}
|
|
10
|
+
export interface GenerateInitialVersionArgs {
|
|
11
|
+
optimizationId: string;
|
|
12
|
+
analysisModel: ModelInvocationConfig;
|
|
13
|
+
analysisLimiterKey: string;
|
|
14
|
+
samples: Array<{
|
|
15
|
+
id: string;
|
|
16
|
+
data: Record<string, unknown>;
|
|
17
|
+
}>;
|
|
18
|
+
goals: OptimizationGoal[];
|
|
19
|
+
fieldWhitelist: FieldWhitelist;
|
|
20
|
+
description: string | null;
|
|
21
|
+
optimizationHint?: string;
|
|
22
|
+
promptLanguage?: PromptLanguageDto;
|
|
23
|
+
strategyConfig: ErrorPatternAnalysisConfig;
|
|
24
|
+
runResultMeta?: OptimizationRunResultMeta;
|
|
25
|
+
generateRunResultId?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface GenerateInitialVersionResult {
|
|
28
|
+
newPromptBody: string;
|
|
29
|
+
variables: PromptVariableDto[];
|
|
30
|
+
outputSchema: PromptOutputSchemaDto;
|
|
31
|
+
changeSummary: string;
|
|
32
|
+
truncated: boolean;
|
|
33
|
+
rawContent: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function generateInitialVersion(args: GenerateInitialVersionArgs, deps: InvokeLLMDependencies): Promise<GenerateInitialVersionResult>;
|
|
36
|
+
//# sourceMappingURL=generate-initial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-initial.d.ts","sourceRoot":"","sources":["../../src/error-pattern-analysis/generate-initial.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,qBAAqB,EAE1B,KAAK,qBAAqB,EAE3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,KAAK,yBAAyB,EAAyB,MAAM,WAAW,CAAC;AAClF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAOlE,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAChB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAKhD;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,qBAAqB,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAC9D,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,cAAc,EAAE,0BAA0B,CAAC;IAE3C,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,YAAY,EAAE,qBAAqB,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AA+ND,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,0BAA0B,EAChC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,4BAA4B,CAAC,CAmDvC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FirstVersionParseError = void 0;
|
|
4
|
+
exports.generateInitialVersion = generateInitialVersion;
|
|
5
|
+
// First-version prompt generation for from_dataset_only start mode — see docs/specs/25-optimizations.md §2.1
|
|
6
|
+
// Single LLM call, with no error evidence / no history rounds / no variable preservation constraint (base does not exist);
|
|
7
|
+
// induces the first prompt purely from dataset sampling + goals + fieldWhitelist + description.
|
|
8
|
+
const llm_client_1 = require("@proofhound/llm-client");
|
|
9
|
+
const shared_1 = require("@proofhound/shared");
|
|
10
|
+
const analyze_1 = require("./analyze");
|
|
11
|
+
const parse_1 = require("./parse");
|
|
12
|
+
const prompts_1 = require("./prompts");
|
|
13
|
+
const loader_1 = require("./prompts/loader");
|
|
14
|
+
// When the LLM output cannot be parsed / does not conform to the contract, this error expresses it uniformly; the workflow maps it to
|
|
15
|
+
// the failure reason `first_version_parse_failed_v1` (see SPEC 25 §2.1 failure-reason code table).
|
|
16
|
+
class FirstVersionParseError extends Error {
|
|
17
|
+
rawContent;
|
|
18
|
+
constructor(message, rawContent) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'FirstVersionParseError';
|
|
21
|
+
this.rawContent = rawContent;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.FirstVersionParseError = FirstVersionParseError;
|
|
25
|
+
function formatGoals(goals, language) {
|
|
26
|
+
if (goals.length === 0)
|
|
27
|
+
return language === 'en-US' ? '(no optimization goals declared)' : '(未声明优化目标)';
|
|
28
|
+
return goals
|
|
29
|
+
.map((g) => {
|
|
30
|
+
const scope = language === 'en-US'
|
|
31
|
+
? g.scope.kind === 'overall'
|
|
32
|
+
? 'overall'
|
|
33
|
+
: `class "${g.scope.label}"`
|
|
34
|
+
: g.scope.kind === 'overall'
|
|
35
|
+
? '整体'
|
|
36
|
+
: `分类「${g.scope.label}」`;
|
|
37
|
+
return language === 'en-US'
|
|
38
|
+
? `- \`${g.metric}\` for ${scope}: target \`${g.op} ${g.value}\``
|
|
39
|
+
: `- ${scope} 的 \`${g.metric}\`:目标 \`${g.op} ${g.value}\``;
|
|
40
|
+
})
|
|
41
|
+
.join('\n');
|
|
42
|
+
}
|
|
43
|
+
function formatFieldWhitelist(fw, language) {
|
|
44
|
+
const lines = [];
|
|
45
|
+
lines.push(language === 'en-US'
|
|
46
|
+
? '### promptVariables (may be used as {{var}} placeholders in the prompt)'
|
|
47
|
+
: '### promptVariables(可作为 {{var}} 进入 prompt)');
|
|
48
|
+
lines.push(fw.promptVariables.length === 0
|
|
49
|
+
? language === 'en-US'
|
|
50
|
+
? '(empty)'
|
|
51
|
+
: '(空)'
|
|
52
|
+
: fw.promptVariables.map((v) => `- \`${v}\``).join('\n'));
|
|
53
|
+
if (fw.analysisOnlyFields && fw.analysisOnlyFields.length > 0) {
|
|
54
|
+
lines.push('');
|
|
55
|
+
lines.push(language === 'en-US'
|
|
56
|
+
? '### analysisOnlyFields (analysis-only; forbidden in newPromptBody)'
|
|
57
|
+
: '### analysisOnlyFields(仅分析可见,禁止出现在 newPromptBody)');
|
|
58
|
+
lines.push(fw.analysisOnlyFields.map((v) => `- \`${v}\``).join('\n'));
|
|
59
|
+
}
|
|
60
|
+
if (fw.modifiableSections && fw.modifiableSections.length > 0) {
|
|
61
|
+
lines.push('');
|
|
62
|
+
lines.push(language === 'en-US'
|
|
63
|
+
? '### modifiableSections (suggested prompt sections)'
|
|
64
|
+
: '### modifiableSections(建议覆盖的 prompt 段)');
|
|
65
|
+
lines.push(fw.modifiableSections.map((v) => `- ${v}`).join('\n'));
|
|
66
|
+
}
|
|
67
|
+
return lines.join('\n');
|
|
68
|
+
}
|
|
69
|
+
function formatSamples(samples, language) {
|
|
70
|
+
if (samples.length === 0)
|
|
71
|
+
return language === 'en-US' ? '(no samples)' : '(无样本)';
|
|
72
|
+
return samples
|
|
73
|
+
.map((s, i) => language === 'en-US'
|
|
74
|
+
? `### Sample ${i + 1} (id: \`${s.id}\`)\n\`\`\`json\n${JSON.stringify(s.data, null, 2)}\n\`\`\``
|
|
75
|
+
: `### 样本 ${i + 1}(id: \`${s.id}\`)\n\`\`\`json\n${JSON.stringify(s.data, null, 2)}\n\`\`\``)
|
|
76
|
+
.join('\n\n');
|
|
77
|
+
}
|
|
78
|
+
function buildUserPrompt(args) {
|
|
79
|
+
const language = args.promptLanguage ?? shared_1.DEFAULT_PROMPT_LANGUAGE;
|
|
80
|
+
const description = args.description && args.description.trim().length > 0
|
|
81
|
+
? args.description.trim()
|
|
82
|
+
: language === 'en-US'
|
|
83
|
+
? 'The user did not provide a task description. Infer the task from the samples.'
|
|
84
|
+
: '用户未提供任务描述,请根据样本自行推断业务。';
|
|
85
|
+
if (language === 'en-US') {
|
|
86
|
+
return [
|
|
87
|
+
'## Task Description',
|
|
88
|
+
description,
|
|
89
|
+
'',
|
|
90
|
+
'## User Generation Guidance',
|
|
91
|
+
args.optimizationHint && args.optimizationHint.trim().length > 0 ? args.optimizationHint.trim() : '(none)',
|
|
92
|
+
'',
|
|
93
|
+
'## Optimization Goals',
|
|
94
|
+
formatGoals(args.goals, language),
|
|
95
|
+
'',
|
|
96
|
+
'## Field Whitelist',
|
|
97
|
+
formatFieldWhitelist(args.fieldWhitelist, language),
|
|
98
|
+
'',
|
|
99
|
+
'## Dataset Samples',
|
|
100
|
+
formatSamples(args.samples, language),
|
|
101
|
+
].join('\n');
|
|
102
|
+
}
|
|
103
|
+
return [
|
|
104
|
+
'## 任务描述',
|
|
105
|
+
description,
|
|
106
|
+
'',
|
|
107
|
+
'## 用户给的提示词生成指引',
|
|
108
|
+
args.optimizationHint && args.optimizationHint.trim().length > 0 ? args.optimizationHint.trim() : '(无)',
|
|
109
|
+
'',
|
|
110
|
+
'## 优化目标',
|
|
111
|
+
formatGoals(args.goals, language),
|
|
112
|
+
'',
|
|
113
|
+
'## 字段白名单',
|
|
114
|
+
formatFieldWhitelist(args.fieldWhitelist, language),
|
|
115
|
+
'',
|
|
116
|
+
'## 数据集采样',
|
|
117
|
+
formatSamples(args.samples, language),
|
|
118
|
+
].join('\n');
|
|
119
|
+
}
|
|
120
|
+
function asVariableType(value) {
|
|
121
|
+
if (value === 'image' || value === 'image_url' || value === 'image_base64' || value === 'number') {
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
return 'text';
|
|
125
|
+
}
|
|
126
|
+
function parseVariables(value, allowed) {
|
|
127
|
+
if (!Array.isArray(value))
|
|
128
|
+
return [];
|
|
129
|
+
const out = [];
|
|
130
|
+
const seen = new Set();
|
|
131
|
+
for (const item of value) {
|
|
132
|
+
if (!item || typeof item !== 'object')
|
|
133
|
+
continue;
|
|
134
|
+
const obj = item;
|
|
135
|
+
const rawName = typeof obj.name === 'string' ? obj.name.trim() : '';
|
|
136
|
+
if (!rawName || !allowed.has(rawName) || seen.has(rawName))
|
|
137
|
+
continue;
|
|
138
|
+
seen.add(rawName);
|
|
139
|
+
const entry = {
|
|
140
|
+
name: rawName,
|
|
141
|
+
type: asVariableType(obj.type),
|
|
142
|
+
required: typeof obj.required === 'boolean' ? obj.required : true,
|
|
143
|
+
};
|
|
144
|
+
if (typeof obj.description === 'string' && obj.description.trim().length > 0) {
|
|
145
|
+
entry.description = obj.description.trim().slice(0, 500);
|
|
146
|
+
}
|
|
147
|
+
if (typeof obj.datasetField === 'string' && obj.datasetField.trim().length > 0) {
|
|
148
|
+
entry.datasetField = obj.datasetField.trim().slice(0, 160);
|
|
149
|
+
}
|
|
150
|
+
out.push(entry);
|
|
151
|
+
}
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
154
|
+
function parseOutputSchema(value) {
|
|
155
|
+
if (!value || typeof value !== 'object')
|
|
156
|
+
return null;
|
|
157
|
+
const obj = value;
|
|
158
|
+
if (!Array.isArray(obj.fields))
|
|
159
|
+
return { fields: [] };
|
|
160
|
+
const fields = obj.fields
|
|
161
|
+
.filter((f) => Boolean(f) && typeof f === 'object')
|
|
162
|
+
.slice(0, 50)
|
|
163
|
+
.map((f) => {
|
|
164
|
+
const key = typeof f.key === 'string' ? f.key.trim().slice(0, 160) : '';
|
|
165
|
+
const rawValue = typeof f.value === 'string' ? f.value.slice(0, 2000) : '';
|
|
166
|
+
const isJudgment = typeof f.isJudgment === 'boolean' ? f.isJudgment : false;
|
|
167
|
+
return { key, value: rawValue, isJudgment };
|
|
168
|
+
})
|
|
169
|
+
.filter((f) => f.key.length > 0);
|
|
170
|
+
return { fields };
|
|
171
|
+
}
|
|
172
|
+
function parseInitialGenerateOutput(content, finishReason, allowedVariables) {
|
|
173
|
+
const truncated = (0, parse_1.isTruncated)(finishReason);
|
|
174
|
+
const jsonText = (0, parse_1.extractJsonObject)(content);
|
|
175
|
+
if (!jsonText) {
|
|
176
|
+
throw new FirstVersionParseError('first-version generate: missing JSON block', content);
|
|
177
|
+
}
|
|
178
|
+
const parsed = (0, parse_1.safeParseJson)(jsonText);
|
|
179
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
180
|
+
throw new FirstVersionParseError('first-version generate: JSON parse failed', content);
|
|
181
|
+
}
|
|
182
|
+
const obj = parsed;
|
|
183
|
+
const body = typeof obj.newPromptBody === 'string' ? obj.newPromptBody.trim() : '';
|
|
184
|
+
if (!body) {
|
|
185
|
+
throw new FirstVersionParseError('first-version generate: newPromptBody is empty or missing', content);
|
|
186
|
+
}
|
|
187
|
+
const allowedSet = new Set(allowedVariables);
|
|
188
|
+
// Validate that placeholder variables referenced in the body are all within the whitelist — base has no "already used" concept, so no removed check is needed
|
|
189
|
+
const usedInBody = (0, prompts_1.extractVariableNames)(body);
|
|
190
|
+
const disallowed = usedInBody.filter((v) => !allowedSet.has(v));
|
|
191
|
+
if (disallowed.length > 0) {
|
|
192
|
+
throw new FirstVersionParseError(`first-version generate: prompt uses disallowed variables ${JSON.stringify(disallowed)}`, content);
|
|
193
|
+
}
|
|
194
|
+
// When the whitelist is non-empty, force newPromptBody to use at least one placeholder (otherwise the business model cannot see samples at runtime)
|
|
195
|
+
if (allowedVariables.length > 0 && usedInBody.length === 0) {
|
|
196
|
+
throw new FirstVersionParseError('first-version generate: prompt must use at least one promptVariable placeholder', content);
|
|
197
|
+
}
|
|
198
|
+
const outputSchema = parseOutputSchema(obj.outputSchema);
|
|
199
|
+
if (!outputSchema || outputSchema.fields.length === 0) {
|
|
200
|
+
throw new FirstVersionParseError('first-version generate: outputSchema.fields must contain at least one field', content);
|
|
201
|
+
}
|
|
202
|
+
if (!outputSchema.fields.some((f) => f.isJudgment)) {
|
|
203
|
+
throw new FirstVersionParseError('first-version generate: outputSchema must include at least one isJudgment field', content);
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
newPromptBody: body,
|
|
207
|
+
variables: parseVariables(obj.variables, allowedSet),
|
|
208
|
+
outputSchema,
|
|
209
|
+
changeSummary: typeof obj.changeSummary === 'string' ? obj.changeSummary : '',
|
|
210
|
+
truncated,
|
|
211
|
+
rawContent: content,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
async function generateInitialVersion(args, deps) {
|
|
215
|
+
const promptLanguage = args.promptLanguage ?? shared_1.DEFAULT_PROMPT_LANGUAGE;
|
|
216
|
+
const messages = [
|
|
217
|
+
{ role: 'system', content: (0, loader_1.getSystemPrompts)(promptLanguage).generateInitial },
|
|
218
|
+
{ role: 'user', content: buildUserPrompt(args) },
|
|
219
|
+
];
|
|
220
|
+
const runResultCtx = (0, analyze_1.buildRunResultForCall)({
|
|
221
|
+
meta: args.runResultMeta,
|
|
222
|
+
runResultId: args.generateRunResultId,
|
|
223
|
+
source: 'optimization_generate',
|
|
224
|
+
roundIndex: 0,
|
|
225
|
+
messages,
|
|
226
|
+
inputVariables: {
|
|
227
|
+
optimizationId: args.optimizationId,
|
|
228
|
+
stepName: 'first_version_generate',
|
|
229
|
+
sampleCount: args.samples.length,
|
|
230
|
+
promptLanguage,
|
|
231
|
+
},
|
|
232
|
+
});
|
|
233
|
+
const result = await (0, llm_client_1.invokeLLM)({
|
|
234
|
+
model: args.analysisModel,
|
|
235
|
+
limiterKey: args.analysisLimiterKey,
|
|
236
|
+
messages,
|
|
237
|
+
params: {
|
|
238
|
+
temperature: args.strategyConfig.temperature,
|
|
239
|
+
maxTokens: args.strategyConfig.maxGenerationOutputTokens,
|
|
240
|
+
},
|
|
241
|
+
context: {
|
|
242
|
+
source: 'optimization_generate',
|
|
243
|
+
stepName: 'first_version_generate',
|
|
244
|
+
requestId: `optimization:${args.optimizationId}:first-version:generate`,
|
|
245
|
+
promptLanguage,
|
|
246
|
+
},
|
|
247
|
+
runResult: runResultCtx,
|
|
248
|
+
// Parse failure → let invokeLLM get null parsed and still write run_result(success); the function below will rethrow
|
|
249
|
+
parseResponse: (content) => {
|
|
250
|
+
try {
|
|
251
|
+
return parseInitialGenerateOutput(content, null, args.fieldWhitelist.promptVariables);
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
}, deps);
|
|
258
|
+
// Re-parse (parseResponse above swallowed the exception; call again here to get the concrete error and throw)
|
|
259
|
+
return parseInitialGenerateOutput(result.content, result.finishReason, args.fieldWhitelist.promptVariables);
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=generate-initial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-initial.js","sourceRoot":"","sources":["../../src/error-pattern-analysis/generate-initial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type InvokeLLMDependencies, type ModelInvocationConfig } from '@proofhound/llm-client';
|
|
2
|
+
import type { OptimizationGoal, FieldWhitelist, MetricSnapshot, PromptVersionRef, RoundHistoryEntry } from '../loop/types';
|
|
3
|
+
import { type AnalyzeFailuresResult, type OptimizationRunResultMeta } from './analyze';
|
|
4
|
+
import type { ErrorPatternAnalysisConfig } from './config.schema';
|
|
5
|
+
import { type GenerateOutput } from './parse';
|
|
6
|
+
import { type PromptLanguageDto } from '@proofhound/shared';
|
|
7
|
+
export interface GenerateNextVersionArgs {
|
|
8
|
+
optimizationId: string;
|
|
9
|
+
roundNumber: number;
|
|
10
|
+
analysisModel: ModelInvocationConfig;
|
|
11
|
+
analysisLimiterKey: string;
|
|
12
|
+
currentVersion: PromptVersionRef;
|
|
13
|
+
analysis: AnalyzeFailuresResult;
|
|
14
|
+
metrics: MetricSnapshot;
|
|
15
|
+
goals: OptimizationGoal[];
|
|
16
|
+
fieldWhitelist: FieldWhitelist;
|
|
17
|
+
optimizationHint?: string;
|
|
18
|
+
strategyConfig: ErrorPatternAnalysisConfig;
|
|
19
|
+
promptLanguage?: PromptLanguageDto;
|
|
20
|
+
roundHistory?: RoundHistoryEntry[];
|
|
21
|
+
toolboxSwitchHint?: {
|
|
22
|
+
recentlyUsedTips: string[];
|
|
23
|
+
allTipNames: readonly string[];
|
|
24
|
+
};
|
|
25
|
+
runResultMeta?: OptimizationRunResultMeta;
|
|
26
|
+
generateRunResultId?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface GenerateBudgetReport {
|
|
29
|
+
baselineInputTokens: number;
|
|
30
|
+
errorAnalysisBudgetTokens: number;
|
|
31
|
+
errorAnalysisTruncated: boolean;
|
|
32
|
+
originalErrorAnalysisChars: number;
|
|
33
|
+
evidenceBundleBudgetTokens: number;
|
|
34
|
+
evidenceBundleTruncated: boolean;
|
|
35
|
+
originalEvidenceBundleTokens: number;
|
|
36
|
+
roundHistoryEntryCount: number;
|
|
37
|
+
roundHistoryFittedLevel: 0 | 1 | 2 | 3;
|
|
38
|
+
roundHistoryBudgetTokens: number;
|
|
39
|
+
roundHistoryTruncated: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface GenerateNextVersionResult extends GenerateOutput {
|
|
42
|
+
variableValidation: {
|
|
43
|
+
ok: boolean;
|
|
44
|
+
disallowed: string[];
|
|
45
|
+
missing: string[];
|
|
46
|
+
detected: string[];
|
|
47
|
+
};
|
|
48
|
+
budget: GenerateBudgetReport;
|
|
49
|
+
effectiveOutputSchema: unknown;
|
|
50
|
+
outputFormatInstruction: string;
|
|
51
|
+
composedFullPrompt: string;
|
|
52
|
+
retries: number;
|
|
53
|
+
autoPatched: boolean;
|
|
54
|
+
patchedVariables: string[];
|
|
55
|
+
}
|
|
56
|
+
export declare function generateNextVersion(args: GenerateNextVersionArgs, deps: InvokeLLMDependencies): Promise<GenerateNextVersionResult>;
|
|
57
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/error-pattern-analysis/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,qBAAqB,EAG1B,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC3H,OAAO,EAAyB,KAAK,qBAAqB,EAAE,KAAK,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC9G,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAOL,KAAK,cAAc,EAEpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,qBAAqB,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,gBAAgB,CAAC;IACjC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,0BAA0B,CAAC;IAC3C,cAAc,CAAC,EAAE,iBAAiB,CAAC;IAEnC,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAInC,iBAAiB,CAAC,EAAE;QAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IAGnF,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,OAAO,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,OAAO,CAAC;IACjC,4BAA4B,EAAE,MAAM,CAAC;IAErC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,wBAAwB,EAAE,MAAM,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,kBAAkB,EAAE;QAClB,EAAE,EAAE,OAAO,CAAC;QACZ,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,MAAM,EAAE,oBAAoB,CAAC;IAG7B,qBAAqB,EAAE,OAAO,CAAC;IAG/B,uBAAuB,EAAE,MAAM,CAAC;IAEhC,kBAAkB,EAAE,MAAM,CAAC;IAE3B,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,OAAO,CAAC;IAErB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAiDD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,uBAAuB,EAC7B,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CA2RpC"}
|