typia 9.1.1 → 9.3.0-dev.20250511

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.
Files changed (553) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +149 -149
  3. package/lib/executable/setup/PluginConfigurator.js +3 -3
  4. package/lib/executable/setup/PluginConfigurator.mjs +3 -3
  5. package/lib/executable/typia.js +15 -15
  6. package/lib/executable/typia.mjs +15 -15
  7. package/lib/factories/ExpressionFactory.d.mts +1 -1
  8. package/lib/factories/ExpressionFactory.d.ts +1 -1
  9. package/lib/factories/ExpressionFactory.js +2 -2
  10. package/lib/factories/ExpressionFactory.js.map +1 -1
  11. package/lib/factories/ExpressionFactory.mjs +2 -2
  12. package/lib/internal/_createStandardSchema.d.mts +3 -0
  13. package/lib/internal/_createStandardSchema.d.ts +3 -0
  14. package/lib/internal/_createStandardSchema.js +135 -0
  15. package/lib/internal/_createStandardSchema.js.map +1 -0
  16. package/lib/internal/_createStandardSchema.mjs +133 -0
  17. package/lib/internal/_createStandardSchema.mjs.map +1 -0
  18. package/lib/llm.d.mts +6 -4
  19. package/lib/llm.d.ts +6 -4
  20. package/lib/llm.js +7 -0
  21. package/lib/llm.js.map +1 -1
  22. package/lib/llm.mjs +7 -1
  23. package/lib/module.d.mts +3 -2
  24. package/lib/module.d.ts +3 -2
  25. package/lib/module.js.map +1 -1
  26. package/lib/programmers/FeatureProgrammer.d.mts +1 -0
  27. package/lib/programmers/FeatureProgrammer.d.ts +1 -0
  28. package/lib/programmers/FeatureProgrammer.js +3 -1
  29. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  30. package/lib/programmers/FeatureProgrammer.mjs +3 -1
  31. package/lib/programmers/ValidateProgrammer.d.mts +1 -0
  32. package/lib/programmers/ValidateProgrammer.d.ts +1 -0
  33. package/lib/programmers/ValidateProgrammer.js +3 -0
  34. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  35. package/lib/programmers/ValidateProgrammer.mjs +3 -0
  36. package/lib/transformers/CallExpressionTransformer.js +10 -2
  37. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  38. package/lib/transformers/CallExpressionTransformer.mjs +10 -2
  39. package/lib/transformers/features/llm/LlmApplicationTransformer.js +46 -35
  40. package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
  41. package/lib/transformers/features/llm/LlmApplicationTransformer.mjs +44 -34
  42. package/lib/transformers/features/llm/LlmControllerTransformer.d.mts +5 -0
  43. package/lib/transformers/features/llm/LlmControllerTransformer.d.ts +5 -0
  44. package/lib/transformers/features/llm/LlmControllerTransformer.js +67 -0
  45. package/lib/transformers/features/llm/LlmControllerTransformer.js.map +1 -0
  46. package/lib/transformers/features/llm/LlmControllerTransformer.mjs +63 -0
  47. package/lib/transformers/features/llm/LlmControllerTransformer.mjs.map +1 -0
  48. package/package.json +6 -4
  49. package/src/AssertionGuard.ts +1 -1
  50. package/src/CamelCase.ts +75 -75
  51. package/src/IRandomGenerator.ts +49 -49
  52. package/src/IReadableURLSearchParams.ts +9 -9
  53. package/src/IValidation.ts +1 -1
  54. package/src/PascalCase.ts +71 -71
  55. package/src/Primitive.ts +92 -92
  56. package/src/Resolved.ts +74 -74
  57. package/src/SnakeCase.ts +126 -126
  58. package/src/TypeGuardError.ts +37 -37
  59. package/src/executable/TypiaGenerateWizard.ts +83 -83
  60. package/src/executable/TypiaPatchWizard.ts +45 -45
  61. package/src/executable/TypiaSetupWizard.ts +171 -171
  62. package/src/executable/setup/ArgumentParser.ts +42 -42
  63. package/src/executable/setup/CommandExecutor.ts +8 -8
  64. package/src/executable/setup/FileRetriever.ts +19 -19
  65. package/src/executable/setup/PackageManager.ts +87 -87
  66. package/src/executable/setup/PluginConfigurator.ts +69 -69
  67. package/src/executable/typia.ts +55 -55
  68. package/src/factories/CommentFactory.ts +79 -79
  69. package/src/factories/ExpressionFactory.ts +219 -216
  70. package/src/factories/IdentifierFactory.ts +89 -89
  71. package/src/factories/JsonMetadataFactory.ts +83 -83
  72. package/src/factories/LiteralFactory.ts +52 -52
  73. package/src/factories/MetadataCollection.ts +278 -278
  74. package/src/factories/MetadataCommentTagFactory.ts +648 -648
  75. package/src/factories/MetadataFactory.ts +404 -404
  76. package/src/factories/MetadataTypeTagFactory.ts +413 -413
  77. package/src/factories/MetadataTypeTagSchemaFactory.ts +82 -82
  78. package/src/factories/NumericRangeFactory.ts +72 -72
  79. package/src/factories/ProtobufFactory.ts +875 -875
  80. package/src/factories/StatementFactory.ts +90 -90
  81. package/src/factories/TemplateFactory.ts +64 -64
  82. package/src/factories/TypeFactory.ts +140 -140
  83. package/src/factories/ValueFactory.ts +12 -12
  84. package/src/factories/internal/metadata/IMetadataIteratorProps.ts +17 -17
  85. package/src/factories/internal/metadata/MetadataHelper.ts +21 -21
  86. package/src/factories/internal/metadata/emend_metadata_atomics.ts +45 -45
  87. package/src/factories/internal/metadata/emplace_metadata_alias.ts +33 -33
  88. package/src/factories/internal/metadata/emplace_metadata_array_type.ts +39 -39
  89. package/src/factories/internal/metadata/emplace_metadata_object.ts +212 -212
  90. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +57 -57
  91. package/src/factories/internal/metadata/explore_metadata.ts +31 -31
  92. package/src/factories/internal/metadata/iterate_metadata.ts +54 -54
  93. package/src/factories/internal/metadata/iterate_metadata_alias.ts +33 -33
  94. package/src/factories/internal/metadata/iterate_metadata_array.ts +63 -63
  95. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +62 -62
  96. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +28 -28
  97. package/src/factories/internal/metadata/iterate_metadata_collection.ts +146 -146
  98. package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +32 -32
  99. package/src/factories/internal/metadata/iterate_metadata_constant.ts +76 -76
  100. package/src/factories/internal/metadata/iterate_metadata_escape.ts +49 -49
  101. package/src/factories/internal/metadata/iterate_metadata_function.ts +91 -91
  102. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +212 -212
  103. package/src/factories/internal/metadata/iterate_metadata_map.ts +57 -57
  104. package/src/factories/internal/metadata/iterate_metadata_native.ts +264 -264
  105. package/src/factories/internal/metadata/iterate_metadata_object.ts +35 -35
  106. package/src/factories/internal/metadata/iterate_metadata_set.ts +57 -57
  107. package/src/factories/internal/metadata/iterate_metadata_sort.ts +87 -87
  108. package/src/factories/internal/metadata/iterate_metadata_template.ts +41 -41
  109. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +26 -26
  110. package/src/factories/internal/metadata/iterate_metadata_union.ts +19 -19
  111. package/src/functional.ts +740 -740
  112. package/src/http.ts +1040 -1040
  113. package/src/index.ts +4 -4
  114. package/src/internal/_IProtobufWriter.ts +18 -18
  115. package/src/internal/_ProtobufReader.ts +194 -194
  116. package/src/internal/_ProtobufSizer.ts +145 -145
  117. package/src/internal/_ProtobufWriter.ts +145 -145
  118. package/src/internal/_accessExpressionAsString.ts +46 -46
  119. package/src/internal/_assertGuard.ts +13 -13
  120. package/src/internal/_createStandardSchema.ts +134 -0
  121. package/src/internal/_functionalTypeGuardErrorFactory.ts +4 -4
  122. package/src/internal/_httpFormDataReadArray.ts +4 -4
  123. package/src/internal/_httpFormDataReadBigint.ts +18 -18
  124. package/src/internal/_httpFormDataReadBlob.ts +10 -10
  125. package/src/internal/_httpFormDataReadBoolean.ts +16 -16
  126. package/src/internal/_httpFormDataReadFile.ts +10 -10
  127. package/src/internal/_httpFormDataReadNumber.ts +15 -15
  128. package/src/internal/_httpFormDataReadString.ts +10 -10
  129. package/src/internal/_httpHeaderReadBigint.ts +10 -10
  130. package/src/internal/_httpHeaderReadBoolean.ts +8 -8
  131. package/src/internal/_httpHeaderReadNumber.ts +7 -7
  132. package/src/internal/_httpParameterReadBigint.ts +10 -10
  133. package/src/internal/_httpParameterReadBoolean.ts +8 -8
  134. package/src/internal/_httpParameterReadNumber.ts +7 -7
  135. package/src/internal/_httpParameterReadString.ts +2 -2
  136. package/src/internal/_httpQueryParseURLSearchParams.ts +12 -12
  137. package/src/internal/_httpQueryReadArray.ts +4 -4
  138. package/src/internal/_httpQueryReadBigint.ts +12 -12
  139. package/src/internal/_httpQueryReadBoolean.ts +14 -14
  140. package/src/internal/_httpQueryReadNumber.ts +9 -9
  141. package/src/internal/_httpQueryReadString.ts +4 -4
  142. package/src/internal/_isBetween.ts +2 -2
  143. package/src/internal/_isBigintString.ts +8 -8
  144. package/src/internal/_isFormatByte.ts +7 -7
  145. package/src/internal/_isFormatDate.ts +3 -3
  146. package/src/internal/_isFormatDateTime.ts +4 -4
  147. package/src/internal/_isFormatDuration.ts +4 -4
  148. package/src/internal/_isFormatEmail.ts +4 -4
  149. package/src/internal/_isFormatHostname.ts +4 -4
  150. package/src/internal/_isFormatIdnEmail.ts +4 -4
  151. package/src/internal/_isFormatIdnHostname.ts +4 -4
  152. package/src/internal/_isFormatIpv4.ts +4 -4
  153. package/src/internal/_isFormatIpv6.ts +4 -4
  154. package/src/internal/_isFormatIri.ts +3 -3
  155. package/src/internal/_isFormatIriReference.ts +4 -4
  156. package/src/internal/_isFormatJsonPointer.ts +3 -3
  157. package/src/internal/_isFormatPassword.ts +1 -1
  158. package/src/internal/_isFormatRegex.ts +8 -8
  159. package/src/internal/_isFormatRelativeJsonPointer.ts +4 -4
  160. package/src/internal/_isFormatTime.ts +4 -4
  161. package/src/internal/_isFormatUri.ts +6 -6
  162. package/src/internal/_isFormatUriReference.ts +5 -5
  163. package/src/internal/_isFormatUriTemplate.ts +4 -4
  164. package/src/internal/_isFormatUrl.ts +4 -4
  165. package/src/internal/_isFormatUuid.ts +3 -3
  166. package/src/internal/_isTypeFloat.ts +5 -5
  167. package/src/internal/_isTypeInt32.ts +5 -5
  168. package/src/internal/_isTypeInt64.ts +5 -5
  169. package/src/internal/_isTypeUint32.ts +5 -5
  170. package/src/internal/_isTypeUint64.ts +5 -5
  171. package/src/internal/_isUniqueItems.ts +159 -159
  172. package/src/internal/_jsonStringifyNumber.ts +12 -12
  173. package/src/internal/_jsonStringifyRest.ts +3 -3
  174. package/src/internal/_jsonStringifyString.ts +42 -42
  175. package/src/internal/_jsonStringifyTail.ts +2 -2
  176. package/src/internal/_llmApplicationFinalize.ts +20 -20
  177. package/src/internal/_miscCloneAny.ts +46 -46
  178. package/src/internal/_notationAny.ts +37 -37
  179. package/src/internal/_notationCamel.ts +13 -13
  180. package/src/internal/_notationPascal.ts +8 -8
  181. package/src/internal/_notationSnake.ts +43 -43
  182. package/src/internal/_randomArray.ts +21 -21
  183. package/src/internal/_randomBigint.ts +6 -6
  184. package/src/internal/_randomBoolean.ts +1 -1
  185. package/src/internal/_randomFormatByte.ts +3 -3
  186. package/src/internal/_randomFormatDate.ts +18 -18
  187. package/src/internal/_randomFormatDatetime.ts +16 -16
  188. package/src/internal/_randomFormatDuration.ts +27 -27
  189. package/src/internal/_randomFormatEmail.ts +11 -11
  190. package/src/internal/_randomFormatHostname.ts +6 -6
  191. package/src/internal/_randomFormatIdnEmail.ts +3 -3
  192. package/src/internal/_randomFormatIdnHostname.ts +3 -3
  193. package/src/internal/_randomFormatIpv4.ts +11 -11
  194. package/src/internal/_randomFormatIpv6.ts +11 -11
  195. package/src/internal/_randomFormatIri.ts +3 -3
  196. package/src/internal/_randomFormatIriReference.ts +3 -3
  197. package/src/internal/_randomFormatJsonPointer.ts +7 -7
  198. package/src/internal/_randomFormatPassword.ts +8 -8
  199. package/src/internal/_randomFormatRegex.ts +4 -4
  200. package/src/internal/_randomFormatRelativeJsonPointer.ts +8 -8
  201. package/src/internal/_randomFormatTime.ts +14 -14
  202. package/src/internal/_randomFormatUri.ts +3 -3
  203. package/src/internal/_randomFormatUriReference.ts +3 -3
  204. package/src/internal/_randomFormatUriTemplate.ts +3 -3
  205. package/src/internal/_randomFormatUrl.ts +11 -11
  206. package/src/internal/_randomFormatUuid.ts +6 -6
  207. package/src/internal/_randomInteger.ts +53 -53
  208. package/src/internal/_randomNumber.ts +80 -80
  209. package/src/internal/_randomPattern.ts +10 -10
  210. package/src/internal/_randomPick.ts +9 -9
  211. package/src/internal/_randomString.ts +24 -24
  212. package/src/internal/_throwTypeGuardError.ts +5 -5
  213. package/src/internal/_validateReport.ts +13 -13
  214. package/src/internal/private/__notationCapitalize.ts +2 -2
  215. package/src/internal/private/__notationUnsnake.ts +24 -24
  216. package/src/json.ts +696 -696
  217. package/src/llm.ts +358 -335
  218. package/src/misc.ts +651 -651
  219. package/src/module.ts +936 -929
  220. package/src/notations.ts +820 -820
  221. package/src/programmers/AssertProgrammer.ts +454 -454
  222. package/src/programmers/CheckerProgrammer.ts +1617 -1617
  223. package/src/programmers/FeatureProgrammer.ts +627 -622
  224. package/src/programmers/ImportProgrammer.ts +185 -185
  225. package/src/programmers/IsProgrammer.ts +273 -273
  226. package/src/programmers/RandomProgrammer.ts +1190 -1190
  227. package/src/programmers/TypiaProgrammer.ts +175 -175
  228. package/src/programmers/ValidateProgrammer.ts +448 -439
  229. package/src/programmers/functional/FunctionalAssertFunctionProgrammer.ts +153 -153
  230. package/src/programmers/functional/FunctionalAssertParametersProgrammer.ts +125 -125
  231. package/src/programmers/functional/FunctionalAssertReturnProgrammer.ts +115 -115
  232. package/src/programmers/functional/FunctionalIsFunctionProgrammer.ts +72 -72
  233. package/src/programmers/functional/FunctionalIsParametersProgrammer.ts +113 -113
  234. package/src/programmers/functional/FunctionalIsReturnProgrammer.ts +116 -116
  235. package/src/programmers/functional/FunctionalValidateFunctionProgrammer.ts +119 -119
  236. package/src/programmers/functional/FunctionalValidateParametersProgrammer.ts +274 -274
  237. package/src/programmers/functional/FunctionalValidateReturnProgrammer.ts +135 -135
  238. package/src/programmers/functional/internal/FunctionalGeneralProgrammer.ts +34 -34
  239. package/src/programmers/helpers/AtomicPredicator.ts +35 -35
  240. package/src/programmers/helpers/CloneJoiner.ts +143 -143
  241. package/src/programmers/helpers/FunctionProgrammer.ts +67 -67
  242. package/src/programmers/helpers/HttpMetadataUtil.ts +21 -21
  243. package/src/programmers/helpers/ICheckEntry.ts +13 -13
  244. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  245. package/src/programmers/helpers/NotationJoiner.ts +144 -144
  246. package/src/programmers/helpers/OptionPredicator.ts +15 -15
  247. package/src/programmers/helpers/ProtobufUtil.ts +228 -228
  248. package/src/programmers/helpers/ProtobufWire.ts +34 -34
  249. package/src/programmers/helpers/PruneJoiner.ts +148 -148
  250. package/src/programmers/helpers/RandomJoiner.ts +168 -168
  251. package/src/programmers/helpers/StringifyJoinder.ts +115 -115
  252. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  253. package/src/programmers/helpers/UnionExplorer.ts +372 -372
  254. package/src/programmers/helpers/UnionPredicator.ts +79 -79
  255. package/src/programmers/helpers/disable_function_programmer_declare.ts +32 -32
  256. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +99 -99
  257. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +99 -99
  258. package/src/programmers/http/HttpAssertQueryProgrammer.ts +105 -105
  259. package/src/programmers/http/HttpFormDataProgrammer.ts +308 -308
  260. package/src/programmers/http/HttpHeadersProgrammer.ts +400 -400
  261. package/src/programmers/http/HttpIsFormDataProgrammer.ts +108 -108
  262. package/src/programmers/http/HttpIsHeadersProgrammer.ts +108 -108
  263. package/src/programmers/http/HttpIsQueryProgrammer.ts +114 -114
  264. package/src/programmers/http/HttpParameterProgrammer.ts +115 -115
  265. package/src/programmers/http/HttpQueryProgrammer.ts +336 -336
  266. package/src/programmers/http/HttpValidateFormDataProgrammer.ts +92 -92
  267. package/src/programmers/http/HttpValidateHeadersProgrammer.ts +92 -92
  268. package/src/programmers/http/HttpValidateQueryProgrammer.ts +98 -98
  269. package/src/programmers/internal/check_array_length.ts +47 -47
  270. package/src/programmers/internal/check_bigint.ts +50 -50
  271. package/src/programmers/internal/check_dynamic_key.ts +201 -201
  272. package/src/programmers/internal/check_dynamic_properties.ts +208 -208
  273. package/src/programmers/internal/check_everything.ts +23 -23
  274. package/src/programmers/internal/check_native.ts +27 -27
  275. package/src/programmers/internal/check_number.ts +112 -112
  276. package/src/programmers/internal/check_object.ts +75 -75
  277. package/src/programmers/internal/check_string.ts +50 -50
  278. package/src/programmers/internal/check_template.ts +48 -48
  279. package/src/programmers/internal/check_union_array_like.ts +335 -335
  280. package/src/programmers/internal/decode_union_object.ts +116 -116
  281. package/src/programmers/internal/feature_object_entries.ts +61 -61
  282. package/src/programmers/internal/json_schema_alias.ts +47 -47
  283. package/src/programmers/internal/json_schema_array.ts +45 -45
  284. package/src/programmers/internal/json_schema_bigint.ts +15 -15
  285. package/src/programmers/internal/json_schema_boolean.ts +15 -15
  286. package/src/programmers/internal/json_schema_constant.ts +26 -26
  287. package/src/programmers/internal/json_schema_description.ts +12 -12
  288. package/src/programmers/internal/json_schema_discriminator.ts +35 -35
  289. package/src/programmers/internal/json_schema_escaped.ts +82 -82
  290. package/src/programmers/internal/json_schema_native.ts +33 -33
  291. package/src/programmers/internal/json_schema_number.ts +15 -15
  292. package/src/programmers/internal/json_schema_object.ts +158 -158
  293. package/src/programmers/internal/json_schema_plugin.ts +18 -18
  294. package/src/programmers/internal/json_schema_station.ts +185 -185
  295. package/src/programmers/internal/json_schema_string.ts +15 -15
  296. package/src/programmers/internal/json_schema_template.ts +55 -55
  297. package/src/programmers/internal/json_schema_title.ts +20 -20
  298. package/src/programmers/internal/json_schema_tuple.ts +35 -35
  299. package/src/programmers/internal/metadata_to_pattern.ts +42 -42
  300. package/src/programmers/internal/postfix_of_tuple.ts +5 -5
  301. package/src/programmers/internal/prune_object_properties.ts +71 -71
  302. package/src/programmers/internal/stringify_dynamic_properties.ts +162 -162
  303. package/src/programmers/internal/stringify_native.ts +7 -7
  304. package/src/programmers/internal/stringify_regular_properties.ts +81 -81
  305. package/src/programmers/internal/template_to_pattern.ts +23 -23
  306. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +23 -23
  307. package/src/programmers/json/JsonApplicationProgrammer.ts +266 -266
  308. package/src/programmers/json/JsonAssertParseProgrammer.ts +113 -113
  309. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +115 -115
  310. package/src/programmers/json/JsonIsParseProgrammer.ts +114 -114
  311. package/src/programmers/json/JsonIsStringifyProgrammer.ts +108 -108
  312. package/src/programmers/json/JsonSchemaProgrammer.ts +26 -26
  313. package/src/programmers/json/JsonSchemasProgrammer.ts +91 -91
  314. package/src/programmers/json/JsonStringifyProgrammer.ts +1124 -1124
  315. package/src/programmers/json/JsonValidateParseProgrammer.ts +105 -105
  316. package/src/programmers/json/JsonValidateStringifyProgrammer.ts +124 -124
  317. package/src/programmers/llm/LlmApplicationProgrammer.ts +401 -401
  318. package/src/programmers/llm/LlmModelPredicator.ts +127 -127
  319. package/src/programmers/llm/LlmParametersProgrammer.ts +93 -93
  320. package/src/programmers/llm/LlmSchemaProgrammer.ts +192 -192
  321. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +95 -95
  322. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +116 -116
  323. package/src/programmers/misc/MiscCloneProgrammer.ts +1032 -1032
  324. package/src/programmers/misc/MiscIsCloneProgrammer.ts +99 -99
  325. package/src/programmers/misc/MiscIsPruneProgrammer.ts +97 -97
  326. package/src/programmers/misc/MiscLiteralsProgrammer.ts +80 -80
  327. package/src/programmers/misc/MiscPruneProgrammer.ts +728 -728
  328. package/src/programmers/misc/MiscValidateCloneProgrammer.ts +111 -111
  329. package/src/programmers/misc/MiscValidatePruneProgrammer.ts +113 -113
  330. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +101 -101
  331. package/src/programmers/notations/NotationGeneralProgrammer.ts +984 -984
  332. package/src/programmers/notations/NotationIsGeneralProgrammer.ts +105 -105
  333. package/src/programmers/notations/NotationValidateGeneralProgrammer.ts +119 -119
  334. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +98 -98
  335. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +102 -102
  336. package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +654 -654
  337. package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +945 -945
  338. package/src/programmers/protobuf/ProtobufIsDecodeProgrammer.ts +109 -109
  339. package/src/programmers/protobuf/ProtobufIsEncodeProgrammer.ts +98 -98
  340. package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +179 -179
  341. package/src/programmers/protobuf/ProtobufValidateDecodeProgrammer.ts +92 -92
  342. package/src/programmers/protobuf/ProtobufValidateEncodeProgrammer.ts +119 -119
  343. package/src/protobuf.ts +861 -861
  344. package/src/reflect.ts +50 -50
  345. package/src/schemas/json/IJsonApplication.ts +73 -73
  346. package/src/schemas/json/IJsonSchemaCollection.ts +29 -29
  347. package/src/schemas/json/IJsonSchemaUnit.ts +32 -32
  348. package/src/schemas/json/__IJsonApplication.ts +63 -63
  349. package/src/schemas/metadata/IJsDocTagInfo.ts +10 -10
  350. package/src/schemas/metadata/IMetadata.ts +35 -35
  351. package/src/schemas/metadata/IMetadataAlias.ts +6 -6
  352. package/src/schemas/metadata/IMetadataAliasType.ts +12 -12
  353. package/src/schemas/metadata/IMetadataApplication.ts +7 -7
  354. package/src/schemas/metadata/IMetadataArray.ts +6 -6
  355. package/src/schemas/metadata/IMetadataArrayType.ts +10 -10
  356. package/src/schemas/metadata/IMetadataAtomic.ts +6 -6
  357. package/src/schemas/metadata/IMetadataComponents.ts +11 -11
  358. package/src/schemas/metadata/IMetadataConstant.ts +18 -18
  359. package/src/schemas/metadata/IMetadataConstantValue.ts +11 -11
  360. package/src/schemas/metadata/IMetadataDictionary.ts +11 -11
  361. package/src/schemas/metadata/IMetadataEscaped.ts +6 -6
  362. package/src/schemas/metadata/IMetadataFunction.ts +8 -8
  363. package/src/schemas/metadata/IMetadataMap.ts +8 -8
  364. package/src/schemas/metadata/IMetadataNative.ts +6 -6
  365. package/src/schemas/metadata/IMetadataObject.ts +6 -6
  366. package/src/schemas/metadata/IMetadataObjectType.ts +13 -13
  367. package/src/schemas/metadata/IMetadataParameter.ts +9 -9
  368. package/src/schemas/metadata/IMetadataProperty.ts +9 -9
  369. package/src/schemas/metadata/IMetadataSet.ts +7 -7
  370. package/src/schemas/metadata/IMetadataTemplate.ts +7 -7
  371. package/src/schemas/metadata/IMetadataTuple.ts +6 -6
  372. package/src/schemas/metadata/IMetadataTupleType.ts +10 -10
  373. package/src/schemas/metadata/IMetadataTypeTag.ts +16 -16
  374. package/src/schemas/metadata/Metadata.ts +687 -687
  375. package/src/schemas/metadata/MetadataAlias.ts +46 -46
  376. package/src/schemas/metadata/MetadataAliasType.ts +63 -63
  377. package/src/schemas/metadata/MetadataApplication.ts +44 -44
  378. package/src/schemas/metadata/MetadataArray.ts +49 -49
  379. package/src/schemas/metadata/MetadataArrayType.ts +57 -57
  380. package/src/schemas/metadata/MetadataAtomic.ts +87 -87
  381. package/src/schemas/metadata/MetadataComponents.ts +98 -98
  382. package/src/schemas/metadata/MetadataConstant.ts +34 -34
  383. package/src/schemas/metadata/MetadataConstantValue.ts +62 -62
  384. package/src/schemas/metadata/MetadataEscaped.ts +51 -51
  385. package/src/schemas/metadata/MetadataFunction.ts +49 -49
  386. package/src/schemas/metadata/MetadataMap.ts +48 -48
  387. package/src/schemas/metadata/MetadataNative.ts +44 -44
  388. package/src/schemas/metadata/MetadataObject.ts +48 -48
  389. package/src/schemas/metadata/MetadataObjectType.ts +149 -149
  390. package/src/schemas/metadata/MetadataParameter.ts +54 -54
  391. package/src/schemas/metadata/MetadataProperty.ts +59 -59
  392. package/src/schemas/metadata/MetadataSet.ts +45 -45
  393. package/src/schemas/metadata/MetadataTemplate.ts +80 -80
  394. package/src/schemas/metadata/MetadataTuple.ts +32 -32
  395. package/src/schemas/metadata/MetadataTupleType.ts +67 -67
  396. package/src/schemas/protobuf/IProtobufProperty.ts +6 -6
  397. package/src/schemas/protobuf/IProtobufPropertyType.ts +37 -37
  398. package/src/schemas/protobuf/IProtobufSchema.ts +50 -50
  399. package/src/tags/Constant.ts +15 -15
  400. package/src/tags/ContentMediaType.ts +10 -10
  401. package/src/tags/Default.ts +22 -22
  402. package/src/tags/Example.ts +24 -24
  403. package/src/tags/Examples.ts +16 -16
  404. package/src/tags/ExclusiveMaximum.ts +23 -23
  405. package/src/tags/ExclusiveMinimum.ts +23 -23
  406. package/src/tags/Format.ts +50 -50
  407. package/src/tags/JsonSchemaPlugin.ts +8 -8
  408. package/src/tags/MaxItems.ts +12 -12
  409. package/src/tags/MaxLength.ts +12 -12
  410. package/src/tags/Maximum.ts +19 -19
  411. package/src/tags/MinItems.ts +12 -12
  412. package/src/tags/MinLength.ts +12 -12
  413. package/src/tags/Minimum.ts +19 -19
  414. package/src/tags/MultipleOf.ts +21 -21
  415. package/src/tags/Pattern.ts +31 -31
  416. package/src/tags/Sequence.ts +10 -10
  417. package/src/tags/TagBase.ts +82 -82
  418. package/src/tags/Type.ts +37 -37
  419. package/src/tags/UniqueItems.ts +14 -14
  420. package/src/tags/index.ts +21 -21
  421. package/src/tags/internal/FormatCheatSheet.ts +73 -73
  422. package/src/transform.ts +35 -35
  423. package/src/transformers/CallExpressionTransformer.ts +554 -546
  424. package/src/transformers/FileTransformer.ts +136 -136
  425. package/src/transformers/IProgrammerProps.ts +11 -11
  426. package/src/transformers/ITransformOptions.ts +62 -62
  427. package/src/transformers/ITransformProps.ts +9 -9
  428. package/src/transformers/ITypiaContext.ts +18 -18
  429. package/src/transformers/ImportTransformer.ts +81 -81
  430. package/src/transformers/NoTransformConfigurationError.ts +18 -18
  431. package/src/transformers/NodeTransformer.ts +17 -17
  432. package/src/transformers/TransformerError.ts +60 -60
  433. package/src/transformers/features/AssertTransformer.ts +24 -24
  434. package/src/transformers/features/CreateAssertTransformer.ts +24 -24
  435. package/src/transformers/features/CreateIsTransformer.ts +18 -18
  436. package/src/transformers/features/CreateRandomTransformer.ts +43 -43
  437. package/src/transformers/features/CreateValidateTransformer.ts +18 -18
  438. package/src/transformers/features/IsTransformer.ts +18 -18
  439. package/src/transformers/features/RandomTransformer.ts +41 -41
  440. package/src/transformers/features/ValidateTransformer.ts +18 -18
  441. package/src/transformers/features/functional/FunctionalGenericTransformer.ts +57 -57
  442. package/src/transformers/features/http/CreateHttpAssertFormDataTransformer.ts +13 -13
  443. package/src/transformers/features/http/CreateHttpAssertHeadersTransformer.ts +13 -13
  444. package/src/transformers/features/http/CreateHttpAssertQueryTransformer.ts +13 -13
  445. package/src/transformers/features/http/CreateHttpFormDataTransformer.ts +13 -13
  446. package/src/transformers/features/http/CreateHttpHeadersTransformer.ts +13 -13
  447. package/src/transformers/features/http/CreateHttpIsFormDataTransformer.ts +13 -13
  448. package/src/transformers/features/http/CreateHttpIsHeadersTransformer.ts +13 -13
  449. package/src/transformers/features/http/CreateHttpIsQueryTransformer.ts +13 -13
  450. package/src/transformers/features/http/CreateHttpParameterTransformer.ts +13 -13
  451. package/src/transformers/features/http/CreateHttpQueryTransformer.ts +13 -13
  452. package/src/transformers/features/http/CreateHttpValidateFormDataTransformer.ts +13 -13
  453. package/src/transformers/features/http/CreateHttpValidateHeadersTransformer.ts +13 -13
  454. package/src/transformers/features/http/CreateHttpValidateQueryTransformer.ts +13 -13
  455. package/src/transformers/features/http/HttpAssertFormDataTransformer.ts +13 -13
  456. package/src/transformers/features/http/HttpAssertHeadersTransformer.ts +13 -13
  457. package/src/transformers/features/http/HttpAssertQueryTransformer.ts +13 -13
  458. package/src/transformers/features/http/HttpFormDataTransformer.ts +13 -13
  459. package/src/transformers/features/http/HttpHeadersTransformer.ts +13 -13
  460. package/src/transformers/features/http/HttpIsFormDataTransformer.ts +13 -13
  461. package/src/transformers/features/http/HttpIsHeadersTransformer.ts +13 -13
  462. package/src/transformers/features/http/HttpIsQueryTransformer.ts +13 -13
  463. package/src/transformers/features/http/HttpParameterTransformer.ts +13 -13
  464. package/src/transformers/features/http/HttpQueryTransformer.ts +13 -13
  465. package/src/transformers/features/http/HttpValidateFormDataTransformer.ts +13 -13
  466. package/src/transformers/features/http/HttpValidateHeadersTransformer.ts +13 -13
  467. package/src/transformers/features/http/HttpValidateQueryTransformer.ts +13 -13
  468. package/src/transformers/features/json/JsonApplicationTransformer.ts +105 -105
  469. package/src/transformers/features/json/JsonAssertParseTransformer.ts +13 -13
  470. package/src/transformers/features/json/JsonAssertStringifyTransformer.ts +13 -13
  471. package/src/transformers/features/json/JsonCreateAssertParseTransformer.ts +13 -13
  472. package/src/transformers/features/json/JsonCreateAssertStringifyTransformer.ts +13 -13
  473. package/src/transformers/features/json/JsonCreateIsParseTransformer.ts +13 -13
  474. package/src/transformers/features/json/JsonCreateIsStringifyTransformer.ts +13 -13
  475. package/src/transformers/features/json/JsonCreateStringifyTransformer.ts +13 -13
  476. package/src/transformers/features/json/JsonCreateValidateParseTransformer.ts +13 -13
  477. package/src/transformers/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -13
  478. package/src/transformers/features/json/JsonIsParseTransformer.ts +13 -13
  479. package/src/transformers/features/json/JsonIsStringifyTransformer.ts +13 -13
  480. package/src/transformers/features/json/JsonSchemaTransformer.ts +135 -135
  481. package/src/transformers/features/json/JsonSchemasTransformer.ts +145 -145
  482. package/src/transformers/features/json/JsonStringifyTransformer.ts +13 -13
  483. package/src/transformers/features/json/JsonValidateParseTransformer.ts +13 -13
  484. package/src/transformers/features/json/JsonValidateStringifyTransformer.ts +13 -13
  485. package/src/transformers/features/llm/LlmApplicationTransformer.ts +145 -128
  486. package/src/transformers/features/llm/LlmControllerTransformer.ts +93 -0
  487. package/src/transformers/features/llm/LlmParametersTransformer.ts +102 -102
  488. package/src/transformers/features/llm/LlmSchemaTransformer.ts +170 -170
  489. package/src/transformers/features/misc/MiscAssertCloneTransformer.ts +13 -13
  490. package/src/transformers/features/misc/MiscAssertPruneTransformer.ts +13 -13
  491. package/src/transformers/features/misc/MiscCloneTransformer.ts +13 -13
  492. package/src/transformers/features/misc/MiscCreateAssertCloneTransformer.ts +13 -13
  493. package/src/transformers/features/misc/MiscCreateAssertPruneTransformer.ts +13 -13
  494. package/src/transformers/features/misc/MiscCreateCloneTransformer.ts +13 -13
  495. package/src/transformers/features/misc/MiscCreateIsCloneTransformer.ts +13 -13
  496. package/src/transformers/features/misc/MiscCreateIsPruneTransformer.ts +13 -13
  497. package/src/transformers/features/misc/MiscCreatePruneTransformer.ts +13 -13
  498. package/src/transformers/features/misc/MiscCreateValidateCloneTransformer.ts +13 -13
  499. package/src/transformers/features/misc/MiscCreateValidatePruneTransformer.ts +13 -13
  500. package/src/transformers/features/misc/MiscIsCloneTransformer.ts +13 -13
  501. package/src/transformers/features/misc/MiscIsPruneTransformer.ts +13 -13
  502. package/src/transformers/features/misc/MiscLiteralsTransformer.ts +35 -35
  503. package/src/transformers/features/misc/MiscPruneTransformer.ts +13 -13
  504. package/src/transformers/features/misc/MiscValidateCloneTransformer.ts +13 -13
  505. package/src/transformers/features/misc/MiscValidatePruneTransformer.ts +13 -13
  506. package/src/transformers/features/notations/NotationAssertGeneralTransformer.ts +20 -20
  507. package/src/transformers/features/notations/NotationCreateAssertGeneralTransformer.ts +20 -20
  508. package/src/transformers/features/notations/NotationCreateGeneralTransformer.ts +20 -20
  509. package/src/transformers/features/notations/NotationCreateIsGeneralTransformer.ts +20 -20
  510. package/src/transformers/features/notations/NotationCreateValidateGeneralTransformer.ts +20 -20
  511. package/src/transformers/features/notations/NotationGeneralTransformer.ts +18 -18
  512. package/src/transformers/features/notations/NotationIsGeneralTransformer.ts +20 -20
  513. package/src/transformers/features/notations/NotationValidateGeneralTransformer.ts +20 -20
  514. package/src/transformers/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -13
  515. package/src/transformers/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -13
  516. package/src/transformers/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -13
  517. package/src/transformers/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -13
  518. package/src/transformers/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -13
  519. package/src/transformers/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -13
  520. package/src/transformers/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -13
  521. package/src/transformers/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -13
  522. package/src/transformers/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -13
  523. package/src/transformers/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -13
  524. package/src/transformers/features/protobuf/ProtobufDecodeTransformer.ts +13 -13
  525. package/src/transformers/features/protobuf/ProtobufEncodeTransformer.ts +13 -13
  526. package/src/transformers/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -13
  527. package/src/transformers/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -13
  528. package/src/transformers/features/protobuf/ProtobufMessageTransformer.ts +35 -35
  529. package/src/transformers/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -13
  530. package/src/transformers/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -13
  531. package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +69 -69
  532. package/src/transformers/features/reflect/ReflectNameTransformer.ts +82 -82
  533. package/src/transformers/internal/GenericTransformer.ts +101 -101
  534. package/src/typings/Atomic.ts +13 -13
  535. package/src/typings/ClassProperties.ts +5 -5
  536. package/src/typings/Customizable.ts +5 -5
  537. package/src/typings/Equal.ts +18 -18
  538. package/src/typings/IsTuple.ts +9 -9
  539. package/src/typings/NativeClass.ts +23 -23
  540. package/src/typings/OmitNever.ts +3 -3
  541. package/src/typings/ProtobufAtomic.ts +19 -19
  542. package/src/typings/SpecialFields.ts +3 -3
  543. package/src/typings/ValidationPipe.ts +9 -9
  544. package/src/typings/ValueOf.ts +20 -20
  545. package/src/typings/Writable.ts +11 -11
  546. package/src/utils/ArrayUtil.ts +41 -41
  547. package/src/utils/Escaper.ts +50 -50
  548. package/src/utils/MapUtil.ts +14 -14
  549. package/src/utils/NamingConvention.ts +94 -94
  550. package/src/utils/PatternUtil.ts +29 -29
  551. package/src/utils/ProtobufNameEncoder.ts +32 -32
  552. package/src/utils/Singleton.ts +16 -16
  553. package/src/utils/StringUtil.ts +16 -16
