@jeliq/app-sdk-llm 1.2.2 → 1.2.3
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/commonjs/controllers/genStructuredOutputs.js +139 -16
- package/lib/commonjs/controllers/genStructuredOutputs.js.map +1 -1
- package/lib/commonjs/templates/ShouldMustTemplate.js +21 -24
- package/lib/commonjs/templates/ShouldMustTemplate.js.map +1 -1
- package/lib/commonjs/types.js +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/createGetLLM.js +79 -8
- package/lib/commonjs/utils/createGetLLM.js.map +1 -1
- package/lib/module/controllers/genStructuredOutputs.js +141 -18
- package/lib/module/controllers/genStructuredOutputs.js.map +1 -1
- package/lib/module/templates/ShouldMustTemplate.js +21 -24
- package/lib/module/templates/ShouldMustTemplate.js.map +1 -1
- package/lib/module/types.js +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/createGetLLM.js +79 -8
- package/lib/module/utils/createGetLLM.js.map +1 -1
- package/lib/typescript/src/controllers/genStructuredOutputs.d.ts +3 -2
- package/lib/typescript/src/controllers/genStructuredOutputs.d.ts.map +1 -1
- package/lib/typescript/src/templates/ShouldMustTemplate.d.ts.map +1 -1
- package/lib/typescript/src/utils/createGetLLM.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -5,8 +5,65 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = genStructuredOutputs;
|
|
7
7
|
var _ai = require("ai");
|
|
8
|
+
var _zodToJsonSchema = require("zod-to-json-schema");
|
|
8
9
|
var _ShouldMustTemplate = _interopRequireDefault(require("../templates/ShouldMustTemplate"));
|
|
9
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const zodToJsonSchema = schema => (0, _zodToJsonSchema.zodToJsonSchema)(schema);
|
|
12
|
+
const tryParseJson = text => {
|
|
13
|
+
try {
|
|
14
|
+
return {
|
|
15
|
+
value: JSON.parse(text),
|
|
16
|
+
raw: text
|
|
17
|
+
};
|
|
18
|
+
} catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const extractJsonCandidate = text => {
|
|
23
|
+
const objectStart = text.indexOf("{");
|
|
24
|
+
const objectEnd = text.lastIndexOf("}");
|
|
25
|
+
if (objectStart !== -1 && objectEnd !== -1 && objectEnd > objectStart) {
|
|
26
|
+
return text.slice(objectStart, objectEnd + 1);
|
|
27
|
+
}
|
|
28
|
+
const arrayStart = text.indexOf("[");
|
|
29
|
+
const arrayEnd = text.lastIndexOf("]");
|
|
30
|
+
if (arrayStart !== -1 && arrayEnd !== -1 && arrayEnd > arrayStart) {
|
|
31
|
+
return text.slice(arrayStart, arrayEnd + 1);
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
};
|
|
35
|
+
const parseJsonFromText = text => {
|
|
36
|
+
var _tryParseJson;
|
|
37
|
+
const lines = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n");
|
|
38
|
+
|
|
39
|
+
// 1) 最初の ```json 行を探す(行頭にあることを要求)
|
|
40
|
+
let startLine = -1;
|
|
41
|
+
for (let i = 0; i < lines.length; i++) {
|
|
42
|
+
const line = lines[i];
|
|
43
|
+
// 例: ```json, ```JSON, ```json , ```json something
|
|
44
|
+
if (/^\s*```json\b/i.test(line)) {
|
|
45
|
+
startLine = i;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (startLine === -1) throw new Error("Failed to parse JSON from model output.");
|
|
50
|
+
|
|
51
|
+
// 2) 最後の 行頭 ``` 行を探す(最後に出てくるやつ)
|
|
52
|
+
let endLine = -1;
|
|
53
|
+
for (let i = lines.length - 1; i > startLine; i--) {
|
|
54
|
+
if (/^\s*```/.test(lines[i])) {
|
|
55
|
+
endLine = i;
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (endLine === -1) throw new Error("Failed to parse JSON from model output.");
|
|
60
|
+
const blockLines = lines.slice(startLine, endLine + 1);
|
|
61
|
+
const innerLines = lines.slice(startLine + 1, endLine);
|
|
62
|
+
return {
|
|
63
|
+
value: ((_tryParseJson = tryParseJson(innerLines.join("\n"))) === null || _tryParseJson === void 0 ? void 0 : _tryParseJson.value) ?? null,
|
|
64
|
+
raw: blockLines.join("\n")
|
|
65
|
+
};
|
|
66
|
+
};
|
|
10
67
|
async function genStructuredOutputs(context, taskName, template, args, options) {
|
|
11
68
|
if (!context) {
|
|
12
69
|
throw new Error("context is not set");
|
|
@@ -14,33 +71,99 @@ async function genStructuredOutputs(context, taskName, template, args, options)
|
|
|
14
71
|
if (!(context !== null && context !== void 0 && context.getLLM)) {
|
|
15
72
|
throw new Error("getLLM is not set");
|
|
16
73
|
}
|
|
17
|
-
const
|
|
74
|
+
const inputDefs = Object.keys(template.inputDef).map(key => ({
|
|
18
75
|
name: key,
|
|
19
76
|
type: template.inputDef[key].type,
|
|
20
77
|
description: template.inputDef[key].description
|
|
21
|
-
}))
|
|
78
|
+
}));
|
|
22
79
|
const promptArgs = Object.entries(args).reduce((acc, [key, value]) => {
|
|
23
80
|
acc[key] = value ?? "";
|
|
24
81
|
return acc;
|
|
25
82
|
}, {});
|
|
26
|
-
|
|
27
|
-
|
|
83
|
+
let outputSchemaJson = "";
|
|
84
|
+
try {
|
|
85
|
+
outputSchemaJson = JSON.stringify(zodToJsonSchema(template.outputSchema));
|
|
86
|
+
} catch (e) {
|
|
87
|
+
throw new Error(`Failed to convert output schema to JSON Schema: ${e instanceof Error ? e.message : String(e)}`);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Add outputFormat input definition
|
|
91
|
+
template.mustSection = template.mustSection || [];
|
|
92
|
+
template.mustSection.push({
|
|
93
|
+
no: template.mustSection.length + 1,
|
|
94
|
+
title: "outputFormat",
|
|
95
|
+
content: `You must format your output as a JSON value that adheres to a given "JSON Schema" instance with a markdown code block.
|
|
96
|
+
|
|
97
|
+
For example, the output format is:
|
|
98
|
+
\`\`\`json
|
|
99
|
+
{"properties": {"foo": {"description": "a list of test words", "type": "array", "items": {"type": "string"}}}, "required": ["foo"]}
|
|
100
|
+
\`\`\`
|
|
101
|
+
|
|
102
|
+
Then, you must return the following:
|
|
103
|
+
----- Begin of Output Example -----
|
|
104
|
+
\`\`\`json
|
|
105
|
+
{
|
|
106
|
+
"foo": ["bar", "baz"]
|
|
107
|
+
}
|
|
108
|
+
\`\`\`
|
|
109
|
+
----- End of Output Example -----
|
|
110
|
+
|
|
111
|
+
Do NOT ouput anything other than the JSON value with markdown code block.
|
|
112
|
+
Your output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
Here is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock:
|
|
116
|
+
|
|
117
|
+
\`\`\`json
|
|
118
|
+
${outputSchemaJson}
|
|
119
|
+
\`\`\``
|
|
120
|
+
});
|
|
121
|
+
const promptTemplate = await (0, _ShouldMustTemplate.default)(inputDefs, template.summary, template.shouldSection, template.mustSection, template.example, template.partialVars);
|
|
122
|
+
const model = context.getLLM(taskName, {
|
|
28
123
|
model: options === null || options === void 0 ? void 0 : options.model,
|
|
29
124
|
temperature: options === null || options === void 0 ? void 0 : options.temperature,
|
|
30
125
|
reasoningEffort: options === null || options === void 0 ? void 0 : options.reasoningEffort,
|
|
126
|
+
verbosityLevel: options === null || options === void 0 ? void 0 : options.verbosityLevel,
|
|
31
127
|
timeout: options === null || options === void 0 ? void 0 : options.timeout
|
|
32
128
|
});
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
messages
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
129
|
+
const maxParseRetries = (options === null || options === void 0 ? void 0 : options.maxRetries) ?? 3;
|
|
130
|
+
const buildCorrectionPrompt = errorMessage => ["The previous output could not be parsed or validated.", `Error: ${errorMessage}`, "Please return only a JSON value wrapped in a markdown ```json code block that matches the schema.", "Do not include any other text."].join("\n");
|
|
131
|
+
let lastErrorMessage = null;
|
|
132
|
+
for (let attempt = 0; attempt <= maxParseRetries; attempt++) {
|
|
133
|
+
const messages = await promptTemplate.formatMessages(promptArgs);
|
|
134
|
+
const {
|
|
135
|
+
text
|
|
136
|
+
} = await (0, _ai.generateText)({
|
|
137
|
+
model,
|
|
138
|
+
messages,
|
|
139
|
+
maxRetries: options !== null && options !== void 0 && options.maxRetries ? Math.max(0, options.maxRetries - attempt) : undefined
|
|
140
|
+
});
|
|
141
|
+
let parsed = null;
|
|
142
|
+
try {
|
|
143
|
+
parsed = parseJsonFromText(text);
|
|
144
|
+
} catch (error) {
|
|
145
|
+
lastErrorMessage = error instanceof Error ? error.message : String(error);
|
|
146
|
+
}
|
|
147
|
+
if (!lastErrorMessage && parsed) {
|
|
148
|
+
const parsedResult = template.outputSchema.safeParse(parsed.value);
|
|
149
|
+
if (parsedResult.success) {
|
|
150
|
+
return parsedResult.data;
|
|
151
|
+
}
|
|
152
|
+
lastErrorMessage = parsedResult.error.message;
|
|
153
|
+
}
|
|
154
|
+
if (attempt >= maxParseRetries) {
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
messages.push({
|
|
158
|
+
role: "assistant",
|
|
159
|
+
content: text
|
|
160
|
+
});
|
|
161
|
+
messages.push({
|
|
162
|
+
role: "user",
|
|
163
|
+
content: buildCorrectionPrompt(lastErrorMessage ?? "Unknown error")
|
|
164
|
+
});
|
|
165
|
+
lastErrorMessage = null;
|
|
166
|
+
}
|
|
167
|
+
throw new Error(`Structured output validation failed after ${maxParseRetries + 1} attempts: ${lastErrorMessage ?? "Unknown error"}`);
|
|
45
168
|
}
|
|
46
169
|
//# sourceMappingURL=genStructuredOutputs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ai","require","_ShouldMustTemplate","_interopRequireDefault","e","__esModule","default","genStructuredOutputs","context","taskName","template","args","options","
|
|
1
|
+
{"version":3,"names":["_ai","require","_zodToJsonSchema","_ShouldMustTemplate","_interopRequireDefault","e","__esModule","default","zodToJsonSchema","schema","zodToJsonSchemaRaw","tryParseJson","text","value","JSON","parse","raw","extractJsonCandidate","objectStart","indexOf","objectEnd","lastIndexOf","slice","arrayStart","arrayEnd","parseJsonFromText","_tryParseJson","lines","replace","split","startLine","i","length","line","test","Error","endLine","blockLines","innerLines","join","genStructuredOutputs","context","taskName","template","args","options","getLLM","inputDefs","Object","keys","inputDef","map","key","name","type","description","promptArgs","entries","reduce","acc","outputSchemaJson","stringify","outputSchema","message","String","mustSection","push","no","title","content","promptTemplate","createShouldMustTemplate","summary","shouldSection","example","partialVars","model","temperature","reasoningEffort","verbosityLevel","timeout","maxParseRetries","maxRetries","buildCorrectionPrompt","errorMessage","lastErrorMessage","attempt","messages","formatMessages","generateText","Math","max","undefined","parsed","error","parsedResult","safeParse","success","data","role"],"sourceRoot":"../../../src","sources":["controllers/genStructuredOutputs.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,7 +34,12 @@ async function resolvePartialVars(partialVars) {
|
|
|
34
34
|
return Object.fromEntries(entries);
|
|
35
35
|
}
|
|
36
36
|
function replaceTemplateVariables(template, values) {
|
|
37
|
-
return template.replace(getVariableRegex(), (_, variable) =>
|
|
37
|
+
return template.replace(getVariableRegex(), (_, variable) => {
|
|
38
|
+
if (Object.prototype.hasOwnProperty.call(values, variable)) {
|
|
39
|
+
return values[variable] ?? "";
|
|
40
|
+
}
|
|
41
|
+
return `[${variable}](#${variable})`;
|
|
42
|
+
});
|
|
38
43
|
}
|
|
39
44
|
async function createShouldMustTemplate(inputDef, summary, shouldSection, mustSection, example, partialVars) {
|
|
40
45
|
const shouldSectionPrompt = (() => {
|
|
@@ -62,49 +67,41 @@ async function createShouldMustTemplate(inputDef, summary, shouldSection, mustSe
|
|
|
62
67
|
const exampleSectionBody = example.map(elem => `## (c${elem.no}) ${elem.title}\n${elem.content}`).join("\n\n");
|
|
63
68
|
return `# Example\n\n${exampleSectionBody}`;
|
|
64
69
|
})();
|
|
65
|
-
const allSectionContent = [(shouldSection === null || shouldSection === void 0 ? void 0 : shouldSection.map(s => s.content || "").join(" ")) || "", (mustSection === null || mustSection === void 0 ? void 0 : mustSection.map(s => s.content || "").join(" ")) || "", (example === null || example === void 0 ? void 0 : example.map(s => s.content || "").join(" ")) || "", summary].join(" ");
|
|
66
|
-
const usedVariables = extractVariables(allSectionContent);
|
|
67
|
-
const definedInputVariables = inputDef.map(elem => elem.name);
|
|
68
|
-
const definedPartialVariables = Object.keys(partialVars || {});
|
|
69
|
-
const definedVariables = [...definedInputVariables, ...definedPartialVariables, "outputFormat"];
|
|
70
|
-
const undefinedVariables = usedVariables.filter(variable => !definedVariables.includes(variable));
|
|
71
|
-
if (undefinedVariables.length > 0) {
|
|
72
|
-
console.warn(`[ShouldMustTemplate] Warning: Found ${undefinedVariables.length} undefined variable(s) in template sections: [${undefinedVariables.join(", ")}]. These variables have been automatically added to the template.`);
|
|
73
|
-
}
|
|
74
|
-
const autoGeneratedVariablesSection = undefinedVariables.length > 0 ? `\n\n# Auto-Generated Variables\n\n${undefinedVariables.map(variable => `## ${variable}\n{${variable}}`).join("\n\n")}` : "";
|
|
75
70
|
const systemPrompt = [summary, shouldSectionPrompt, mustSectionPrompt, exampleSectionPrompt].filter(Boolean).join("\n\n");
|
|
76
|
-
const
|
|
77
|
-
const imageInputDefs = inputDef.filter(elem => elem.type === "imageDataURL");
|
|
78
|
-
const systemTemplate = [systemPrompt, "{outputFormat}"].filter(Boolean).join("\n\n").trim();
|
|
79
|
-
const userTextTemplate = [stringInputPromptTemplate, autoGeneratedVariablesSection].filter(Boolean).join("\n\n").trim();
|
|
71
|
+
const systemTemplate = [systemPrompt].filter(Boolean).join("\n\n").trim();
|
|
80
72
|
return {
|
|
81
73
|
async formatMessages(args) {
|
|
82
|
-
const resolvedPartialVars = await resolvePartialVars(partialVars || {});
|
|
83
74
|
const mergedArgs = Object.entries(args || {}).reduce((acc, [key, value]) => {
|
|
84
75
|
acc[key] = value ?? "";
|
|
85
76
|
return acc;
|
|
86
77
|
}, {});
|
|
78
|
+
const resolvedPartialVars = await resolvePartialVars(partialVars || {});
|
|
87
79
|
const templateValues = {
|
|
88
80
|
...mergedArgs,
|
|
89
81
|
...resolvedPartialVars
|
|
90
82
|
};
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
templateValues[variable] = "";
|
|
94
|
-
}
|
|
95
|
-
});
|
|
83
|
+
|
|
84
|
+
// Create system message content
|
|
96
85
|
const systemMessage = {
|
|
97
86
|
role: "system",
|
|
98
87
|
content: replaceTemplateVariables(systemTemplate, templateValues)
|
|
99
88
|
};
|
|
100
|
-
|
|
89
|
+
|
|
90
|
+
// Create user message content
|
|
101
91
|
const userContentParts = [];
|
|
102
|
-
|
|
92
|
+
const argsText = inputDef.filter(elem => elem.type === "string").map(elem => `# ${elem.name}${elem.description ? `\n${elem.description}` : ""}
|
|
93
|
+
${templateValues === null || templateValues === void 0 ? void 0 : templateValues[elem.name]}
|
|
94
|
+
`).join("\n\n");
|
|
95
|
+
const partialVarsText = Object.entries(resolvedPartialVars).map(([key, value]) => `# ${key}
|
|
96
|
+
${value}
|
|
97
|
+
`).join("\n\n");
|
|
98
|
+
if (argsText.trim().length > 0 || partialVarsText.trim().length > 0) {
|
|
103
99
|
userContentParts.push({
|
|
104
100
|
type: "text",
|
|
105
|
-
text:
|
|
101
|
+
text: argsText + "\n\n" + partialVarsText
|
|
106
102
|
});
|
|
107
103
|
}
|
|
104
|
+
const imageInputDefs = inputDef.filter(elem => elem.type === "imageDataURL");
|
|
108
105
|
imageInputDefs.forEach(elem => {
|
|
109
106
|
const imageValue = templateValues[elem.name];
|
|
110
107
|
if (imageValue && imageValue.trim().length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getVariableRegex","RegExp","extractVariables","content","variableRegex","variables","match","exec","includes","push","resolvePartialVars","partialVars","entries","Promise","all","Object","map","key","value","result","fromEntries","replaceTemplateVariables","template","values","replace","_","variable","createShouldMustTemplate","inputDef","summary","shouldSection","mustSection","example","shouldSectionPrompt","length","shouldSectionCount","shouldSectionHeader","shouldSectionBody","elem","baseBody","no","title","join","mustSectionPrompt","mustSectionCount","mustSectionHeader","mustSectionBody","exampleSectionPrompt","exampleSectionBody","
|
|
1
|
+
{"version":3,"names":["getVariableRegex","RegExp","extractVariables","content","variableRegex","variables","match","exec","includes","push","resolvePartialVars","partialVars","entries","Promise","all","Object","map","key","value","result","fromEntries","replaceTemplateVariables","template","values","replace","_","variable","prototype","hasOwnProperty","call","createShouldMustTemplate","inputDef","summary","shouldSection","mustSection","example","shouldSectionPrompt","length","shouldSectionCount","shouldSectionHeader","shouldSectionBody","elem","baseBody","no","title","join","mustSectionPrompt","mustSectionCount","mustSectionHeader","mustSectionBody","exampleSectionPrompt","exampleSectionBody","systemPrompt","filter","Boolean","systemTemplate","trim","formatMessages","args","mergedArgs","reduce","acc","resolvedPartialVars","templateValues","systemMessage","role","userContentParts","argsText","type","name","description","partialVarsText","text","imageInputDefs","forEach","imageValue","image","userMessage"],"sourceRoot":"../../../src","sources":["templates/ShouldMustTemplate.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ModelNameAlias","exports","model","vendor","type"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AA4DO,MAAMA,cAA0D,GAAAC,OAAA,CAAAD,cAAA,GAAG;EACtE;EACA,gBAAgB,EAAE;IACd,OAAO,EAAE,yBAAyB;IAClC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,eAAe,EAAE;IACb,OAAO,EAAE,wBAAwB;IACjC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EAED;EACA,QAAQ,EAAE;IACNE,KAAK,EAAE,QAAQ;IACfC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,aAAa,EAAE;IACXF,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,cAAc,EAAE;IACZF,KAAK,EAAE,
|
|
1
|
+
{"version":3,"names":["ModelNameAlias","exports","model","vendor","type"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AA4DO,MAAMA,cAA0D,GAAAC,OAAA,CAAAD,cAAA,GAAG;EACtE;EACA,gBAAgB,EAAE;IACd,OAAO,EAAE,yBAAyB;IAClC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,eAAe,EAAE;IACb,OAAO,EAAE,wBAAwB;IACjC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EAED;EACA,QAAQ,EAAE;IACNE,KAAK,EAAE,QAAQ;IACfC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,aAAa,EAAE;IACXF,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,cAAc,EAAE;IACZF,KAAK,EAAE,cAAc;IACrBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,SAAS,EAAE;IACPF,KAAK,EAAE,SAAS;IAChBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,SAAS,EAAE;IACPF,KAAK,EAAE,SAAS;IAChBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,cAAc,EAAE;IACZF,KAAK,EAAE,qBAAqB;IAC5BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,cAAc,EAAE;IACZF,KAAK,EAAE,sBAAsB;IAC7BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,gBAAgB,EAAE;IACdF,KAAK,EAAE,wBAAwB;IAC/BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,kBAAkB,EAAE;IAChBF,KAAK,EAAE,kBAAkB;IACzBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,uBAAuB,EAAE;IACrBF,KAAK,EAAE,uBAAuB;IAC9BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,gBAAgB,EAAE;IACdF,KAAK,EAAE,gBAAgB;IACvBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B;AACJ,CAAU","ignoreList":[]}
|
|
@@ -5,19 +5,89 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = createGetLLM;
|
|
7
7
|
var _ai = require("ai");
|
|
8
|
+
var _types = require("../types");
|
|
8
9
|
var _openai = require("@ai-sdk/openai");
|
|
9
10
|
var _openaiCompatible = require("@ai-sdk/openai-compatible");
|
|
10
11
|
var _anthropic = require("@ai-sdk/anthropic");
|
|
11
12
|
var _google = require("@ai-sdk/google");
|
|
12
13
|
var _azure = require("@ai-sdk/azure");
|
|
14
|
+
const REVPROXY_JSON_INSTRUCTION = "Return a valid JSON object only. Do not include any extra text.";
|
|
15
|
+
const isRevproxyEnabled = () => Boolean(process.env.JELIQ_LLM_REVPROXY_KEY && process.env.JELIQ_LLM_REVPROXY_CONTAINER_ID && process.env.JELIQ_LLM_REVPROXY_ENDPOINT);
|
|
16
|
+
const addJsonInstructionToPrompt = prompt => {
|
|
17
|
+
if (!Array.isArray(prompt) || prompt.length === 0) {
|
|
18
|
+
return prompt;
|
|
19
|
+
}
|
|
20
|
+
const hasInstruction = prompt.some(message => (message === null || message === void 0 ? void 0 : message.role) === "system" && typeof message.content === "string" && message.content.includes(REVPROXY_JSON_INSTRUCTION));
|
|
21
|
+
if (hasInstruction) {
|
|
22
|
+
return prompt;
|
|
23
|
+
}
|
|
24
|
+
const instructionMessage = {
|
|
25
|
+
role: "system",
|
|
26
|
+
content: REVPROXY_JSON_INSTRUCTION
|
|
27
|
+
};
|
|
28
|
+
const insertIndex = prompt.findIndex(message => (message === null || message === void 0 ? void 0 : message.role) !== "system");
|
|
29
|
+
if (insertIndex === -1) {
|
|
30
|
+
return [...prompt, instructionMessage];
|
|
31
|
+
}
|
|
32
|
+
return [...prompt.slice(0, insertIndex), instructionMessage, ...prompt.slice(insertIndex)];
|
|
33
|
+
};
|
|
34
|
+
const normalizeJsonContent = content => {
|
|
35
|
+
if (!Array.isArray(content)) {
|
|
36
|
+
return content;
|
|
37
|
+
}
|
|
38
|
+
let text = "";
|
|
39
|
+
for (const part of content) {
|
|
40
|
+
if ((part === null || part === void 0 ? void 0 : part.type) === "text" && typeof part.text === "string") {
|
|
41
|
+
text += part.text;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (!text) {
|
|
45
|
+
return content;
|
|
46
|
+
}
|
|
47
|
+
let parsed;
|
|
48
|
+
try {
|
|
49
|
+
parsed = JSON.parse(text);
|
|
50
|
+
} catch {
|
|
51
|
+
return content;
|
|
52
|
+
}
|
|
53
|
+
const normalizedText = JSON.stringify(parsed);
|
|
54
|
+
let inserted = false;
|
|
55
|
+
return content.flatMap(part => {
|
|
56
|
+
if ((part === null || part === void 0 ? void 0 : part.type) !== "text" || typeof part.text !== "string") {
|
|
57
|
+
return [part];
|
|
58
|
+
}
|
|
59
|
+
if (inserted) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
inserted = true;
|
|
63
|
+
return [{
|
|
64
|
+
...part,
|
|
65
|
+
text: normalizedText
|
|
66
|
+
}];
|
|
67
|
+
});
|
|
68
|
+
};
|
|
13
69
|
function createProviderModel(vendor, modelName) {
|
|
14
|
-
|
|
70
|
+
var _ModelNameAlias;
|
|
71
|
+
const actualModelName = (_types.ModelNameAlias === null || _types.ModelNameAlias === void 0 || (_ModelNameAlias = _types.ModelNameAlias[modelName]) === null || _ModelNameAlias === void 0 ? void 0 : _ModelNameAlias.model) || modelName;
|
|
72
|
+
if (isRevproxyEnabled()) {
|
|
15
73
|
const provider = (0, _openaiCompatible.createOpenAICompatible)({
|
|
16
74
|
name: "jeliq-llm-revproxy",
|
|
17
|
-
apiKey: process.env.JELIQ_LLM_REVPROXY_KEY,
|
|
18
|
-
baseURL: process.env.JELIQ_LLM_REVPROXY_ENDPOINT
|
|
75
|
+
apiKey: process.env.JELIQ_LLM_REVPROXY_KEY || "",
|
|
76
|
+
baseURL: process.env.JELIQ_LLM_REVPROXY_ENDPOINT || "",
|
|
77
|
+
headers: {
|
|
78
|
+
'X-Container-ID': process.env.JELIQ_LLM_REVPROXY_CONTAINER_ID || ""
|
|
79
|
+
}
|
|
80
|
+
// supportsStructuredOutputs: true,
|
|
81
|
+
/*
|
|
82
|
+
fetch: async (input, init) => {
|
|
83
|
+
if (init?.body) {
|
|
84
|
+
console.log("REQUEST BODY:", init.body.toString());
|
|
85
|
+
}
|
|
86
|
+
return fetch(input, init);
|
|
87
|
+
},
|
|
88
|
+
*/
|
|
19
89
|
});
|
|
20
|
-
return provider(
|
|
90
|
+
return provider(actualModelName);
|
|
21
91
|
}
|
|
22
92
|
if (vendor.type === "anthropic") {
|
|
23
93
|
const provider = vendor.apiKey || vendor.endpoint ? (0, _anthropic.createAnthropic)({
|
|
@@ -26,7 +96,7 @@ function createProviderModel(vendor, modelName) {
|
|
|
26
96
|
baseURL: vendor.endpoint
|
|
27
97
|
} : {})
|
|
28
98
|
}) : _anthropic.anthropic;
|
|
29
|
-
return provider(
|
|
99
|
+
return provider(actualModelName);
|
|
30
100
|
}
|
|
31
101
|
if (vendor.type === "google") {
|
|
32
102
|
const provider = vendor.apiKey || vendor.endpoint ? (0, _google.createGoogleGenerativeAI)({
|
|
@@ -35,7 +105,7 @@ function createProviderModel(vendor, modelName) {
|
|
|
35
105
|
baseURL: vendor.endpoint
|
|
36
106
|
} : {})
|
|
37
107
|
}) : _google.google;
|
|
38
|
-
return provider(
|
|
108
|
+
return provider(actualModelName);
|
|
39
109
|
}
|
|
40
110
|
if (vendor.type === "azure") {
|
|
41
111
|
const provider = vendor.apiKey || vendor.instanceName ? (0, _azure.createAzure)({
|
|
@@ -46,9 +116,9 @@ function createProviderModel(vendor, modelName) {
|
|
|
46
116
|
apiVersion: vendor.apiVersion,
|
|
47
117
|
useDeploymentBasedUrls: true
|
|
48
118
|
}) : _azure.azure;
|
|
49
|
-
return provider(vendor.deploymentName ||
|
|
119
|
+
return provider(vendor.deploymentName || actualModelName);
|
|
50
120
|
}
|
|
51
|
-
return (0, _openai.openai)(
|
|
121
|
+
return (0, _openai.openai)(actualModelName);
|
|
52
122
|
}
|
|
53
123
|
function createGetLLM(tasksModelsMap, defaultModel) {
|
|
54
124
|
function getModelAndTemperature(taskName) {
|
|
@@ -74,6 +144,7 @@ function createGetLLM(tasksModelsMap, defaultModel) {
|
|
|
74
144
|
const actualReasoningEffort = (options === null || options === void 0 ? void 0 : options.reasoningEffort) !== undefined ? options.reasoningEffort : reasoningEffort;
|
|
75
145
|
const actualVerbosityLevel = (options === null || options === void 0 ? void 0 : options.verbosityLevel) !== undefined ? options.verbosityLevel : verbosityLevel;
|
|
76
146
|
const actualTimeout = (options === null || options === void 0 ? void 0 : options.timeout) !== undefined ? options.timeout : timeout !== undefined ? timeout : undefined;
|
|
147
|
+
const usesRevproxy = isRevproxyEnabled();
|
|
77
148
|
const model = createProviderModel(resolvedVendor, actualModelName);
|
|
78
149
|
|
|
79
150
|
// 直前に CallOptions を変形するミドルウェア
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ai","require","_openai","_openaiCompatible","_anthropic","_google","_azure","
|
|
1
|
+
{"version":3,"names":["_ai","require","_types","_openai","_openaiCompatible","_anthropic","_google","_azure","REVPROXY_JSON_INSTRUCTION","isRevproxyEnabled","Boolean","process","env","JELIQ_LLM_REVPROXY_KEY","JELIQ_LLM_REVPROXY_CONTAINER_ID","JELIQ_LLM_REVPROXY_ENDPOINT","addJsonInstructionToPrompt","prompt","Array","isArray","length","hasInstruction","some","message","role","content","includes","instructionMessage","insertIndex","findIndex","slice","normalizeJsonContent","text","part","type","parsed","JSON","parse","normalizedText","stringify","inserted","flatMap","createProviderModel","vendor","modelName","_ModelNameAlias","actualModelName","ModelNameAlias","model","provider","createOpenAICompatible","name","apiKey","baseURL","headers","endpoint","createAnthropic","anthropic","createGoogleGenerativeAI","google","instanceName","createAzure","resourceName","apiVersion","useDeploymentBasedUrls","azure","deploymentName","openai","createGetLLM","tasksModelsMap","defaultModel","getModelAndTemperature","taskName","Error","reasoningEffort","undefined","verbosityLevel","temperature","timeout","getLLM","options","_loggingInfo","resolvedVendor","actualTemperature","actualReasoningEffort","actualVerbosityLevel","actualTimeout","usesRevproxy","mutateCallOptionsMiddleware","specificationVersion","transformParams","params","_next$providerOptions","next","Math","min","max","providerOptions","textVerbosity","wrapLanguageModel","middleware"],"sourceRoot":"../../../src","sources":["utils/createGetLLM.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,62 @@
|
|
|
1
|
-
import { generateText
|
|
2
|
-
import
|
|
1
|
+
import { generateText } from "ai";
|
|
2
|
+
import { zodToJsonSchema as zodToJsonSchemaRaw } from "zod-to-json-schema";
|
|
3
|
+
import createShouldMustTemplate from "../templates/ShouldMustTemplate";
|
|
4
|
+
const zodToJsonSchema = schema => zodToJsonSchemaRaw(schema);
|
|
5
|
+
const tryParseJson = text => {
|
|
6
|
+
try {
|
|
7
|
+
return {
|
|
8
|
+
value: JSON.parse(text),
|
|
9
|
+
raw: text
|
|
10
|
+
};
|
|
11
|
+
} catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const extractJsonCandidate = text => {
|
|
16
|
+
const objectStart = text.indexOf("{");
|
|
17
|
+
const objectEnd = text.lastIndexOf("}");
|
|
18
|
+
if (objectStart !== -1 && objectEnd !== -1 && objectEnd > objectStart) {
|
|
19
|
+
return text.slice(objectStart, objectEnd + 1);
|
|
20
|
+
}
|
|
21
|
+
const arrayStart = text.indexOf("[");
|
|
22
|
+
const arrayEnd = text.lastIndexOf("]");
|
|
23
|
+
if (arrayStart !== -1 && arrayEnd !== -1 && arrayEnd > arrayStart) {
|
|
24
|
+
return text.slice(arrayStart, arrayEnd + 1);
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
};
|
|
28
|
+
const parseJsonFromText = text => {
|
|
29
|
+
var _tryParseJson;
|
|
30
|
+
const lines = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n");
|
|
31
|
+
|
|
32
|
+
// 1) 最初の ```json 行を探す(行頭にあることを要求)
|
|
33
|
+
let startLine = -1;
|
|
34
|
+
for (let i = 0; i < lines.length; i++) {
|
|
35
|
+
const line = lines[i];
|
|
36
|
+
// 例: ```json, ```JSON, ```json , ```json something
|
|
37
|
+
if (/^\s*```json\b/i.test(line)) {
|
|
38
|
+
startLine = i;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (startLine === -1) throw new Error("Failed to parse JSON from model output.");
|
|
43
|
+
|
|
44
|
+
// 2) 最後の 行頭 ``` 行を探す(最後に出てくるやつ)
|
|
45
|
+
let endLine = -1;
|
|
46
|
+
for (let i = lines.length - 1; i > startLine; i--) {
|
|
47
|
+
if (/^\s*```/.test(lines[i])) {
|
|
48
|
+
endLine = i;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (endLine === -1) throw new Error("Failed to parse JSON from model output.");
|
|
53
|
+
const blockLines = lines.slice(startLine, endLine + 1);
|
|
54
|
+
const innerLines = lines.slice(startLine + 1, endLine);
|
|
55
|
+
return {
|
|
56
|
+
value: ((_tryParseJson = tryParseJson(innerLines.join("\n"))) === null || _tryParseJson === void 0 ? void 0 : _tryParseJson.value) ?? null,
|
|
57
|
+
raw: blockLines.join("\n")
|
|
58
|
+
};
|
|
59
|
+
};
|
|
3
60
|
export default async function genStructuredOutputs(context, taskName, template, args, options) {
|
|
4
61
|
if (!context) {
|
|
5
62
|
throw new Error("context is not set");
|
|
@@ -7,33 +64,99 @@ export default async function genStructuredOutputs(context, taskName, template,
|
|
|
7
64
|
if (!(context !== null && context !== void 0 && context.getLLM)) {
|
|
8
65
|
throw new Error("getLLM is not set");
|
|
9
66
|
}
|
|
10
|
-
const
|
|
67
|
+
const inputDefs = Object.keys(template.inputDef).map(key => ({
|
|
11
68
|
name: key,
|
|
12
69
|
type: template.inputDef[key].type,
|
|
13
70
|
description: template.inputDef[key].description
|
|
14
|
-
}))
|
|
71
|
+
}));
|
|
15
72
|
const promptArgs = Object.entries(args).reduce((acc, [key, value]) => {
|
|
16
73
|
acc[key] = value ?? "";
|
|
17
74
|
return acc;
|
|
18
75
|
}, {});
|
|
19
|
-
|
|
20
|
-
|
|
76
|
+
let outputSchemaJson = "";
|
|
77
|
+
try {
|
|
78
|
+
outputSchemaJson = JSON.stringify(zodToJsonSchema(template.outputSchema));
|
|
79
|
+
} catch (e) {
|
|
80
|
+
throw new Error(`Failed to convert output schema to JSON Schema: ${e instanceof Error ? e.message : String(e)}`);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Add outputFormat input definition
|
|
84
|
+
template.mustSection = template.mustSection || [];
|
|
85
|
+
template.mustSection.push({
|
|
86
|
+
no: template.mustSection.length + 1,
|
|
87
|
+
title: "outputFormat",
|
|
88
|
+
content: `You must format your output as a JSON value that adheres to a given "JSON Schema" instance with a markdown code block.
|
|
89
|
+
|
|
90
|
+
For example, the output format is:
|
|
91
|
+
\`\`\`json
|
|
92
|
+
{"properties": {"foo": {"description": "a list of test words", "type": "array", "items": {"type": "string"}}}, "required": ["foo"]}
|
|
93
|
+
\`\`\`
|
|
94
|
+
|
|
95
|
+
Then, you must return the following:
|
|
96
|
+
----- Begin of Output Example -----
|
|
97
|
+
\`\`\`json
|
|
98
|
+
{
|
|
99
|
+
"foo": ["bar", "baz"]
|
|
100
|
+
}
|
|
101
|
+
\`\`\`
|
|
102
|
+
----- End of Output Example -----
|
|
103
|
+
|
|
104
|
+
Do NOT ouput anything other than the JSON value with markdown code block.
|
|
105
|
+
Your output will be parsed and type-checked according to the provided schema instance, so make sure all fields in your output match the schema exactly and there are no trailing commas!
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
Here is the JSON Schema instance your output must adhere to. Include the enclosing markdown codeblock:
|
|
109
|
+
|
|
110
|
+
\`\`\`json
|
|
111
|
+
${outputSchemaJson}
|
|
112
|
+
\`\`\``
|
|
113
|
+
});
|
|
114
|
+
const promptTemplate = await createShouldMustTemplate(inputDefs, template.summary, template.shouldSection, template.mustSection, template.example, template.partialVars);
|
|
115
|
+
const model = context.getLLM(taskName, {
|
|
21
116
|
model: options === null || options === void 0 ? void 0 : options.model,
|
|
22
117
|
temperature: options === null || options === void 0 ? void 0 : options.temperature,
|
|
23
118
|
reasoningEffort: options === null || options === void 0 ? void 0 : options.reasoningEffort,
|
|
119
|
+
verbosityLevel: options === null || options === void 0 ? void 0 : options.verbosityLevel,
|
|
24
120
|
timeout: options === null || options === void 0 ? void 0 : options.timeout
|
|
25
121
|
});
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
messages
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
122
|
+
const maxParseRetries = (options === null || options === void 0 ? void 0 : options.maxRetries) ?? 3;
|
|
123
|
+
const buildCorrectionPrompt = errorMessage => ["The previous output could not be parsed or validated.", `Error: ${errorMessage}`, "Please return only a JSON value wrapped in a markdown ```json code block that matches the schema.", "Do not include any other text."].join("\n");
|
|
124
|
+
let lastErrorMessage = null;
|
|
125
|
+
for (let attempt = 0; attempt <= maxParseRetries; attempt++) {
|
|
126
|
+
const messages = await promptTemplate.formatMessages(promptArgs);
|
|
127
|
+
const {
|
|
128
|
+
text
|
|
129
|
+
} = await generateText({
|
|
130
|
+
model,
|
|
131
|
+
messages,
|
|
132
|
+
maxRetries: options !== null && options !== void 0 && options.maxRetries ? Math.max(0, options.maxRetries - attempt) : undefined
|
|
133
|
+
});
|
|
134
|
+
let parsed = null;
|
|
135
|
+
try {
|
|
136
|
+
parsed = parseJsonFromText(text);
|
|
137
|
+
} catch (error) {
|
|
138
|
+
lastErrorMessage = error instanceof Error ? error.message : String(error);
|
|
139
|
+
}
|
|
140
|
+
if (!lastErrorMessage && parsed) {
|
|
141
|
+
const parsedResult = template.outputSchema.safeParse(parsed.value);
|
|
142
|
+
if (parsedResult.success) {
|
|
143
|
+
return parsedResult.data;
|
|
144
|
+
}
|
|
145
|
+
lastErrorMessage = parsedResult.error.message;
|
|
146
|
+
}
|
|
147
|
+
if (attempt >= maxParseRetries) {
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
messages.push({
|
|
151
|
+
role: "assistant",
|
|
152
|
+
content: text
|
|
153
|
+
});
|
|
154
|
+
messages.push({
|
|
155
|
+
role: "user",
|
|
156
|
+
content: buildCorrectionPrompt(lastErrorMessage ?? "Unknown error")
|
|
157
|
+
});
|
|
158
|
+
lastErrorMessage = null;
|
|
159
|
+
}
|
|
160
|
+
throw new Error(`Structured output validation failed after ${maxParseRetries + 1} attempts: ${lastErrorMessage ?? "Unknown error"}`);
|
|
38
161
|
}
|
|
39
162
|
//# sourceMappingURL=genStructuredOutputs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["generateText","
|
|
1
|
+
{"version":3,"names":["generateText","zodToJsonSchema","zodToJsonSchemaRaw","createShouldMustTemplate","schema","tryParseJson","text","value","JSON","parse","raw","extractJsonCandidate","objectStart","indexOf","objectEnd","lastIndexOf","slice","arrayStart","arrayEnd","parseJsonFromText","_tryParseJson","lines","replace","split","startLine","i","length","line","test","Error","endLine","blockLines","innerLines","join","genStructuredOutputs","context","taskName","template","args","options","getLLM","inputDefs","Object","keys","inputDef","map","key","name","type","description","promptArgs","entries","reduce","acc","outputSchemaJson","stringify","outputSchema","e","message","String","mustSection","push","no","title","content","promptTemplate","summary","shouldSection","example","partialVars","model","temperature","reasoningEffort","verbosityLevel","timeout","maxParseRetries","maxRetries","buildCorrectionPrompt","errorMessage","lastErrorMessage","attempt","messages","formatMessages","Math","max","undefined","parsed","error","parsedResult","safeParse","success","data","role"],"sourceRoot":"../../../src","sources":["controllers/genStructuredOutputs.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,7 +28,12 @@ async function resolvePartialVars(partialVars) {
|
|
|
28
28
|
return Object.fromEntries(entries);
|
|
29
29
|
}
|
|
30
30
|
function replaceTemplateVariables(template, values) {
|
|
31
|
-
return template.replace(getVariableRegex(), (_, variable) =>
|
|
31
|
+
return template.replace(getVariableRegex(), (_, variable) => {
|
|
32
|
+
if (Object.prototype.hasOwnProperty.call(values, variable)) {
|
|
33
|
+
return values[variable] ?? "";
|
|
34
|
+
}
|
|
35
|
+
return `[${variable}](#${variable})`;
|
|
36
|
+
});
|
|
32
37
|
}
|
|
33
38
|
export default async function createShouldMustTemplate(inputDef, summary, shouldSection, mustSection, example, partialVars) {
|
|
34
39
|
const shouldSectionPrompt = (() => {
|
|
@@ -56,49 +61,41 @@ export default async function createShouldMustTemplate(inputDef, summary, should
|
|
|
56
61
|
const exampleSectionBody = example.map(elem => `## (c${elem.no}) ${elem.title}\n${elem.content}`).join("\n\n");
|
|
57
62
|
return `# Example\n\n${exampleSectionBody}`;
|
|
58
63
|
})();
|
|
59
|
-
const allSectionContent = [(shouldSection === null || shouldSection === void 0 ? void 0 : shouldSection.map(s => s.content || "").join(" ")) || "", (mustSection === null || mustSection === void 0 ? void 0 : mustSection.map(s => s.content || "").join(" ")) || "", (example === null || example === void 0 ? void 0 : example.map(s => s.content || "").join(" ")) || "", summary].join(" ");
|
|
60
|
-
const usedVariables = extractVariables(allSectionContent);
|
|
61
|
-
const definedInputVariables = inputDef.map(elem => elem.name);
|
|
62
|
-
const definedPartialVariables = Object.keys(partialVars || {});
|
|
63
|
-
const definedVariables = [...definedInputVariables, ...definedPartialVariables, "outputFormat"];
|
|
64
|
-
const undefinedVariables = usedVariables.filter(variable => !definedVariables.includes(variable));
|
|
65
|
-
if (undefinedVariables.length > 0) {
|
|
66
|
-
console.warn(`[ShouldMustTemplate] Warning: Found ${undefinedVariables.length} undefined variable(s) in template sections: [${undefinedVariables.join(", ")}]. These variables have been automatically added to the template.`);
|
|
67
|
-
}
|
|
68
|
-
const autoGeneratedVariablesSection = undefinedVariables.length > 0 ? `\n\n# Auto-Generated Variables\n\n${undefinedVariables.map(variable => `## ${variable}\n{${variable}}`).join("\n\n")}` : "";
|
|
69
64
|
const systemPrompt = [summary, shouldSectionPrompt, mustSectionPrompt, exampleSectionPrompt].filter(Boolean).join("\n\n");
|
|
70
|
-
const
|
|
71
|
-
const imageInputDefs = inputDef.filter(elem => elem.type === "imageDataURL");
|
|
72
|
-
const systemTemplate = [systemPrompt, "{outputFormat}"].filter(Boolean).join("\n\n").trim();
|
|
73
|
-
const userTextTemplate = [stringInputPromptTemplate, autoGeneratedVariablesSection].filter(Boolean).join("\n\n").trim();
|
|
65
|
+
const systemTemplate = [systemPrompt].filter(Boolean).join("\n\n").trim();
|
|
74
66
|
return {
|
|
75
67
|
async formatMessages(args) {
|
|
76
|
-
const resolvedPartialVars = await resolvePartialVars(partialVars || {});
|
|
77
68
|
const mergedArgs = Object.entries(args || {}).reduce((acc, [key, value]) => {
|
|
78
69
|
acc[key] = value ?? "";
|
|
79
70
|
return acc;
|
|
80
71
|
}, {});
|
|
72
|
+
const resolvedPartialVars = await resolvePartialVars(partialVars || {});
|
|
81
73
|
const templateValues = {
|
|
82
74
|
...mergedArgs,
|
|
83
75
|
...resolvedPartialVars
|
|
84
76
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
templateValues[variable] = "";
|
|
88
|
-
}
|
|
89
|
-
});
|
|
77
|
+
|
|
78
|
+
// Create system message content
|
|
90
79
|
const systemMessage = {
|
|
91
80
|
role: "system",
|
|
92
81
|
content: replaceTemplateVariables(systemTemplate, templateValues)
|
|
93
82
|
};
|
|
94
|
-
|
|
83
|
+
|
|
84
|
+
// Create user message content
|
|
95
85
|
const userContentParts = [];
|
|
96
|
-
|
|
86
|
+
const argsText = inputDef.filter(elem => elem.type === "string").map(elem => `# ${elem.name}${elem.description ? `\n${elem.description}` : ""}
|
|
87
|
+
${templateValues === null || templateValues === void 0 ? void 0 : templateValues[elem.name]}
|
|
88
|
+
`).join("\n\n");
|
|
89
|
+
const partialVarsText = Object.entries(resolvedPartialVars).map(([key, value]) => `# ${key}
|
|
90
|
+
${value}
|
|
91
|
+
`).join("\n\n");
|
|
92
|
+
if (argsText.trim().length > 0 || partialVarsText.trim().length > 0) {
|
|
97
93
|
userContentParts.push({
|
|
98
94
|
type: "text",
|
|
99
|
-
text:
|
|
95
|
+
text: argsText + "\n\n" + partialVarsText
|
|
100
96
|
});
|
|
101
97
|
}
|
|
98
|
+
const imageInputDefs = inputDef.filter(elem => elem.type === "imageDataURL");
|
|
102
99
|
imageInputDefs.forEach(elem => {
|
|
103
100
|
const imageValue = templateValues[elem.name];
|
|
104
101
|
if (imageValue && imageValue.trim().length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getVariableRegex","RegExp","extractVariables","content","variableRegex","variables","match","exec","includes","push","resolvePartialVars","partialVars","entries","Promise","all","Object","map","key","value","result","fromEntries","replaceTemplateVariables","template","values","replace","_","variable","createShouldMustTemplate","inputDef","summary","shouldSection","mustSection","example","shouldSectionPrompt","length","shouldSectionCount","shouldSectionHeader","shouldSectionBody","elem","baseBody","no","title","join","mustSectionPrompt","mustSectionCount","mustSectionHeader","mustSectionBody","exampleSectionPrompt","exampleSectionBody","
|
|
1
|
+
{"version":3,"names":["getVariableRegex","RegExp","extractVariables","content","variableRegex","variables","match","exec","includes","push","resolvePartialVars","partialVars","entries","Promise","all","Object","map","key","value","result","fromEntries","replaceTemplateVariables","template","values","replace","_","variable","prototype","hasOwnProperty","call","createShouldMustTemplate","inputDef","summary","shouldSection","mustSection","example","shouldSectionPrompt","length","shouldSectionCount","shouldSectionHeader","shouldSectionBody","elem","baseBody","no","title","join","mustSectionPrompt","mustSectionCount","mustSectionHeader","mustSectionBody","exampleSectionPrompt","exampleSectionBody","systemPrompt","filter","Boolean","systemTemplate","trim","formatMessages","args","mergedArgs","reduce","acc","resolvedPartialVars","templateValues","systemMessage","role","userContentParts","argsText","type","name","description","partialVarsText","text","imageInputDefs","forEach","imageValue","image","userMessage"],"sourceRoot":"../../../src","sources":["templates/ShouldMustTemplate.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/types.js
CHANGED
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ModelNameAlias","model","vendor","type"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"AA4DA,OAAO,MAAMA,cAA0D,GAAG;EACtE;EACA,gBAAgB,EAAE;IACd,OAAO,EAAE,yBAAyB;IAClC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,eAAe,EAAE;IACb,OAAO,EAAE,wBAAwB;IACjC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EAED;EACA,QAAQ,EAAE;IACNC,KAAK,EAAE,QAAQ;IACfC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,aAAa,EAAE;IACXF,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,cAAc,EAAE;IACZF,KAAK,EAAE,
|
|
1
|
+
{"version":3,"names":["ModelNameAlias","model","vendor","type"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"AA4DA,OAAO,MAAMA,cAA0D,GAAG;EACtE;EACA,gBAAgB,EAAE;IACd,OAAO,EAAE,yBAAyB;IAClC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,eAAe,EAAE;IACb,OAAO,EAAE,wBAAwB;IACjC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,mBAAmB,EAAE;IACjB,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,kBAAkB,EAAE;IAChB,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EACD,iBAAiB,EAAE;IACf,OAAO,EAAE,0BAA0B;IACnC,QAAQ,EAAE;MAAE,MAAM,EAAE;IAAY;EACpC,CAAC;EAED;EACA,QAAQ,EAAE;IACNC,KAAK,EAAE,QAAQ;IACfC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,aAAa,EAAE;IACXF,KAAK,EAAE,aAAa;IACpBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,cAAc,EAAE;IACZF,KAAK,EAAE,cAAc;IACrBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,SAAS,EAAE;IACPF,KAAK,EAAE,SAAS;IAChBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,SAAS,EAAE;IACPF,KAAK,EAAE,SAAS;IAChBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,cAAc,EAAE;IACZF,KAAK,EAAE,qBAAqB;IAC5BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EAED;EACA,cAAc,EAAE;IACZF,KAAK,EAAE,sBAAsB;IAC7BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,gBAAgB,EAAE;IACdF,KAAK,EAAE,wBAAwB;IAC/BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,kBAAkB,EAAE;IAChBF,KAAK,EAAE,kBAAkB;IACzBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,uBAAuB,EAAE;IACrBF,KAAK,EAAE,uBAAuB;IAC9BC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B,CAAC;EACD,gBAAgB,EAAE;IACdF,KAAK,EAAE,gBAAgB;IACvBC,MAAM,EAAE;MAAEC,IAAI,EAAE;IAAS;EAC7B;AACJ,CAAU","ignoreList":[]}
|
|
@@ -1,17 +1,87 @@
|
|
|
1
1
|
import { wrapLanguageModel } from "ai";
|
|
2
|
+
import { ModelNameAlias } from "../types";
|
|
2
3
|
import { openai } from "@ai-sdk/openai";
|
|
3
4
|
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
|
|
4
5
|
import { anthropic, createAnthropic } from "@ai-sdk/anthropic";
|
|
5
6
|
import { google, createGoogleGenerativeAI } from "@ai-sdk/google";
|
|
6
7
|
import { azure, createAzure } from "@ai-sdk/azure";
|
|
8
|
+
const REVPROXY_JSON_INSTRUCTION = "Return a valid JSON object only. Do not include any extra text.";
|
|
9
|
+
const isRevproxyEnabled = () => Boolean(process.env.JELIQ_LLM_REVPROXY_KEY && process.env.JELIQ_LLM_REVPROXY_CONTAINER_ID && process.env.JELIQ_LLM_REVPROXY_ENDPOINT);
|
|
10
|
+
const addJsonInstructionToPrompt = prompt => {
|
|
11
|
+
if (!Array.isArray(prompt) || prompt.length === 0) {
|
|
12
|
+
return prompt;
|
|
13
|
+
}
|
|
14
|
+
const hasInstruction = prompt.some(message => (message === null || message === void 0 ? void 0 : message.role) === "system" && typeof message.content === "string" && message.content.includes(REVPROXY_JSON_INSTRUCTION));
|
|
15
|
+
if (hasInstruction) {
|
|
16
|
+
return prompt;
|
|
17
|
+
}
|
|
18
|
+
const instructionMessage = {
|
|
19
|
+
role: "system",
|
|
20
|
+
content: REVPROXY_JSON_INSTRUCTION
|
|
21
|
+
};
|
|
22
|
+
const insertIndex = prompt.findIndex(message => (message === null || message === void 0 ? void 0 : message.role) !== "system");
|
|
23
|
+
if (insertIndex === -1) {
|
|
24
|
+
return [...prompt, instructionMessage];
|
|
25
|
+
}
|
|
26
|
+
return [...prompt.slice(0, insertIndex), instructionMessage, ...prompt.slice(insertIndex)];
|
|
27
|
+
};
|
|
28
|
+
const normalizeJsonContent = content => {
|
|
29
|
+
if (!Array.isArray(content)) {
|
|
30
|
+
return content;
|
|
31
|
+
}
|
|
32
|
+
let text = "";
|
|
33
|
+
for (const part of content) {
|
|
34
|
+
if ((part === null || part === void 0 ? void 0 : part.type) === "text" && typeof part.text === "string") {
|
|
35
|
+
text += part.text;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!text) {
|
|
39
|
+
return content;
|
|
40
|
+
}
|
|
41
|
+
let parsed;
|
|
42
|
+
try {
|
|
43
|
+
parsed = JSON.parse(text);
|
|
44
|
+
} catch {
|
|
45
|
+
return content;
|
|
46
|
+
}
|
|
47
|
+
const normalizedText = JSON.stringify(parsed);
|
|
48
|
+
let inserted = false;
|
|
49
|
+
return content.flatMap(part => {
|
|
50
|
+
if ((part === null || part === void 0 ? void 0 : part.type) !== "text" || typeof part.text !== "string") {
|
|
51
|
+
return [part];
|
|
52
|
+
}
|
|
53
|
+
if (inserted) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
inserted = true;
|
|
57
|
+
return [{
|
|
58
|
+
...part,
|
|
59
|
+
text: normalizedText
|
|
60
|
+
}];
|
|
61
|
+
});
|
|
62
|
+
};
|
|
7
63
|
function createProviderModel(vendor, modelName) {
|
|
8
|
-
|
|
64
|
+
var _ModelNameAlias;
|
|
65
|
+
const actualModelName = (ModelNameAlias === null || ModelNameAlias === void 0 || (_ModelNameAlias = ModelNameAlias[modelName]) === null || _ModelNameAlias === void 0 ? void 0 : _ModelNameAlias.model) || modelName;
|
|
66
|
+
if (isRevproxyEnabled()) {
|
|
9
67
|
const provider = createOpenAICompatible({
|
|
10
68
|
name: "jeliq-llm-revproxy",
|
|
11
|
-
apiKey: process.env.JELIQ_LLM_REVPROXY_KEY,
|
|
12
|
-
baseURL: process.env.JELIQ_LLM_REVPROXY_ENDPOINT
|
|
69
|
+
apiKey: process.env.JELIQ_LLM_REVPROXY_KEY || "",
|
|
70
|
+
baseURL: process.env.JELIQ_LLM_REVPROXY_ENDPOINT || "",
|
|
71
|
+
headers: {
|
|
72
|
+
'X-Container-ID': process.env.JELIQ_LLM_REVPROXY_CONTAINER_ID || ""
|
|
73
|
+
}
|
|
74
|
+
// supportsStructuredOutputs: true,
|
|
75
|
+
/*
|
|
76
|
+
fetch: async (input, init) => {
|
|
77
|
+
if (init?.body) {
|
|
78
|
+
console.log("REQUEST BODY:", init.body.toString());
|
|
79
|
+
}
|
|
80
|
+
return fetch(input, init);
|
|
81
|
+
},
|
|
82
|
+
*/
|
|
13
83
|
});
|
|
14
|
-
return provider(
|
|
84
|
+
return provider(actualModelName);
|
|
15
85
|
}
|
|
16
86
|
if (vendor.type === "anthropic") {
|
|
17
87
|
const provider = vendor.apiKey || vendor.endpoint ? createAnthropic({
|
|
@@ -20,7 +90,7 @@ function createProviderModel(vendor, modelName) {
|
|
|
20
90
|
baseURL: vendor.endpoint
|
|
21
91
|
} : {})
|
|
22
92
|
}) : anthropic;
|
|
23
|
-
return provider(
|
|
93
|
+
return provider(actualModelName);
|
|
24
94
|
}
|
|
25
95
|
if (vendor.type === "google") {
|
|
26
96
|
const provider = vendor.apiKey || vendor.endpoint ? createGoogleGenerativeAI({
|
|
@@ -29,7 +99,7 @@ function createProviderModel(vendor, modelName) {
|
|
|
29
99
|
baseURL: vendor.endpoint
|
|
30
100
|
} : {})
|
|
31
101
|
}) : google;
|
|
32
|
-
return provider(
|
|
102
|
+
return provider(actualModelName);
|
|
33
103
|
}
|
|
34
104
|
if (vendor.type === "azure") {
|
|
35
105
|
const provider = vendor.apiKey || vendor.instanceName ? createAzure({
|
|
@@ -40,9 +110,9 @@ function createProviderModel(vendor, modelName) {
|
|
|
40
110
|
apiVersion: vendor.apiVersion,
|
|
41
111
|
useDeploymentBasedUrls: true
|
|
42
112
|
}) : azure;
|
|
43
|
-
return provider(vendor.deploymentName ||
|
|
113
|
+
return provider(vendor.deploymentName || actualModelName);
|
|
44
114
|
}
|
|
45
|
-
return openai(
|
|
115
|
+
return openai(actualModelName);
|
|
46
116
|
}
|
|
47
117
|
export default function createGetLLM(tasksModelsMap, defaultModel) {
|
|
48
118
|
function getModelAndTemperature(taskName) {
|
|
@@ -68,6 +138,7 @@ export default function createGetLLM(tasksModelsMap, defaultModel) {
|
|
|
68
138
|
const actualReasoningEffort = (options === null || options === void 0 ? void 0 : options.reasoningEffort) !== undefined ? options.reasoningEffort : reasoningEffort;
|
|
69
139
|
const actualVerbosityLevel = (options === null || options === void 0 ? void 0 : options.verbosityLevel) !== undefined ? options.verbosityLevel : verbosityLevel;
|
|
70
140
|
const actualTimeout = (options === null || options === void 0 ? void 0 : options.timeout) !== undefined ? options.timeout : timeout !== undefined ? timeout : undefined;
|
|
141
|
+
const usesRevproxy = isRevproxyEnabled();
|
|
71
142
|
const model = createProviderModel(resolvedVendor, actualModelName);
|
|
72
143
|
|
|
73
144
|
// 直前に CallOptions を変形するミドルウェア
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["wrapLanguageModel","openai","createOpenAICompatible","anthropic","createAnthropic","google","createGoogleGenerativeAI","azure","createAzure","
|
|
1
|
+
{"version":3,"names":["wrapLanguageModel","ModelNameAlias","openai","createOpenAICompatible","anthropic","createAnthropic","google","createGoogleGenerativeAI","azure","createAzure","REVPROXY_JSON_INSTRUCTION","isRevproxyEnabled","Boolean","process","env","JELIQ_LLM_REVPROXY_KEY","JELIQ_LLM_REVPROXY_CONTAINER_ID","JELIQ_LLM_REVPROXY_ENDPOINT","addJsonInstructionToPrompt","prompt","Array","isArray","length","hasInstruction","some","message","role","content","includes","instructionMessage","insertIndex","findIndex","slice","normalizeJsonContent","text","part","type","parsed","JSON","parse","normalizedText","stringify","inserted","flatMap","createProviderModel","vendor","modelName","_ModelNameAlias","actualModelName","model","provider","name","apiKey","baseURL","headers","endpoint","instanceName","resourceName","apiVersion","useDeploymentBasedUrls","deploymentName","createGetLLM","tasksModelsMap","defaultModel","getModelAndTemperature","taskName","Error","reasoningEffort","undefined","verbosityLevel","temperature","timeout","getLLM","options","_loggingInfo","resolvedVendor","actualTemperature","actualReasoningEffort","actualVerbosityLevel","actualTimeout","usesRevproxy","mutateCallOptionsMiddleware","specificationVersion","transformParams","params","_next$providerOptions","next","Math","min","max","providerOptions","textVerbosity","middleware"],"sourceRoot":"../../../src","sources":["utils/createGetLLM.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BackendContext } from "@jeliq/app-sdk-core";
|
|
2
2
|
import { ZodSchema } from "zod";
|
|
3
|
-
import { InputDefObj, PromptElement } from "../types";
|
|
3
|
+
import { InputDefObj, PromptElement, REASONING_EFFORT, VERBOSITY_LEVEL } from "../types";
|
|
4
4
|
type StructuredTemplate<InputKeys extends string | number | symbol, Output> = {
|
|
5
5
|
type: "ShouldMust";
|
|
6
6
|
inputDef: InputDefObj<InputKeys>;
|
|
@@ -14,7 +14,8 @@ type StructuredTemplate<InputKeys extends string | number | symbol, Output> = {
|
|
|
14
14
|
export type GenStructuredOutputsOptions = {
|
|
15
15
|
model?: string;
|
|
16
16
|
temperature?: number;
|
|
17
|
-
reasoningEffort?:
|
|
17
|
+
reasoningEffort?: REASONING_EFFORT;
|
|
18
|
+
verbosityLevel?: VERBOSITY_LEVEL;
|
|
18
19
|
timeout?: number;
|
|
19
20
|
maxRetries?: number;
|
|
20
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"genStructuredOutputs.d.ts","sourceRoot":"","sources":["../../../../src/controllers/genStructuredOutputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"genStructuredOutputs.d.ts","sourceRoot":"","sources":["../../../../src/controllers/genStructuredOutputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEzF,KAAK,kBAAkB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI;IAC1E,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;CACnF,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAoEF,wBAA8B,oBAAoB,CAC9C,SAAS,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAC1C,MAAM,EAEN,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,EAC/C,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAClD,OAAO,CAAC,EAAE,2BAA2B,GACtC,OAAO,CAAC,MAAM,CAAC,CAkIjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShouldMustTemplate.d.ts","sourceRoot":"","sources":["../../../../src/templates/ShouldMustTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,kBAAkB,EAAY,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEnD,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAE9D,KAAK,aAAa,GAAG,KAAK,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC;AAElE,KAAK,wBAAwB,GAAG;IAC5B,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CAClE,CAAC;
|
|
1
|
+
{"version":3,"file":"ShouldMustTemplate.d.ts","sourceRoot":"","sources":["../../../../src/templates/ShouldMustTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,kBAAkB,EAAY,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEnD,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC;AAE9D,KAAK,aAAa,GAAG,KAAK,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC;AAElE,KAAK,wBAAwB,GAAG;IAC5B,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;CAClE,CAAC;AA+CF,wBAA8B,wBAAwB,CAClD,QAAQ,EAAE,QAAQ,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,aAAa,EAAE,EAC/B,WAAW,CAAC,EAAE,aAAa,EAAE,EAC7B,OAAO,CAAC,EAAE,aAAa,EAAE,EACzB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,GAChF,OAAO,CAAC,wBAAwB,CAAC,CAmHnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createGetLLM.d.ts","sourceRoot":"","sources":["../../../../src/utils/createGetLLM.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,MAAM,EAAE,UAAU,EAAqC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"createGetLLM.d.ts","sourceRoot":"","sources":["../../../../src/utils/createGetLLM.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,MAAM,EAAE,UAAU,EAAqC,gBAAgB,EAA6B,MAAM,UAAU,CAAC;AAqJ1I,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,SAAS,SAAS,MAAM,EAAE,SAAS,SAAS,gBAAgB,EAC7F,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EACxD,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,GACpC,MAAM,CAAC,SAAS,CAAC,CAqGnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jeliq/app-sdk-llm",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"homepage": "https://jeliq.ai/",
|
|
5
5
|
"author": "Jeliq.ai",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"@ai-sdk/openai-compatible": "^2.0.4",
|
|
25
25
|
"ai": "^6.0.11",
|
|
26
26
|
"lodash": "^4.17.21",
|
|
27
|
-
"ts-node": "^10.9.2"
|
|
27
|
+
"ts-node": "^10.9.2",
|
|
28
|
+
"zod-to-json-schema": "^3.25.0"
|
|
28
29
|
},
|
|
29
30
|
"devDependencies": {
|
|
30
31
|
"@types/jest": "^30.0.0",
|