@typia/core 12.0.0-dev.20260303-2 → 12.0.0-dev.20260305
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/programmers/llm/LlmApplicationProgrammer.js +81 -60
- package/lib/programmers/llm/LlmApplicationProgrammer.js.map +1 -1
- package/lib/programmers/llm/LlmApplicationProgrammer.mjs +78 -56
- package/lib/programmers/llm/LlmApplicationProgrammer.mjs.map +1 -1
- package/package.json +3 -3
- package/src/programmers/llm/LlmApplicationProgrammer.ts +122 -85
|
@@ -19,10 +19,10 @@ const LlmSchemaProgrammer_1 = require("./LlmSchemaProgrammer");
|
|
|
19
19
|
var LlmApplicationProgrammer;
|
|
20
20
|
(function (LlmApplicationProgrammer) {
|
|
21
21
|
LlmApplicationProgrammer.validate = (props) => {
|
|
22
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
23
|
-
|
|
22
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
23
|
+
// the class
|
|
24
24
|
if (props.explore.top === false)
|
|
25
|
-
if (props.explore.object === ((_a =
|
|
25
|
+
if (props.explore.object === ((_b = (_a = props.metadata) === null || _a === void 0 ? void 0 : _a.objects[0]) === null || _b === void 0 ? void 0 : _b.type) &&
|
|
26
26
|
typeof props.explore.property === "string" &&
|
|
27
27
|
props.metadata.size() === 1 &&
|
|
28
28
|
props.metadata.nullable === false &&
|
|
@@ -31,24 +31,26 @@ var LlmApplicationProgrammer;
|
|
|
31
31
|
return validateFunction(props.explore.property, props.metadata.functions[0]);
|
|
32
32
|
else
|
|
33
33
|
return LlmSchemaProgrammer_1.LlmSchemaProgrammer.validate(props);
|
|
34
|
+
// top-level type must be a single non-nullable required object
|
|
34
35
|
const output = [];
|
|
35
|
-
const
|
|
36
|
+
const isValidType = props.metadata.size() === 1 &&
|
|
36
37
|
props.metadata.objects.length === 1 &&
|
|
37
38
|
props.metadata.isRequired() === true &&
|
|
38
39
|
props.metadata.nullable === false;
|
|
39
|
-
if (
|
|
40
|
+
if (isValidType === false)
|
|
40
41
|
output.push("LLM application's generic argument must be a class/interface type.");
|
|
41
|
-
|
|
42
|
+
// validate each property of the class/interface
|
|
43
|
+
const object = (_c = props.metadata.objects[0]) === null || _c === void 0 ? void 0 : _c.type;
|
|
42
44
|
if (object !== undefined) {
|
|
43
45
|
if (object.properties.some((p) => p.key.isSoleLiteral() === false))
|
|
44
46
|
output.push("LLM application does not allow dynamic keys on class/interface type.");
|
|
45
|
-
let least = false;
|
|
47
|
+
let least = false; // tracks whether at least one function exists
|
|
46
48
|
for (const p of object.properties) {
|
|
47
49
|
const name = JSON.stringify(p.key.getSoleLiteral());
|
|
48
50
|
const value = p.value;
|
|
49
51
|
if (value.functions.length) {
|
|
50
52
|
least || (least = true);
|
|
51
|
-
if (
|
|
53
|
+
if (isValidType === false) {
|
|
52
54
|
if (value.functions.length !== 1 || value.size() !== 1)
|
|
53
55
|
output.push(`LLM application's function (${name}) type does not allow union type.`);
|
|
54
56
|
if (value.isRequired() === false)
|
|
@@ -57,7 +59,7 @@ var LlmApplicationProgrammer;
|
|
|
57
59
|
output.push(`LLM application's function (${name}) type must not be nullable.`);
|
|
58
60
|
}
|
|
59
61
|
const description = concatDescription(JsonApplicationProgrammer_1.JsonApplicationProgrammer.writeDescription({
|
|
60
|
-
description: (
|
|
62
|
+
description: (_h = (_d = p.description) !== null && _d !== void 0 ? _d : (_g = (_f = (_e = p.jsDocTags.find((tag) => tag.name === "description")) === null || _e === void 0 ? void 0 : _e.text) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.text) !== null && _h !== void 0 ? _h : null,
|
|
61
63
|
jsDocTags: p.jsDocTags,
|
|
62
64
|
kind: "summary",
|
|
63
65
|
}));
|
|
@@ -70,37 +72,48 @@ var LlmApplicationProgrammer;
|
|
|
70
72
|
}
|
|
71
73
|
return output;
|
|
72
74
|
};
|
|
75
|
+
/**
|
|
76
|
+
* Validates that a {@link MetadataSchema} represents a valid
|
|
77
|
+
* {@link ILlmSchema.IParameters} type: a single, non-nullable, non-optional
|
|
78
|
+
* object type without dynamic property keys.
|
|
79
|
+
*/
|
|
80
|
+
const validateObjectSchema = (prefix, label, schema) => {
|
|
81
|
+
const errors = [];
|
|
82
|
+
if (schema.isRequired() === false)
|
|
83
|
+
errors.push(`${prefix} ${label} cannot be optional (union with undefined).`);
|
|
84
|
+
if (schema.nullable === true)
|
|
85
|
+
errors.push(`${prefix} ${label} cannot be nullable.`);
|
|
86
|
+
if (schema.size() !== 1 || schema.objects.length !== 1)
|
|
87
|
+
errors.push(`${prefix} ${label} must be a single object type.`);
|
|
88
|
+
else if (schema.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
|
|
89
|
+
errors.push(`${prefix} ${label} cannot have dynamic property keys.`);
|
|
90
|
+
return errors;
|
|
91
|
+
};
|
|
73
92
|
const validateFunction = (name, func) => {
|
|
74
93
|
var _a;
|
|
75
|
-
const
|
|
94
|
+
const messages = [];
|
|
76
95
|
const prefix = `LLM application's function (${JSON.stringify(name)})`;
|
|
77
|
-
|
|
78
|
-
output.push(`${prefix} return type cannot be optional (union with undefined).`);
|
|
96
|
+
// function name
|
|
79
97
|
if (/^[0-9]/.test((_a = name[0]) !== null && _a !== void 0 ? _a : "") === true)
|
|
80
|
-
|
|
98
|
+
messages.push(`${prefix} name cannot start with a number.`);
|
|
81
99
|
if (/^[a-zA-Z0-9_-]+$/.test(name) === false)
|
|
82
|
-
|
|
100
|
+
messages.push(`${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`);
|
|
83
101
|
if (name.length > 64)
|
|
84
|
-
|
|
102
|
+
messages.push(`${prefix} name cannot exceed 64 characters.`);
|
|
103
|
+
// output
|
|
104
|
+
if (func.output.size() !== 0)
|
|
105
|
+
messages.push(...validateObjectSchema(prefix, "return type", func.output));
|
|
106
|
+
// parameters
|
|
85
107
|
if (func.parameters.length !== 0 && func.parameters.length !== 1)
|
|
86
|
-
|
|
87
|
-
if (func.parameters.length !== 0)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
output.push(`${prefix} parameter must be a single object type.`);
|
|
91
|
-
else {
|
|
92
|
-
if (type.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
|
|
93
|
-
output.push(`${prefix} parameter cannot have dynamic property keys.`);
|
|
94
|
-
if (type.isRequired() === false)
|
|
95
|
-
output.push(`${prefix} parameter cannot be optional (union with undefined).`);
|
|
96
|
-
if (type.nullable === true)
|
|
97
|
-
output.push(`${prefix} parameter cannot be nullable.`);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return output;
|
|
108
|
+
messages.push(`${prefix} must have exactly one parameter or no parameters.`);
|
|
109
|
+
if (func.parameters.length !== 0)
|
|
110
|
+
messages.push(...validateObjectSchema(prefix, "parameter", func.parameters[0].type));
|
|
111
|
+
return messages;
|
|
101
112
|
};
|
|
102
113
|
LlmApplicationProgrammer.write = (props) => {
|
|
103
114
|
const metadata = MetadataSchema_1.MetadataSchema.unalias(props.metadata);
|
|
115
|
+
// collect the first parameter's MetadataParameter for each valid function,
|
|
116
|
+
// keyed by property name, for runtime validator generation
|
|
104
117
|
const functionParameters = Object.fromEntries(metadata.objects[0].type.properties.filter((p) => p.key.isSoleLiteral() &&
|
|
105
118
|
p.value.size() === 1 &&
|
|
106
119
|
p.value.nullable === false &&
|
|
@@ -113,12 +126,14 @@ var LlmApplicationProgrammer;
|
|
|
113
126
|
p.key.getSoleLiteral(),
|
|
114
127
|
MetadataSchema_1.MetadataSchema.unalias(p.value).functions[0].parameters[0],
|
|
115
128
|
]));
|
|
129
|
+
// build JSON Schema application, filtering out @human-tagged parameters
|
|
116
130
|
const errorMessages = [];
|
|
117
131
|
const application = JsonApplicationProgrammer_1.JsonApplicationProgrammer.write({
|
|
118
132
|
version: "3.1",
|
|
119
133
|
metadata,
|
|
120
134
|
filter: (p) => p.jsDocTags.some((tag) => tag.name === "human") === false,
|
|
121
135
|
});
|
|
136
|
+
// convert each JSON Schema function to an LLM function
|
|
122
137
|
const functions = application.functions.map((func) => {
|
|
123
138
|
var _a;
|
|
124
139
|
return writeFunction({
|
|
@@ -132,9 +147,6 @@ var LlmApplicationProgrammer;
|
|
|
132
147
|
parameter: (_a = functionParameters[func.name]) !== null && _a !== void 0 ? _a : null,
|
|
133
148
|
});
|
|
134
149
|
});
|
|
135
|
-
if (functions.some((func) => func === null))
|
|
136
|
-
throw new Error("Failed to write LLM application:\n\n" +
|
|
137
|
-
errorMessages.map((str) => ` - ${str}`).join("\n"));
|
|
138
150
|
return {
|
|
139
151
|
config: Object.assign(Object.assign({}, utils_1.LlmSchemaConverter.getConfig(props.config)), { separate: null, validate: null }),
|
|
140
152
|
functions: functions.filter((f) => f !== null),
|
|
@@ -143,11 +155,11 @@ var LlmApplicationProgrammer;
|
|
|
143
155
|
const writeFunction = (props) => {
|
|
144
156
|
var _a, _b, _c, _d, _e, _f;
|
|
145
157
|
const config = utils_1.LlmSchemaConverter.getConfig(props.config);
|
|
158
|
+
// convert parameters and output schemas
|
|
146
159
|
const parameters = writeParameters(Object.assign(Object.assign({}, props), { config, accessor: `$input.${props.function.name}.parameters` }));
|
|
147
160
|
if (parameters === null)
|
|
148
161
|
return null;
|
|
149
162
|
const output = writeOutput({
|
|
150
|
-
parameters,
|
|
151
163
|
config,
|
|
152
164
|
components: props.components,
|
|
153
165
|
schema: (_b = (_a = props.function.output) === null || _a === void 0 ? void 0 : _a.schema) !== null && _b !== void 0 ? _b : null,
|
|
@@ -156,27 +168,20 @@ var LlmApplicationProgrammer;
|
|
|
156
168
|
});
|
|
157
169
|
if (output === null)
|
|
158
170
|
return null;
|
|
171
|
+
// fall back output description from the function metadata
|
|
159
172
|
if (output &&
|
|
160
|
-
utils_1.LlmTypeChecker.isReference(output) === false &&
|
|
161
173
|
output.description === undefined &&
|
|
162
174
|
!!((_d = (_c = props.function.output) === null || _c === void 0 ? void 0 : _c.description) === null || _d === void 0 ? void 0 : _d.length))
|
|
163
175
|
output.description = props.function.output.description;
|
|
176
|
+
// assemble the LLM function
|
|
164
177
|
return {
|
|
165
178
|
name: props.function.name,
|
|
166
179
|
parameters,
|
|
167
180
|
output: output !== null && output !== void 0 ? output : undefined,
|
|
168
|
-
description: (
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
return props.function.summary || props.function.description;
|
|
173
|
-
const summary = props.function.summary.endsWith(".")
|
|
174
|
-
? props.function.summary.slice(0, -1)
|
|
175
|
-
: props.function.summary;
|
|
176
|
-
return props.function.description.startsWith(summary)
|
|
177
|
-
? props.function.description
|
|
178
|
-
: summary + ".\n\n" + props.function.description;
|
|
179
|
-
})(),
|
|
181
|
+
description: concatDescription({
|
|
182
|
+
summary: props.function.summary,
|
|
183
|
+
description: props.function.description,
|
|
184
|
+
}),
|
|
180
185
|
deprecated: props.function.deprecated,
|
|
181
186
|
tags: props.function.tags,
|
|
182
187
|
validate: writeValidator({
|
|
@@ -191,32 +196,41 @@ var LlmApplicationProgrammer;
|
|
|
191
196
|
};
|
|
192
197
|
const writeParameters = (props) => {
|
|
193
198
|
var _a, _b, _c, _d, _e, _f;
|
|
199
|
+
// extract the first parameter's object schema, defaulting to empty object
|
|
194
200
|
const schema = (_b = (_a = props.function.parameters[0]) === null || _a === void 0 ? void 0 : _a.schema) !== null && _b !== void 0 ? _b : {
|
|
195
201
|
type: "object",
|
|
196
202
|
properties: {},
|
|
197
203
|
additionalProperties: false,
|
|
198
204
|
required: [],
|
|
199
205
|
};
|
|
200
|
-
|
|
206
|
+
return convertParameters({
|
|
201
207
|
config: props.config,
|
|
202
208
|
components: props.components,
|
|
203
209
|
schema: Object.assign(Object.assign({}, schema), { title: (_c = schema.title) !== null && _c !== void 0 ? _c : (_d = props.function.parameters[0]) === null || _d === void 0 ? void 0 : _d.title, description: (_e = schema.description) !== null && _e !== void 0 ? _e : (_f = props.function.parameters[0]) === null || _f === void 0 ? void 0 : _f.description }),
|
|
204
210
|
accessor: props.accessor,
|
|
211
|
+
errors: props.errors,
|
|
205
212
|
});
|
|
206
|
-
if (result.success === false) {
|
|
207
|
-
props.errors.push(...result.error.reasons.map((r) => ` - ${r.accessor}: ${r.message}`));
|
|
208
|
-
return null;
|
|
209
|
-
}
|
|
210
|
-
return result.value;
|
|
211
213
|
};
|
|
212
214
|
const writeOutput = (props) => {
|
|
213
215
|
if (props.schema === null)
|
|
214
216
|
return undefined;
|
|
215
|
-
|
|
217
|
+
return convertParameters({
|
|
218
|
+
config: props.config,
|
|
219
|
+
components: props.components,
|
|
220
|
+
schema: props.schema,
|
|
221
|
+
accessor: props.accessor,
|
|
222
|
+
errors: props.errors,
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Converts an OpenAPI object schema to {@link ILlmSchema.IParameters},
|
|
227
|
+
* collecting transformation errors into the provided array.
|
|
228
|
+
*/
|
|
229
|
+
const convertParameters = (props) => {
|
|
230
|
+
const result = utils_1.LlmSchemaConverter.parameters({
|
|
216
231
|
config: props.config,
|
|
217
232
|
components: props.components,
|
|
218
233
|
schema: props.schema,
|
|
219
|
-
$defs: props.parameters.$defs,
|
|
220
234
|
accessor: props.accessor,
|
|
221
235
|
});
|
|
222
236
|
if (result.success === false) {
|
|
@@ -226,14 +240,15 @@ var LlmApplicationProgrammer;
|
|
|
226
240
|
return result.value;
|
|
227
241
|
};
|
|
228
242
|
const writeValidator = (props) => {
|
|
243
|
+
// no parameter metadata — generate a permissive `any` validator
|
|
229
244
|
if (props.parameter === null)
|
|
230
245
|
return ValidateProgrammer_1.ValidateProgrammer.write(Object.assign(Object.assign({}, props), { type: props.context.checker.getTypeFromTypeNode(TypeFactory_1.TypeFactory.keyword("any")), config: {
|
|
231
246
|
equals: props.equals,
|
|
232
247
|
}, name: undefined }));
|
|
233
|
-
|
|
234
|
-
if (
|
|
235
|
-
// unreachable
|
|
248
|
+
// unreachable — tsType is always set by the transformer
|
|
249
|
+
if (props.parameter.tsType === undefined)
|
|
236
250
|
throw new Error("Failed to write LLM application's function validator. You don't have to call `LlmApplicationOfValidator.write()` function by yourself, but only by the `typia.llm.applicationOfValidate()` function.");
|
|
251
|
+
// generate a typed validator from the parameter's TypeScript type
|
|
237
252
|
return ValidateProgrammer_1.ValidateProgrammer.write(Object.assign(Object.assign({}, props), { type: props.parameter.tsType, config: {
|
|
238
253
|
equals: props.equals,
|
|
239
254
|
}, name: props.className
|
|
@@ -241,10 +256,16 @@ var LlmApplicationProgrammer;
|
|
|
241
256
|
: undefined }));
|
|
242
257
|
};
|
|
243
258
|
})(LlmApplicationProgrammer || (exports.LlmApplicationProgrammer = LlmApplicationProgrammer = {}));
|
|
259
|
+
/**
|
|
260
|
+
* Concatenates summary and description into a single string.
|
|
261
|
+
*
|
|
262
|
+
* If both are present, joins them with a period and double newline, avoiding
|
|
263
|
+
* duplication when the description already starts with the summary.
|
|
264
|
+
*/
|
|
244
265
|
const concatDescription = (p) => {
|
|
245
|
-
var _a, _b
|
|
266
|
+
var _a, _b;
|
|
246
267
|
if (!((_a = p.summary) === null || _a === void 0 ? void 0 : _a.length) || !((_b = p.description) === null || _b === void 0 ? void 0 : _b.length))
|
|
247
|
-
return
|
|
268
|
+
return p.summary || p.description;
|
|
248
269
|
const summary = p.summary.endsWith(".")
|
|
249
270
|
? p.summary.slice(0, -1)
|
|
250
271
|
: p.summary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LlmApplicationProgrammer.js","sourceRoot":"","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LlmApplicationProgrammer.js","sourceRoot":"","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LlmSchemaConverter
|
|
1
|
+
import { LlmSchemaConverter } from '@typia/utils';
|
|
2
2
|
import { TypeFactory } from '../../factories/TypeFactory.mjs';
|
|
3
3
|
import { MetadataSchema } from '../../schemas/metadata/MetadataSchema.mjs';
|
|
4
4
|
import { ValidateProgrammer } from '../ValidateProgrammer.mjs';
|
|
@@ -17,9 +17,9 @@ import { LlmSchemaProgrammer } from './LlmSchemaProgrammer.mjs';
|
|
|
17
17
|
var LlmApplicationProgrammer;
|
|
18
18
|
(function (LlmApplicationProgrammer) {
|
|
19
19
|
LlmApplicationProgrammer.validate = (props) => {
|
|
20
|
-
|
|
20
|
+
// the class
|
|
21
21
|
if (props.explore.top === false)
|
|
22
|
-
if (props.explore.object ===
|
|
22
|
+
if (props.explore.object === props.metadata?.objects[0]?.type &&
|
|
23
23
|
typeof props.explore.property === "string" &&
|
|
24
24
|
props.metadata.size() === 1 &&
|
|
25
25
|
props.metadata.nullable === false &&
|
|
@@ -28,24 +28,26 @@ var LlmApplicationProgrammer;
|
|
|
28
28
|
return validateFunction(props.explore.property, props.metadata.functions[0]);
|
|
29
29
|
else
|
|
30
30
|
return LlmSchemaProgrammer.validate(props);
|
|
31
|
+
// top-level type must be a single non-nullable required object
|
|
31
32
|
const output = [];
|
|
32
|
-
const
|
|
33
|
+
const isValidType = props.metadata.size() === 1 &&
|
|
33
34
|
props.metadata.objects.length === 1 &&
|
|
34
35
|
props.metadata.isRequired() === true &&
|
|
35
36
|
props.metadata.nullable === false;
|
|
36
|
-
if (
|
|
37
|
+
if (isValidType === false)
|
|
37
38
|
output.push("LLM application's generic argument must be a class/interface type.");
|
|
39
|
+
// validate each property of the class/interface
|
|
38
40
|
const object = props.metadata.objects[0]?.type;
|
|
39
41
|
if (object !== undefined) {
|
|
40
42
|
if (object.properties.some((p) => p.key.isSoleLiteral() === false))
|
|
41
43
|
output.push("LLM application does not allow dynamic keys on class/interface type.");
|
|
42
|
-
let least = false;
|
|
44
|
+
let least = false; // tracks whether at least one function exists
|
|
43
45
|
for (const p of object.properties) {
|
|
44
46
|
const name = JSON.stringify(p.key.getSoleLiteral());
|
|
45
47
|
const value = p.value;
|
|
46
48
|
if (value.functions.length) {
|
|
47
49
|
least ||= true;
|
|
48
|
-
if (
|
|
50
|
+
if (isValidType === false) {
|
|
49
51
|
if (value.functions.length !== 1 || value.size() !== 1)
|
|
50
52
|
output.push(`LLM application's function (${name}) type does not allow union type.`);
|
|
51
53
|
if (value.isRequired() === false)
|
|
@@ -70,36 +72,47 @@ var LlmApplicationProgrammer;
|
|
|
70
72
|
}
|
|
71
73
|
return output;
|
|
72
74
|
};
|
|
75
|
+
/**
|
|
76
|
+
* Validates that a {@link MetadataSchema} represents a valid
|
|
77
|
+
* {@link ILlmSchema.IParameters} type: a single, non-nullable, non-optional
|
|
78
|
+
* object type without dynamic property keys.
|
|
79
|
+
*/
|
|
80
|
+
const validateObjectSchema = (prefix, label, schema) => {
|
|
81
|
+
const errors = [];
|
|
82
|
+
if (schema.isRequired() === false)
|
|
83
|
+
errors.push(`${prefix} ${label} cannot be optional (union with undefined).`);
|
|
84
|
+
if (schema.nullable === true)
|
|
85
|
+
errors.push(`${prefix} ${label} cannot be nullable.`);
|
|
86
|
+
if (schema.size() !== 1 || schema.objects.length !== 1)
|
|
87
|
+
errors.push(`${prefix} ${label} must be a single object type.`);
|
|
88
|
+
else if (schema.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
|
|
89
|
+
errors.push(`${prefix} ${label} cannot have dynamic property keys.`);
|
|
90
|
+
return errors;
|
|
91
|
+
};
|
|
73
92
|
const validateFunction = (name, func) => {
|
|
74
|
-
const
|
|
93
|
+
const messages = [];
|
|
75
94
|
const prefix = `LLM application's function (${JSON.stringify(name)})`;
|
|
76
|
-
|
|
77
|
-
output.push(`${prefix} return type cannot be optional (union with undefined).`);
|
|
95
|
+
// function name
|
|
78
96
|
if (/^[0-9]/.test(name[0] ?? "") === true)
|
|
79
|
-
|
|
97
|
+
messages.push(`${prefix} name cannot start with a number.`);
|
|
80
98
|
if (/^[a-zA-Z0-9_-]+$/.test(name) === false)
|
|
81
|
-
|
|
99
|
+
messages.push(`${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`);
|
|
82
100
|
if (name.length > 64)
|
|
83
|
-
|
|
101
|
+
messages.push(`${prefix} name cannot exceed 64 characters.`);
|
|
102
|
+
// output
|
|
103
|
+
if (func.output.size() !== 0)
|
|
104
|
+
messages.push(...validateObjectSchema(prefix, "return type", func.output));
|
|
105
|
+
// parameters
|
|
84
106
|
if (func.parameters.length !== 0 && func.parameters.length !== 1)
|
|
85
|
-
|
|
86
|
-
if (func.parameters.length !== 0)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
output.push(`${prefix} parameter must be a single object type.`);
|
|
90
|
-
else {
|
|
91
|
-
if (type.objects[0].type.properties.some((p) => p.key.isSoleLiteral() === false))
|
|
92
|
-
output.push(`${prefix} parameter cannot have dynamic property keys.`);
|
|
93
|
-
if (type.isRequired() === false)
|
|
94
|
-
output.push(`${prefix} parameter cannot be optional (union with undefined).`);
|
|
95
|
-
if (type.nullable === true)
|
|
96
|
-
output.push(`${prefix} parameter cannot be nullable.`);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return output;
|
|
107
|
+
messages.push(`${prefix} must have exactly one parameter or no parameters.`);
|
|
108
|
+
if (func.parameters.length !== 0)
|
|
109
|
+
messages.push(...validateObjectSchema(prefix, "parameter", func.parameters[0].type));
|
|
110
|
+
return messages;
|
|
100
111
|
};
|
|
101
112
|
LlmApplicationProgrammer.write = (props) => {
|
|
102
113
|
const metadata = MetadataSchema.unalias(props.metadata);
|
|
114
|
+
// collect the first parameter's MetadataParameter for each valid function,
|
|
115
|
+
// keyed by property name, for runtime validator generation
|
|
103
116
|
const functionParameters = Object.fromEntries(metadata.objects[0].type.properties.filter((p) => p.key.isSoleLiteral() &&
|
|
104
117
|
p.value.size() === 1 &&
|
|
105
118
|
p.value.nullable === false &&
|
|
@@ -112,12 +125,14 @@ var LlmApplicationProgrammer;
|
|
|
112
125
|
p.key.getSoleLiteral(),
|
|
113
126
|
MetadataSchema.unalias(p.value).functions[0].parameters[0],
|
|
114
127
|
]));
|
|
128
|
+
// build JSON Schema application, filtering out @human-tagged parameters
|
|
115
129
|
const errorMessages = [];
|
|
116
130
|
const application = JsonApplicationProgrammer.write({
|
|
117
131
|
version: "3.1",
|
|
118
132
|
metadata,
|
|
119
133
|
filter: (p) => p.jsDocTags.some((tag) => tag.name === "human") === false,
|
|
120
134
|
});
|
|
135
|
+
// convert each JSON Schema function to an LLM function
|
|
121
136
|
const functions = application.functions.map((func) => writeFunction({
|
|
122
137
|
context: props.context,
|
|
123
138
|
modulo: props.modulo,
|
|
@@ -128,9 +143,6 @@ var LlmApplicationProgrammer;
|
|
|
128
143
|
errors: errorMessages,
|
|
129
144
|
parameter: functionParameters[func.name] ?? null,
|
|
130
145
|
}));
|
|
131
|
-
if (functions.some((func) => func === null))
|
|
132
|
-
throw new Error("Failed to write LLM application:\n\n" +
|
|
133
|
-
errorMessages.map((str) => ` - ${str}`).join("\n"));
|
|
134
146
|
return {
|
|
135
147
|
config: {
|
|
136
148
|
...LlmSchemaConverter.getConfig(props.config),
|
|
@@ -142,6 +154,7 @@ var LlmApplicationProgrammer;
|
|
|
142
154
|
};
|
|
143
155
|
const writeFunction = (props) => {
|
|
144
156
|
const config = LlmSchemaConverter.getConfig(props.config);
|
|
157
|
+
// convert parameters and output schemas
|
|
145
158
|
const parameters = writeParameters({
|
|
146
159
|
...props,
|
|
147
160
|
config,
|
|
@@ -150,7 +163,6 @@ var LlmApplicationProgrammer;
|
|
|
150
163
|
if (parameters === null)
|
|
151
164
|
return null;
|
|
152
165
|
const output = writeOutput({
|
|
153
|
-
parameters,
|
|
154
166
|
config,
|
|
155
167
|
components: props.components,
|
|
156
168
|
schema: props.function.output?.schema ?? null,
|
|
@@ -159,26 +171,20 @@ var LlmApplicationProgrammer;
|
|
|
159
171
|
});
|
|
160
172
|
if (output === null)
|
|
161
173
|
return null;
|
|
174
|
+
// fall back output description from the function metadata
|
|
162
175
|
if (output &&
|
|
163
|
-
LlmTypeChecker.isReference(output) === false &&
|
|
164
176
|
output.description === undefined &&
|
|
165
177
|
!!props.function.output?.description?.length)
|
|
166
178
|
output.description = props.function.output.description;
|
|
179
|
+
// assemble the LLM function
|
|
167
180
|
return {
|
|
168
181
|
name: props.function.name,
|
|
169
182
|
parameters,
|
|
170
183
|
output: output ?? undefined,
|
|
171
|
-
description: (
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
const summary = props.function.summary.endsWith(".")
|
|
176
|
-
? props.function.summary.slice(0, -1)
|
|
177
|
-
: props.function.summary;
|
|
178
|
-
return props.function.description.startsWith(summary)
|
|
179
|
-
? props.function.description
|
|
180
|
-
: summary + ".\n\n" + props.function.description;
|
|
181
|
-
})(),
|
|
184
|
+
description: concatDescription({
|
|
185
|
+
summary: props.function.summary,
|
|
186
|
+
description: props.function.description,
|
|
187
|
+
}),
|
|
182
188
|
deprecated: props.function.deprecated,
|
|
183
189
|
tags: props.function.tags,
|
|
184
190
|
validate: writeValidator({
|
|
@@ -192,13 +198,14 @@ var LlmApplicationProgrammer;
|
|
|
192
198
|
};
|
|
193
199
|
};
|
|
194
200
|
const writeParameters = (props) => {
|
|
201
|
+
// extract the first parameter's object schema, defaulting to empty object
|
|
195
202
|
const schema = props.function.parameters[0]?.schema ?? {
|
|
196
203
|
type: "object",
|
|
197
204
|
properties: {},
|
|
198
205
|
additionalProperties: false,
|
|
199
206
|
required: [],
|
|
200
207
|
};
|
|
201
|
-
|
|
208
|
+
return convertParameters({
|
|
202
209
|
config: props.config,
|
|
203
210
|
components: props.components,
|
|
204
211
|
schema: {
|
|
@@ -207,21 +214,29 @@ var LlmApplicationProgrammer;
|
|
|
207
214
|
description: schema.description ?? props.function.parameters[0]?.description,
|
|
208
215
|
},
|
|
209
216
|
accessor: props.accessor,
|
|
217
|
+
errors: props.errors,
|
|
210
218
|
});
|
|
211
|
-
if (result.success === false) {
|
|
212
|
-
props.errors.push(...result.error.reasons.map((r) => ` - ${r.accessor}: ${r.message}`));
|
|
213
|
-
return null;
|
|
214
|
-
}
|
|
215
|
-
return result.value;
|
|
216
219
|
};
|
|
217
220
|
const writeOutput = (props) => {
|
|
218
221
|
if (props.schema === null)
|
|
219
222
|
return undefined;
|
|
220
|
-
|
|
223
|
+
return convertParameters({
|
|
224
|
+
config: props.config,
|
|
225
|
+
components: props.components,
|
|
226
|
+
schema: props.schema,
|
|
227
|
+
accessor: props.accessor,
|
|
228
|
+
errors: props.errors,
|
|
229
|
+
});
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Converts an OpenAPI object schema to {@link ILlmSchema.IParameters},
|
|
233
|
+
* collecting transformation errors into the provided array.
|
|
234
|
+
*/
|
|
235
|
+
const convertParameters = (props) => {
|
|
236
|
+
const result = LlmSchemaConverter.parameters({
|
|
221
237
|
config: props.config,
|
|
222
238
|
components: props.components,
|
|
223
239
|
schema: props.schema,
|
|
224
|
-
$defs: props.parameters.$defs,
|
|
225
240
|
accessor: props.accessor,
|
|
226
241
|
});
|
|
227
242
|
if (result.success === false) {
|
|
@@ -231,6 +246,7 @@ var LlmApplicationProgrammer;
|
|
|
231
246
|
return result.value;
|
|
232
247
|
};
|
|
233
248
|
const writeValidator = (props) => {
|
|
249
|
+
// no parameter metadata — generate a permissive `any` validator
|
|
234
250
|
if (props.parameter === null)
|
|
235
251
|
return ValidateProgrammer.write({
|
|
236
252
|
...props,
|
|
@@ -240,10 +256,10 @@ var LlmApplicationProgrammer;
|
|
|
240
256
|
},
|
|
241
257
|
name: undefined,
|
|
242
258
|
});
|
|
243
|
-
|
|
244
|
-
if (
|
|
245
|
-
// unreachable
|
|
259
|
+
// unreachable — tsType is always set by the transformer
|
|
260
|
+
if (props.parameter.tsType === undefined)
|
|
246
261
|
throw new Error("Failed to write LLM application's function validator. You don't have to call `LlmApplicationOfValidator.write()` function by yourself, but only by the `typia.llm.applicationOfValidate()` function.");
|
|
262
|
+
// generate a typed validator from the parameter's TypeScript type
|
|
247
263
|
return ValidateProgrammer.write({
|
|
248
264
|
...props,
|
|
249
265
|
type: props.parameter.tsType,
|
|
@@ -256,9 +272,15 @@ var LlmApplicationProgrammer;
|
|
|
256
272
|
});
|
|
257
273
|
};
|
|
258
274
|
})(LlmApplicationProgrammer || (LlmApplicationProgrammer = {}));
|
|
275
|
+
/**
|
|
276
|
+
* Concatenates summary and description into a single string.
|
|
277
|
+
*
|
|
278
|
+
* If both are present, joins them with a period and double newline, avoiding
|
|
279
|
+
* duplication when the description already starts with the summary.
|
|
280
|
+
*/
|
|
259
281
|
const concatDescription = (p) => {
|
|
260
282
|
if (!p.summary?.length || !p.description?.length)
|
|
261
|
-
return p.summary
|
|
283
|
+
return p.summary || p.description;
|
|
262
284
|
const summary = p.summary.endsWith(".")
|
|
263
285
|
? p.summary.slice(0, -1)
|
|
264
286
|
: p.summary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LlmApplicationProgrammer.mjs","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LlmApplicationProgrammer.mjs","sources":["../../../src/programmers/llm/LlmApplicationProgrammer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typia/core",
|
|
3
|
-
"version": "12.0.0-dev.
|
|
3
|
+
"version": "12.0.0-dev.20260305",
|
|
4
4
|
"description": "Superfast runtime validators with only one line",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
},
|
|
23
23
|
"homepage": "https://typia.io",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@typia/interface": "^12.0.0-dev.
|
|
26
|
-
"@typia/utils": "^12.0.0-dev.
|
|
25
|
+
"@typia/interface": "^12.0.0-dev.20260305",
|
|
26
|
+
"@typia/utils": "^12.0.0-dev.20260305"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
IValidation,
|
|
9
9
|
OpenApi,
|
|
10
10
|
} from "@typia/interface";
|
|
11
|
-
import { LlmSchemaConverter
|
|
11
|
+
import { LlmSchemaConverter } from "@typia/utils";
|
|
12
12
|
import ts from "typescript";
|
|
13
13
|
|
|
14
14
|
import { ITypiaContext } from "../../context/ITypiaContext";
|
|
@@ -37,10 +37,10 @@ export namespace LlmApplicationProgrammer {
|
|
|
37
37
|
metadata: MetadataSchema;
|
|
38
38
|
explore: MetadataFactory.IExplore;
|
|
39
39
|
}): string[] => {
|
|
40
|
-
|
|
40
|
+
// the class
|
|
41
41
|
if (props.explore.top === false)
|
|
42
42
|
if (
|
|
43
|
-
props.explore.object ===
|
|
43
|
+
props.explore.object === props.metadata?.objects[0]?.type &&
|
|
44
44
|
typeof props.explore.property === "string" &&
|
|
45
45
|
props.metadata.size() === 1 &&
|
|
46
46
|
props.metadata.nullable === false &&
|
|
@@ -53,17 +53,19 @@ export namespace LlmApplicationProgrammer {
|
|
|
53
53
|
);
|
|
54
54
|
else return LlmSchemaProgrammer.validate(props);
|
|
55
55
|
|
|
56
|
+
// top-level type must be a single non-nullable required object
|
|
56
57
|
const output: string[] = [];
|
|
57
|
-
const
|
|
58
|
+
const isValidType: boolean =
|
|
58
59
|
props.metadata.size() === 1 &&
|
|
59
60
|
props.metadata.objects.length === 1 &&
|
|
60
61
|
props.metadata.isRequired() === true &&
|
|
61
62
|
props.metadata.nullable === false;
|
|
62
|
-
if (
|
|
63
|
+
if (isValidType === false)
|
|
63
64
|
output.push(
|
|
64
65
|
"LLM application's generic argument must be a class/interface type.",
|
|
65
66
|
);
|
|
66
67
|
|
|
68
|
+
// validate each property of the class/interface
|
|
67
69
|
const object: MetadataObjectType | undefined =
|
|
68
70
|
props.metadata.objects[0]?.type;
|
|
69
71
|
if (object !== undefined) {
|
|
@@ -71,13 +73,13 @@ export namespace LlmApplicationProgrammer {
|
|
|
71
73
|
output.push(
|
|
72
74
|
"LLM application does not allow dynamic keys on class/interface type.",
|
|
73
75
|
);
|
|
74
|
-
let least: boolean = false;
|
|
76
|
+
let least: boolean = false; // tracks whether at least one function exists
|
|
75
77
|
for (const p of object.properties) {
|
|
76
78
|
const name: string = JSON.stringify(p.key.getSoleLiteral()!);
|
|
77
79
|
const value: MetadataSchema = p.value;
|
|
78
80
|
if (value.functions.length) {
|
|
79
81
|
least ||= true;
|
|
80
|
-
if (
|
|
82
|
+
if (isValidType === false) {
|
|
81
83
|
if (value.functions.length !== 1 || value.size() !== 1)
|
|
82
84
|
output.push(
|
|
83
85
|
`LLM application's function (${name}) type does not allow union type.`,
|
|
@@ -117,45 +119,64 @@ export namespace LlmApplicationProgrammer {
|
|
|
117
119
|
return output;
|
|
118
120
|
};
|
|
119
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Validates that a {@link MetadataSchema} represents a valid
|
|
124
|
+
* {@link ILlmSchema.IParameters} type: a single, non-nullable, non-optional
|
|
125
|
+
* object type without dynamic property keys.
|
|
126
|
+
*/
|
|
127
|
+
const validateObjectSchema = (
|
|
128
|
+
prefix: string,
|
|
129
|
+
label: string,
|
|
130
|
+
schema: MetadataSchema,
|
|
131
|
+
): string[] => {
|
|
132
|
+
const errors: string[] = [];
|
|
133
|
+
if (schema.isRequired() === false)
|
|
134
|
+
errors.push(
|
|
135
|
+
`${prefix} ${label} cannot be optional (union with undefined).`,
|
|
136
|
+
);
|
|
137
|
+
if (schema.nullable === true)
|
|
138
|
+
errors.push(`${prefix} ${label} cannot be nullable.`);
|
|
139
|
+
if (schema.size() !== 1 || schema.objects.length !== 1)
|
|
140
|
+
errors.push(`${prefix} ${label} must be a single object type.`);
|
|
141
|
+
else if (
|
|
142
|
+
schema.objects[0]!.type.properties.some(
|
|
143
|
+
(p) => p.key.isSoleLiteral() === false,
|
|
144
|
+
)
|
|
145
|
+
)
|
|
146
|
+
errors.push(`${prefix} ${label} cannot have dynamic property keys.`);
|
|
147
|
+
return errors;
|
|
148
|
+
};
|
|
149
|
+
|
|
120
150
|
const validateFunction = (name: string, func: MetadataFunction): string[] => {
|
|
121
|
-
const
|
|
151
|
+
const messages: string[] = [];
|
|
122
152
|
const prefix: string = `LLM application's function (${JSON.stringify(name)})`;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
`${prefix} return type cannot be optional (union with undefined).`,
|
|
126
|
-
);
|
|
153
|
+
|
|
154
|
+
// function name
|
|
127
155
|
if (/^[0-9]/.test(name[0] ?? "") === true)
|
|
128
|
-
|
|
156
|
+
messages.push(`${prefix} name cannot start with a number.`);
|
|
129
157
|
if (/^[a-zA-Z0-9_-]+$/.test(name) === false)
|
|
130
|
-
|
|
158
|
+
messages.push(
|
|
131
159
|
`${prefix} name must contain only alphanumeric characters, underscores, or hyphens.`,
|
|
132
160
|
);
|
|
133
161
|
if (name.length > 64)
|
|
134
|
-
|
|
162
|
+
messages.push(`${prefix} name cannot exceed 64 characters.`);
|
|
163
|
+
|
|
164
|
+
// output
|
|
165
|
+
if (func.output.size() !== 0)
|
|
166
|
+
messages.push(
|
|
167
|
+
...validateObjectSchema(prefix, "return type", func.output),
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
// parameters
|
|
135
171
|
if (func.parameters.length !== 0 && func.parameters.length !== 1)
|
|
136
|
-
|
|
172
|
+
messages.push(
|
|
137
173
|
`${prefix} must have exactly one parameter or no parameters.`,
|
|
138
174
|
);
|
|
139
|
-
if (func.parameters.length !== 0)
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
if (
|
|
145
|
-
type.objects[0]!.type.properties.some(
|
|
146
|
-
(p) => p.key.isSoleLiteral() === false,
|
|
147
|
-
)
|
|
148
|
-
)
|
|
149
|
-
output.push(`${prefix} parameter cannot have dynamic property keys.`);
|
|
150
|
-
if (type.isRequired() === false)
|
|
151
|
-
output.push(
|
|
152
|
-
`${prefix} parameter cannot be optional (union with undefined).`,
|
|
153
|
-
);
|
|
154
|
-
if (type.nullable === true)
|
|
155
|
-
output.push(`${prefix} parameter cannot be nullable.`);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return output;
|
|
175
|
+
if (func.parameters.length !== 0)
|
|
176
|
+
messages.push(
|
|
177
|
+
...validateObjectSchema(prefix, "parameter", func.parameters[0]!.type),
|
|
178
|
+
);
|
|
179
|
+
return messages;
|
|
159
180
|
};
|
|
160
181
|
|
|
161
182
|
export const write = (props: {
|
|
@@ -170,6 +191,9 @@ export namespace LlmApplicationProgrammer {
|
|
|
170
191
|
name?: string;
|
|
171
192
|
}): ILlmApplication => {
|
|
172
193
|
const metadata: MetadataSchema = MetadataSchema.unalias(props.metadata);
|
|
194
|
+
|
|
195
|
+
// collect the first parameter's MetadataParameter for each valid function,
|
|
196
|
+
// keyed by property name, for runtime validator generation
|
|
173
197
|
const functionParameters: Record<string, MetadataParameter> =
|
|
174
198
|
Object.fromEntries(
|
|
175
199
|
metadata.objects[0]!.type.properties.filter(
|
|
@@ -195,6 +219,7 @@ export namespace LlmApplicationProgrammer {
|
|
|
195
219
|
]),
|
|
196
220
|
);
|
|
197
221
|
|
|
222
|
+
// build JSON Schema application, filtering out @human-tagged parameters
|
|
198
223
|
const errorMessages: string[] = [];
|
|
199
224
|
const application: IJsonSchemaApplication<"3.1"> =
|
|
200
225
|
JsonApplicationProgrammer.write({
|
|
@@ -203,6 +228,7 @@ export namespace LlmApplicationProgrammer {
|
|
|
203
228
|
filter: (p) =>
|
|
204
229
|
p.jsDocTags.some((tag) => tag.name === "human") === false,
|
|
205
230
|
});
|
|
231
|
+
// convert each JSON Schema function to an LLM function
|
|
206
232
|
const functions: Array<ILlmFunction | null> = application.functions.map(
|
|
207
233
|
(func) =>
|
|
208
234
|
writeFunction({
|
|
@@ -216,11 +242,6 @@ export namespace LlmApplicationProgrammer {
|
|
|
216
242
|
parameter: functionParameters[func.name] ?? null,
|
|
217
243
|
}),
|
|
218
244
|
);
|
|
219
|
-
if (functions.some((func) => func === null))
|
|
220
|
-
throw new Error(
|
|
221
|
-
"Failed to write LLM application:\n\n" +
|
|
222
|
-
errorMessages.map((str) => ` - ${str}`).join("\n"),
|
|
223
|
-
);
|
|
224
245
|
return {
|
|
225
246
|
config: {
|
|
226
247
|
...LlmSchemaConverter.getConfig(props.config),
|
|
@@ -250,14 +271,15 @@ export namespace LlmApplicationProgrammer {
|
|
|
250
271
|
const config: ILlmSchema.IConfig = LlmSchemaConverter.getConfig(
|
|
251
272
|
props.config,
|
|
252
273
|
);
|
|
274
|
+
|
|
275
|
+
// convert parameters and output schemas
|
|
253
276
|
const parameters: ILlmSchema.IParameters | null = writeParameters({
|
|
254
277
|
...props,
|
|
255
278
|
config,
|
|
256
279
|
accessor: `$input.${props.function.name}.parameters`,
|
|
257
280
|
});
|
|
258
281
|
if (parameters === null) return null;
|
|
259
|
-
const output: ILlmSchema | null | undefined = writeOutput({
|
|
260
|
-
parameters,
|
|
282
|
+
const output: ILlmSchema.IParameters | null | undefined = writeOutput({
|
|
261
283
|
config,
|
|
262
284
|
components: props.components,
|
|
263
285
|
schema: props.function.output?.schema ?? null,
|
|
@@ -266,30 +288,23 @@ export namespace LlmApplicationProgrammer {
|
|
|
266
288
|
});
|
|
267
289
|
if (output === null) return null;
|
|
268
290
|
|
|
291
|
+
// fall back output description from the function metadata
|
|
269
292
|
if (
|
|
270
293
|
output &&
|
|
271
|
-
LlmTypeChecker.isReference(output) === false &&
|
|
272
294
|
output.description === undefined &&
|
|
273
295
|
!!props.function.output?.description?.length
|
|
274
296
|
)
|
|
275
297
|
output.description = props.function.output.description;
|
|
298
|
+
|
|
299
|
+
// assemble the LLM function
|
|
276
300
|
return {
|
|
277
301
|
name: props.function.name,
|
|
278
302
|
parameters,
|
|
279
303
|
output: output ?? undefined,
|
|
280
|
-
description: (
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
)
|
|
285
|
-
return props.function.summary || props.function.description;
|
|
286
|
-
const summary: string = props.function.summary.endsWith(".")
|
|
287
|
-
? props.function.summary.slice(0, -1)
|
|
288
|
-
: props.function.summary;
|
|
289
|
-
return props.function.description.startsWith(summary)
|
|
290
|
-
? props.function.description
|
|
291
|
-
: summary + ".\n\n" + props.function.description;
|
|
292
|
-
})(),
|
|
304
|
+
description: concatDescription({
|
|
305
|
+
summary: props.function.summary,
|
|
306
|
+
description: props.function.description,
|
|
307
|
+
}),
|
|
293
308
|
deprecated: props.function.deprecated,
|
|
294
309
|
tags: props.function.tags,
|
|
295
310
|
validate: writeValidator({
|
|
@@ -310,6 +325,7 @@ export namespace LlmApplicationProgrammer {
|
|
|
310
325
|
accessor: string;
|
|
311
326
|
config: ILlmSchema.IConfig;
|
|
312
327
|
}): ILlmSchema.IParameters | null => {
|
|
328
|
+
// extract the first parameter's object schema, defaulting to empty object
|
|
313
329
|
const schema: OpenApi.IJsonSchema.IObject | OpenApi.IJsonSchema.IReference =
|
|
314
330
|
(props.function.parameters[0]?.schema as
|
|
315
331
|
| OpenApi.IJsonSchema.IObject
|
|
@@ -319,42 +335,55 @@ export namespace LlmApplicationProgrammer {
|
|
|
319
335
|
additionalProperties: false,
|
|
320
336
|
required: [],
|
|
321
337
|
};
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
schema
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
description
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
if (result.success === false) {
|
|
335
|
-
props.errors.push(
|
|
336
|
-
...result.error.reasons.map((r) => ` - ${r.accessor}: ${r.message}`),
|
|
337
|
-
);
|
|
338
|
-
return null;
|
|
339
|
-
}
|
|
340
|
-
return result.value;
|
|
338
|
+
return convertParameters({
|
|
339
|
+
config: props.config,
|
|
340
|
+
components: props.components,
|
|
341
|
+
schema: {
|
|
342
|
+
...schema,
|
|
343
|
+
title: schema.title ?? props.function.parameters[0]?.title,
|
|
344
|
+
description:
|
|
345
|
+
schema.description ?? props.function.parameters[0]?.description,
|
|
346
|
+
},
|
|
347
|
+
accessor: props.accessor,
|
|
348
|
+
errors: props.errors,
|
|
349
|
+
});
|
|
341
350
|
};
|
|
342
351
|
|
|
343
352
|
const writeOutput = (props: {
|
|
344
|
-
parameters: ILlmSchema.IParameters;
|
|
345
353
|
components: OpenApi.IComponents;
|
|
346
354
|
config: ILlmSchema.IConfig;
|
|
347
355
|
schema: OpenApi.IJsonSchema | null;
|
|
348
356
|
errors: string[];
|
|
349
357
|
accessor: string;
|
|
350
|
-
}): ILlmSchema | null | undefined => {
|
|
358
|
+
}): ILlmSchema.IParameters | null | undefined => {
|
|
351
359
|
if (props.schema === null) return undefined;
|
|
352
|
-
|
|
353
|
-
|
|
360
|
+
return convertParameters({
|
|
361
|
+
config: props.config,
|
|
362
|
+
components: props.components,
|
|
363
|
+
schema: props.schema as
|
|
364
|
+
| OpenApi.IJsonSchema.IObject
|
|
365
|
+
| OpenApi.IJsonSchema.IReference,
|
|
366
|
+
accessor: props.accessor,
|
|
367
|
+
errors: props.errors,
|
|
368
|
+
});
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Converts an OpenAPI object schema to {@link ILlmSchema.IParameters},
|
|
373
|
+
* collecting transformation errors into the provided array.
|
|
374
|
+
*/
|
|
375
|
+
const convertParameters = (props: {
|
|
376
|
+
config: ILlmSchema.IConfig;
|
|
377
|
+
components: OpenApi.IComponents;
|
|
378
|
+
schema: OpenApi.IJsonSchema.IObject | OpenApi.IJsonSchema.IReference;
|
|
379
|
+
accessor: string;
|
|
380
|
+
errors: string[];
|
|
381
|
+
}): ILlmSchema.IParameters | null => {
|
|
382
|
+
const result: IResult<ILlmSchema.IParameters, IJsonSchemaTransformError> =
|
|
383
|
+
LlmSchemaConverter.parameters({
|
|
354
384
|
config: props.config,
|
|
355
385
|
components: props.components,
|
|
356
386
|
schema: props.schema,
|
|
357
|
-
$defs: (props.parameters as any).$defs,
|
|
358
387
|
accessor: props.accessor,
|
|
359
388
|
});
|
|
360
389
|
if (result.success === false) {
|
|
@@ -374,6 +403,7 @@ export namespace LlmApplicationProgrammer {
|
|
|
374
403
|
equals: boolean;
|
|
375
404
|
className?: string;
|
|
376
405
|
}): ((props: unknown) => IValidation<unknown>) => {
|
|
406
|
+
// no parameter metadata — generate a permissive `any` validator
|
|
377
407
|
if (props.parameter === null)
|
|
378
408
|
return ValidateProgrammer.write({
|
|
379
409
|
...props,
|
|
@@ -386,12 +416,13 @@ export namespace LlmApplicationProgrammer {
|
|
|
386
416
|
name: undefined,
|
|
387
417
|
}) as any;
|
|
388
418
|
|
|
389
|
-
|
|
390
|
-
if (
|
|
391
|
-
// unreachable
|
|
419
|
+
// unreachable — tsType is always set by the transformer
|
|
420
|
+
if (props.parameter.tsType === undefined)
|
|
392
421
|
throw new Error(
|
|
393
422
|
"Failed to write LLM application's function validator. You don't have to call `LlmApplicationOfValidator.write()` function by yourself, but only by the `typia.llm.applicationOfValidate()` function.",
|
|
394
423
|
);
|
|
424
|
+
|
|
425
|
+
// generate a typed validator from the parameter's TypeScript type
|
|
395
426
|
return ValidateProgrammer.write({
|
|
396
427
|
...props,
|
|
397
428
|
type: props.parameter.tsType!,
|
|
@@ -407,12 +438,18 @@ export namespace LlmApplicationProgrammer {
|
|
|
407
438
|
};
|
|
408
439
|
}
|
|
409
440
|
|
|
441
|
+
/**
|
|
442
|
+
* Concatenates summary and description into a single string.
|
|
443
|
+
*
|
|
444
|
+
* If both are present, joins them with a period and double newline, avoiding
|
|
445
|
+
* duplication when the description already starts with the summary.
|
|
446
|
+
*/
|
|
410
447
|
const concatDescription = (p: {
|
|
411
448
|
summary?: string | undefined;
|
|
412
449
|
description?: string | undefined;
|
|
413
450
|
}): string | undefined => {
|
|
414
451
|
if (!p.summary?.length || !p.description?.length)
|
|
415
|
-
return p.summary
|
|
452
|
+
return p.summary || p.description;
|
|
416
453
|
const summary: string = p.summary.endsWith(".")
|
|
417
454
|
? p.summary.slice(0, -1)
|
|
418
455
|
: p.summary;
|