@elgap/edukaai 0.1.0

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 (306) hide show
  1. package/.output/nitro.json +15 -0
  2. package/.output/public/_nuxt/BHDzAs85.js +1 -0
  3. package/.output/public/_nuxt/BJzbfdL_.js +1 -0
  4. package/.output/public/_nuxt/BKGLlKXk.js +6 -0
  5. package/.output/public/_nuxt/BLuXzJk3.js +1 -0
  6. package/.output/public/_nuxt/BNOzzLI3.js +1 -0
  7. package/.output/public/_nuxt/BO5GMwXh.js +1 -0
  8. package/.output/public/_nuxt/BQRbsFGy.js +1 -0
  9. package/.output/public/_nuxt/Be4MVdOg.js +1 -0
  10. package/.output/public/_nuxt/Bu4d3Z1T.js +1 -0
  11. package/.output/public/_nuxt/BwpBBNv4.js +1 -0
  12. package/.output/public/_nuxt/C1Og9-6n.js +97 -0
  13. package/.output/public/_nuxt/C3CjAhtj.js +1 -0
  14. package/.output/public/_nuxt/C6E3Ty3z.js +1 -0
  15. package/.output/public/_nuxt/COct4B42.js +1 -0
  16. package/.output/public/_nuxt/CQ6g2dtj.js +1 -0
  17. package/.output/public/_nuxt/CURSW5TV.js +246 -0
  18. package/.output/public/_nuxt/CW57JW4s.js +1 -0
  19. package/.output/public/_nuxt/Cg2fM61o.js +18 -0
  20. package/.output/public/_nuxt/CgGOeWta.js +1 -0
  21. package/.output/public/_nuxt/CoyYbT7u.js +1 -0
  22. package/.output/public/_nuxt/D11MHbGc.js +133 -0
  23. package/.output/public/_nuxt/D24dz0S8.js +1 -0
  24. package/.output/public/_nuxt/D3EFPr8x.js +1 -0
  25. package/.output/public/_nuxt/Dvt4ZHil.js +1 -0
  26. package/.output/public/_nuxt/builds/latest.json +1 -0
  27. package/.output/public/_nuxt/builds/meta/ab87ba0e-6d0d-4466-8b12-00d44f8fb9d3.json +1 -0
  28. package/.output/public/_nuxt/default.C1K1-g4D.css +1 -0
  29. package/.output/public/_nuxt/entry.CH8k-Mga.css +1 -0
  30. package/.output/public/_nuxt/error-404.C-Ezrlz-.css +1 -0
  31. package/.output/public/_nuxt/error-500.DBWf9FGj.css +1 -0
  32. package/.output/public/_nuxt/first-training.wFDD65zm.css +1 -0
  33. package/.output/public/_nuxt/import.cUKYdCrq.css +1 -0
  34. package/.output/public/_nuxt/index.D-2VHyHA.css +1 -0
  35. package/.output/public/_nuxt/index.D4J_vHmL.css +1 -0
  36. package/.output/public/_nuxt/mPJeLIz7.js +1 -0
  37. package/.output/server/chunks/_/error-500.mjs +19 -0
  38. package/.output/server/chunks/_/error-500.mjs.map +1 -0
  39. package/.output/server/chunks/build/ExampleCard-styles.BUOJhEg0.mjs +8 -0
  40. package/.output/server/chunks/build/ExampleCard-styles.BUOJhEg0.mjs.map +1 -0
  41. package/.output/server/chunks/build/ExampleForm-Bcpl0CfL.mjs +238 -0
  42. package/.output/server/chunks/build/ExampleForm-Bcpl0CfL.mjs.map +1 -0
  43. package/.output/server/chunks/build/ImportPreview-styles.CFmMl5Ok.mjs +8 -0
  44. package/.output/server/chunks/build/ImportPreview-styles.CFmMl5Ok.mjs.map +1 -0
  45. package/.output/server/chunks/build/_id_-BUSGcL-H.mjs +113 -0
  46. package/.output/server/chunks/build/_id_-BUSGcL-H.mjs.map +1 -0
  47. package/.output/server/chunks/build/axolotl-C-EXGgM8.mjs +112 -0
  48. package/.output/server/chunks/build/axolotl-C-EXGgM8.mjs.map +1 -0
  49. package/.output/server/chunks/build/best-practices-DsadorHb.mjs +38 -0
  50. package/.output/server/chunks/build/best-practices-DsadorHb.mjs.map +1 -0
  51. package/.output/server/chunks/build/client.precomputed.mjs +4 -0
  52. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
  53. package/.output/server/chunks/build/default-DPkqqHOE.mjs +354 -0
  54. package/.output/server/chunks/build/default-DPkqqHOE.mjs.map +1 -0
  55. package/.output/server/chunks/build/default-styles.DsqVVS7k.mjs +8 -0
  56. package/.output/server/chunks/build/default-styles.DsqVVS7k.mjs.map +1 -0
  57. package/.output/server/chunks/build/error-404-K4UfZNck.mjs +97 -0
  58. package/.output/server/chunks/build/error-404-K4UfZNck.mjs.map +1 -0
  59. package/.output/server/chunks/build/error-404-styles.DuDrf-v0.mjs +8 -0
  60. package/.output/server/chunks/build/error-404-styles.DuDrf-v0.mjs.map +1 -0
  61. package/.output/server/chunks/build/error-500-CA7TEPNg.mjs +79 -0
  62. package/.output/server/chunks/build/error-500-CA7TEPNg.mjs.map +1 -0
  63. package/.output/server/chunks/build/error-500-styles.8IYEHzz6.mjs +8 -0
  64. package/.output/server/chunks/build/error-500-styles.8IYEHzz6.mjs.map +1 -0
  65. package/.output/server/chunks/build/examples-BHK8MDrs.mjs +134 -0
  66. package/.output/server/chunks/build/examples-BHK8MDrs.mjs.map +1 -0
  67. package/.output/server/chunks/build/export-BzxFqqfP.mjs +233 -0
  68. package/.output/server/chunks/build/export-BzxFqqfP.mjs.map +1 -0
  69. package/.output/server/chunks/build/faq-DKch73dS.mjs +112 -0
  70. package/.output/server/chunks/build/faq-DKch73dS.mjs.map +1 -0
  71. package/.output/server/chunks/build/field-guide-qbukT8F0.mjs +38 -0
  72. package/.output/server/chunks/build/field-guide-qbukT8F0.mjs.map +1 -0
  73. package/.output/server/chunks/build/first-training-BbEOBcEW.mjs +343 -0
  74. package/.output/server/chunks/build/first-training-BbEOBcEW.mjs.map +1 -0
  75. package/.output/server/chunks/build/first-training-styles.BzOa_KRD.mjs +8 -0
  76. package/.output/server/chunks/build/first-training-styles.BzOa_KRD.mjs.map +1 -0
  77. package/.output/server/chunks/build/glossary-CxSGCJoH.mjs +397 -0
  78. package/.output/server/chunks/build/glossary-CxSGCJoH.mjs.map +1 -0
  79. package/.output/server/chunks/build/huggingface-TSmyUzZU.mjs +128 -0
  80. package/.output/server/chunks/build/huggingface-TSmyUzZU.mjs.map +1 -0
  81. package/.output/server/chunks/build/import-C0kYhRv9.mjs +247 -0
  82. package/.output/server/chunks/build/import-C0kYhRv9.mjs.map +1 -0
  83. package/.output/server/chunks/build/index-C1ntBEWd.mjs +235 -0
  84. package/.output/server/chunks/build/index-C1ntBEWd.mjs.map +1 -0
  85. package/.output/server/chunks/build/index-D3CxihcX.mjs +320 -0
  86. package/.output/server/chunks/build/index-D3CxihcX.mjs.map +1 -0
  87. package/.output/server/chunks/build/index-DgKa1cy0.mjs +360 -0
  88. package/.output/server/chunks/build/index-DgKa1cy0.mjs.map +1 -0
  89. package/.output/server/chunks/build/index-cG54gaKX.mjs +513 -0
  90. package/.output/server/chunks/build/index-cG54gaKX.mjs.map +1 -0
  91. package/.output/server/chunks/build/index-styles.BX2SZiiS.mjs +8 -0
  92. package/.output/server/chunks/build/index-styles.BX2SZiiS.mjs.map +1 -0
  93. package/.output/server/chunks/build/llm-training-DIqc0eiM.mjs +91 -0
  94. package/.output/server/chunks/build/llm-training-DIqc0eiM.mjs.map +1 -0
  95. package/.output/server/chunks/build/new-b3338aLF.mjs +92 -0
  96. package/.output/server/chunks/build/new-b3338aLF.mjs.map +1 -0
  97. package/.output/server/chunks/build/nuxt-link-Ceyd90PQ.mjs +290 -0
  98. package/.output/server/chunks/build/nuxt-link-Ceyd90PQ.mjs.map +1 -0
  99. package/.output/server/chunks/build/sample-datasets-CVLWMQUA.mjs +45 -0
  100. package/.output/server/chunks/build/sample-datasets-CVLWMQUA.mjs.map +1 -0
  101. package/.output/server/chunks/build/server.mjs +1979 -0
  102. package/.output/server/chunks/build/server.mjs.map +1 -0
  103. package/.output/server/chunks/build/styles.mjs +20 -0
  104. package/.output/server/chunks/build/styles.mjs.map +1 -0
  105. package/.output/server/chunks/build/test-router-BYM6Cpst.mjs +105 -0
  106. package/.output/server/chunks/build/test-router-BYM6Cpst.mjs.map +1 -0
  107. package/.output/server/chunks/nitro/nitro.mjs +5800 -0
  108. package/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  109. package/.output/server/chunks/routes/renderer.mjs +481 -0
  110. package/.output/server/chunks/routes/renderer.mjs.map +1 -0
  111. package/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  112. package/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  113. package/.output/server/index.mjs +12 -0
  114. package/.output/server/index.mjs.map +1 -0
  115. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/api.js +2 -0
  116. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/app.js +2 -0
  117. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/component.js +2 -0
  118. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/context.js +2 -0
  119. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/hooks.js +2 -0
  120. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/index.js +22 -0
  121. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/api/util.js +2 -0
  122. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/const.js +5 -0
  123. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/env.js +17 -0
  124. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/index.js +45 -0
  125. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/plugin.js +2 -0
  126. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/proxy.js +111 -0
  127. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/lib/cjs/time.js +28 -0
  128. package/.output/server/node_modules/.nitro/@vue/devtools-api@6.6.4/package.json +37 -0
  129. package/.output/server/node_modules/.nitro/@vue/devtools-api@7.7.9/dist/index.cjs +42 -0
  130. package/.output/server/node_modules/.nitro/@vue/devtools-api@7.7.9/package.json +32 -0
  131. package/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.cjs +299 -0
  132. package/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
  133. package/.output/server/node_modules/.nitro/hookable@6.0.1/dist/index.mjs +266 -0
  134. package/.output/server/node_modules/.nitro/hookable@6.0.1/package.json +52 -0
  135. package/.output/server/node_modules/.nitro/perfect-debounce@1.0.0/dist/index.cjs +59 -0
  136. package/.output/server/node_modules/.nitro/perfect-debounce@1.0.0/package.json +44 -0
  137. package/.output/server/node_modules/.nitro/perfect-debounce@2.1.0/dist/index.mjs +89 -0
  138. package/.output/server/node_modules/.nitro/perfect-debounce@2.1.0/package.json +41 -0
  139. package/.output/server/node_modules/@babel/parser/lib/index.js +14582 -0
  140. package/.output/server/node_modules/@babel/parser/package.json +50 -0
  141. package/.output/server/node_modules/@iconify/utils/lib/colors/index.js +292 -0
  142. package/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +702 -0
  143. package/.output/server/node_modules/@iconify/utils/lib/css/common.js +76 -0
  144. package/.output/server/node_modules/@iconify/utils/lib/css/format.js +40 -0
  145. package/.output/server/node_modules/@iconify/utils/lib/css/icon.js +52 -0
  146. package/.output/server/node_modules/@iconify/utils/lib/css/icons.js +133 -0
  147. package/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +20 -0
  148. package/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +15 -0
  149. package/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +18 -0
  150. package/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +18 -0
  151. package/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +31 -0
  152. package/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +80 -0
  153. package/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +102 -0
  154. package/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +29 -0
  155. package/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +60 -0
  156. package/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +50 -0
  157. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +204 -0
  158. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +35 -0
  159. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +134 -0
  160. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +167 -0
  161. package/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +81 -0
  162. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +94 -0
  163. package/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +28 -0
  164. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +78 -0
  165. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +68 -0
  166. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +47 -0
  167. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +105 -0
  168. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +38 -0
  169. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +94 -0
  170. package/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +64 -0
  171. package/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +26 -0
  172. package/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +18 -0
  173. package/.output/server/node_modules/@iconify/utils/lib/icon/name.js +58 -0
  174. package/.output/server/node_modules/@iconify/utils/lib/icon/square.js +34 -0
  175. package/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +13 -0
  176. package/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +126 -0
  177. package/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +21 -0
  178. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +27 -0
  179. package/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +38 -0
  180. package/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +93 -0
  181. package/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +48 -0
  182. package/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +24 -0
  183. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +44 -0
  184. package/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +125 -0
  185. package/.output/server/node_modules/@iconify/utils/lib/index.js +53 -0
  186. package/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +32 -0
  187. package/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +28 -0
  188. package/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +42 -0
  189. package/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +63 -0
  190. package/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +27 -0
  191. package/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +27 -0
  192. package/.output/server/node_modules/@iconify/utils/lib/misc/title.js +10 -0
  193. package/.output/server/node_modules/@iconify/utils/lib/svg/build.js +115 -0
  194. package/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +32 -0
  195. package/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +15 -0
  196. package/.output/server/node_modules/@iconify/utils/lib/svg/html.js +10 -0
  197. package/.output/server/node_modules/@iconify/utils/lib/svg/id.js +42 -0
  198. package/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +23 -0
  199. package/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +69 -0
  200. package/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +55 -0
  201. package/.output/server/node_modules/@iconify/utils/lib/svg/size.js +28 -0
  202. package/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +8 -0
  203. package/.output/server/node_modules/@iconify/utils/lib/svg/url.js +23 -0
  204. package/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +9 -0
  205. package/.output/server/node_modules/@iconify/utils/package.json +118 -0
  206. package/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +1893 -0
  207. package/.output/server/node_modules/@iconify/vue/package.json +64 -0
  208. package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6763 -0
  209. package/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  210. package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  211. package/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  212. package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  213. package/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  214. package/.output/server/node_modules/@vue/devtools-kit/dist/index.cjs +6850 -0
  215. package/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
  216. package/.output/server/node_modules/@vue/devtools-shared/dist/index.cjs +378 -0
  217. package/.output/server/node_modules/@vue/devtools-shared/package.json +34 -0
  218. package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1870 -0
  219. package/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  220. package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6810 -0
  221. package/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  222. package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1750 -0
  223. package/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  224. package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +883 -0
  225. package/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  226. package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
  227. package/.output/server/node_modules/@vue/shared/package.json +47 -0
  228. package/.output/server/node_modules/birpc/dist/index.cjs +296 -0
  229. package/.output/server/node_modules/birpc/package.json +57 -0
  230. package/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  231. package/.output/server/node_modules/consola/dist/core.mjs +512 -0
  232. package/.output/server/node_modules/consola/dist/index.mjs +651 -0
  233. package/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  234. package/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  235. package/.output/server/node_modules/consola/package.json +136 -0
  236. package/.output/server/node_modules/devalue/index.js +4 -0
  237. package/.output/server/node_modules/devalue/package.json +37 -0
  238. package/.output/server/node_modules/devalue/src/base64.js +110 -0
  239. package/.output/server/node_modules/devalue/src/constants.js +7 -0
  240. package/.output/server/node_modules/devalue/src/parse.js +246 -0
  241. package/.output/server/node_modules/devalue/src/stringify.js +350 -0
  242. package/.output/server/node_modules/devalue/src/uneval.js +490 -0
  243. package/.output/server/node_modules/devalue/src/utils.js +148 -0
  244. package/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  245. package/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  246. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  247. package/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  248. package/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  249. package/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  250. package/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  251. package/.output/server/node_modules/entities/package.json +120 -0
  252. package/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  253. package/.output/server/node_modules/estree-walker/package.json +37 -0
  254. package/.output/server/node_modules/pinia/dist/pinia.prod.cjs +719 -0
  255. package/.output/server/node_modules/pinia/package.json +94 -0
  256. package/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  257. package/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  258. package/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  259. package/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  260. package/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  261. package/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  262. package/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  263. package/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  264. package/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  265. package/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  266. package/.output/server/node_modules/source-map-js/package.json +71 -0
  267. package/.output/server/node_modules/source-map-js/source-map.js +8 -0
  268. package/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
  269. package/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
  270. package/.output/server/node_modules/tailwindcss/package.json +89 -0
  271. package/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  272. package/.output/server/node_modules/ufo/package.json +48 -0
  273. package/.output/server/node_modules/unhead/dist/index.mjs +9 -0
  274. package/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
  275. package/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
  276. package/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
  277. package/.output/server/node_modules/unhead/dist/server.mjs +180 -0
  278. package/.output/server/node_modules/unhead/dist/shared/unhead.BPM0-cfG.mjs +44 -0
  279. package/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  280. package/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
  281. package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +148 -0
  282. package/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  283. package/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  284. package/.output/server/node_modules/unhead/dist/shared/unhead.D_nrZZPH.mjs +182 -0
  285. package/.output/server/node_modules/unhead/dist/shared/unhead.ckV6dpEQ.mjs +166 -0
  286. package/.output/server/node_modules/unhead/dist/shared/unhead.fVVqDC1O.mjs +203 -0
  287. package/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  288. package/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
  289. package/.output/server/node_modules/unhead/package.json +105 -0
  290. package/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  291. package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  292. package/.output/server/node_modules/vue/index.js +7 -0
  293. package/.output/server/node_modules/vue/index.mjs +1 -0
  294. package/.output/server/node_modules/vue/package.json +112 -0
  295. package/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  296. package/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +301 -0
  297. package/.output/server/node_modules/vue-bundle-renderer/package.json +55 -0
  298. package/.output/server/node_modules/vue-router/dist/devtools-EWN81iOl.mjs +1220 -0
  299. package/.output/server/node_modules/vue-router/dist/vue-router.mjs +1557 -0
  300. package/.output/server/node_modules/vue-router/package.json +153 -0
  301. package/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
  302. package/.output/server/package.json +37 -0
  303. package/LICENSE +21 -0
  304. package/README.md +132 -0
  305. package/bin/cli.js +75 -0
  306. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ import{e as E,o as s,c as l,a as e,t as d,F,r as O,n as x,q as B,g as m,_ as L,p as M,d as f,k as P,s as T,b as A,f as q,w as U,i as g,x as H}from"./Cg2fM61o.js";import{_ as Y}from"./C6E3Ty3z.js";const Z={class:"space-y-4"},J={class:"flex justify-between items-center"},K={class:"font-medium"},Q={class:"flex gap-2"},X={class:"max-h-96 overflow-y-auto space-y-2"},ee=["onClick"],te={class:"flex items-start gap-3"},se=["checked","onChange"],le={class:"flex-1 min-w-0"},oe={class:"flex items-center gap-2 mb-1"},ne={key:0,class:"px-2 py-0.5 bg-yellow-100 text-yellow-700 text-xs rounded-full"},ae={class:"text-sm font-medium text-gray-900 line-clamp-2"},re={class:"flex items-center gap-3 mt-2 text-xs text-gray-500"},ie={key:0},de={key:0,class:"text-center py-4 text-gray-500"},ue=E({__name:"ImportPreview",props:{examples:{},selectedIds:{}},emits:["toggle-selection","select-all","deselect-all"],setup(w){const b=w,r=n=>b.selectedIds.includes(n),v=n=>n>=.9?"bg-green-100 text-green-700":n>=.7?"bg-blue-100 text-blue-700":n>=.5?"bg-yellow-100 text-yellow-700":"bg-red-100 text-red-700";return(n,u)=>(s(),l("div",Z,[e("div",J,[e("h3",K,"Preview Examples ("+d(w.examples.length)+")",1),e("div",Q,[e("button",{onClick:u[0]||(u[0]=o=>n.$emit("select-all")),class:"text-sm text-blue-600 hover:text-blue-700"}," Select All "),u[3]||(u[3]=e("span",{class:"text-gray-300"},"|",-1)),e("button",{onClick:u[1]||(u[1]=o=>n.$emit("deselect-all")),class:"text-sm text-blue-600 hover:text-blue-700"}," Deselect All ")])]),e("div",X,[(s(!0),l(F,null,O(w.examples.slice(0,20),o=>(s(),l("div",{key:o.id,class:x(["p-3 border rounded-lg cursor-pointer transition-all",r(o.id)?"border-blue-500 bg-blue-50":"border-gray-200 hover:border-gray-300"]),onClick:h=>n.$emit("toggle-selection",o.id)},[e("div",te,[e("input",{type:"checkbox",checked:r(o.id),class:"mt-1 w-4 h-4 text-blue-600 rounded",onClick:u[2]||(u[2]=B(()=>{},["stop"])),onChange:h=>n.$emit("toggle-selection",o.id)},null,40,se),e("div",le,[e("div",oe,[o.needsReview?(s(),l("span",ne," ⚠️ Needs Review ")):m("",!0),e("span",{class:x(["px-2 py-0.5 text-xs rounded-full",v(o.confidence)])},d(Math.round(o.confidence*100))+"% confidence ",3)]),e("p",ae,d(o.instruction),1),e("div",re,[e("span",null,d(o.category||"general"),1),u[4]||(u[4]=e("span",null,"β€’",-1)),e("span",null,d(o.difficulty||"intermediate"),1),o.tokensIn?(s(),l("span",ie," β€’ "+d(o.tokensIn+(o.tokensOut||0))+" tokens ",1)):m("",!0)])])])],10,ee))),128)),w.examples.length>20?(s(),l("div",de," ... and "+d(w.examples.length-20)+" more examples ",1)):m("",!0)])]))}}),me=Object.assign(L(ue,[["__scopeId","data-v-63f3a431"]]),{__name:"ImportPreview"}),pe={class:"max-w-4xl mx-auto"},ce={key:0,class:"card"},ve={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},be={key:0,class:"mt-4 p-4 bg-green-50 border border-green-200 rounded-lg"},ge={key:1,class:"mt-4 p-4 bg-purple-50 border border-purple-200 rounded-lg"},xe={key:2,class:"mt-4 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},ye={class:"flex justify-end mt-6"},fe=["disabled"],we={key:1,class:"card"},ke={class:"space-y-4"},_e={class:"grid grid-cols-2 gap-4"},he={class:"flex gap-2"},Ce={class:"mt-6 p-4 bg-gray-50 rounded-lg"},$e={class:"flex justify-between mt-6"},Ie=["disabled"],Se={key:0},De={key:2,class:"space-y-6"},Pe={class:"card"},Te={key:0,class:"text-center py-12"},Ae={key:1},Ee={class:"grid grid-cols-2 md:grid-cols-4 gap-4 mb-6"},Fe={class:"bg-blue-50 rounded-lg p-4 text-center"},Oe={class:"text-2xl font-bold text-blue-600"},Re={class:"bg-green-50 rounded-lg p-4 text-center"},Ve={class:"text-2xl font-bold text-green-600"},je={class:"bg-yellow-50 rounded-lg p-4 text-center"},Ne={class:"text-2xl font-bold text-yellow-600"},Ge={class:"bg-red-50 rounded-lg p-4 text-center"},We={class:"text-2xl font-bold text-red-600"},ze={key:0,class:"mb-6 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"},Be={class:"text-sm text-yellow-700 space-y-1"},Le={key:0},Me={key:1,class:"mt-6"},qe={class:"flex justify-between text-sm mb-1"},Ue={class:"w-full bg-gray-200 rounded-full h-4"},He={key:2,class:"mt-6 p-4 bg-green-50 border border-green-200 rounded-lg"},Ye={class:"text-sm text-green-700"},Ze={key:0},Je={class:"mt-3 flex gap-2"},Ke={key:0,class:"flex justify-between"},Qe=["disabled"],Xe=E({__name:"ImportWizard",setup(w){const b=g(1),r=g(null),v=g(""),n=g(""),u=g(""),o=g(!1),h=g(!1),I=g(!1),S=g(!1),_=g(0),p=g(null),c=g([]),C=i=>{r.value=i},D=i=>{const t=new Date,y=k=>k.toISOString().split("T")[0];switch(i){case"today":v.value=y(t),n.value=y(t);break;case"week":const k=new Date(t);k.setDate(k.getDate()-7),v.value=y(k),n.value=y(t);break;case"month":const $=new Date(t);$.setDate($.getDate()-30),v.value=y($),n.value=y(t);break;case"all":v.value="",n.value="";break}},R=async()=>{o.value=!0,b.value=3,h.value=!0;try{const i=await $fetch("/api/import/preview",{method:"POST",body:{source:r.value,dateFrom:v.value||void 0,dateTo:n.value||void 0,filePath:u.value||void 0}});p.value=i,c.value=i.examples.map(t=>t.id)}catch(i){console.error("Error previewing import:",i),alert("Failed to preview import. Please check your configuration."),b.value=2}finally{o.value=!1,h.value=!1}},V=i=>{const t=c.value.indexOf(i);t===-1?c.value.push(i):c.value.splice(t,1)},j=()=>{c.value=p.value?.examples.map(i=>i.id)||[]},N=()=>{c.value=[]},G=async()=>{I.value=!0,_.value=0;try{const i=await $fetch("/api/import",{method:"POST",body:{source:r.value,exampleIds:c.value,dateFrom:v.value||void 0,dateTo:n.value||void 0,filePath:u.value||void 0}});_.value=i.imported,S.value=!0}catch(i){console.error("Error importing:",i),alert("Import failed. Please try again.")}finally{I.value=!1}},W=()=>{b.value=1,r.value=null,c.value=[],p.value=null,S.value=!1,_.value=0,v.value="",n.value="",u.value=""};return(i,t)=>{const y=me,k=Y,$=M('else"');return s(),l("div",pe,[t[40]||(t[40]=e("div",{class:"mb-6"},[e("h1",{class:"text-2xl font-bold mb-2"},"Import from AI Assistants"),e("p",{class:"text-gray-600"}," Import your conversations from coding assistants to automatically build your dataset. ")],-1)),b.value===1?(s(),l("div",ce,[t[23]||(t[23]=e("h2",{class:"text-lg font-semibold mb-6"},"Step 1: Select Your AI Assistant",-1)),e("div",ve,[e("button",{onClick:t[0]||(t[0]=a=>C("claude")),class:x(["p-6 border-2 rounded-xl text-left transition-all hover:border-blue-400",r.value==="claude"?"border-blue-500 bg-blue-50":"border-gray-200"])},[...t[15]||(t[15]=[e("div",{class:"text-4xl mb-3"},"πŸ€–",-1),e("h3",{class:"font-semibold mb-1"},"Claude Code",-1),e("p",{class:"text-sm text-gray-600"},"Full conversation import with metadata",-1),e("div",{class:"mt-3 flex items-center gap-1 text-sm text-green-600"},[e("span",null,"βœ“"),e("span",null,"Recommended")],-1)])],2),e("button",{onClick:t[1]||(t[1]=a=>C("cursor")),class:x(["p-6 border-2 rounded-xl text-left transition-all hover:border-blue-400",r.value==="cursor"?"border-blue-500 bg-blue-50":"border-gray-200"])},[...t[16]||(t[16]=[e("div",{class:"text-4xl mb-3"},"πŸ–±οΈ",-1),e("h3",{class:"font-semibold mb-1"},"Cursor",-1),e("p",{class:"text-sm text-gray-600"},"Import from Cursor editor chat history",-1),e("div",{class:"mt-3 flex items-center gap-1 text-sm text-green-600"},[e("span",null,"βœ“"),e("span",null,"Recommended")],-1)])],2),e("button",{onClick:t[2]||(t[2]=a=>C("chatgpt")),class:x(["p-6 border-2 rounded-xl text-left transition-all hover:border-green-400",r.value==="chatgpt"?"border-green-500 bg-green-50":"border-gray-200"])},[...t[17]||(t[17]=[e("div",{class:"text-4xl mb-3"},"πŸ’¬",-1),e("h3",{class:"font-semibold mb-1"},"ChatGPT",-1),e("p",{class:"text-sm text-gray-600"},"Import from ChatGPT export file",-1),e("div",{class:"mt-3 flex items-center gap-1 text-sm text-blue-600"},[e("span",null,"πŸ“₯"),e("span",null,"Export Required")],-1)])],2),e("button",{onClick:t[3]||(t[3]=a=>C("copilot")),class:x(["p-6 border-2 rounded-xl text-left transition-all hover:border-purple-400",r.value==="copilot"?"border-purple-500 bg-purple-50":"border-gray-200"])},[...t[18]||(t[18]=[e("div",{class:"text-4xl mb-3"},"🀝",-1),e("h3",{class:"font-semibold mb-1"},"GitHub Copilot",-1),e("p",{class:"text-sm text-gray-600"},"Import from VS Code Copilot chat",-1),e("div",{class:"mt-3 flex items-center gap-1 text-sm text-purple-600"},[e("span",null,"⚑"),e("span",null,"Coding Focused")],-1)])],2),e("button",{onClick:t[4]||(t[4]=a=>C("opencode")),class:x(["p-6 border-2 rounded-xl text-left transition-all hover:border-yellow-400",r.value==="opencode"?"border-yellow-500 bg-yellow-50":"border-gray-200"])},[...t[19]||(t[19]=[e("div",{class:"text-4xl mb-3"},"⚠️",-1),e("h3",{class:"font-semibold mb-1"},"OpenCode",-1),e("p",{class:"text-sm text-gray-600"},"Limited import - metadata only",-1),e("div",{class:"mt-3 flex items-center gap-1 text-sm text-yellow-600"},[e("span",null,"⚠"),e("span",null,"Limited Data")],-1)])],2)]),r.value==="chatgpt"?(s(),l("div",be,[...t[20]||(t[20]=[e("p",{class:"text-sm text-green-800"},[e("strong",null,"πŸ“₯ ChatGPT Export Required:"),f(" You need to export your ChatGPT conversations first: ")],-1),e("ol",{class:"text-sm text-green-700 mt-2 list-decimal list-inside"},[e("li",null,"Go to chat.openai.com β†’ Settings β†’ Data controls"),e("li",null,'Click "Export data" and wait for the email'),e("li",null,"Download and extract the ZIP file"),e("li",null,[f("Place "),e("code",null,"conversations.json"),f(" in your Downloads folder")])],-1)])])):m("",!0),r.value==="copilot"?(s(),l("div",ge,[...t[21]||(t[21]=[e("p",{class:"text-sm text-purple-800"},[e("strong",null,"🀝 GitHub Copilot:"),f(" Copilot conversations from VS Code will be automatically detected. ")],-1),e("p",{class:"text-sm text-purple-700 mt-1"}," Note: Only available if you have VS Code with Copilot chat history enabled. ",-1)])])):m("",!0),r.value==="opencode"?(s(),l("div",xe,[...t[22]||(t[22]=[e("p",{class:"text-sm text-yellow-800"},[e("strong",null,"⚠️ Warning:"),f(" OpenCode has limited log access. Only basic metadata will be imported. Full conversation content may not be available. We recommend using Claude Code or Cursor for best results. ")],-1)])])):m("",!0),e("div",ye,[e("button",{onClick:t[5]||(t[5]=a=>b.value=2),disabled:!r.value,class:x(["btn-primary",{"opacity-50 cursor-not-allowed":!r.value}])}," Next: Configure Import β†’ ",10,fe)])])):m("",!0),b.value===2?(s(),l("div",we,[t[29]||(t[29]=e("h2",{class:"text-lg font-semibold mb-6"},"Step 2: Select Date Range",-1)),e("div",ke,[e("div",_e,[e("div",null,[t[24]||(t[24]=e("label",{class:"form-label"},"From Date",-1)),P(e("input",{"onUpdate:modelValue":t[6]||(t[6]=a=>v.value=a),type:"date",class:"form-input"},null,512),[[T,v.value]])]),e("div",null,[t[25]||(t[25]=e("label",{class:"form-label"},"To Date",-1)),P(e("input",{"onUpdate:modelValue":t[7]||(t[7]=a=>n.value=a),type:"date",class:"form-input"},null,512),[[T,n.value]])])]),e("div",he,[e("button",{onClick:t[8]||(t[8]=a=>D("today")),class:"px-3 py-1 text-sm bg-gray-100 hover:bg-gray-200 rounded-lg"}," Today "),e("button",{onClick:t[9]||(t[9]=a=>D("week")),class:"px-3 py-1 text-sm bg-gray-100 hover:bg-gray-200 rounded-lg"}," Last 7 Days "),e("button",{onClick:t[10]||(t[10]=a=>D("month")),class:"px-3 py-1 text-sm bg-gray-100 hover:bg-gray-200 rounded-lg"}," Last 30 Days "),e("button",{onClick:t[11]||(t[11]=a=>D("all")),class:"px-3 py-1 text-sm bg-gray-100 hover:bg-gray-200 rounded-lg"}," All Time ")])]),e("div",Ce,[t[26]||(t[26]=e("h3",{class:"font-medium mb-2"},"πŸ“ Manual File Selection (Optional)",-1)),t[27]||(t[27]=e("p",{class:"text-sm text-gray-600 mb-3"}," If automatic detection doesn't find your files, you can specify the path manually. ",-1)),P(e("input",{"onUpdate:modelValue":t[12]||(t[12]=a=>u.value=a),type:"text",class:"form-input",placeholder:"/path/to/conversations.json"},null,512),[[T,u.value]])]),e("div",$e,[e("button",{onClick:t[13]||(t[13]=a=>b.value=1),class:"btn-secondary"}," ← Back "),e("button",{onClick:R,disabled:o.value,class:"btn-primary"},[o.value?(s(),l("span",Se,"Scanning...")):m("",!0),P((s(),l("span",null,[...t[28]||(t[28]=[f("Preview Import β†’",-1)])])),[[$]])],8,Ie)])])):m("",!0),b.value===3?(s(),l("div",De,[e("div",Pe,[t[39]||(t[39]=e("h2",{class:"text-lg font-semibold mb-4"},"Step 3: Preview & Import",-1)),h.value?(s(),l("div",Te,[...t[30]||(t[30]=[e("div",{class:"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"},null,-1),e("p",{class:"mt-2 text-gray-600"},"Analyzing conversations...",-1)])])):(s(),l("div",Ae,[e("div",Ee,[e("div",Fe,[e("div",Oe,d(p.value?.stats.totalSessions||0),1),t[31]||(t[31]=e("div",{class:"text-sm text-gray-600"},"Conversations",-1))]),e("div",Re,[e("div",Ve,d(p.value?.stats.extractedExamples||0),1),t[32]||(t[32]=e("div",{class:"text-sm text-gray-600"},"Examples Found",-1))]),e("div",je,[e("div",Ne,d(p.value?.stats.needsReview||0),1),t[33]||(t[33]=e("div",{class:"text-sm text-gray-600"},"Need Review",-1))]),e("div",Ge,[e("div",We,d(p.value?.errors.length||0),1),t[34]||(t[34]=e("div",{class:"text-sm text-gray-600"},"Warnings",-1))])]),p.value?.errors.length?(s(),l("div",ze,[t[35]||(t[35]=e("h3",{class:"font-medium text-yellow-800 mb-2"},"⚠️ Warnings",-1)),e("ul",Be,[(s(!0),l(F,null,O(p.value.errors.slice(0,5),(a,z)=>(s(),l("li",{key:z}," β€’ "+d(a),1))),128)),p.value.errors.length>5?(s(),l("li",Le," ... and "+d(p.value.errors.length-5)+" more ",1)):m("",!0)])])):m("",!0),A(y,{examples:p.value?.examples||[],"selected-ids":c.value,onToggleSelection:V,onSelectAll:j,onDeselectAll:N},null,8,["examples","selected-ids"]),I.value?(s(),l("div",Me,[e("div",qe,[t[36]||(t[36]=e("span",null,"Importing examples...",-1)),e("span",null,d(_.value)+" / "+d(c.value.length),1)]),e("div",Ue,[e("div",{class:"bg-blue-500 h-4 rounded-full transition-all duration-300",style:q({width:`${_.value/c.value.length*100}%`})},null,4)])])):m("",!0),S.value?(s(),l("div",He,[t[38]||(t[38]=e("h3",{class:"font-medium text-green-800 mb-1"},"βœ… Import Complete!",-1)),e("p",Ye,[f(" Successfully imported "+d(_.value)+" examples. ",1),p.value?.stats.needsReview?(s(),l("span",Ze,d(p.value.stats.needsReview)+" examples need manual review. ",1)):m("",!0)]),e("div",Je,[A(k,{to:"/examples",class:"btn-primary"},{default:U(()=>[...t[37]||(t[37]=[f(" View Dataset β†’ ",-1)])]),_:1}),e("button",{onClick:W,class:"btn-secondary"}," Import More ")])])):m("",!0)]))]),!S.value&&!I.value?(s(),l("div",Ke,[e("button",{onClick:t[14]||(t[14]=a=>b.value=2),class:"btn-secondary"}," ← Back "),e("button",{onClick:G,disabled:c.value.length===0,class:x(["btn-primary",{"opacity-50 cursor-not-allowed":c.value.length===0}])}," πŸš€ Import "+d(c.value.length)+" Examples ",11,Qe)])):m("",!0)])):m("",!0)])}}}),et=Object.assign(Xe,{__name:"ImportWizard"}),lt={__name:"import",setup(w){return(b,r)=>{const v=et;return s(),H(v)}}};export{lt as default};
@@ -0,0 +1 @@
1
+ import{_ as o,u as s,o as a,c as i,a as t,t as r}from"./Cg2fM61o.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},l={class:"max-w-520px text-center"},c=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return s({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(a(),i("div",u,[t("div",l,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,c),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},b=o(f,[["__scopeId","data-v-d349100d"]]);export{b as default};
@@ -0,0 +1,133 @@
1
+ import{_ as b}from"./C6E3Ty3z.js";import{_ as x,h as f,c as v,a as t,b as s,w as o,m as l,d as a,i as h,o as p}from"./Cg2fM61o.js";const y={class:"max-w-4xl mx-auto"},w={class:"mb-8"},k={class:"flex items-center gap-3 mb-4"},T={class:"card mb-6 border-2 border-yellow-300 bg-gradient-to-r from-yellow-50 to-orange-50"},C={class:"space-y-3"},q={class:"flex items-start gap-3 p-3 bg-white rounded-lg border border-yellow-200"},A={for:"check-dataset",class:"flex-1 cursor-pointer"},I={class:"text-sm text-gray-600"},j={class:"card mb-6"},L={class:"space-y-4"},_={class:"flex items-start gap-4 p-4 bg-green-50 rounded-lg border border-green-200"},Y={class:"text-gray-700"},M={class:"flex items-start gap-4 p-4 bg-blue-50 rounded-lg border border-blue-200"},F={class:"relative group"},G={key:0},S={key:1},E={class:"card mb-6 bg-gradient-to-r from-yellow-50 to-orange-50 border-yellow-300"},P={class:"space-y-4 text-gray-700"},U={class:"flex items-start gap-3"},W={class:"text-sm"},R={class:"card mb-6 bg-gradient-to-r from-purple-600 to-blue-600 text-white"},D={class:"grid grid-cols-1 md:grid-cols-2 gap-3"},z={class:"card mb-6 bg-gradient-to-r from-orange-500 to-red-500 text-white"},N={class:"grid grid-cols-1 md:grid-cols-3 gap-4 mb-6"},B={class:"p-4 bg-white bg-opacity-20 rounded-lg"},H={class:"p-4 bg-white bg-opacity-20 rounded-lg"},O={class:"p-4 bg-white bg-opacity-20 rounded-lg"},V={class:"text-center py-8"},J={class:"flex flex-col sm:flex-row gap-3 justify-center"},K={__name:"first-training",setup(Q){const n=h(null),m=async(c,e)=>{try{await navigator.clipboard.writeText(c),n.value=e,setTimeout(()=>{n.value=null},2e3)}catch(d){console.error("Failed to copy:",d)}};return f(()=>{document.querySelectorAll("code.block").forEach((e,d)=>{if(e.parentElement?.classList.contains("code-wrapper"))return;const i=document.createElement("div");i.className="code-wrapper relative group",e.parentNode.insertBefore(i,e),i.appendChild(e);const r=document.createElement("button");r.className="copy-btn",r.innerHTML="πŸ“‹ Copy",r.onclick=()=>{const g=e.textContent.trim();navigator.clipboard.writeText(g).then(()=>{r.innerHTML="βœ“ Copied!",r.classList.add("copied"),setTimeout(()=>{r.innerHTML="πŸ“‹ Copy",r.classList.remove("copied")},2e3)}).catch(u=>{console.error("Failed to copy:",u)})},i.appendChild(r)})}),(c,e)=>{const d=b;return p(),v("div",y,[t("div",w,[t("div",k,[s(d,{to:"/export",class:"text-blue-600 hover:text-blue-800"},{default:o(()=>[...e[1]||(e[1]=[a(" ← Back to Export ",-1)])]),_:1})]),e[2]||(e[2]=t("div",{class:"bg-gradient-to-r from-green-500 to-emerald-600 text-white p-6 rounded-2xl mb-6"},[t("h1",{class:"text-3xl font-bold mb-2"},"🎯 Your First Fine-tuning"),t("p",{class:"text-xl opacity-90"}," Complete step-by-step guide. The technical part is easy β€” focus on creating great training data! ")],-1))]),e[57]||(e[57]=l('<div class="card mb-6" data-v-022ec2d4><h2 class="text-lg font-semibold mb-4" data-v-022ec2d4>Your Progress</h2><div class="relative" data-v-022ec2d4><div class="absolute top-1/2 left-0 right-0 h-1 bg-gray-200 -translate-y-1/2 z-0" data-v-022ec2d4></div><div class="absolute top-1/2 left-0 w-2/3 h-1 bg-green-500 -translate-y-1/2 z-0" data-v-022ec2d4></div><div class="relative z-10 flex justify-between" data-v-022ec2d4><div class="flex flex-col items-center" data-v-022ec2d4><div class="w-10 h-10 bg-green-500 text-white rounded-full flex items-center justify-center font-bold text-lg mb-2" data-v-022ec2d4> βœ“ </div><span class="text-sm font-medium text-green-700" data-v-022ec2d4>Create Dataset</span><span class="text-xs text-gray-500" data-v-022ec2d4>Done in edukaAI</span></div><div class="flex flex-col items-center" data-v-022ec2d4><div class="w-10 h-10 bg-green-500 text-white rounded-full flex items-center justify-center font-bold text-lg mb-2" data-v-022ec2d4> βœ“ </div><span class="text-sm font-medium text-green-700" data-v-022ec2d4>Export Data</span><span class="text-xs text-gray-500" data-v-022ec2d4>Downloaded JSON</span></div><div class="flex flex-col items-center" data-v-022ec2d4><div class="w-10 h-10 bg-blue-600 text-white rounded-full flex items-center justify-center font-bold text-lg mb-2 animate-pulse" data-v-022ec2d4> 3 </div><span class="text-sm font-medium text-blue-700" data-v-022ec2d4>Train Model</span><span class="text-xs text-gray-500" data-v-022ec2d4>You are here β†’</span></div><div class="flex flex-col items-center" data-v-022ec2d4><div class="w-10 h-10 bg-gray-300 text-gray-500 rounded-full flex items-center justify-center font-bold text-lg mb-2" data-v-022ec2d4> 4 </div><span class="text-sm font-medium text-gray-500" data-v-022ec2d4>Test Model</span><span class="text-xs text-gray-500" data-v-022ec2d4>Chat with AI</span></div></div></div><div class="mt-6 p-3 bg-blue-50 rounded-lg border border-blue-200 text-center" data-v-022ec2d4><p class="text-sm text-blue-800" data-v-022ec2d4><strong data-v-022ec2d4>⏱️ Total Time:</strong> ~25 minutes active work + 15-20 minutes computer processing </p></div></div>',1)),t("div",T,[e[10]||(e[10]=t("h2",{class:"text-xl font-semibold mb-4 flex items-center gap-2"},[t("span",{class:"text-2xl"},"βœ…"),a(" Pre-Flight Checklist ")],-1)),e[11]||(e[11]=t("p",{class:"text-gray-700 mb-4"},"Before you start, make sure you have:",-1)),t("div",C,[t("div",q,[e[8]||(e[8]=t("input",{type:"checkbox",id:"check-dataset",class:"w-5 h-5 mt-0.5 text-green-600 rounded border-gray-300 focus:ring-green-500"},null,-1)),t("label",A,[e[7]||(e[7]=t("span",{class:"font-semibold text-gray-800"},"Dataset File",-1)),t("p",I,[e[4]||(e[4]=a(" You have ",-1)),e[5]||(e[5]=t("code",{class:"bg-gray-100 px-1 rounded"},"dataset_alpaca.json",-1)),e[6]||(e[6]=a(" from edukaAI export ",-1)),s(d,{to:"/export",class:"text-blue-600 hover:underline ml-1"},{default:o(()=>[...e[3]||(e[3]=[a("(get it here)",-1)])]),_:1})])])]),e[9]||(e[9]=l('<div class="flex items-start gap-3 p-3 bg-white rounded-lg border border-yellow-200" data-v-022ec2d4><input type="checkbox" id="check-python" class="w-5 h-5 mt-0.5 text-green-600 rounded border-gray-300 focus:ring-green-500" data-v-022ec2d4><label for="check-python" class="flex-1 cursor-pointer" data-v-022ec2d4><span class="font-semibold text-gray-800" data-v-022ec2d4>Python 3.9+</span><p class="text-sm text-gray-600" data-v-022ec2d4> Check by running: <code class="bg-gray-800 text-green-400 px-2 py-0.5 rounded text-xs" data-v-022ec2d4>python --version</code> in terminal </p></label></div><div class="flex items-start gap-3 p-3 bg-white rounded-lg border border-yellow-200" data-v-022ec2d4><input type="checkbox" id="check-time" class="w-5 h-5 mt-0.5 text-green-600 rounded border-gray-300 focus:ring-green-500" data-v-022ec2d4><label for="check-time" class="flex-1 cursor-pointer" data-v-022ec2d4><span class="font-semibold text-gray-800" data-v-022ec2d4>20-30 Minutes</span><p class="text-sm text-gray-600" data-v-022ec2d4> Training takes 15-20 minutes of computer time. You can do other things while it runs! </p></label></div><div class="flex items-start gap-3 p-3 bg-white rounded-lg border border-yellow-200" data-v-022ec2d4><input type="checkbox" id="check-expectations" class="w-5 h-5 mt-0.5 text-green-600 rounded border-gray-300 focus:ring-green-500" data-v-022ec2d4><label for="check-expectations" class="flex-1 cursor-pointer" data-v-022ec2d4><span class="font-semibold text-gray-800" data-v-022ec2d4>Realistic Expectations</span><p class="text-sm text-gray-600" data-v-022ec2d4> With 10-20 examples, results will be okay but inconsistent. That&#39;s normal! This is a learning exercise, not production AI. </p></label></div>',3))]),e[12]||(e[12]=t("div",{class:"mt-4 p-3 bg-green-100 rounded-lg border border-green-300"},[t("p",{class:"text-sm text-green-800 text-center font-medium"}," ✨ Checked all 4 boxes? You're ready to start! ")],-1))]),e[58]||(e[58]=l('<div class="card mb-6 bg-gradient-to-r from-blue-50 to-purple-50" data-v-022ec2d4><h2 class="text-xl font-semibold mb-4" data-v-022ec2d4>What You&#39;ll Accomplish</h2><div class="grid grid-cols-1 md:grid-cols-3 gap-4" data-v-022ec2d4><div class="text-center p-4" data-v-022ec2d4><div class="text-4xl mb-2" data-v-022ec2d4>πŸ“Š</div><h3 class="font-semibold mb-1" data-v-022ec2d4>Export Data</h3><p class="text-sm text-gray-600" data-v-022ec2d4>Already done in edukaAI</p></div><div class="text-center p-4" data-v-022ec2d4><div class="text-4xl mb-2" data-v-022ec2d4>βš™οΈ</div><h3 class="font-semibold mb-1" data-v-022ec2d4>Train Model</h3><p class="text-sm text-gray-600" data-v-022ec2d4>Just 3 simple commands</p></div><div class="text-center p-4" data-v-022ec2d4><div class="text-4xl mb-2" data-v-022ec2d4>πŸŽ‰</div><h3 class="font-semibold mb-1" data-v-022ec2d4>Chat with AI</h3><p class="text-sm text-gray-600" data-v-022ec2d4>That learned from YOUR data</p></div></div><div class="mt-4 p-4 bg-white rounded-lg border-2 border-green-200" data-v-022ec2d4><p class="text-center text-green-800 font-medium" data-v-022ec2d4> πŸ’‘ Remember: Training the model is the <strong data-v-022ec2d4>easy part</strong>. Creating quality training data is where the magic happens β€” and that&#39;s what edukaAI helps you with! </p></div></div>',1)),t("div",j,[e[26]||(e[26]=t("h2",{class:"text-xl font-semibold mb-4"},"πŸ“‹ Before You Start (Prerequisites)",-1)),t("div",L,[t("div",_,[e[19]||(e[19]=t("div",{class:"w-8 h-8 bg-green-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0"},"βœ“",-1)),t("div",null,[e[18]||(e[18]=t("h3",{class:"font-semibold text-green-800"},"Your Dataset from edukaAI",-1)),t("p",Y,[e[14]||(e[14]=a(" You should have exported your dataset as ",-1)),e[15]||(e[15]=t("code",null,"dataset_alpaca.json",-1)),e[16]||(e[16]=a(". If not, ",-1)),s(d,{to:"/export",class:"text-blue-600 hover:underline"},{default:o(()=>[...e[13]||(e[13]=[a("go to Export",-1)])]),_:1}),e[17]||(e[17]=a(" first. ",-1))])])]),t("div",M,[e[24]||(e[24]=t("div",{class:"w-8 h-8 bg-blue-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0"},"1",-1)),t("div",null,[e[21]||(e[21]=t("h3",{class:"font-semibold text-blue-800"},"Python 3.9 or higher",-1)),e[22]||(e[22]=t("p",{class:"text-gray-700 mb-2"},"Check if you have it:",-1)),t("div",F,[e[20]||(e[20]=t("code",{class:"block bg-gray-800 text-green-400 p-3 rounded text-sm"},"python --version",-1)),t("button",{onClick:e[0]||(e[0]=i=>m("python --version",0)),class:"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity bg-gray-700 hover:bg-gray-600 text-white text-xs px-2 py-1 rounded flex items-center gap-1"},[n.value===0?(p(),v("span",G,"βœ“ Copied!")):(p(),v("span",S,"πŸ“‹ Copy"))])]),e[23]||(e[23]=t("p",{class:"text-sm text-gray-600 mt-2"},[a(" Don't have it? "),t("a",{href:"https://www.python.org/downloads/",target:"_blank",class:"text-blue-600 hover:underline"},"Download Python")],-1))])]),e[25]||(e[25]=l('<div class="flex items-start gap-4 p-4 bg-yellow-50 rounded-lg border border-yellow-200" data-v-022ec2d4><div class="w-8 h-8 bg-yellow-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>2</div><div data-v-022ec2d4><h3 class="font-semibold text-yellow-800" data-v-022ec2d4>A GPU... OR Use Hugging Face!</h3><p class="text-gray-700 mb-2" data-v-022ec2d4> Training requires a GPU, unless you use Hugging Face AutoTrain. Choose your path: </p><div class="grid grid-cols-1 md:grid-cols-3 gap-3" data-v-022ec2d4><div class="p-3 bg-white rounded border" data-v-022ec2d4><h4 class="font-semibold text-sm mb-1" data-v-022ec2d4>Option A: Your Computer</h4><p class="text-xs text-gray-600" data-v-022ec2d4>If you have an NVIDIA GPU with 8GB+ VRAM</p></div><div class="p-3 bg-white rounded border border-green-300 bg-green-50" data-v-022ec2d4><h4 class="font-semibold text-sm mb-1 text-green-700" data-v-022ec2d4>Option B: Google Colab ⭐</h4><p class="text-xs text-gray-600" data-v-022ec2d4>Free GPU in the cloud. Great for beginners!</p></div><div class="p-3 bg-white rounded border border-yellow-300 bg-yellow-50" data-v-022ec2d4><h4 class="font-semibold text-sm mb-1 text-yellow-700" data-v-022ec2d4>Option C: Hugging Face πŸ€—</h4><p class="text-xs text-gray-600" data-v-022ec2d4>No GPU needed! Web-based, easiest for non-coders</p></div></div></div></div>',1))])]),e[59]||(e[59]=l(`<div class="card mb-6 border-2 border-green-300" data-v-022ec2d4><div class="flex items-center gap-3 mb-4" data-v-022ec2d4><span class="text-3xl" data-v-022ec2d4>☁️</span><h2 class="text-2xl font-bold text-green-700" data-v-022ec2d4>Path A: Google Colab (Easiest - Free GPU!)</h2></div><p class="text-gray-700 mb-6" data-v-022ec2d4> Google Colab provides a free GPU in the cloud. No setup on your computer needed. This is the <strong data-v-022ec2d4>recommended path for beginners</strong>. </p><div class="mb-6" data-v-022ec2d4><div class="flex items-center justify-between mb-3" data-v-022ec2d4><div class="flex items-center gap-3" data-v-022ec2d4><div class="w-10 h-10 bg-blue-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>1</div><div data-v-022ec2d4><h3 class="text-lg font-semibold" data-v-022ec2d4>Upload Your Dataset</h3><span class="text-sm text-gray-500" data-v-022ec2d4>⏱️ 2 minutes</span></div></div></div><div class="ml-13 pl-4 border-l-4 border-blue-200" data-v-022ec2d4><ol class="list-decimal list-inside space-y-2 text-gray-700" data-v-022ec2d4><li data-v-022ec2d4>Go to <a href="https://colab.research.google.com" target="_blank" class="text-blue-600 hover:underline font-semibold" data-v-022ec2d4>Google Colab</a></li><li data-v-022ec2d4>Click &quot;New Notebook&quot;</li><li data-v-022ec2d4>In the left sidebar, click the πŸ“ folder icon</li><li data-v-022ec2d4>Click &quot;Upload&quot; and select your <code data-v-022ec2d4>dataset_alpaca.json</code> file</li><li data-v-022ec2d4>Wait for upload to complete (green checkmark)</li></ol><div class="mt-3 p-3 bg-gray-50 rounded text-sm" data-v-022ec2d4><strong data-v-022ec2d4>πŸ’‘ Tip:</strong> The file will appear in the <code data-v-022ec2d4>/content/</code> folder </div><div class="mt-2 p-2 bg-yellow-50 rounded border border-yellow-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>πŸ†˜ Stuck?</strong> File not uploading? Try refreshing the page or checking file size (should be &lt; 50MB) </div></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center justify-between mb-3" data-v-022ec2d4><div class="flex items-center gap-3" data-v-022ec2d4><div class="w-10 h-10 bg-blue-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>2</div><div data-v-022ec2d4><h3 class="text-lg font-semibold" data-v-022ec2d4>Enable GPU</h3><span class="text-sm text-gray-500" data-v-022ec2d4>⏱️ 1 minute</span></div></div></div><div class="ml-13 pl-4 border-l-4 border-blue-200" data-v-022ec2d4><ol class="list-decimal list-inside space-y-2 text-gray-700" data-v-022ec2d4><li data-v-022ec2d4>Click &quot;Runtime&quot; in the top menu</li><li data-v-022ec2d4>Click &quot;Change runtime type&quot;</li><li data-v-022ec2d4>Under &quot;Hardware accelerator&quot;, select &quot;T4 GPU&quot;</li><li data-v-022ec2d4>Click &quot;Save&quot;</li></ol><div class="mt-2 p-2 bg-yellow-50 rounded border border-yellow-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>⚠️ Important:</strong> Without GPU, training will be extremely slow (hours instead of minutes) or may fail! </div></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center justify-between mb-3" data-v-022ec2d4><div class="flex items-center gap-3" data-v-022ec2d4><div class="w-10 h-10 bg-blue-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>3</div><div data-v-022ec2d4><h3 class="text-lg font-semibold" data-v-022ec2d4>Install Axolotl</h3><span class="text-sm text-gray-500" data-v-022ec2d4>⏱️ 3 minutes (mostly waiting)</span></div></div></div><div class="ml-13 pl-4 border-l-4 border-blue-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>In the first code cell, type:</p><code class="block bg-gray-800 text-green-400 p-3 rounded text-sm mb-2" data-v-022ec2d4> !pip install axolotl </code><p class="text-gray-700" data-v-022ec2d4>Press <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Shift</kbd> + <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Enter</kbd> to run</p><div class="mt-3 p-3 bg-yellow-50 rounded border border-yellow-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>⏳ Wait:</strong> Installation takes 2-3 minutes. Watch the output scroll by! You&#39;ll see progress bars. </div><div class="mt-2 p-2 bg-red-50 rounded border border-red-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>πŸ†˜ Error?</strong> If you see red text, try: <code data-v-022ec2d4>!pip install --upgrade axolotl</code> or restart runtime (Runtime β†’ Restart runtime) </div></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center justify-between mb-3" data-v-022ec2d4><div class="flex items-center gap-3" data-v-022ec2d4><div class="w-10 h-10 bg-blue-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>4</div><div data-v-022ec2d4><h3 class="text-lg font-semibold" data-v-022ec2d4>Create Your Config</h3><span class="text-sm text-gray-500" data-v-022ec2d4>⏱️ 3 minutes</span></div></div></div><div class="ml-13 pl-4 border-l-4 border-blue-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>Create a new code cell and paste this:</p><pre class="bg-gray-800 text-green-400 p-3 rounded text-sm overflow-x-auto" data-v-022ec2d4><code data-v-022ec2d4>config = &#39;&#39;&#39;
2
+ base_model: TinyLlama/TinyLlama-1.1B-Chat-v1.0
3
+ model_type: LlamaForCausalLM
4
+ tokenizer_type: LlamaTokenizer
5
+
6
+ # Your edukaAI dataset
7
+ datasets:
8
+ - path: /content/dataset_alpaca.json
9
+ type: alpaca
10
+
11
+ # Training settings (keep it simple!)
12
+ num_epochs: 3
13
+ micro_batch_size: 1
14
+ gradient_accumulation_steps: 4
15
+ learning_rate: 0.0002
16
+
17
+ # Where to save your trained model
18
+ output_dir: /content/my-first-model
19
+
20
+ # Use less memory (good for Colab)
21
+ load_in_8bit: true
22
+ &#39;&#39;&#39;
23
+
24
+ # Save the config
25
+ with open(&#39;/content/config.yaml&#39;, &#39;w&#39;) as f:
26
+ f.write(config)
27
+
28
+ print(&quot;βœ… Config created!&quot;)</code></pre><p class="text-gray-700 mt-2" data-v-022ec2d4>Run it with <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Shift</kbd> + <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Enter</kbd></p><div class="mt-2 p-2 bg-blue-50 rounded border border-blue-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>πŸ’‘ Tip:</strong> If your dataset filename is different, change <code data-v-022ec2d4>/content/dataset_alpaca.json</code> to match </div></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center justify-between mb-3" data-v-022ec2d4><div class="flex items-center gap-3" data-v-022ec2d4><div class="w-10 h-10 bg-purple-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>5</div><div data-v-022ec2d4><h3 class="text-lg font-semibold" data-v-022ec2d4>Train Your Model! πŸš€</h3><span class="text-sm text-gray-500" data-v-022ec2d4>⏱️ 15-20 minutes β˜• (computer does the work)</span></div></div></div><div class="ml-13 pl-4 border-l-4 border-purple-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>Create another code cell:</p><code class="block bg-gray-800 text-green-400 p-3 rounded text-sm mb-2" data-v-022ec2d4> !axolotl train /content/config.yaml </code><p class="text-gray-700" data-v-022ec2d4>Run it and watch the magic happen! ✨</p><div class="mt-3 p-3 bg-blue-50 rounded border border-blue-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>What you&#39;ll see:</strong><br data-v-022ec2d4> β€’ Loading model... βœ“<br data-v-022ec2d4> β€’ Loading dataset... βœ“<br data-v-022ec2d4> β€’ Epoch 1/3: [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100%<br data-v-022ec2d4> β€’ Epoch 2/3: [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100%<br data-v-022ec2d4> β€’ Epoch 3/3: [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100%<br data-v-022ec2d4> β€’ Training complete! βœ“ </div><div class="mt-2 p-2 bg-yellow-50 rounded border border-yellow-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>β˜• This takes time:</strong> Go grab coffee! The computer is working. Don&#39;t close the tab. </div><div class="mt-2 p-2 bg-red-50 rounded border border-red-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>πŸ†˜ Taking &gt;30 mins?</strong> This is too long. Try:<br data-v-022ec2d4> β€’ Change model to <code data-v-022ec2d4>TinyLlama/TinyLlama-1.1B-Chat-v1.0</code> (smaller = faster)<br data-v-022ec2d4> β€’ Or add <code data-v-022ec2d4>num_epochs: 1</code> to config (less training) </div><div class="mt-2 p-2 bg-red-50 rounded border border-red-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>πŸ†˜ Out of Memory error?</strong> Add this to config:<br data-v-022ec2d4><code data-v-022ec2d4>load_in_4bit: true</code> (instead of 8bit)<br data-v-022ec2d4> Or use even smaller model </div></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center justify-between mb-3" data-v-022ec2d4><div class="flex items-center gap-3" data-v-022ec2d4><div class="w-10 h-10 bg-green-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>6</div><div data-v-022ec2d4><h3 class="text-lg font-semibold" data-v-022ec2d4>Chat With Your Model πŸ’¬</h3><span class="text-sm text-gray-500" data-v-022ec2d4>⏱️ 5 minutes</span></div></div></div><div class="ml-13 pl-4 border-l-4 border-green-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>After training completes, test your model:</p><pre class="bg-gray-800 text-green-400 p-3 rounded text-sm overflow-x-auto" data-v-022ec2d4><code data-v-022ec2d4>from transformers import AutoModelForCausalLM, AutoTokenizer
29
+ import torch
30
+
31
+ # Load your trained model
32
+ model_path = &quot;/content/my-first-model&quot;
33
+ model = AutoModelForCausalLM.from_pretrained(
34
+ model_path,
35
+ torch_dtype=torch.float16,
36
+ device_map=&quot;auto&quot;
37
+ )
38
+ tokenizer = AutoTokenizer.from_pretrained(model_path)
39
+
40
+ # Test it!
41
+ prompt = &quot;What is photosynthesis?&quot;
42
+ inputs = tokenizer(prompt, return_tensors=&quot;pt&quot;).to(model.device)
43
+
44
+ # Generate response
45
+ with torch.no_grad():
46
+ outputs = model.generate(
47
+ **inputs,
48
+ max_new_tokens=100,
49
+ temperature=0.7
50
+ )
51
+
52
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
53
+ print(f&quot;You: {prompt}&quot;)
54
+ print(f&quot;Model: {response}&quot;)</code></pre><div class="mt-3 p-3 bg-green-100 rounded text-sm text-green-800" data-v-022ec2d4><strong data-v-022ec2d4>πŸŽ‰ Success!</strong> If you see a response (even if imperfect), you trained your first AI model! </div><div class="mt-2 p-2 bg-gray-50 rounded border border-gray-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>What to expect:</strong> With only 10-20 training examples, responses will be <strong data-v-022ec2d4>okay but inconsistent</strong>. Some will be great, some weird. This is normal! </div></div></div><div data-v-022ec2d4><div class="flex items-center justify-between mb-3" data-v-022ec2d4><div class="flex items-center gap-3" data-v-022ec2d4><div class="w-10 h-10 bg-yellow-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>7</div><div data-v-022ec2d4><h3 class="text-lg font-semibold" data-v-022ec2d4>Save Your Model (Important!)</h3><span class="text-sm text-gray-500" data-v-022ec2d4>⏱️ 2 minutes</span></div></div></div><div class="ml-13 pl-4 border-l-4 border-yellow-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>⚠️ Colab deletes files when you close it. Download your model:</p><ol class="list-decimal list-inside space-y-2 text-gray-700" data-v-022ec2d4><li data-v-022ec2d4>In the file browser (left sidebar), find <code data-v-022ec2d4>my-first-model</code> folder</li><li data-v-022ec2d4>Right-click it β†’ &quot;Download&quot;</li><li data-v-022ec2d4>It will create a ZIP file you can save to your computer</li></ol><div class="mt-2 p-2 bg-red-50 rounded border border-red-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>⚠️ Don&#39;t skip this!</strong> If you don&#39;t download, you&#39;ll lose your trained model when Colab session ends. </div></div></div><div class="mt-8 p-6 bg-gradient-to-r from-purple-50 to-blue-50 rounded-xl border-2 border-purple-200" data-v-022ec2d4><h3 class="text-xl font-bold text-purple-700 mb-3 flex items-center gap-2" data-v-022ec2d4><span data-v-022ec2d4>⚑</span> Shortcut: Pre-Built Colab Notebook </h3><p class="text-gray-700 mb-4" data-v-022ec2d4> Want to skip copy-pasting? Use our pre-configured notebook with everything set up! </p><a href="https://colab.research.google.com/drive/1axolotl-edukaai-template" target="_blank" class="inline-flex items-center gap-2 bg-purple-600 hover:bg-purple-700 text-white font-semibold py-3 px-6 rounded-lg transition-colors" data-v-022ec2d4><span data-v-022ec2d4>πŸš€</span> Open Pre-Built Template </a><p class="text-sm text-gray-500 mt-3" data-v-022ec2d4> Just upload your dataset and click run! All config included. </p></div></div><div class="card mb-6 bg-gradient-to-r from-green-50 to-emerald-50 border-green-300" data-v-022ec2d4><h2 class="text-2xl font-bold mb-4 text-green-700 flex items-center gap-2" data-v-022ec2d4><span data-v-022ec2d4>βœ…</span> How to Know It Worked </h2><div class="space-y-4" data-v-022ec2d4><div class="p-4 bg-white rounded-lg border border-green-200" data-v-022ec2d4><h3 class="font-semibold text-green-800 mb-2" data-v-022ec2d4>βœ“ You Should See This:</h3><pre class="bg-gray-800 text-green-400 p-3 rounded text-xs overflow-x-auto" data-v-022ec2d4>Loading model... βœ“
55
+ Loading dataset... βœ“ (16 examples)
56
+ Starting training...
57
+ Epoch 1/3: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 16/16 [02:30&lt;00:00]
58
+ Epoch 2/3: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 16/16 [02:28&lt;00:00]
59
+ Epoch 3/3: 100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 16/16 [02:29&lt;00:00]
60
+ Training complete! βœ“
61
+ Model saved to /content/my-first-model</pre></div><div class="p-4 bg-white rounded-lg border border-green-200" data-v-022ec2d4><h3 class="font-semibold text-green-800 mb-2" data-v-022ec2d4>βœ“ When Testing, You&#39;ll Get:</h3><div class="bg-gray-100 p-3 rounded text-sm font-mono" data-v-022ec2d4> You: What is photosynthesis?<br data-v-022ec2d4> Model: Photosynthesis is the process by which plants use sunlight, water, and carbon dioxide to create oxygen and energy in the form of sugar. It&#39;s how plants make their food! </div><p class="text-sm text-gray-600 mt-2" data-v-022ec2d4><strong data-v-022ec2d4>It doesn&#39;t need to be perfect!</strong> Even partial or slightly weird responses mean it worked. With only 10-20 examples, quality will vary. </p></div><div class="p-4 bg-yellow-50 rounded-lg border border-yellow-200" data-v-022ec2d4><h3 class="font-semibold text-yellow-800 mb-2" data-v-022ec2d4>⚠️ If You Get Gibberish:</h3><p class="text-sm text-gray-700" data-v-022ec2d4> This is <strong data-v-022ec2d4>totally normal</strong> with a small dataset! The model hasn&#39;t learned enough yet. Signs of partial success: </p><ul class="text-sm text-gray-700 mt-2 ml-4 list-disc" data-v-022ec2d4><li data-v-022ec2d4>Response relates to your training topic (even if incorrect)</li><li data-v-022ec2d4>Grammar is somewhat coherent</li><li data-v-022ec2d4>It&#39;s not random characters</li></ul><p class="text-sm text-gray-700 mt-2" data-v-022ec2d4><strong data-v-022ec2d4>Solution:</strong> Go back to edukaAI and add 30-50 more high-quality examples, then retrain! </p></div></div></div><div class="card mb-6" data-v-022ec2d4><div class="flex items-center gap-3 mb-4" data-v-022ec2d4><span class="text-3xl" data-v-022ec2d4>πŸ’»</span><h2 class="text-2xl font-bold" data-v-022ec2d4>Path B: Your Local Computer</h2></div><p class="text-gray-700 mb-6" data-v-022ec2d4> If you have a powerful NVIDIA GPU (8GB+ VRAM), you can train on your own computer. The steps are similar to Colab, just on your machine. </p><div class="mb-6" data-v-022ec2d4><div class="flex items-center gap-3 mb-3" data-v-022ec2d4><div class="w-10 h-10 bg-blue-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>3</div><h3 class="text-lg font-semibold" data-v-022ec2d4>Install Axolotl</h3></div><div class="ml-13 pl-4 border-l-4 border-blue-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>In the first code cell, type:</p><code class="block bg-gray-800 text-green-400 p-3 rounded text-sm mb-2" data-v-022ec2d4> !pip install axolotl </code><p class="text-gray-700" data-v-022ec2d4>Press <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Shift</kbd> + <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Enter</kbd> to run</p><div class="mt-3 p-3 bg-yellow-50 rounded border border-yellow-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>⏳ Wait:</strong> Installation takes 2-3 minutes. Watch the output scroll by! </div></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center gap-3 mb-3" data-v-022ec2d4><div class="w-10 h-10 bg-blue-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>4</div><h3 class="text-lg font-semibold" data-v-022ec2d4>Create Your Config</h3></div><div class="ml-13 pl-4 border-l-4 border-blue-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>Create a new code cell and paste this:</p><pre class="bg-gray-800 text-green-400 p-3 rounded text-sm overflow-x-auto" data-v-022ec2d4><code data-v-022ec2d4>config = &#39;&#39;&#39;
62
+ base_model: TinyLlama/TinyLlama-1.1B-Chat-v1.0
63
+ model_type: LlamaForCausalLM
64
+ tokenizer_type: LlamaTokenizer
65
+
66
+ # Your edukaAI dataset
67
+ datasets:
68
+ - path: /content/dataset_alpaca.json
69
+ type: alpaca
70
+
71
+ # Training settings (keep it simple!)
72
+ num_epochs: 3
73
+ micro_batch_size: 1
74
+ gradient_accumulation_steps: 4
75
+ learning_rate: 0.0002
76
+
77
+ # Where to save your trained model
78
+ output_dir: /content/my-first-model
79
+
80
+ # Use less memory (good for Colab)
81
+ load_in_8bit: true
82
+ &#39;&#39;&#39;
83
+
84
+ # Save the config
85
+ with open(&#39;/content/config.yaml&#39;, &#39;w&#39;) as f:
86
+ f.write(config)
87
+
88
+ print(&quot;βœ… Config created!&quot;)</code></pre><p class="text-gray-700 mt-2" data-v-022ec2d4>Run it with <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Shift</kbd> + <kbd class="bg-gray-200 px-2 py-1 rounded" data-v-022ec2d4>Enter</kbd></p></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center gap-3 mb-3" data-v-022ec2d4><div class="w-10 h-10 bg-purple-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>5</div><h3 class="text-lg font-semibold" data-v-022ec2d4>Train Your Model! πŸš€</h3></div><div class="ml-13 pl-4 border-l-4 border-purple-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>Create another code cell:</p><code class="block bg-gray-800 text-green-400 p-3 rounded text-sm mb-2" data-v-022ec2d4> !axolotl train /content/config.yaml </code><p class="text-gray-700" data-v-022ec2d4>Run it and watch the magic happen! ✨</p><div class="mt-3 p-3 bg-blue-50 rounded border border-blue-200 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>⏰ Time:</strong> This takes 10-20 minutes on Colab&#39;s free GPU. You&#39;ll see progress bars and loss values going down β€” that&#39;s good! </div></div></div><div class="mb-6" data-v-022ec2d4><div class="flex items-center gap-3 mb-3" data-v-022ec2d4><div class="w-10 h-10 bg-green-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>6</div><h3 class="text-lg font-semibold" data-v-022ec2d4>Chat With Your Model πŸ’¬</h3></div><div class="ml-13 pl-4 border-l-4 border-green-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>After training completes, test your model:</p><pre class="bg-gray-800 text-green-400 p-3 rounded text-sm overflow-x-auto" data-v-022ec2d4><code data-v-022ec2d4>from transformers import AutoModelForCausalLM, AutoTokenizer
89
+ import torch
90
+
91
+ # Load your trained model
92
+ model_path = &quot;/content/my-first-model&quot;
93
+ model = AutoModelForCausalLM.from_pretrained(
94
+ model_path,
95
+ torch_dtype=torch.float16,
96
+ device_map=&quot;auto&quot;
97
+ )
98
+ tokenizer = AutoTokenizer.from_pretrained(model_path)
99
+
100
+ # Test it!
101
+ prompt = &quot;What is photosynthesis?&quot;
102
+ inputs = tokenizer(prompt, return_tensors=&quot;pt&quot;).to(model.device)
103
+
104
+ # Generate response
105
+ with torch.no_grad():
106
+ outputs = model.generate(
107
+ **inputs,
108
+ max_new_tokens=100,
109
+ temperature=0.7
110
+ )
111
+
112
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
113
+ print(f&quot;You: {prompt}&quot;)
114
+ print(f&quot;Model: {response}&quot;)</code></pre><div class="mt-3 p-3 bg-green-100 rounded text-sm text-green-800" data-v-022ec2d4><strong data-v-022ec2d4>πŸŽ‰ Success!</strong> If you see a response, you trained your first AI model! </div></div></div><div data-v-022ec2d4><div class="flex items-center gap-3 mb-3" data-v-022ec2d4><div class="w-10 h-10 bg-yellow-600 text-white rounded-full flex items-center justify-center font-bold text-xl" data-v-022ec2d4>7</div><h3 class="text-lg font-semibold" data-v-022ec2d4>Save Your Model (Important!)</h3></div><div class="ml-13 pl-4 border-l-4 border-yellow-200" data-v-022ec2d4><p class="text-gray-700 mb-2" data-v-022ec2d4>⚠️ Colab deletes files when you close it. Download your model:</p><ol class="list-decimal list-inside space-y-2 text-gray-700" data-v-022ec2d4><li data-v-022ec2d4>In the file browser (left sidebar), find <code data-v-022ec2d4>my-first-model</code> folder</li><li data-v-022ec2d4>Right-click it β†’ &quot;Download&quot;</li><li data-v-022ec2d4>It will create a ZIP file you can save to your computer</li></ol></div></div></div><div class="card mb-6" data-v-022ec2d4><div class="flex items-center gap-3 mb-4" data-v-022ec2d4><span class="text-3xl" data-v-022ec2d4>πŸ’»</span><h2 class="text-2xl font-bold" data-v-022ec2d4>Path B: Your Local Computer</h2></div><p class="text-gray-700 mb-6" data-v-022ec2d4> If you have a powerful NVIDIA GPU (8GB+ VRAM), you can train on your own computer. The steps are similar to Colab, just on your machine. </p><div class="space-y-4" data-v-022ec2d4><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-gray-800 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>1</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Create Project Folder</h3><code class="block bg-gray-800 text-green-400 p-2 rounded text-sm mt-2" data-v-022ec2d4> mkdir my-first-training<br data-v-022ec2d4> cd my-first-training </code></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-gray-800 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>2</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Copy Your Dataset</h3><p class="text-gray-700 text-sm" data-v-022ec2d4>Copy your <code data-v-022ec2d4>dataset_alpaca.json</code> into this folder</p></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-gray-800 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>3</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Install Axolotl</h3><code class="block bg-gray-800 text-green-400 p-2 rounded text-sm mt-2" data-v-022ec2d4> pip install axolotl </code></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-gray-800 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>4</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Create Config File</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4>Create <code data-v-022ec2d4>config.yaml</code> with this content:</p><pre class="bg-gray-800 text-green-400 p-3 rounded text-sm overflow-x-auto" data-v-022ec2d4><code data-v-022ec2d4>base_model: TinyLlama/TinyLlama-1.1B-Chat-v1.0
115
+ model_type: LlamaForCausalLM
116
+ tokenizer_type: LlamaTokenizer
117
+
118
+ # Your edukaAI dataset
119
+ datasets:
120
+ - path: ./dataset_alpaca.json
121
+ type: alpaca
122
+
123
+ # Training settings
124
+ num_epochs: 3
125
+ micro_batch_size: 1
126
+ gradient_accumulation_steps: 4
127
+ learning_rate: 0.0002
128
+
129
+ # Where to save
130
+ output_dir: ./my-first-model
131
+
132
+ # Use 8-bit to save memory
133
+ load_in_8bit: true</code></pre></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-purple-600 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>5</div><div data-v-022ec2d4><h3 class="font-semibold text-purple-700" data-v-022ec2d4>Train!</h3><code class="block bg-gray-800 text-green-400 p-2 rounded text-sm mt-2" data-v-022ec2d4> axolotl train config.yaml </code><p class="text-gray-600 text-sm mt-2" data-v-022ec2d4>Training takes 30-60 minutes depending on your GPU</p></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-green-600 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>6</div><div data-v-022ec2d4><h3 class="font-semibold text-green-700" data-v-022ec2d4>Test Your Model</h3><p class="text-gray-700 text-sm" data-v-022ec2d4>Your trained model is now in <code data-v-022ec2d4>./my-first-model</code> folder!</p><p class="text-gray-700 text-sm mt-2" data-v-022ec2d4>Use the same Python code as Colab (above) to chat with it</p></div></div></div></div><div class="card mb-6 border-2 border-yellow-400 bg-gradient-to-r from-yellow-50 to-orange-50" data-v-022ec2d4><div class="flex items-center gap-3 mb-4" data-v-022ec2d4><span class="text-3xl" data-v-022ec2d4>πŸ€—</span><h2 class="text-2xl font-bold text-yellow-700" data-v-022ec2d4>Path C: Hugging Face (AutoTrain - Easiest GUI!)</h2></div><p class="text-gray-700 mb-6" data-v-022ec2d4> Want to train without writing any code? Use Hugging Face AutoTrain - a web interface where you just upload your dataset and click &quot;Train&quot;. No Colab, no command line! </p><div class="space-y-4" data-v-022ec2d4><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-yellow-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>1</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Create Hugging Face Account</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4> Go to <a href="https://huggingface.co/join" target="_blank" class="text-blue-600 hover:underline font-semibold" data-v-022ec2d4>huggingface.co/join</a> and sign up for free. </p><div class="p-2 bg-white rounded border border-yellow-200 text-xs text-gray-600" data-v-022ec2d4> πŸ’‘ The free tier is enough to get started and experiment! </div></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-yellow-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>2</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Go to AutoTrain</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4> Visit <a href="https://huggingface.co/autotrain" target="_blank" class="text-blue-600 hover:underline font-semibold" data-v-022ec2d4>huggingface.co/autotrain</a> and create a new project. </p><div class="p-2 bg-white rounded border border-yellow-200 text-xs text-gray-600" data-v-022ec2d4> 🎯 Select &quot;LLM Fine-tuning&quot; as your project type </div></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-yellow-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>3</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Upload Your Dataset</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4> Click &quot;Upload Dataset&quot; and select your <code data-v-022ec2d4>dataset_alpaca.json</code> file from edukaAI. </p><div class="p-2 bg-white rounded border border-yellow-200 text-xs text-gray-600" data-v-022ec2d4> πŸ“ AutoTrain supports the Alpaca format automatically - no conversion needed! </div></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-yellow-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>4</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Choose Base Model</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4> Select a model to start from. Good beginner options: </p><ul class="text-sm text-gray-700 ml-4 list-disc" data-v-022ec2d4><li data-v-022ec2d4><code data-v-022ec2d4>TinyLlama/TinyLlama-1.1B-Chat-v1.0</code> (fast, free tier)</li><li data-v-022ec2d4><code data-v-022ec2d4>meta-llama/Llama-2-7b-chat-hf</code> (better quality, requires HF Pro)</li></ul></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-yellow-500 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>5</div><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Configure Training (Keep It Simple!)</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4>Use these beginner-friendly settings:</p><div class="bg-white p-3 rounded border border-gray-200 text-sm" data-v-022ec2d4><table class="w-full text-sm" data-v-022ec2d4><tbody data-v-022ec2d4><tr class="border-b" data-v-022ec2d4><td class="py-1 font-medium" data-v-022ec2d4>Epochs:</td><td data-v-022ec2d4>3</td></tr><tr class="border-b" data-v-022ec2d4><td class="py-1 font-medium" data-v-022ec2d4>Learning Rate:</td><td data-v-022ec2d4>0.0002</td></tr><tr class="border-b" data-v-022ec2d4><td class="py-1 font-medium" data-v-022ec2d4>Batch Size:</td><td data-v-022ec2d4>1</td></tr><tr data-v-022ec2d4><td class="py-1 font-medium" data-v-022ec2d4>LoRA Rank:</td><td data-v-022ec2d4>8 (reduces memory)</td></tr></tbody></table></div></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-purple-600 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>6</div><div data-v-022ec2d4><h3 class="font-semibold text-purple-700" data-v-022ec2d4>Click &quot;Start Training&quot; πŸš€</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4> That&#39;s it! AutoTrain will handle everything: </p><ul class="text-sm text-gray-700 ml-4 list-disc" data-v-022ec2d4><li data-v-022ec2d4>Download the base model</li><li data-v-022ec2d4>Fine-tune on your data</li><li data-v-022ec2d4>Save to your Hugging Face Hub</li><li data-v-022ec2d4>Create a demo space automatically!</li></ul><div class="mt-2 p-2 bg-blue-50 rounded border border-blue-200 text-xs text-gray-600" data-v-022ec2d4> ⏱️ Training takes 10-30 minutes depending on dataset size and model </div></div></div><div class="flex items-start gap-4" data-v-022ec2d4><div class="w-8 h-8 bg-green-600 text-white rounded-full flex items-center justify-center font-bold flex-shrink-0" data-v-022ec2d4>7</div><div data-v-022ec2d4><h3 class="font-semibold text-green-700" data-v-022ec2d4>Test &amp; Share Your Model! πŸŽ‰</h3><p class="text-gray-700 text-sm mb-2" data-v-022ec2d4> Once training completes: </p><ul class="text-sm text-gray-700 ml-4 list-disc space-y-1" data-v-022ec2d4><li data-v-022ec2d4>Your model is automatically hosted on Hugging Face</li><li data-v-022ec2d4>AutoTrain creates a demo Space where you can chat with it</li><li data-v-022ec2d4>Share the link with anyone - they can try your AI!</li><li data-v-022ec2d4>Download the model files anytime</li></ul><div class="mt-3 p-3 bg-green-100 rounded border border-green-300 text-sm text-green-800" data-v-022ec2d4><strong data-v-022ec2d4>✨ Bonus:</strong> You now have a public demo of YOUR trained AI that anyone can try! </div></div></div></div><div class="mt-6 p-4 bg-white rounded-lg border-2 border-yellow-300" data-v-022ec2d4><h3 class="font-bold text-yellow-800 mb-3 flex items-center gap-2" data-v-022ec2d4><span data-v-022ec2d4>πŸ€”</span> Why Choose Hugging Face? </h3><div class="grid grid-cols-1 md:grid-cols-3 gap-3 text-sm" data-v-022ec2d4><div class="p-2 bg-green-50 rounded" data-v-022ec2d4><strong class="text-green-700" data-v-022ec2d4>βœ… No Code</strong><p class="text-gray-600" data-v-022ec2d4>Everything through web UI</p></div><div class="p-2 bg-blue-50 rounded" data-v-022ec2d4><strong class="text-blue-700" data-v-022ec2d4>βœ… Auto-Hosting</strong><p class="text-gray-600" data-v-022ec2d4>Model is live immediately</p></div><div class="p-2 bg-purple-50 rounded" data-v-022ec2d4><strong class="text-purple-700" data-v-022ec2d4>βœ… Free Demo</strong><p class="text-gray-600" data-v-022ec2d4>Shareable chat interface</p></div></div><div class="mt-3 text-xs text-gray-600" data-v-022ec2d4><strong data-v-022ec2d4>Note:</strong> Free tier has compute limits. For larger models or datasets, you may need Hugging Face Pro or compute credits. </div></div></div>`,5)),t("div",E,[e[33]||(e[33]=t("h2",{class:"text-xl font-semibold mb-4"},"⚠️ What to Expect",-1)),t("div",P,[e[32]||(e[32]=l('<div class="flex items-start gap-3" data-v-022ec2d4><span class="text-2xl" data-v-022ec2d4>⏱️</span><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Time</h3><p class="text-sm" data-v-022ec2d4>Training takes 10-20 minutes on Colab, 30-60 minutes locally. This is normal!</p></div></div><div class="flex items-start gap-3" data-v-022ec2d4><span class="text-2xl" data-v-022ec2d4>πŸ“Š</span><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>Quality</h3><p class="text-sm" data-v-022ec2d4>With 10-20 examples, results will be <strong data-v-022ec2d4>okay but inconsistent</strong>. This is expected! More data = better results.</p></div></div><div class="flex items-start gap-3" data-v-022ec2d4><span class="text-2xl" data-v-022ec2d4>🎯</span><div data-v-022ec2d4><h3 class="font-semibold" data-v-022ec2d4>The Point</h3><p class="text-sm" data-v-022ec2d4>This is a <strong data-v-022ec2d4>learning exercise</strong>. You&#39;re not creating production-ready AI β€” you&#39;re understanding the process!</p></div></div>',3)),t("div",U,[e[31]||(e[31]=t("span",{class:"text-2xl"},"πŸ”„",-1)),t("div",null,[e[30]||(e[30]=t("h3",{class:"font-semibold"},"Next Steps",-1)),t("p",W,[e[28]||(e[28]=a(" After seeing how it works, come back to edukaAI and ",-1)),s(d,{to:"/examples",class:"text-blue-600 hover:underline"},{default:o(()=>[...e[27]||(e[27]=[a("add more quality examples",-1)])]),_:1}),e[29]||(e[29]=a(". Then retrain for better results! ",-1))])])])])]),e[60]||(e[60]=l('<div class="card mb-6" data-v-022ec2d4><h2 class="text-xl font-semibold mb-4" data-v-022ec2d4>πŸ”§ Common Issues &amp; Solutions</h2><div class="space-y-4" data-v-022ec2d4><div class="p-4 bg-red-50 rounded-lg border border-red-200" data-v-022ec2d4><h3 class="font-semibold text-red-800 mb-1" data-v-022ec2d4>&quot;Out of Memory&quot; Error</h3><p class="text-gray-700 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>Solution:</strong> You&#39;re using a model too big for your GPU. Switch to an even smaller model like <code data-v-022ec2d4>TinyLlama/TinyLlama-1.1B-Chat-v1.0</code> (which we use above) or increase <code data-v-022ec2d4>load_in_8bit: true</code>. </p></div><div class="p-4 bg-yellow-50 rounded-lg border border-yellow-200" data-v-022ec2d4><h3 class="font-semibold text-yellow-800 mb-1" data-v-022ec2d4>&quot;ModuleNotFoundError: No module named &#39;axolotl&#39;&quot;</h3><p class="text-gray-700 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>Solution:</strong> Axolotl didn&#39;t install properly. Restart your runtime/environment and run <code data-v-022ec2d4>pip install axolotl</code> again. </p></div><div class="p-4 bg-blue-50 rounded-lg border border-blue-200" data-v-022ec2d4><h3 class="font-semibold text-blue-800 mb-1" data-v-022ec2d4>&quot;FileNotFoundError: dataset_alpaca.json&quot;</h3><p class="text-gray-700 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>Solution:</strong> The path in your config doesn&#39;t match where you uploaded the file. Check the path carefully! </p></div><div class="p-4 bg-gray-50 rounded-lg border border-gray-200" data-v-022ec2d4><h3 class="font-semibold text-gray-800 mb-1" data-v-022ec2d4>Model Generates Gibberish</h3><p class="text-gray-700 text-sm" data-v-022ec2d4><strong data-v-022ec2d4>Normal!</strong> With only 10-20 training examples, the model hasn&#39;t learned much yet. This is why <strong data-v-022ec2d4>dataset quality and quantity matter</strong>. Go back to edukaAI and add more diverse, high-quality examples! </p></div></div></div>',1)),t("div",R,[e[36]||(e[36]=l('<h2 class="text-xl font-semibold mb-4" data-v-022ec2d4>πŸŽ“ The Real Lesson</h2><p class="mb-4 opacity-90" data-v-022ec2d4> After completing this guide, you&#39;ll realize something important: </p><div class="p-4 bg-white bg-opacity-20 rounded-lg mb-4" data-v-022ec2d4><p class="text-lg font-medium" data-v-022ec2d4> &quot;Training the model was just running a command. The hard part β€” the part that matters β€” is creating good training data.&quot; </p></div><p class="opacity-90 mb-4" data-v-022ec2d4> That&#39;s exactly what edukaAI helps you with! The technical training is easy. Creating meaningful, diverse, high-quality training examples is where the value is. </p>',4)),t("div",D,[s(d,{to:"/examples",class:"bg-white bg-opacity-20 hover:bg-opacity-30 text-white py-3 px-4 rounded-lg text-center transition-colors"},{default:o(()=>[...e[34]||(e[34]=[a(" πŸ“ Add More Examples β†’ ",-1)])]),_:1}),s(d,{to:"/help/best-practices",class:"bg-white bg-opacity-20 hover:bg-opacity-30 text-white py-3 px-4 rounded-lg text-center transition-colors"},{default:o(()=>[...e[35]||(e[35]=[a(" πŸ“š Learn Best Practices β†’ ",-1)])]),_:1})])]),t("div",z,[e[49]||(e[49]=t("h2",{class:"text-2xl font-bold mb-4 flex items-center gap-2"},[t("span",null,"πŸš€"),a(" You Trained a Model! Now What? ")],-1)),e[50]||(e[50]=t("p",{class:"mb-4 opacity-90 text-lg"}," Congratulations! You've completed your first fine-tuning. Here's how to make it even better: ",-1)),t("div",N,[t("div",B,[e[38]||(e[38]=t("div",{class:"text-3xl mb-2"},"πŸ“ˆ",-1)),e[39]||(e[39]=t("h3",{class:"font-bold mb-2"},"Add More Data",-1)),e[40]||(e[40]=t("p",{class:"text-sm opacity-90"},[a(" 10 examples = okay results"),t("br"),a(" 50 examples = noticeably better"),t("br"),a(" 100 examples = quite good! ")],-1)),s(d,{to:"/examples",class:"mt-3 inline-block text-sm bg-white text-orange-600 px-3 py-1 rounded font-semibold hover:bg-opacity-90"},{default:o(()=>[...e[37]||(e[37]=[a(" Add Examples β†’ ",-1)])]),_:1})]),t("div",H,[e[42]||(e[42]=t("div",{class:"text-3xl mb-2"},"🎯",-1)),e[43]||(e[43]=t("h3",{class:"font-bold mb-2"},"Improve Quality",-1)),e[44]||(e[44]=t("p",{class:"text-sm opacity-90"},[a(" Review your examples:"),t("br"),a(" β€’ Fix low-quality ones"),t("br"),a(" β€’ Add more diverse topics"),t("br"),a(" β€’ Include edge cases ")],-1)),s(d,{to:"/help/best-practices",class:"mt-3 inline-block text-sm bg-white text-orange-600 px-3 py-1 rounded font-semibold hover:bg-opacity-90"},{default:o(()=>[...e[41]||(e[41]=[a(" Learn How β†’ ",-1)])]),_:1})]),t("div",O,[e[46]||(e[46]=t("div",{class:"text-3xl mb-2"},"πŸ”„",-1)),e[47]||(e[47]=t("h3",{class:"font-bold mb-2"},"Retrain & Compare",-1)),e[48]||(e[48]=t("p",{class:"text-sm opacity-90"},[a(" See the improvement:"),t("br"),a(" β€’ Export new dataset"),t("br"),a(" β€’ Retrain model"),t("br"),a(" β€’ Compare results! ")],-1)),s(d,{to:"/export",class:"mt-3 inline-block text-sm bg-white text-orange-600 px-3 py-1 rounded font-semibold hover:bg-opacity-90"},{default:o(()=>[...e[45]||(e[45]=[a(" Export Again β†’ ",-1)])]),_:1})])]),e[51]||(e[51]=l('<div class="p-4 bg-white bg-opacity-20 rounded-lg" data-v-022ec2d4><h3 class="font-bold mb-2 flex items-center gap-2" data-v-022ec2d4><span data-v-022ec2d4>πŸ’‘</span> The Iteration Loop </h3><div class="flex items-center justify-center gap-4 text-sm" data-v-022ec2d4><span class="text-center" data-v-022ec2d4>Add Data<br data-v-022ec2d4>in edukaAI</span><span class="text-2xl" data-v-022ec2d4>β†’</span><span class="text-center" data-v-022ec2d4>Export &amp;<br data-v-022ec2d4>Retrain</span><span class="text-2xl" data-v-022ec2d4>β†’</span><span class="text-center" data-v-022ec2d4>Test &amp;<br data-v-022ec2d4>Compare</span><span class="text-2xl" data-v-022ec2d4>β†’</span><span class="text-center" data-v-022ec2d4>Repeat<br data-v-022ec2d4>β†Ί</span></div><p class="text-center mt-3 text-sm opacity-90" data-v-022ec2d4> Each iteration makes your model smarter! 🧠 </p></div>',1))]),t("div",V,[e[54]||(e[54]=t("div",{class:"text-6xl mb-4"},"πŸŽ‰",-1)),e[55]||(e[55]=t("h2",{class:"text-2xl font-bold text-gray-800 mb-2"},"You're Ready!",-1)),e[56]||(e[56]=t("p",{class:"text-gray-600 mb-6"}," The technical part is straightforward. Focus on creating amazing training data β€” that's your superpower. ",-1)),t("div",J,[e[53]||(e[53]=t("a",{href:"https://colab.research.google.com",target:"_blank",class:"bg-blue-600 hover:bg-blue-700 text-white font-semibold py-3 px-8 rounded-lg transition-colors"}," Open Google Colab β†’ ",-1)),s(d,{to:"/export",class:"bg-gray-200 hover:bg-gray-300 text-gray-800 font-semibold py-3 px-8 rounded-lg transition-colors"},{default:o(()=>[...e[52]||(e[52]=[a(" Export Dataset First ",-1)])]),_:1})])])])}}},X=x(K,[["__scopeId","data-v-022ec2d4"]]);export{X as default};
@@ -0,0 +1 @@
1
+ import{_ as y}from"./C6E3Ty3z.js";import{_ as w,u as k,c,m as i,a as e,b as r,w as p,d as n,F as u,r as m,o as v,n as I,t as s}from"./Cg2fM61o.js";const C={class:"max-w-5xl mx-auto pb-20"},T={class:"card mb-8 bg-gradient-to-r from-purple-600 to-blue-600 text-white overflow-hidden"},q={class:"p-8"},A={class:"flex flex-col md:flex-row items-center justify-between gap-6"},L={class:"flex-1"},P={class:"card mb-8 sticky top-4 z-30 bg-white/95 backdrop-blur shadow-lg"},E={class:"flex flex-wrap gap-2 text-sm"},M={id:"getting-started",class:"mb-16"},S={class:"card"},F={class:"space-y-8"},G={class:"relative pl-8 border-l-2 border-blue-300"},R={class:"mt-4 p-3 bg-blue-50 rounded-lg"},D={class:"text-sm text-blue-800"},O={id:"best-practices",class:"mb-16"},j={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},B={class:"flex items-start gap-3"},H={class:"font-semibold mb-1"},N={class:"text-sm text-gray-600"},_={id:"common-mistakes",class:"mb-16"},W={class:"space-y-4"},Y={class:"font-semibold text-lg mb-2 text-red-700"},$={class:"text-gray-600 mb-3"},Q={class:"bg-green-50 p-3 rounded text-sm"},V={id:"faq",class:"mb-16"},U={class:"space-y-4"},z={class:"font-semibold text-lg mb-2 text-blue-700"},J=["innerHTML"],K={id:"glossary",class:"mb-16"},X={class:"card"},Z={class:"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-3 text-sm"},ee={class:"font-semibold text-blue-700 group-hover:text-blue-800 flex items-center gap-2"},de={class:"text-gray-600"},te={id:"next-steps",class:"mb-12"},ae={class:"card bg-gradient-to-br from-blue-50 to-purple-50"},se={class:"grid grid-cols-1 md:grid-cols-3 gap-4"},oe={__name:"index",setup(ie){k({title:"Guide - edukaAI",meta:[{name:"description",content:"Complete guide to LLM fine-tuning and creating training datasets"}]});const x=[{title:"Quality over Quantity",description:"100 excellent examples beat 1000 mediocre ones. Review and improve regularly.",color:"bg-blue-500"},{title:"Diversity is Key",description:"Include different question styles, formats, and difficulty levels.",color:"bg-green-500"},{title:"Use Real Conversations",description:"Import from AI assistants or use actual user interactions.",color:"bg-purple-500"},{title:"Cover Edge Cases",description:"Include examples of common mistakes and error handling.",color:"bg-orange-500"},{title:"Be Consistent",description:"Use the same system prompt for related examples.",color:"bg-pink-500"},{title:"Show, Don't Just Tell",description:"Include code examples and concrete demonstrations.",color:"bg-yellow-500"},{title:"Iterate & Improve",description:"Don't aim for perfect on the first try. Build quality over time.",color:"bg-indigo-500"},{title:"Test Your Dataset",description:"Try training on 100 examples before committing to 1000.",color:"bg-teal-500"}],b=[{title:"Vague Instructions",description:`Instructions like "help me with Python" are too vague. The model can't learn from ambiguous inputs.`,solution:'Be specific: "How do I handle file reading errors in Python with proper exception handling?"'},{title:"Inconsistent Style",description:"Mixing formal responses with casual ones confuses the model.",solution:"Pick a consistent tone and stick with it using system prompts."},{title:"Too Many Similar Examples",description:"100 variations of the same question doesn't help.",solution:"Cover diverse topics. Quality diversity beats quantity similarity."},{title:"Ignoring Quality Ratings",description:"Marking everything as 5-star means you'll train on bad data.",solution:"Be honest with ratings. Only approve 3+ stars."},{title:"Rushing to 1000",description:"Focusing only on number without quality harms your model.",solution:"Focus on creating 10 excellent examples, then 50, then 100."}],f=[{question:"How many examples do I need?",answer:"We recommend <strong>1000 high-quality examples</strong> for your first fine-tuning. Start with 100 for testing, 500 for noticeable improvement, and 1000+ for solid results. Remember: quality beats quantity!"},{question:"Where can I find sample data to learn from?",answer:'Visit our <NuxtLink to="/sample-datasets" class="text-blue-600 hover:underline">Sample Datasets page</NuxtLink> to download example datasets and explore public datasets like Stanford Alpaca, ShareGPT, and OpenOrca. These are great for understanding what high-quality training data looks like!'},{question:"Can I import from ChatGPT / Claude?",answer:"Yes! edukaAI imports from <strong>Claude Code</strong> (full support), <strong>Cursor</strong> (chat history), and <strong>OpenCode</strong> (limited). Go to the Import page to get started."},{question:"How long does it take?",answer:"Manual creation: 5-10 min per example = 85-170 hours for 1000. <strong>Recommended:</strong> Import 70% from conversations + create 30% manually = 10-20 hours of curation."},{question:"Do I need programming experience?",answer:"<strong>No!</strong> edukaAI is designed for beginners. You just need domain knowledge (e.g., understanding coding if building a coding assistant). We handle the technical parts."},{question:"What models can I fine-tune?",answer:"You can fine-tune: <strong>Open source</strong> (Llama 2, Mistral - free), via <strong>HuggingFace</strong> (easy), via <strong>OpenAI API</strong> (GPT-3.5), or any platform accepting Alpaca/ShareGPT format."},{question:"How much does it cost?",answer:"<strong>Local (open source):</strong> Free! Need RTX 3060+ GPU.<br/><strong>Cloud:</strong> $5-20 per training run.<br/><strong>OpenAI:</strong> ~$2-10 for 1000 examples.<br/>Start with smaller models to save costs."}],h=[{id:"base-model",word:"Base Model",definition:"The pre-trained LLM you start with (GPT-4, Llama 2, etc.)"},{id:"dataset",word:"Dataset",definition:"A collection of training examples used to teach the AI"},{id:"epoch",word:"Epoch",definition:"One complete pass through the dataset during training"},{id:"fine-tuning",word:"Fine-Tuning",definition:"Training a pre-trained model on specific data to improve performance"},{id:"hallucination",word:"Hallucination",definition:"When AI generates incorrect or made-up information"},{id:"instruction",word:"Instruction",definition:"The input part of a training example (what the user asks)"},{id:"llm",word:"LLM",definition:"Large Language Model - AI trained on vast amounts of text"},{id:"output",word:"Output",definition:"The desired answer the AI should produce"},{id:"parameters",word:"Parameters",definition:"Internal numbers that define how the model works (7B = 7 billion)"},{id:"system-prompt",word:"System Prompt",definition:"Instructions defining AI personality and behavior"},{id:"token",word:"Token",definition:'A piece of text the AI processes ("Hello world" β‰ˆ 2-3 tokens)'},{id:"training",word:"Training",definition:"The process of adjusting model parameters for better outputs"}],a=g=>{const d=document.getElementById(g);d&&d.scrollIntoView({behavior:"smooth",block:"start"})};return(g,d)=>{const l=y;return v(),c("div",C,[d[34]||(d[34]=i('<div class="text-center mb-12 py-12 bg-gradient-to-br from-blue-50 to-purple-50 rounded-2xl" data-v-d323dde7><div class="text-6xl mb-4" data-v-d323dde7>πŸ“š</div><h1 class="text-4xl font-bold mb-4" data-v-d323dde7> The Complete Guide to LLM Fine-Tuning </h1><p class="text-xl text-gray-600 max-w-2xl mx-auto" data-v-d323dde7> Everything you need to know to create your first training dataset and fine-tune your own AI model </p><div class="mt-6 flex justify-center gap-4 text-sm" data-v-d323dde7><span class="px-3 py-1 bg-white rounded-full shadow-sm" data-v-d323dde7>🎯 Beginner Friendly</span><span class="px-3 py-1 bg-white rounded-full shadow-sm" data-v-d323dde7>πŸ“– Step-by-Step</span><span class="px-3 py-1 bg-white rounded-full shadow-sm" data-v-d323dde7>πŸ’‘ Practical Examples</span></div></div>',1)),e("div",T,[e("div",q,[e("div",A,[e("div",L,[d[11]||(d[11]=i('<div class="flex items-center gap-2 mb-3" data-v-d323dde7><span class="px-2 py-1 bg-white/20 rounded text-xs font-semibold" data-v-d323dde7>TECHNICAL DEEP DIVE</span></div><h2 class="text-2xl font-bold mb-3" data-v-d323dde7>🧠 LLM Training Explained</h2><p class="text-lg text-purple-100 mb-4" data-v-d323dde7> Want to understand how AI actually works? Learn about next-token prediction, transformers, attention mechanisms, and how neural networks learn β€” explained for technically-minded beginners. </p><div class="flex flex-wrap gap-2 text-sm mb-4" data-v-d323dde7><span class="px-3 py-1 bg-white/20 rounded-full" data-v-d323dde7>Tokens</span><span class="px-3 py-1 bg-white/20 rounded-full" data-v-d323dde7>Neural Networks</span><span class="px-3 py-1 bg-white/20 rounded-full" data-v-d323dde7>Transformers</span><span class="px-3 py-1 bg-white/20 rounded-full" data-v-d323dde7>Attention</span></div>',4)),r(l,{to:"/help/llm-training",class:"inline-flex items-center gap-2 px-6 py-3 bg-white text-purple-600 rounded-lg font-semibold hover:bg-purple-50 transition-colors"},{default:p(()=>[...d[10]||(d[10]=[n(" Read the Technical Guide ",-1),e("svg",{class:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 7l5 5m0 0l-5 5m5-5H6"})],-1)])]),_:1})]),d[12]||(d[12]=e("div",{class:"hidden md:block text-6xl"},"🧬",-1))])])]),e("div",P,[d[13]||(d[13]=e("h2",{class:"text-lg font-semibold mb-4"},"πŸ“‘ Quick Navigation",-1)),e("div",E,[e("button",{onClick:d[0]||(d[0]=t=>a("what-is-finetuning")),class:"toc-btn"}," What is Fine-Tuning? "),e("button",{onClick:d[1]||(d[1]=t=>a("getting-started")),class:"toc-btn"}," Getting Started "),e("button",{onClick:d[2]||(d[2]=t=>a("training-examples")),class:"toc-btn"}," Training Examples "),e("button",{onClick:d[3]||(d[3]=t=>a("field-guide")),class:"toc-btn"}," Field Guide "),e("button",{onClick:d[4]||(d[4]=t=>a("best-practices")),class:"toc-btn"}," Best Practices "),e("button",{onClick:d[5]||(d[5]=t=>a("common-mistakes")),class:"toc-btn"}," Common Mistakes "),e("button",{onClick:d[6]||(d[6]=t=>a("real-examples")),class:"toc-btn"}," Real Examples "),e("button",{onClick:d[7]||(d[7]=t=>a("faq")),class:"toc-btn"},"FAQ"),e("button",{onClick:d[8]||(d[8]=t=>a("glossary")),class:"toc-btn"},"Glossary"),e("button",{onClick:d[9]||(d[9]=t=>a("next-steps")),class:"toc-btn bg-blue-600 text-white"}," Start Now β†’ ")])]),d[35]||(d[35]=i('<section id="what-is-finetuning" class="mb-16" data-v-d323dde7><div class="flex items-center gap-3 mb-6" data-v-d323dde7><span class="text-3xl" data-v-d323dde7>🎯</span><h2 class="text-2xl font-bold" data-v-d323dde7>What is LLM Fine-Tuning?</h2></div><div class="card" data-v-d323dde7><div class="prose max-w-none" data-v-d323dde7><p class="text-lg leading-relaxed mb-6" data-v-d323dde7><strong data-v-d323dde7>Large Language Model (LLM) Fine-Tuning</strong> is the process of taking a pre-trained AI model (like GPT, Claude, or Llama) and teaching it to be better at specific tasks by training it on examples of those tasks. </p><div class="bg-blue-50 p-6 rounded-xl my-6" data-v-d323dde7><h3 class="font-semibold text-blue-900 mb-3" data-v-d323dde7>πŸŽ“ Simple Analogy</h3><p class="text-blue-800" data-v-d323dde7> Think of a pre-trained LLM as a student who has learned general knowledge from reading the entire internet. Fine-tuning is like giving that student specialized training in a specific fieldβ€”teaching them to be a doctor, lawyer, or software engineer by showing them examples of expert work in that field. </p></div><h3 class="text-xl font-semibold mt-8 mb-4" data-v-d323dde7>Why Fine-Tune?</h3><div class="grid grid-cols-1 md:grid-cols-2 gap-4" data-v-d323dde7><div class="p-4 bg-green-50 rounded-lg border border-green-200" data-v-d323dde7><h4 class="font-medium text-green-800 mb-2" data-v-d323dde7> βœ… Better Performance </h4><p class="text-sm text-gray-600" data-v-d323dde7> Your model becomes an expert in YOUR specific domain, with better accuracy and relevance. </p></div><div class="p-4 bg-blue-50 rounded-lg border border-blue-200" data-v-d323dde7><h4 class="font-medium text-blue-800 mb-2" data-v-d323dde7>πŸ’° Lower Costs</h4><p class="text-sm text-gray-600" data-v-d323dde7> Fine-tuned smaller models can outperform larger general models for specific tasks. </p></div><div class="p-4 bg-purple-50 rounded-lg border border-purple-200" data-v-d323dde7><h4 class="font-medium text-purple-800 mb-2" data-v-d323dde7> ⚑ Faster Responses </h4><p class="text-sm text-gray-600" data-v-d323dde7> Specialized models are more efficient and respond faster. </p></div><div class="p-4 bg-orange-50 rounded-lg border border-orange-200" data-v-d323dde7><h4 class="font-medium text-orange-800 mb-2" data-v-d323dde7>πŸ”’ Privacy</h4><p class="text-sm text-gray-600" data-v-d323dde7> Your data stays on your infrastructure. No need to send sensitive data to third-party APIs. </p></div></div><h3 class="text-xl font-semibold mt-8 mb-4" data-v-d323dde7> The Fine-Tuning Process </h3><div class="bg-gray-50 p-6 rounded-xl" data-v-d323dde7><div class="grid grid-cols-1 md:grid-cols-4 gap-4" data-v-d323dde7><div class="text-center" data-v-d323dde7><div class="w-12 h-12 bg-blue-500 rounded-full flex items-center justify-center text-white font-bold mx-auto mb-2" data-v-d323dde7> 1 </div><h4 class="font-medium" data-v-d323dde7>Collect Data</h4><p class="text-xs text-gray-600" data-v-d323dde7>Gather 100-10000 examples</p></div><div class="text-center" data-v-d323dde7><div class="w-12 h-12 bg-blue-500 rounded-full flex items-center justify-center text-white font-bold mx-auto mb-2" data-v-d323dde7> 2 </div><h4 class="font-medium" data-v-d323dde7>Create Dataset</h4><p class="text-xs text-gray-600" data-v-d323dde7>Format instruction β†’ output</p></div><div class="text-center" data-v-d323dde7><div class="w-12 h-12 bg-blue-500 rounded-full flex items-center justify-center text-white font-bold mx-auto mb-2" data-v-d323dde7> 3 </div><h4 class="font-medium" data-v-d323dde7>Train Model</h4><p class="text-xs text-gray-600" data-v-d323dde7>30 min to a few hours</p></div><div class="text-center" data-v-d323dde7><div class="w-12 h-12 bg-green-500 rounded-full flex items-center justify-center text-white font-bold mx-auto mb-2" data-v-d323dde7> 4 </div><h4 class="font-medium" data-v-d323dde7>Deploy &amp; Use</h4><p class="text-xs text-gray-600" data-v-d323dde7>Test and go live!</p></div></div></div><div class="mt-8 p-6 bg-gradient-to-r from-yellow-50 to-orange-50 rounded-xl border border-yellow-200" data-v-d323dde7><h3 class="font-semibold text-lg mb-3" data-v-d323dde7> 🎯 The 1000 Example Milestone </h3><p class="text-gray-700 mb-3" data-v-d323dde7> We recommend starting with <strong data-v-d323dde7>1000 high-quality examples</strong> for your first fine-tuning. This is the sweet spot where most models show significant improvement. </p><ul class="list-disc list-inside text-sm text-gray-600 space-y-1" data-v-d323dde7><li data-v-d323dde7>Enough data for the model to learn patterns</li><li data-v-d323dde7>Not so much that training takes forever</li><li data-v-d323dde7> Achievable goal for beginners (create 20-30 examples per day) </li><li data-v-d323dde7>Proven minimum for meaningful fine-tuning</li></ul></div></div></div></section>',1)),e("section",M,[d[22]||(d[22]=e("div",{class:"flex items-center gap-3 mb-6"},[e("span",{class:"text-3xl"},"πŸš€"),e("h2",{class:"text-2xl font-bold"},"Getting Started: Your First Dataset")],-1)),e("div",S,[e("div",F,[d[20]||(d[20]=i('<div class="relative pl-8 border-l-2 border-blue-300" data-v-d323dde7><div class="absolute -left-3 top-0 w-6 h-6 bg-blue-500 rounded-full flex items-center justify-center text-white font-bold text-sm" data-v-d323dde7> 1 </div><h3 class="font-semibold text-xl mb-3" data-v-d323dde7>Choose Your Domain</h3><p class="text-gray-600 mb-4" data-v-d323dde7> First, decide what you want your AI to be good at. The more specific, the better. </p><div class="grid grid-cols-1 md:grid-cols-2 gap-3" data-v-d323dde7><div class="p-3 bg-red-50 rounded-lg border border-red-200" data-v-d323dde7><span class="text-red-600 font-medium" data-v-d323dde7>❌ Too Broad:</span><p class="text-sm text-gray-600 mt-1" data-v-d323dde7>&quot;Help with everything&quot;</p></div><div class="p-3 bg-green-50 rounded-lg border border-green-200" data-v-d323dde7><span class="text-green-600 font-medium" data-v-d323dde7>βœ… Good:</span><p class="text-sm text-gray-600 mt-1" data-v-d323dde7> &quot;Help junior developers debug React code&quot; </p></div></div></div>',1)),e("div",G,[d[19]||(d[19]=i('<div class="absolute -left-3 top-0 w-6 h-6 bg-blue-500 rounded-full flex items-center justify-center text-white font-bold text-sm" data-v-d323dde7> 2 </div><h3 class="font-semibold text-xl mb-3" data-v-d323dde7>Collect Source Material</h3><div class="grid grid-cols-3 gap-4" data-v-d323dde7><div class="text-center p-4 bg-gray-50 rounded-lg" data-v-d323dde7><div class="text-2xl mb-2" data-v-d323dde7>πŸ’¬</div><h4 class="font-medium text-sm" data-v-d323dde7>AI Conversations</h4><p class="text-xs text-gray-600" data-v-d323dde7>Use Claude, GPT, Cursor</p></div><div class="text-center p-4 bg-gray-50 rounded-lg" data-v-d323dde7><div class="text-2xl mb-2" data-v-d323dde7>πŸ“„</div><h4 class="font-medium text-sm" data-v-d323dde7>Documentation</h4><p class="text-xs text-gray-600" data-v-d323dde7>Convert docs to Q&amp;A</p></div><div class="text-center p-4 bg-gray-50 rounded-lg" data-v-d323dde7><div class="text-2xl mb-2" data-v-d323dde7>✍️</div><h4 class="font-medium text-sm" data-v-d323dde7>Manual Creation</h4><p class="text-xs text-gray-600" data-v-d323dde7>Write from scratch</p></div></div>',3)),e("div",R,[e("p",D,[d[15]||(d[15]=n(" πŸ’‘ ",-1)),d[16]||(d[16]=e("strong",null,"Tip:",-1)),d[17]||(d[17]=n(" Not sure what good data looks like? Check out our ",-1)),r(l,{to:"/sample-datasets",class:"underline hover:text-blue-600"},{default:p(()=>[...d[14]||(d[14]=[n("sample datasets",-1)])]),_:1}),d[18]||(d[18]=n(" with real examples you can download and study! ",-1))])])]),d[21]||(d[21]=i('<div class="relative pl-8 border-l-2 border-blue-300" data-v-d323dde7><div class="absolute -left-3 top-0 w-6 h-6 bg-blue-500 rounded-full flex items-center justify-center text-white font-bold text-sm" data-v-d323dde7> 3 </div><h3 class="font-semibold text-xl mb-3" data-v-d323dde7> Create Your First 10 Examples </h3><p class="text-gray-600 mb-4" data-v-d323dde7> Start small! Create 10 high-quality examples to get a feel for the process. </p><div class="bg-blue-50 p-4 rounded-lg" data-v-d323dde7><h4 class="font-medium text-blue-900 mb-2" data-v-d323dde7>🎯 Daily Goal</h4><p class="text-blue-800" data-v-d323dde7> Aim for <strong data-v-d323dde7>10-20 examples per day</strong>. At this pace, you&#39;ll reach 1000 examples in 2-3 months. Quality matters more than speed! </p></div></div><div class="relative pl-8 border-l-2 border-blue-300" data-v-d323dde7><div class="absolute -left-3 top-0 w-6 h-6 bg-blue-500 rounded-full flex items-center justify-center text-white font-bold text-sm" data-v-d323dde7> 4 </div><h3 class="font-semibold text-xl mb-3" data-v-d323dde7>Review and Approve</h3><p class="text-gray-600" data-v-d323dde7> Go through your examples and rate their quality. Mark low-quality ones as &quot;Draft&quot; or &quot;Rejected&quot;. Only approve examples that are truly excellent (4-5 stars). </p></div><div class="relative pl-8 border-l-2 border-green-500" data-v-d323dde7><div class="absolute -left-3 top-0 w-6 h-6 bg-green-500 rounded-full flex items-center justify-center text-white font-bold text-sm" data-v-d323dde7> 5 </div><h3 class="font-semibold text-xl mb-3" data-v-d323dde7>Export and Train!</h3><p class="text-gray-600" data-v-d323dde7> Once you hit 1000 approved examples, export your dataset and start training. You&#39;re ready to create your first fine-tuned model! </p></div>',3))])])]),d[36]||(d[36]=i('<section id="training-examples" class="mb-16" data-v-d323dde7><div class="flex items-center gap-3 mb-6" data-v-d323dde7><span class="text-3xl" data-v-d323dde7>πŸ“–</span><h2 class="text-2xl font-bold" data-v-d323dde7>Understanding Training Examples</h2></div><div class="card" data-v-d323dde7><h3 class="text-xl font-semibold mb-4" data-v-d323dde7>What is a Training Example?</h3><p class="text-lg mb-6" data-v-d323dde7> A training example teaches the AI a specific input-output pattern. It shows the model: <strong data-v-d323dde7>&quot;When someone asks this, respond like this.&quot;</strong></p><div class="bg-gray-50 p-6 rounded-xl mb-6" data-v-d323dde7><h4 class="font-semibold mb-4" data-v-d323dde7>Basic Structure</h4><div class="space-y-4" data-v-d323dde7><div class="p-4 bg-white rounded-lg border-l-4 border-blue-500 shadow-sm" data-v-d323dde7><div class="text-sm text-blue-600 font-medium mb-1" data-v-d323dde7> πŸ‘€ USER (Instruction) </div><p class="text-gray-800" data-v-d323dde7> &quot;How do I reverse a string in Python?&quot; </p></div><div class="text-center text-gray-400" data-v-d323dde7><svg class="w-6 h-6 mx-auto" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-d323dde7><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 14l-7 7m0 0l-7-7m7 7V3" data-v-d323dde7></path></svg></div><div class="p-4 bg-white rounded-lg border-l-4 border-green-500 shadow-sm" data-v-d323dde7><div class="text-sm text-green-600 font-medium mb-1" data-v-d323dde7> πŸ€– ASSISTANT (Output) </div><div class="font-mono text-sm bg-gray-100 p-3 rounded mt-2" data-v-d323dde7><p class="mb-2" data-v-d323dde7> You can reverse a string in Python using slicing: </p><code data-v-d323dde7>reversed_string = original_string[::-1]</code><p class="mt-2" data-v-d323dde7>For example:</p><code data-v-d323dde7>text = &quot;Hello&quot;<br data-v-d323dde7>print(text[::-1]) # Output: &quot;olleH&quot;</code></div></div></div></div><h3 class="text-xl font-semibold mb-4" data-v-d323dde7>Quality Levels</h3><div class="space-y-4" data-v-d323dde7><div class="p-4 bg-red-50 rounded-lg border border-red-200" data-v-d323dde7><div class="flex items-center gap-2 mb-2" data-v-d323dde7><span class="text-red-600 font-bold" data-v-d323dde7>⭐⭐ Poor (1-2 stars)</span></div><p class="text-sm text-gray-700 mb-2" data-v-d323dde7><strong data-v-d323dde7>Instruction:</strong> &quot;Python help&quot; </p><p class="text-sm text-gray-700 mb-2" data-v-d323dde7><strong data-v-d323dde7>Output:</strong> &quot;Here&#39;s some Python code: print(&#39;hello&#39;)&quot; </p><p class="text-sm text-red-600" data-v-d323dde7>Too vague, unhelpful, no context</p></div><div class="p-4 bg-yellow-50 rounded-lg border border-yellow-200" data-v-d323dde7><div class="flex items-center gap-2 mb-2" data-v-d323dde7><span class="text-yellow-600 font-bold" data-v-d323dde7>⭐⭐⭐ Average (3 stars)</span></div><p class="text-sm text-gray-700 mb-2" data-v-d323dde7><strong data-v-d323dde7>Instruction:</strong> &quot;How to reverse a string&quot; </p><p class="text-sm text-gray-700 mb-2" data-v-d323dde7><strong data-v-d323dde7>Output:</strong> &quot;Use slicing: [::-1]&quot; </p><p class="text-sm text-yellow-700" data-v-d323dde7> Okay, but lacks explanation and examples </p></div><div class="p-4 bg-green-50 rounded-lg border border-green-200" data-v-d323dde7><div class="flex items-center gap-2 mb-2" data-v-d323dde7><span class="text-green-600 font-bold" data-v-d323dde7>⭐⭐⭐⭐⭐ Excellent (5 stars)</span></div><p class="text-sm text-gray-700 mb-2" data-v-d323dde7><strong data-v-d323dde7>Instruction:</strong> &quot;What&#39;s the most Pythonic way to reverse a string, and why is it better than other methods? Include time complexity.&quot; </p><p class="text-sm text-gray-700 mb-2" data-v-d323dde7><strong data-v-d323dde7>Output:</strong> Comprehensive answer with multiple methods, comparison, time complexity analysis, and code examples </p><p class="text-sm text-green-700" data-v-d323dde7> Specific, educational, thorough, best practices </p></div></div></div></section><section id="field-guide" class="mb-16" data-v-d323dde7><div class="flex items-center gap-3 mb-6" data-v-d323dde7><span class="text-3xl" data-v-d323dde7>πŸ“</span><h2 class="text-2xl font-bold" data-v-d323dde7>Complete Field Guide</h2></div><div class="card mb-6" data-v-d323dde7><h3 class="text-xl font-semibold mb-6 text-blue-600" data-v-d323dde7> Core Fields (Required) </h3><div class="space-y-8" data-v-d323dde7><div class="border-l-4 border-blue-500 pl-4" data-v-d323dde7><h4 class="text-lg font-semibold mb-2 flex items-center gap-2" data-v-d323dde7> 🎯 Instruction <span class="text-xs bg-red-100 text-red-700 px-2 py-0.5 rounded" data-v-d323dde7>Required</span></h4><p class="text-gray-600 mb-3" data-v-d323dde7> The main question or task. This is what the user will type to get a response from your model. </p><div class="grid grid-cols-1 md:grid-cols-2 gap-3" data-v-d323dde7><div class="bg-green-50 p-3 rounded-lg" data-v-d323dde7><p class="text-sm text-green-800 font-medium mb-2" data-v-d323dde7>βœ… Good:</p><p class="text-sm text-gray-700" data-v-d323dde7> &quot;Explain how React&#39;s useEffect hook works, including the dependency array, cleanup functions, and common pitfalls to avoid. Provide code examples for each concept.&quot; </p></div><div class="bg-red-50 p-3 rounded-lg" data-v-d323dde7><p class="text-sm text-red-800 font-medium mb-2" data-v-d323dde7>❌ Bad:</p><p class="text-sm text-gray-700" data-v-d323dde7>&quot;React help&quot;</p></div></div><div class="mt-3 text-sm bg-blue-50 p-3 rounded" data-v-d323dde7><strong data-v-d323dde7>πŸ’‘ Pro Tips:</strong><ul class="list-disc list-inside mt-1 space-y-1" data-v-d323dde7><li data-v-d323dde7>Be specific about what you want</li><li data-v-d323dde7>Use natural language like a real user would</li><li data-v-d323dde7>Length: 50-500 characters is ideal</li><li data-v-d323dde7>Include context if needed</li></ul></div></div><div class="border-l-4 border-green-500 pl-4" data-v-d323dde7><h4 class="text-lg font-semibold mb-2 flex items-center gap-2" data-v-d323dde7> πŸ“ Output / Response <span class="text-xs bg-red-100 text-red-700 px-2 py-0.5 rounded" data-v-d323dde7>Required</span></h4><p class="text-gray-600 mb-3" data-v-d323dde7> The ideal AI response. This is what you want the model to learn to produce. Make it as good as you want your AI to be. </p><div class="bg-green-50 p-4 rounded-lg" data-v-d323dde7><p class="text-sm text-green-800 font-medium mb-2" data-v-d323dde7> βœ… What Makes Good Output: </p><ul class="list-disc list-inside text-sm text-gray-700 space-y-1" data-v-d323dde7><li data-v-d323dde7><strong data-v-d323dde7>Directly answers</strong> the instruction completely </li><li data-v-d323dde7><strong data-v-d323dde7>Well-structured</strong> - uses formatting, lists, code blocks </li><li data-v-d323dde7><strong data-v-d323dde7>Accurate</strong> - factually correct information </li><li data-v-d323dde7><strong data-v-d323dde7>Includes examples</strong> - shows, don&#39;t just tell </li><li data-v-d323dde7><strong data-v-d323dde7>Explains reasoning</strong> - helps user understand why </li><li data-v-d323dde7><strong data-v-d323dde7>Appropriate tone</strong> - matches your desired style </li></ul></div></div></div></div><div class="card" data-v-d323dde7><h3 class="text-xl font-semibold mb-6 text-purple-600" data-v-d323dde7> Metadata Fields </h3><div class="grid grid-cols-1 md:grid-cols-2 gap-6" data-v-d323dde7><div class="border-l-4 border-purple-400 pl-4" data-v-d323dde7><h4 class="font-semibold mb-2" data-v-d323dde7>🎭 System Prompt</h4><p class="text-gray-600 text-sm mb-3" data-v-d323dde7> Defines the AI&#39;s personality, role, and behavior. Think of it as the &quot;character sheet&quot; for your AI. </p><div class="bg-purple-50 p-3 rounded text-sm" data-v-d323dde7><strong data-v-d323dde7>Example:</strong><br data-v-d323dde7> &quot;You are a patient senior software engineer who mentors junior developers. Explain concepts clearly, use analogies, and always provide code examples.&quot; </div></div><div class="border-l-4 border-purple-400 pl-4" data-v-d323dde7><h4 class="font-semibold mb-2" data-v-d323dde7>🏷️ Category</h4><p class="text-gray-600 text-sm mb-3" data-v-d323dde7> Organizes your dataset into topics. </p><div class="flex flex-wrap gap-1 text-xs" data-v-d323dde7><span class="px-2 py-1 bg-gray-100 rounded" data-v-d323dde7>Coding</span><span class="px-2 py-1 bg-gray-100 rounded" data-v-d323dde7>Explanation</span><span class="px-2 py-1 bg-gray-100 rounded" data-v-d323dde7>Analysis</span><span class="px-2 py-1 bg-gray-100 rounded" data-v-d323dde7>Writing</span><span class="px-2 py-1 bg-gray-100 rounded" data-v-d323dde7>Math</span><span class="px-2 py-1 bg-gray-100 rounded" data-v-d323dde7>Science</span><span class="px-2 py-1 bg-gray-100 rounded" data-v-d323dde7>General</span></div></div><div class="border-l-4 border-purple-400 pl-4" data-v-d323dde7><h4 class="font-semibold mb-2" data-v-d323dde7>πŸ“Š Difficulty</h4><p class="text-gray-600 text-sm mb-3" data-v-d323dde7>Tracks complexity level.</p><div class="space-y-1 text-sm" data-v-d323dde7><div class="flex items-center gap-2" data-v-d323dde7><span class="w-3 h-3 bg-green-400 rounded-full" data-v-d323dde7></span><span data-v-d323dde7><strong data-v-d323dde7>Beginner</strong> - Basic concepts</span></div><div class="flex items-center gap-2" data-v-d323dde7><span class="w-3 h-3 bg-yellow-400 rounded-full" data-v-d323dde7></span><span data-v-d323dde7><strong data-v-d323dde7>Intermediate</strong> - Practical applications</span></div><div class="flex items-center gap-2" data-v-d323dde7><span class="w-3 h-3 bg-red-400 rounded-full" data-v-d323dde7></span><span data-v-d323dde7><strong data-v-d323dde7>Advanced</strong> - Complex reasoning</span></div></div></div><div class="border-l-4 border-purple-400 pl-4" data-v-d323dde7><h4 class="font-semibold mb-2" data-v-d323dde7>⭐ Quality Rating</h4><p class="text-gray-600 text-sm mb-2" data-v-d323dde7> Your assessment (1-5 stars) </p><div class="space-y-1 text-xs" data-v-d323dde7><div data-v-d323dde7>⭐⭐⭐⭐⭐ = Excellent - Perfect for training</div><div data-v-d323dde7>⭐⭐⭐⭐ = Very Good - Solid example</div><div data-v-d323dde7>⭐⭐⭐ = Good - Acceptable, could improve</div><div data-v-d323dde7>⭐⭐ = Fair - Needs major revision</div><div data-v-d323dde7>⭐ = Poor - Don&#39;t use for training</div></div></div></div></div></section>',2)),e("section",O,[d[23]||(d[23]=e("div",{class:"flex items-center gap-3 mb-6"},[e("span",{class:"text-3xl"},"⭐"),e("h2",{class:"text-2xl font-bold"},"Best Practices & Expert Tips")],-1)),e("div",j,[(v(),c(u,null,m(x,(t,o)=>e("div",{class:"card",key:o},[e("div",B,[e("div",{class:I(["flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center text-white font-bold text-sm",t.color])},s(o+1),3),e("div",null,[e("h3",H,s(t.title),1),e("p",N,s(t.description),1)])])])),64))])]),e("section",_,[d[25]||(d[25]=e("div",{class:"flex items-center gap-3 mb-6"},[e("span",{class:"text-3xl"},"⚠️"),e("h2",{class:"text-2xl font-bold"},"Common Mistakes to Avoid")],-1)),e("div",W,[(v(),c(u,null,m(b,(t,o)=>e("div",{class:"card border-l-4 border-red-400",key:o},[e("h3",Y," ❌ "+s(t.title),1),e("p",$,s(t.description),1),e("div",Q,[d[24]||(d[24]=e("strong",null,"βœ… Instead:",-1)),n(" "+s(t.solution),1)])])),64))])]),d[37]||(d[37]=i('<section id="real-examples" class="mb-16" data-v-d323dde7><div class="flex items-center gap-3 mb-6" data-v-d323dde7><span class="text-3xl" data-v-d323dde7>πŸ’‘</span><h2 class="text-2xl font-bold" data-v-d323dde7>Real-World Examples</h2></div><div class="card mb-6" data-v-d323dde7><div class="flex items-center justify-between mb-4" data-v-d323dde7><div class="flex items-center gap-2" data-v-d323dde7><span class="text-2xl" data-v-d323dde7>πŸ’»</span><h3 class="text-xl font-semibold" data-v-d323dde7>Example: React Error Handling</h3></div><div class="flex gap-2" data-v-d323dde7><span class="px-2 py-1 bg-blue-100 text-blue-700 text-xs rounded" data-v-d323dde7>Coding</span><span class="px-2 py-1 bg-green-100 text-green-700 text-xs rounded" data-v-d323dde7>⭐⭐⭐⭐⭐</span><span class="px-2 py-1 bg-purple-100 text-purple-700 text-xs rounded" data-v-d323dde7>Intermediate</span></div></div><div class="space-y-3" data-v-d323dde7><div class="p-3 bg-blue-50 rounded-lg" data-v-d323dde7><div class="text-sm text-blue-800 font-medium mb-1" data-v-d323dde7> 🎯 Instruction: </div><p class="text-sm text-gray-700" data-v-d323dde7> &quot;I&#39;m getting &#39;TypeError: Cannot read property map of undefined&#39; in React. How do I properly handle this?&quot; </p></div><div class="p-3 bg-gray-50 rounded-lg" data-v-d323dde7><div class="text-sm text-gray-800 font-medium mb-1" data-v-d323dde7>πŸ“Ž Input:</div><pre class="text-xs bg-gray-100 p-2 rounded overflow-x-auto" data-v-d323dde7><code data-v-d323dde7>{users.map(user =&gt; &lt;div key={user.id}&gt;{user.name}&lt;/div&gt;)}</code></pre></div><div class="p-3 bg-green-50 rounded-lg" data-v-d323dde7><div class="text-sm text-green-800 font-medium mb-1" data-v-d323dde7> πŸ“ Output: </div><div class="text-xs text-gray-700 space-y-2" data-v-d323dde7><p data-v-d323dde7> This happens when <code data-v-d323dde7>users</code> is undefined. Here are 3 solutions: </p><p data-v-d323dde7><strong data-v-d323dde7>1. Default value:</strong> <code data-v-d323dde7>{users = []}</code></p><p data-v-d323dde7><strong data-v-d323dde7>2. Conditional:</strong> Check if users exists before mapping </p><p data-v-d323dde7><strong data-v-d323dde7>3. Optional chaining:</strong><code data-v-d323dde7>{users?.map(...)}</code></p></div></div></div></div><div class="card" data-v-d323dde7><h3 class="font-semibold mb-3" data-v-d323dde7>πŸŽ“ What Makes Great Examples?</h3><div class="grid grid-cols-2 md:grid-cols-3 gap-3 text-sm" data-v-d323dde7><div class="p-2 bg-green-50 rounded" data-v-d323dde7>βœ… Clear instructions</div><div class="p-2 bg-green-50 rounded" data-v-d323dde7>βœ… Complete outputs</div><div class="p-2 bg-green-50 rounded" data-v-d323dde7>βœ… Code examples</div><div class="p-2 bg-green-50 rounded" data-v-d323dde7>βœ… Educational value</div><div class="p-2 bg-green-50 rounded" data-v-d323dde7>βœ… Practical application</div><div class="p-2 bg-green-50 rounded" data-v-d323dde7>βœ… Proper metadata</div></div></div></section>',1)),e("section",V,[d[26]||(d[26]=e("div",{class:"flex items-center gap-3 mb-6"},[e("span",{class:"text-3xl"},"❓"),e("h2",{class:"text-2xl font-bold"},"Frequently Asked Questions")],-1)),e("div",U,[(v(),c(u,null,m(f,(t,o)=>e("div",{class:"card",key:o},[e("h3",z,s(t.question),1),e("p",{class:"text-gray-600 text-sm",innerHTML:t.answer},null,8,J)])),64))])]),e("section",K,[d[29]||(d[29]=e("div",{class:"flex items-center gap-3 mb-6"},[e("span",{class:"text-3xl"},"πŸ“–"),e("h2",{class:"text-2xl font-bold"},"Glossary")],-1)),e("div",X,[d[28]||(d[28]=e("p",{class:"text-gray-600 mb-4 text-sm"}," Click any term to learn more about it in detail. ",-1)),e("div",Z,[(v(),c(u,null,m(h,(t,o)=>e("div",{key:o,class:"group"},[r(l,{to:`/help/glossary?term=${t.id}`,class:"block hover:bg-gray-50 p-2 rounded-lg transition-colors"},{default:p(()=>[e("h3",ee,[n(s(t.word)+" ",1),d[27]||(d[27]=e("svg",{class:"w-4 h-4 opacity-0 group-hover:opacity-100 transition-opacity",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 5l7 7-7 7"})],-1))]),e("p",de,s(t.definition),1)]),_:2},1032,["to"])])),64))])])]),e("section",te,[e("div",ae,[d[33]||(d[33]=e("div",{class:"text-center mb-6"},[e("div",{class:"text-5xl mb-4"},"πŸš€"),e("h2",{class:"text-2xl font-bold mb-2"},"Ready to Start Your Journey?"),e("p",{class:"text-gray-600"}," You've learned everything you need. Now it's time to build your first dataset! ")],-1)),e("div",se,[r(l,{to:"/examples/new",class:"p-6 bg-white rounded-xl hover:shadow-lg transition-shadow text-center"},{default:p(()=>[...d[30]||(d[30]=[e("div",{class:"text-3xl mb-3"},"✏️",-1),e("h3",{class:"font-semibold text-lg mb-1"},"Create Example",-1),e("p",{class:"text-sm text-gray-600"}," Start with your first training example ",-1)])]),_:1}),r(l,{to:"/import",class:"p-6 bg-white rounded-xl hover:shadow-lg transition-shadow text-center"},{default:p(()=>[...d[31]||(d[31]=[e("div",{class:"text-3xl mb-3"},"πŸ“₯",-1),e("h3",{class:"font-semibold text-lg mb-1"},"Import",-1),e("p",{class:"text-sm text-gray-600"}," Import from Claude, Cursor, or OpenCode ",-1)])]),_:1}),r(l,{to:"/examples",class:"p-6 bg-white rounded-xl hover:shadow-lg transition-shadow text-center"},{default:p(()=>[...d[32]||(d[32]=[e("div",{class:"text-3xl mb-3"},"πŸ“Š",-1),e("h3",{class:"font-semibold text-lg mb-1"},"View Dataset",-1),e("p",{class:"text-sm text-gray-600"},"Track your progress to 1000",-1)])]),_:1})])])]),d[38]||(d[38]=e("div",{class:"text-center py-8 text-gray-500 text-sm"},[e("p",null,"πŸŽ“ edukaAI - Learn LLM fine-tuning by building datasets"),e("p",{class:"mt-2"},' "The best way to learn is by doing. Start creating today!" ')],-1))])}}},re=w(oe,[["__scopeId","data-v-d323dde7"]]);export{re as default};
@@ -0,0 +1 @@
1
+ import{_ as c}from"./CW57JW4s.js";import{A as p,c as m,a as s,b as d,o as i}from"./Cg2fM61o.js";const u={class:"max-w-4xl mx-auto"},y={__name:"new",setup(x){const t=p(),r=async a=>{try{(await $fetch("/api/examples",{method:"POST",body:{...a,status:"approved"}})).success&&(alert("Example created successfully!"),t.push("/examples"))}catch(e){console.error("Error creating example:",e),alert("Failed to create example. Please try again.")}},o=async a=>{try{(await $fetch("/api/examples",{method:"POST",body:{...a,status:"draft"}})).success&&(alert("Draft saved!"),t.push("/examples"))}catch(e){console.error("Error saving draft:",e),alert("Failed to save draft. Please try again.")}},n=()=>{confirm("Are you sure you want to cancel? Any unsaved changes will be lost.")&&t.push("/examples")};return(a,e)=>{const l=c;return i(),m("div",u,[e[0]||(e[0]=s("div",{class:"mb-6"},[s("h1",{class:"text-2xl font-bold mb-2"},"Create New Training Example"),s("p",{class:"text-gray-600"},"Add a new example to your dataset. All fields help you build a better training dataset.")],-1)),d(l,{onSubmit:r,onSaveDraft:o,onCancel:n})])}}};export{y as default};
@@ -0,0 +1 @@
1
+ import{_ as n}from"./C6E3Ty3z.js";import{c as r,a as e,b as l,w as o,m as i,d as t,o as d}from"./Cg2fM61o.js";const c={class:"max-w-4xl mx-auto"},p={class:"mb-8"},g={class:"flex items-center gap-3 mb-4"},u={class:"card mb-6 bg-gradient-to-r from-yellow-50 to-orange-50 border-yellow-200"},x={class:"space-y-3 text-gray-700"},m={class:"mt-4"},f={class:"card mb-6"},b={class:"space-y-3"},v={class:"card bg-gradient-to-r from-blue-600 to-purple-600 text-white"},h={class:"flex flex-col sm:flex-row gap-3"},T={__name:"huggingface",setup(y){return(w,s)=>{const a=n;return d(),r("div",c,[e("div",p,[e("div",g,[l(a,{to:"/export",class:"text-blue-600 hover:text-blue-800"},{default:o(()=>[...s[0]||(s[0]=[t(" ← Back to Export ",-1)])]),_:1})]),s[1]||(s[1]=e("h1",{class:"text-3xl font-bold mb-4"},"πŸ€— What is Hugging Face?",-1)),s[2]||(s[2]=e("p",{class:"text-xl text-gray-600"},' The "GitHub of AI" - where the machine learning community shares models, datasets, and tools ',-1))]),s[17]||(s[17]=i('<div class="card mb-6"><h2 class="text-xl font-semibold mb-4">In Simple Terms</h2><div class="space-y-4 text-gray-700"><p><strong>Hugging Face</strong> is like GitHub, but specifically for artificial intelligence and machine learning. It&#39;s the largest community hub where researchers, developers, and companies share: </p><div class="grid grid-cols-1 md:grid-cols-3 gap-4 my-6"><div class="p-4 bg-yellow-50 rounded-lg border border-yellow-200"><div class="text-3xl mb-2">πŸ€–</div><h3 class="font-semibold mb-1">Pre-trained Models</h3><p class="text-sm text-gray-600"> Thousands of ready-to-use AI models (GPT, LLaMA, BERT, etc.) </p></div><div class="p-4 bg-green-50 rounded-lg border border-green-200"><div class="text-3xl mb-2">πŸ“Š</div><h3 class="font-semibold mb-1">Datasets</h3><p class="text-sm text-gray-600"> Curated datasets for training and benchmarking </p></div><div class="p-4 bg-blue-50 rounded-lg border border-blue-200"><div class="text-3xl mb-2">πŸ› οΈ</div><h3 class="font-semibold mb-1">Tools &amp; Libraries</h3><p class="text-sm text-gray-600"> Transformers, Datasets, and other ML tools </p></div></div><p> Think of it this way: if you want to build a website, you might use GitHub to find code. If you want to build AI, you use Hugging Face to find models and data. </p></div></div><div class="card mb-6"><h2 class="text-xl font-semibold mb-4">Why Use Hugging Face for Fine-tuning?</h2><div class="space-y-4"><div class="flex gap-4 items-start"><div class="w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center flex-shrink-0"><span class="text-blue-600 font-bold">1</span></div><div><h3 class="font-semibold mb-1">Access to Base Models</h3><p class="text-gray-600"> Download foundation models like LLaMA, Mistral, or GPT-2 to start your fine-tuning </p></div></div><div class="flex gap-4 items-start"><div class="w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center flex-shrink-0"><span class="text-blue-600 font-bold">2</span></div><div><h3 class="font-semibold mb-1">Share Your Trained Models</h3><p class="text-gray-600"> After fine-tuning, upload your model so others can use it (or keep it private) </p></div></div><div class="flex gap-4 items-start"><div class="w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center flex-shrink-0"><span class="text-blue-600 font-bold">3</span></div><div><h3 class="font-semibold mb-1">Inference API</h3><p class="text-gray-600"> Test your models online without setting up infrastructure </p></div></div><div class="flex gap-4 items-start"><div class="w-8 h-8 bg-blue-100 rounded-full flex items-center justify-center flex-shrink-0"><span class="text-blue-600 font-bold">4</span></div><div><h3 class="font-semibold mb-1">Community &amp; Documentation</h3><p class="text-gray-600"> Extensive docs, tutorials, and a helpful community for beginners </p></div></div></div></div><div class="card mb-6"><h2 class="text-xl font-semibold mb-4">Key Concepts to Know</h2><div class="space-y-4"><div class="p-4 bg-gray-50 rounded-lg"><h3 class="font-semibold mb-2">🏠 Model Hub</h3><p class="text-gray-600 text-sm"> Browse and download thousands of pre-trained models. Each model page shows: model size, license, community ratings, and example usage code. </p></div><div class="p-4 bg-gray-50 rounded-lg"><h3 class="font-semibold mb-2">πŸ“ Datasets</h3><p class="text-gray-600 text-sm"> Search for training datasets by task (text generation, classification, etc.). You can also upload your edukaAI dataset here. </p></div><div class="p-4 bg-gray-50 rounded-lg"><h3 class="font-semibold mb-2">πŸŽͺ Spaces</h3><p class="text-gray-600 text-sm"> Interactive demos of AI models. Great for testing models before downloading. </p></div><div class="p-4 bg-gray-50 rounded-lg"><h3 class="font-semibold mb-2">πŸ› Transformers Library</h3><p class="text-gray-600 text-sm"> Python library for downloading and using models. The main tool for fine-tuning. </p></div></div></div><div class="card mb-6"><h2 class="text-xl font-semibold mb-4">Getting Started with Fine-tuning</h2><div class="space-y-4"><p class="text-gray-700"> Here&#39;s the typical workflow when using Hugging Face for fine-tuning: </p><div class="flex items-center gap-4 py-4"><div class="flex-1 text-center"><div class="w-12 h-12 bg-blue-100 rounded-full flex items-center justify-center mx-auto mb-2"><span class="text-xl">πŸ“₯</span></div><p class="text-sm font-medium">1. Download Base Model</p><p class="text-xs text-gray-500">From Model Hub</p></div><div class="text-2xl text-gray-300">β†’</div><div class="flex-1 text-center"><div class="w-12 h-12 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-2"><span class="text-xl">πŸ“Š</span></div><p class="text-sm font-medium">2. Prepare Dataset</p><p class="text-xs text-gray-500">Use edukaAI!</p></div><div class="text-2xl text-gray-300">β†’</div><div class="flex-1 text-center"><div class="w-12 h-12 bg-purple-100 rounded-full flex items-center justify-center mx-auto mb-2"><span class="text-xl">βš™οΈ</span></div><p class="text-sm font-medium">3. Fine-tune</p><p class="text-xs text-gray-500">Train the model</p></div><div class="text-2xl text-gray-300">β†’</div><div class="flex-1 text-center"><div class="w-12 h-12 bg-yellow-100 rounded-full flex items-center justify-center mx-auto mb-2"><span class="text-xl">πŸ“€</span></div><p class="text-sm font-medium">4. Upload Result</p><p class="text-xs text-gray-500">Share your model</p></div></div></div></div>',4)),e("div",u,[s[8]||(s[8]=e("h2",{class:"text-xl font-semibold mb-4"},"⚠️ What to Expect",-1)),e("div",x,[s[7]||(s[7]=i('<p><strong>Hugging Face is powerful but can be overwhelming for beginners.</strong> Here&#39;s what you should know: </p><ul class="space-y-2 ml-4"><li class="flex items-start gap-2"><span class="text-yellow-600">β€’</span><span>Requires Python knowledge and command line comfort</span></li><li class="flex items-start gap-2"><span class="text-yellow-600">β€’</span><span>Fine-tuning requires GPU (either local or cloud)</span></li><li class="flex items-start gap-2"><span class="text-yellow-600">β€’</span><span>Documentation is comprehensive but technical</span></li><li class="flex items-start gap-2"><span class="text-yellow-600">β€’</span><span>Many tutorials assume prior ML knowledge</span></li></ul>',2)),e("p",m,[s[4]||(s[4]=e("strong",null,"πŸ’‘ Tip:",-1)),s[5]||(s[5]=t(" If you're completely new, consider using ",-1)),l(a,{to:"/help/axolotl",class:"text-blue-600 hover:underline font-semibold"},{default:o(()=>[...s[3]||(s[3]=[t("Axolotl",-1)])]),_:1}),s[6]||(s[6]=t(" first - it simplifies the Hugging Face workflow significantly. ",-1))])])]),e("div",f,[s[11]||(s[11]=e("h2",{class:"text-xl font-semibold mb-4"},"Helpful Resources",-1)),e("div",b,[s[10]||(s[10]=i('<a href="https://huggingface.co/docs/transformers/training" target="_blank" class="flex items-center gap-3 p-3 bg-blue-50 rounded-lg hover:bg-blue-100 transition-colors"><span class="text-2xl">πŸ“š</span><div class="flex-1"><h3 class="font-semibold">Official Training Guide</h3><p class="text-sm text-gray-600">Hugging Face&#39;s complete fine-tuning tutorial</p></div><span class="text-blue-600">β†’</span></a><a href="https://huggingface.co/models" target="_blank" class="flex items-center gap-3 p-3 bg-yellow-50 rounded-lg hover:bg-yellow-100 transition-colors"><span class="text-2xl">πŸ€–</span><div class="flex-1"><h3 class="font-semibold">Model Hub</h3><p class="text-sm text-gray-600">Browse thousands of pre-trained models</p></div><span class="text-yellow-600">β†’</span></a><a href="https://huggingface.co/datasets" target="_blank" class="flex items-center gap-3 p-3 bg-green-50 rounded-lg hover:bg-green-100 transition-colors"><span class="text-2xl">πŸ“Š</span><div class="flex-1"><h3 class="font-semibold">Datasets</h3><p class="text-sm text-gray-600">Find datasets for your training tasks</p></div><span class="text-green-600">β†’</span></a>',3)),l(a,{to:"/help/llm-training",class:"flex items-center gap-3 p-3 bg-purple-50 rounded-lg hover:bg-purple-100 transition-colors"},{default:o(()=>[...s[9]||(s[9]=[e("span",{class:"text-2xl"},"πŸŽ“",-1),e("div",{class:"flex-1"},[e("h3",{class:"font-semibold"},"edukaAI: How LLM Training Works"),e("p",{class:"text-sm text-gray-600"},"Understand the fundamentals before you start")],-1),e("span",{class:"text-purple-600"},"β†’",-1)])]),_:1})])]),e("div",v,[s[15]||(s[15]=e("h2",{class:"text-xl font-semibold mb-4"},"Ready to Start?",-1)),s[16]||(s[16]=e("p",{class:"mb-6 opacity-90"}," You now understand what Hugging Face is and how it fits into the fine-tuning workflow. Remember, you can always come back to edukaAI to create more training data! ",-1)),e("div",h,[s[14]||(s[14]=e("a",{href:"https://huggingface.co",target:"_blank",class:"flex-1 bg-white text-blue-600 font-semibold py-3 px-6 rounded-lg text-center hover:bg-gray-100 transition-colors"}," Go to HuggingFace.co β†’ ",-1)),l(a,{to:"/help/axolotl",class:"flex-1 bg-blue-700 text-white font-semibold py-3 px-6 rounded-lg text-center hover:bg-blue-800 transition-colors"},{default:o(()=>[...s[12]||(s[12]=[t(" Learn About Axolotl β†’ ",-1)])]),_:1}),l(a,{to:"/export",class:"flex-1 bg-transparent border-2 border-white text-white font-semibold py-3 px-6 rounded-lg text-center hover:bg-white/10 transition-colors"},{default:o(()=>[...s[13]||(s[13]=[t(" ← Back to Export ",-1)])]),_:1})])])])}}};export{T as default};
@@ -0,0 +1 @@
1
+ {"id":"ab87ba0e-6d0d-4466-8b12-00d44f8fb9d3","timestamp":1772849299594}
@@ -0,0 +1 @@
1
+ {"id":"ab87ba0e-6d0d-4466-8b12-00d44f8fb9d3","timestamp":1772849299594,"prerendered":[]}
@@ -0,0 +1 @@
1
+ @layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-108119f7],[data-v-108119f7]::backdrop,[data-v-108119f7]:after,[data-v-108119f7]:before{--tw-font-weight:initial}}}.nav-link[data-v-108119f7]{align-items:center;border-radius:var(--radius-lg,.5rem);color:var(--color-gray-600,oklch(44.6% .03 256.802));display:flex;gap:calc(var(--spacing,.25rem)*3);padding-block:calc(var(--spacing,.25rem)*2);padding-inline:calc(var(--spacing,.25rem)*3);transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4,0,.2,1)))}@media(hover:hover){.nav-link[data-v-108119f7]:hover{background-color:var(--color-gray-100,oklch(96.7% .003 264.542))}}.nav-link-active[data-v-108119f7]{background-color:var(--color-blue-50,oklch(97% .014 254.604));--tw-font-weight:var(--font-weight-medium,500);color:var(--color-blue-600,oklch(54.6% .245 262.881));font-weight:var(--font-weight-medium,500)}@property --tw-font-weight{syntax:"*";inherits:false}