typia 8.0.1 → 8.0.2-dev.20250315

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