package/src/llm.ts CHANGED
@@ -1,335 +1,358 @@
1
- import { ILlmApplication, ILlmSchema } from "@samchon/openapi";
2
-
3
- import { NoTransformConfigurationError } from "./transformers/NoTransformConfigurationError";
4
-
5
- /**
6
- * > You must configure the generic argument `App`.
7
- *
8
- * TypeScript functions to LLM function calling application.
9
- *
10
- * Creates an application of LLM (Large Language Model) function calling application
11
- * from a TypeScript class or interface type containing the target functions to be
12
- * called by the LLM function calling feature.
13
- *
14
- * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
15
- * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
16
- * proper function and fill its arguments from the conversation (maybe chatting text)
17
- * with user (human). This is the concept of the LLM function calling.
18
- *
19
- * By the way, there can be some parameters (or their nested properties) which must be
20
- * composed by human, not by LLM. File uploading feature or some sensitive information
21
- * like security keys (password) are the examples. In that case, you can separate the
22
- * function parameters to both LLM and human sides by configuring the
23
- * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
24
- * assigned to the {@link ILlmFunction.separated} property.
25
- *
26
- * For reference, the actual function call execution is not by LLM, but by you.
27
- * When the LLM selects the proper function and fills the arguments, you just call
28
- * the function with the LLM prepared arguments. And then informs the return value to
29
- * the LLM by system prompt. The LLM will continue the next conversation based on
30
- * the return value.
31
- *
32
- * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
33
- * so that the parameters are separated to human and LLM sides, you can merge these
34
- * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
35
- * before the actual LLM function call execution.
36
- *
37
- * Here is the list of available `Model` types with their corresponding LLM schema.
38
- * Reading the following list, and determine the `Model` type considering the
39
- * characteristics of the target LLM provider.
40
- *
41
- * - LLM provider schemas
42
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
43
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
44
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
45
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
46
- * - Midldle layer schemas
47
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
48
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
49
- *
50
- * @template App Target class or interface type collecting the functions to call
51
- * @template Model LLM schema model
52
- * @template Config Configuration of LLM schema composition
53
- * @param options Options for the LLM application construction
54
- * @returns Application of LLM function calling schemas
55
- * @reference https://platform.openai.com/docs/guides/function-calling
56
- * @author Jeongho Nam - https://github.com/samchon
57
- */
58
- export function application(
59
- options?: Partial<Pick<ILlmApplication.IOptions<any>, "separate">>,
60
- ): never;
61
-
62
- /**
63
- * TypeScript functions to LLM function calling application.
64
- *
65
- * Creates an application of LLM (Large Language Model) function calling application
66
- * from a TypeScript class or interface type containing the target functions to be
67
- * called by the LLM function calling feature.
68
- *
69
- * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
70
- * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
71
- * proper function and fill its arguments from the conversation (maybe chatting text)
72
- * with user (human). This is the concept of the LLM function calling.
73
- *
74
- * By the way, there can be some parameters (or their nested properties) which must be
75
- * composed by human, not by LLM. File uploading feature or some sensitive information
76
- * like security keys (password) are the examples. In that case, you can separate the
77
- * function parameters to both LLM and human sides by configuring the
78
- * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
79
- * assigned to the {@link ILlmFunction.separated} property.
80
- *
81
- * For reference, the actual function call execution is not by LLM, but by you.
82
- * When the LLM selects the proper function and fills the arguments, you just call
83
- * the function with the LLM prepared arguments. And then informs the return value to
84
- * the LLM by system prompt. The LLM will continue the next conversation based on
85
- * the return value.
86
- *
87
- * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
88
- * so that the parameters are separated to human and LLM sides, you can merge these
89
- * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
90
- * before the actual LLM function call execution.
91
- *
92
- * Here is the list of available `Model` types with their corresponding LLM schema.
93
- * Reading the following list, and determine the `Model` type considering the
94
- * characteristics of the target LLM provider.
95
- *
96
- * - LLM provider schemas
97
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
98
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
99
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
100
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
101
- * - Midldle layer schemas
102
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
103
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
104
- *
105
- * @template App Target class or interface type collecting the functions to call
106
- * @template Model LLM schema model
107
- * @template Config Configuration of LLM schema composition
108
- * @param options Options for the LLM application construction
109
- * @returns Application of LLM function calling schemas
110
- * @reference https://platform.openai.com/docs/guides/function-calling
111
- * @author Jeongho Nam - https://github.com/samchon
112
- */
113
- export function application<
114
- App extends Record<string, any>,
115
- Model extends ILlmSchema.Model,
116
- Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
117
- >(
118
- options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>,
119
- ): ILlmApplication<Model, App>;
120
-
121
- /**
122
- * @internal
123
- */
124
- export function application(): never {
125
- NoTransformConfigurationError("llm.application");
126
- }
127
-
128
- /**
129
- * > You must configure the generic argument `Parameters`.
130
- *
131
- * TypeScript parameters to LLM parameters schema.
132
- *
133
- * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
134
- * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
135
- * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
136
- * from a TypeScript parameters type.
137
- *
138
- * For references, LLM identifies only keyworded arguments, not positional arguments.
139
- * Therefore, the TypeScript parameters type must be an object type, and its properties
140
- * must be static. If dynamic properties are, it would be compilation error.
141
- *
142
- * Also, such parameters type can be utilized not only for the LLM function calling,
143
- * but also for the LLM structured outputs. The LLM structured outputs is a feature
144
- * that LLM (Large Language Model) can generate a structured output, not only a plain
145
- * text, by filling the parameters from the conversation (maybe chatting text) with user
146
- * (human).
147
- *
148
- * Here is the list of available `Model` types with their corresponding LLM schema.
149
- * Reading the following list, and determine the `Model` type considering the
150
- * characteristics of the target LLM provider.
151
- *
152
- * - LLM provider schemas
153
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
154
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
155
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
156
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
157
- * - Midldle layer schemas
158
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
159
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
160
- *
161
- * @template Parameters Target parameters type
162
- * @template Model LLM schema model
163
- * @template Config Configuration of LLM schema composition
164
- * @returns LLM parameters schema
165
- * @reference https://platform.openai.com/docs/guides/function-calling
166
- * @reference https://platform.openai.com/docs/guides/structured-outputs
167
- */
168
- export function parameters(): never;
169
-
170
- /**
171
- * TypeScript parameters to LLM parameters schema.
172
- *
173
- * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
174
- * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
175
- * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
176
- * from a TypeScript parameters type.
177
- *
178
- * For references, LLM identifies only keyworded arguments, not positional arguments.
179
- * Therefore, the TypeScript parameters type must be an object type, and its properties
180
- * must be static. If dynamic properties are, it would be compilation error.
181
- *
182
- * Also, such parameters type can be utilized not only for the LLM function calling,
183
- * but also for the LLM structured outputs. The LLM structured outputs is a feature
184
- * that LLM (Large Language Model) can generate a structured output, not only a plain
185
- * text, by filling the parameters from the conversation (maybe chatting text) with user
186
- * (human).
187
- *
188
- * Here is the list of available `Model` types with their corresponding LLM schema.
189
- * Reading the following list, and determine the `Model` type considering the
190
- * characteristics of the target LLM provider.
191
- *
192
- * - LLM provider schemas
193
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
194
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
195
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
196
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
197
- * - Midldle layer schemas
198
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
199
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
200
- *
201
- * @template Parameters Target parameters type
202
- * @template Model LLM schema model
203
- * @template Config Configuration of LLM schema composition
204
- * @returns LLM parameters schema
205
- * @reference https://platform.openai.com/docs/guides/function-calling
206
- * @reference https://platform.openai.com/docs/guides/structured-outputs
207
- */
208
- export function parameters<
209
- Parameters extends Record<string, any>,
210
- Model extends ILlmSchema.Model,
211
- Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
212
- >(): ILlmSchema.ModelParameters[Model];
213
-
214
- /**
215
- * @internal
216
- */
217
- export function parameters(): never {
218
- NoTransformConfigurationError("llm.parameters");
219
- }
220
-
221
- /**
222
- * > You must configure the generic argument `T`.
223
- *
224
- * TypeScript type to LLM type schema.
225
- *
226
- * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
227
- * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
228
- * from a TypeScript type.
229
- *
230
- * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
231
- * and here is the list of available `Model` types with their corresponding LLM schema.
232
- * Reading the following list, and determine the `Model` type considering the
233
- * characteristics of the target LLM provider.
234
- *
235
- * - LLM provider schemas
236
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
237
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
238
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
239
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
240
- * - Midldle layer schemas
241
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
242
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
243
- *
244
- * If you actually want to perform the LLM function calling with TypeScript functions,
245
- * you can do it with the {@link application} function. Otherwise you hope to perform the
246
- * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
247
- * and structured output with the native TypeScript functions and types.
248
- *
249
- * > **What LLM function calling is?
250
- * >
251
- * > LLM (Large Language Model) selects property function and fill the arguments,
252
- * > but actual function call execution is not by LLM, but by you.
253
- * >
254
- * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
255
- * > "function calling" feature. The "function calling" means that LLM automatically selects
256
- * > a proper function and compose parameter values from the user's chatting text.
257
- * >
258
- * > When LLM selects the proper function and its arguments, you just call the function
259
- * > with the arguments. And then informs the return value to the LLM by system prompt,
260
- * > LLM will continue the next conversation based on the return value.
261
- *
262
- * @template T Target type
263
- * @template Model LLM schema model
264
- * @template Config Configuration of LLM schema composition
265
- * @returns LLM schema
266
- * @reference https://platform.openai.com/docs/guides/function-calling
267
- * @reference https://platform.openai.com/docs/guides/structured-outputs
268
- * @author Jeongho Nam - https://github.com/samchon
269
- */
270
- export function schema(): never;
271
-
272
- /**
273
- * TypeScript type to LLM type schema.
274
- *
275
- * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
276
- * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
277
- * from a TypeScript type.
278
- *
279
- * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
280
- * and here is the list of available `Model` types with their corresponding LLM schema:
281
- *
282
- * - LLM provider schemas
283
- * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
284
- * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
285
- * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
286
- * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
287
- * - Midldle layer schemas
288
- * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
289
- * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
290
- *
291
- * If you actually want to perform the LLM function calling with TypeScript functions,
292
- * you can do it with the {@link application} function. Otherwise you hope to perform the
293
- * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
294
- * and structured output with the native TypeScript functions and types.
295
- *
296
- * > **What LLM function calling is?
297
- * >
298
- * > LLM (Large Language Model) selects property function and fill the arguments,
299
- * > but actual function call execution is not by LLM, but by you.
300
- * >
301
- * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
302
- * > "function calling" feature. The "function calling" means that LLM automatically selects
303
- * > a proper function and compose parameter values from the user's chatting text.
304
- * >
305
- * > When LLM selects the proper function and its arguments, you just call the function
306
- * > with the arguments. And then informs the return value to the LLM by system prompt,
307
- * > LLM will continue the next conversation based on the return value.
308
- *
309
- * @template T Target type
310
- * @template Model LLM schema model
311
- * @template Config Configuration of LLM schema composition
312
- * @returns LLM schema
313
- * @reference https://platform.openai.com/docs/guides/function-calling
314
- * @reference https://platform.openai.com/docs/guides/structured-outputs
315
- * @author Jeongho Nam - https://github.com/samchon
316
- */
317
- export function schema<
318
- T,
319
- Model extends ILlmSchema.Model,
320
- Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
321
- >(
322
- ...$defs: Extract<
323
- ILlmSchema.ModelSchema[Model],
324
- { $ref: string }
325
- > extends never
326
- ? []
327
- : [Record<string, ILlmSchema.ModelSchema[Model]>]
328
- ): ILlmSchema.ModelSchema[Model];
329
-
330
- /**
331
- * @internal
332
- */
333
- export function schema(): never {
334
- NoTransformConfigurationError("llm.schema");
335
- }
1
+ import { ILlmApplication, ILlmController, ILlmSchema } from "@samchon/openapi";
2
+
3
+ import { NoTransformConfigurationError } from "./transformers/NoTransformConfigurationError";
4
+
5
+ export function controller(
6
+ name: string,
7
+ execute: object,
8
+ options?: Partial<Pick<ILlmApplication.IOptions<any>, "separate">>,
9
+ ): never;
10
+
11
+ export function controller<
12
+ Class extends Record<string, any>,
13
+ Model extends ILlmSchema.Model,
14
+ Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
15
+ >(
16
+ name: string,
17
+ execute: Class,
18
+ options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>,
19
+ ): ILlmController<Model>;
20
+
21
+ /**
22
+ * @internal
23
+ */
24
+ export function controller(..._args: any[]): never {
25
+ NoTransformConfigurationError("llm.controller");
26
+ }
27
+
28
+ /**
29
+ * > You must configure the generic argument `App`.
30
+ *
31
+ * TypeScript functions to LLM function calling application.
32
+ *
33
+ * Creates an application of LLM (Large Language Model) function calling application
34
+ * from a TypeScript class or interface type containing the target functions to be
35
+ * called by the LLM function calling feature.
36
+ *
37
+ * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
38
+ * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
39
+ * proper function and fill its arguments from the conversation (maybe chatting text)
40
+ * with user (human). This is the concept of the LLM function calling.
41
+ *
42
+ * By the way, there can be some parameters (or their nested properties) which must be
43
+ * composed by human, not by LLM. File uploading feature or some sensitive information
44
+ * like security keys (password) are the examples. In that case, you can separate the
45
+ * function parameters to both LLM and human sides by configuring the
46
+ * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
47
+ * assigned to the {@link ILlmFunction.separated} property.
48
+ *
49
+ * For reference, the actual function call execution is not by LLM, but by you.
50
+ * When the LLM selects the proper function and fills the arguments, you just call
51
+ * the function with the LLM prepared arguments. And then informs the return value to
52
+ * the LLM by system prompt. The LLM will continue the next conversation based on
53
+ * the return value.
54
+ *
55
+ * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
56
+ * so that the parameters are separated to human and LLM sides, you can merge these
57
+ * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
58
+ * before the actual LLM function call execution.
59
+ *
60
+ * Here is the list of available `Model` types with their corresponding LLM schema.
61
+ * Reading the following list, and determine the `Model` type considering the
62
+ * characteristics of the target LLM provider.
63
+ *
64
+ * - LLM provider schemas
65
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
66
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
67
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
68
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
69
+ * - Midldle layer schemas
70
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
71
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
72
+ *
73
+ * @template Class Target class or interface type collecting the functions to call
74
+ * @template Model LLM schema model
75
+ * @template Config Configuration of LLM schema composition
76
+ * @param options Options for the LLM application construction
77
+ * @returns Application of LLM function calling schemas
78
+ * @reference https://platform.openai.com/docs/guides/function-calling
79
+ * @author Jeongho Nam - https://github.com/samchon
80
+ */
81
+ export function application(
82
+ options?: Partial<Pick<ILlmApplication.IOptions<any>, "separate">>,
83
+ ): never;
84
+
85
+ /**
86
+ * TypeScript functions to LLM function calling application.
87
+ *
88
+ * Creates an application of LLM (Large Language Model) function calling application
89
+ * from a TypeScript class or interface type containing the target functions to be
90
+ * called by the LLM function calling feature.
91
+ *
92
+ * If you put the returned {@link ILlmApplication.functions} objects to the LLM provider
93
+ * like [OpenAI (ChatGPT)](https://openai.com/), the LLM will automatically select the
94
+ * proper function and fill its arguments from the conversation (maybe chatting text)
95
+ * with user (human). This is the concept of the LLM function calling.
96
+ *
97
+ * By the way, there can be some parameters (or their nested properties) which must be
98
+ * composed by human, not by LLM. File uploading feature or some sensitive information
99
+ * like security keys (password) are the examples. In that case, you can separate the
100
+ * function parameters to both LLM and human sides by configuring the
101
+ * {@link ILlmApplication.IOptions.separate} property. The separated parameters are
102
+ * assigned to the {@link ILlmFunction.separated} property.
103
+ *
104
+ * For reference, the actual function call execution is not by LLM, but by you.
105
+ * When the LLM selects the proper function and fills the arguments, you just call
106
+ * the function with the LLM prepared arguments. And then informs the return value to
107
+ * the LLM by system prompt. The LLM will continue the next conversation based on
108
+ * the return value.
109
+ *
110
+ * Additionally, if you've configured {@link ILlmApplication.IOptions.separate},
111
+ * so that the parameters are separated to human and LLM sides, you can merge these
112
+ * humand and LLM sides' parameters into one through {@link HttpLlm.mergeParameters}
113
+ * before the actual LLM function call execution.
114
+ *
115
+ * Here is the list of available `Model` types with their corresponding LLM schema.
116
+ * Reading the following list, and determine the `Model` type considering the
117
+ * characteristics of the target LLM provider.
118
+ *
119
+ * - LLM provider schemas
120
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
121
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
122
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
123
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
124
+ * - Midldle layer schemas
125
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
126
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
127
+ *
128
+ * @template Class Target class or interface type collecting the functions to call
129
+ * @template Model LLM schema model
130
+ * @template Config Configuration of LLM schema composition
131
+ * @param options Options for the LLM application construction
132
+ * @returns Application of LLM function calling schemas
133
+ * @reference https://platform.openai.com/docs/guides/function-calling
134
+ * @author Jeongho Nam - https://github.com/samchon
135
+ */
136
+ export function application<
137
+ Class extends Record<string, any>,
138
+ Model extends ILlmSchema.Model,
139
+ Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
140
+ >(
141
+ options?: Partial<Pick<ILlmApplication.IOptions<Model>, "separate">>,
142
+ ): ILlmApplication<Model, Class>;
143
+
144
+ /**
145
+ * @internal
146
+ */
147
+ export function application(): never {
148
+ NoTransformConfigurationError("llm.application");
149
+ }
150
+
151
+ /**
152
+ * > You must configure the generic argument `Parameters`.
153
+ *
154
+ * TypeScript parameters to LLM parameters schema.
155
+ *
156
+ * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
157
+ * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
158
+ * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
159
+ * from a TypeScript parameters type.
160
+ *
161
+ * For references, LLM identifies only keyworded arguments, not positional arguments.
162
+ * Therefore, the TypeScript parameters type must be an object type, and its properties
163
+ * must be static. If dynamic properties are, it would be compilation error.
164
+ *
165
+ * Also, such parameters type can be utilized not only for the LLM function calling,
166
+ * but also for the LLM structured outputs. The LLM structured outputs is a feature
167
+ * that LLM (Large Language Model) can generate a structured output, not only a plain
168
+ * text, by filling the parameters from the conversation (maybe chatting text) with user
169
+ * (human).
170
+ *
171
+ * Here is the list of available `Model` types with their corresponding LLM schema.
172
+ * Reading the following list, and determine the `Model` type considering the
173
+ * characteristics of the target LLM provider.
174
+ *
175
+ * - LLM provider schemas
176
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
177
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
178
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
179
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
180
+ * - Midldle layer schemas
181
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
182
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
183
+ *
184
+ * @template Parameters Target parameters type
185
+ * @template Model LLM schema model
186
+ * @template Config Configuration of LLM schema composition
187
+ * @returns LLM parameters schema
188
+ * @reference https://platform.openai.com/docs/guides/function-calling
189
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
190
+ */
191
+ export function parameters(): never;
192
+
193
+ /**
194
+ * TypeScript parameters to LLM parameters schema.
195
+ *
196
+ * Creates an LLM (Large Language Model) parameters schema, a type metadata that is used in the
197
+ * [LLM function calling](https://platform.openai.com/docs/guides/function-calling)
198
+ * and [LLM structured outputs](https://platform.openai.com/docs/guides/structured-outputs),
199
+ * from a TypeScript parameters type.
200
+ *
201
+ * For references, LLM identifies only keyworded arguments, not positional arguments.
202
+ * Therefore, the TypeScript parameters type must be an object type, and its properties
203
+ * must be static. If dynamic properties are, it would be compilation error.
204
+ *
205
+ * Also, such parameters type can be utilized not only for the LLM function calling,
206
+ * but also for the LLM structured outputs. The LLM structured outputs is a feature
207
+ * that LLM (Large Language Model) can generate a structured output, not only a plain
208
+ * text, by filling the parameters from the conversation (maybe chatting text) with user
209
+ * (human).
210
+ *
211
+ * Here is the list of available `Model` types with their corresponding LLM schema.
212
+ * Reading the following list, and determine the `Model` type considering the
213
+ * characteristics of the target LLM provider.
214
+ *
215
+ * - LLM provider schemas
216
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
217
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
218
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
219
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
220
+ * - Midldle layer schemas
221
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
222
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
223
+ *
224
+ * @template Parameters Target parameters type
225
+ * @template Model LLM schema model
226
+ * @template Config Configuration of LLM schema composition
227
+ * @returns LLM parameters schema
228
+ * @reference https://platform.openai.com/docs/guides/function-calling
229
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
230
+ */
231
+ export function parameters<
232
+ Parameters extends Record<string, any>,
233
+ Model extends ILlmSchema.Model,
234
+ Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
235
+ >(): ILlmSchema.ModelParameters[Model];
236
+
237
+ /**
238
+ * @internal
239
+ */
240
+ export function parameters(): never {
241
+ NoTransformConfigurationError("llm.parameters");
242
+ }
243
+
244
+ /**
245
+ * > You must configure the generic argument `T`.
246
+ *
247
+ * TypeScript type to LLM type schema.
248
+ *
249
+ * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
250
+ * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
251
+ * from a TypeScript type.
252
+ *
253
+ * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
254
+ * and here is the list of available `Model` types with their corresponding LLM schema.
255
+ * Reading the following list, and determine the `Model` type considering the
256
+ * characteristics of the target LLM provider.
257
+ *
258
+ * - LLM provider schemas
259
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
260
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
261
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
262
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
263
+ * - Midldle layer schemas
264
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
265
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
266
+ *
267
+ * If you actually want to perform the LLM function calling with TypeScript functions,
268
+ * you can do it with the {@link application} function. Otherwise you hope to perform the
269
+ * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
270
+ * and structured output with the native TypeScript functions and types.
271
+ *
272
+ * > **What LLM function calling is?
273
+ * >
274
+ * > LLM (Large Language Model) selects property function and fill the arguments,
275
+ * > but actual function call execution is not by LLM, but by you.
276
+ * >
277
+ * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
278
+ * > "function calling" feature. The "function calling" means that LLM automatically selects
279
+ * > a proper function and compose parameter values from the user's chatting text.
280
+ * >
281
+ * > When LLM selects the proper function and its arguments, you just call the function
282
+ * > with the arguments. And then informs the return value to the LLM by system prompt,
283
+ * > LLM will continue the next conversation based on the return value.
284
+ *
285
+ * @template T Target type
286
+ * @template Model LLM schema model
287
+ * @template Config Configuration of LLM schema composition
288
+ * @returns LLM schema
289
+ * @reference https://platform.openai.com/docs/guides/function-calling
290
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
291
+ * @author Jeongho Nam - https://github.com/samchon
292
+ */
293
+ export function schema(): never;
294
+
295
+ /**
296
+ * TypeScript type to LLM type schema.
297
+ *
298
+ * Creates an LLM (Large Language Model) type schema, a type metadata that is used in the
299
+ * [LLM function calling](@reference https://platform.openai.com/docs/guides/function-calling),
300
+ * from a TypeScript type.
301
+ *
302
+ * The returned {@link ILlmSchema} type would be specified by the `Model` argument,
303
+ * and here is the list of available `Model` types with their corresponding LLM schema:
304
+ *
305
+ * - LLM provider schemas
306
+ * - `chatgpt`: [`IChatGptSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IChatGptSchema.ts)
307
+ * - `claude`: [`IClaudeSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IClaudeSchema.ts)
308
+ * - `gemini`: [`IGeminiSchema`](https://github.com/samchon/openapi/blob/master/src/structures/IGeminiSchema.ts)
309
+ * - `llama`: [`ILlamaSchema`](https://github.com/samchon/openapi/blob/master/src/structures/ILlamaSchema.ts)
310
+ * - Midldle layer schemas
311
+ * - `3.0`: [`ILlmSchemaV3`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3.ts)
312
+ * - `3.1`: [`ILlmSchemaV3_1`](https://github.com/samchon/openapi/blob/master/src/structures/ILlmSchemaV3_1.ts)
313
+ *
314
+ * If you actually want to perform the LLM function calling with TypeScript functions,
315
+ * you can do it with the {@link application} function. Otherwise you hope to perform the
316
+ * structured output, {@link parameters} function is better. Let's enjoy the LLM function calling
317
+ * and structured output with the native TypeScript functions and types.
318
+ *
319
+ * > **What LLM function calling is?
320
+ * >
321
+ * > LLM (Large Language Model) selects property function and fill the arguments,
322
+ * > but actual function call execution is not by LLM, but by you.
323
+ * >
324
+ * > In nowadays, most LLM (Large Language Model) like OpenAI are supporting
325
+ * > "function calling" feature. The "function calling" means that LLM automatically selects
326
+ * > a proper function and compose parameter values from the user's chatting text.
327
+ * >
328
+ * > When LLM selects the proper function and its arguments, you just call the function
329
+ * > with the arguments. And then informs the return value to the LLM by system prompt,
330
+ * > LLM will continue the next conversation based on the return value.
331
+ *
332
+ * @template T Target type
333
+ * @template Model LLM schema model
334
+ * @template Config Configuration of LLM schema composition
335
+ * @returns LLM schema
336
+ * @reference https://platform.openai.com/docs/guides/function-calling
337
+ * @reference https://platform.openai.com/docs/guides/structured-outputs
338
+ * @author Jeongho Nam - https://github.com/samchon
339
+ */
340
+ export function schema<
341
+ T,
342
+ Model extends ILlmSchema.Model,
343
+ Config extends Partial<ILlmSchema.ModelConfig[Model]> = {},
344
+ >(
345
+ ...$defs: Extract<
346
+ ILlmSchema.ModelSchema[Model],
347
+ { $ref: string }
348
+ > extends never
349
+ ? []
350
+ : [Record<string, ILlmSchema.ModelSchema[Model]>]
351
+ ): ILlmSchema.ModelSchema[Model];
352
+
353
+ /**
354
+ * @internal
355
+ */
356
+ export function schema(): never {
357
+ NoTransformConfigurationError("llm.schema");
358
+ }