-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.legacy.html
More file actions
6347 lines (5365 loc) · 353 KB
/
Copy pathindex.legacy.html
File metadata and controls
6347 lines (5365 loc) · 353 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Prompt Engineering Master Course — 2026 LLM Ecosystem</title>
<link rel="stylesheet" href="css/style.css?v=6">
<link rel="stylesheet" href="css/bando-b.css?v=6">
<!-- Inline theme bootstrap — evita FOUC + es inmune al orden de scripts -->
<script>
(function() {
try {
var t = localStorage.getItem('theme');
if (t !== 'dark' && t !== 'light') t = 'dark';
document.documentElement.setAttribute('data-theme', t);
} catch(e) { document.documentElement.setAttribute('data-theme', 'dark'); }
})();
</script>
</head>
<body>
<!-- Elegant CSS background elements -->
<div class="bg-orb bg-orb-1"></div>
<div class="bg-orb bg-orb-2"></div>
<div class="bg-orb bg-orb-3"></div>
<div class="bg-gradient"></div>
<div class="bg-grid"></div>
<div id="progress-bar"></div>
<div id="app">
<nav id="sidebar">
<div id="sidebar-logo">
<h2>🧠 Prompt Engineering</h2>
<span data-i18n="sidebar-subtitle">Master Course 2026</span>
<div class="sidebar-toggles">
<div class="lang-toggle">
<button class="lang-btn active" data-lang="es">ES</button>
<button class="lang-btn" data-lang="en">EN</button>
</div>
<button id="theme-toggle" aria-label="Toggle theme" title="Cambiar tema">🌙</button>
</div>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 1 — Fundamentos</div>
<a class="nav-link active" data-target="s1"><span class="nav-icon">📖</span> 1.1 ¿Qué es un LLM?<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s2"><span class="nav-icon">🎯</span> 1.2 Prompt Engineering<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s3"><span class="nav-icon">🧬</span> 1.3 Anatomía de un Prompt<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s4"><span class="nav-icon">👥</span> 1.4 Roles del Sistema<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s5"><span class="nav-icon">0️⃣</span> 1.5 Zero-shot vs Few-shot<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 2 — Técnicas Esenciales</div>
<a class="nav-link" data-target="s6"><span class="nav-icon">💎</span> 2.1 Claridad y Precisión<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s7"><span class="nav-icon">📋</span> 2.2 Usar Ejemplos (Few-shot)<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s8"><span class="nav-icon">🎭</span> 2.3 Role Prompting<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s9"><span class="nav-icon">🏷️</span> 2.4 Estructura XML<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s10"><span class="nav-icon">🔗</span> 2.5 Chain of Thought<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s11"><span class="nav-icon">📐</span> 2.6 Formato de Salida<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 3 — Avanzado</div>
<a class="nav-link" data-target="s12"><span class="nav-icon">🧠</span> 3.1 Thinking / Reasoning<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s13"><span class="nav-icon">⛓️</span> 3.2 Prompt Chaining<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s14"><span class="nav-icon">🔄</span> 3.3 ReAct & Tool Use<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s15"><span class="nav-icon">📚</span> 3.4 Documentos Largos<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 4 — Agentes & Skills</div>
<a class="nav-link" data-target="s16"><span class="nav-icon">🤖</span> 4.1 ¿Qué es un Agente?<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s17"><span class="nav-icon">⚡</span> 4.2 Skills (Claude Code)<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s18"><span class="nav-icon">👥</span> 4.3 Sub-agentes<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s19"><span class="nav-icon">📝</span> 4.4 CLAUDE.md / AGENTS.md<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s20"><span class="nav-icon">🏗️</span> 4.5 Roles en Proyectos<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s21"><span class="nav-icon">🔌</span> 4.6 MCP (Protocolo)<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s92"><span class="nav-icon">🆚</span> 4.7 Comparativa Agentes<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 5 — Claude Opus 4.7</div>
<a class="nav-link" data-target="s22"><span class="nav-icon">⚙️</span> 5.1 Effort Levels<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s23"><span class="nav-icon">🧿</span> 5.2 Adaptive Thinking<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s24"><span class="nav-icon">🔧</span> 5.3 Tool Use & Sub-agentes<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s25"><span class="nav-icon">🎨</span> 5.4 Frontend & Code Review<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 6 — Frontier Models 2026</div>
<a class="nav-link" data-target="s26"><span class="nav-icon">⚡</span> 6.1 Frontier Models 2026<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s27"><span class="nav-icon">🖥️</span> 6.2 OpenCode — El Agente<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s28"><span class="nav-icon">📄</span> 6.3 Config AGENTS.md<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s29"><span class="nav-icon">🛠️</span> 6.4 Herramientas & Límites<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 7 — Ejercicios</div>
<a class="nav-link" data-target="s30"><span class="nav-icon">✏️</span> 7.1 Prompt Efectivo<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s31"><span class="nav-icon">📊</span> 7.2 Zero → Few-shot<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s32"><span class="nav-icon">🧩</span> 7.3 Chain of Thought<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s33"><span class="nav-icon">🎛️</span> 7.4 Simulador Interactivo<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s34"><span class="nav-icon">🏆</span> 7.5 Combo: Rol + XML<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 8 — Esquemas</div>
<a class="nav-link" data-target="s35"><span class="nav-icon">📊</span> 8.1 Flujo de un Prompt<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s36"><span class="nav-icon">🏛️</span> 8.2 Arquitectura Agente<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s37"><span class="nav-icon">⚖️</span> 8.3 Skills vs Sub-agentes<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 9 — Producción</div>
<a class="nav-link" data-target="s38"><span class="nav-icon">📐</span> 9.1 Structured Outputs<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s39"><span class="nav-icon">💰</span> 9.2 Prompt Caching<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s40"><span class="nav-icon">🧪</span> 9.3 Evals & Testing<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s41"><span class="nav-icon">🛡️</span> 9.4 Seguridad: Injection<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s42"><span class="nav-icon">📉</span> 9.5 Costes & Latencia<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 10 — Patrones Avanzados</div>
<a class="nav-link" data-target="s43"><span class="nav-icon">🎛️</span> 10.1 System Prompt Patterns<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s44"><span class="nav-icon">🖼️</span> 10.2 Multimodal Prompting<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s45"><span class="nav-icon">🔍</span> 10.3 RAG Integration<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s46"><span class="nav-icon">🎓</span> 10.4 Fine-tuning vs Prompting<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s47"><span class="nav-icon">💬</span> 10.5 Multi-turn & Estado<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 11 — Casos Reales</div>
<a class="nav-link" data-target="s48"><span class="nav-icon">🔍</span> 11.1 Code Review Pipeline<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s49"><span class="nav-icon">🎧</span> 11.2 Soporte al Cliente<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s50"><span class="nav-icon">📄</span> 11.3 Extracción de Datos<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s51"><span class="nav-icon">📝</span> 11.4 Doc Generator<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 12 — El Ecosistema LLM</div>
<a class="nav-link" data-target="s55"><span class="nav-icon">🧬</span> 12.1 Tipos de IA y Modelos<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s56"><span class="nav-icon">☁️</span> 12.2 Online vs Local LLMs<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s57"><span class="nav-icon">🎯</span> 12.3 Especializaciones<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s58"><span class="nav-icon">🔓</span> 12.4 Open Source vs API<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 13 — Entrenamiento</div>
<a class="nav-link" data-target="s59"><span class="nav-icon">🏋️</span> 13.1 Cómo se Entrena un LLM<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s60"><span class="nav-icon">🔬</span> 13.2 Post-Training (RLHF/DPO)<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s61"><span class="nav-icon">🎓</span> 13.3 Fine-tuning (SFT/LoRA)<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s62"><span class="nav-icon">🛠️</span> 13.4 Herramientas & Frameworks<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s63"><span class="nav-icon">📦</span> 13.5 Datasets Populares<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 14 — Infraestructura</div>
<a class="nav-link" data-target="s64"><span class="nav-icon">🗄️</span> 14.1 RAG: Chunking + Embeddings<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s65"><span class="nav-icon">📊</span> 14.2 Vector Databases<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s66"><span class="nav-icon">🏗️</span> 14.3 Frameworks (LangChain, etc)<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s67"><span class="nav-icon">🚀</span> 14.4 Deployment & Serving<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s68"><span class="nav-icon">📈</span> 14.5 Monitoring & Obs<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 15 — AI por Industria</div>
<a class="nav-link" data-target="s69"><span class="nav-icon">🏥</span> 15.1 Healthcare & Biotech<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s70"><span class="nav-icon">💹</span> 15.2 Finance & Banking<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s71"><span class="nav-icon">⚖️</span> 15.3 Legal & Compliance<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s72"><span class="nav-icon">🎮</span> 15.4 Gaming, Media, Retail<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 16 — Benchmarks</div>
<a class="nav-link" data-target="s73"><span class="nav-icon">📊</span> 16.1 Benchmarks Clave<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s74"><span class="nav-icon">🏆</span> 16.2 Comparativa 2026<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s75"><span class="nav-icon">🧪</span> 16.3 Cómo Evaluar Modelos<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 17 — Safety & Ética</div>
<a class="nav-link" data-target="s76"><span class="nav-icon">🛡️</span> 17.1 Hallucination & Bias<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s77"><span class="nav-icon">🔴</span> 17.2 Red Teaming & Safety<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s78"><span class="nav-icon">📜</span> 17.3 Regulación (EU AI Act)<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 18 — Multi-Agente</div>
<a class="nav-link" data-target="s79"><span class="nav-icon">👥</span> 18.1 Patrones Multi-Agente<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s80"><span class="nav-icon">🤝</span> 18.2 CrewAI & AutoGen<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s81"><span class="nav-icon">🌐</span> 18.3 Agent Swarms<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 19 — AI por Rol</div>
<a class="nav-link" data-target="s82"><span class="nav-icon">💻</span> 19.1 Para Developers<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s83"><span class="nav-icon">🎨</span> 19.2 Para Designers<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s84"><span class="nav-icon">📋</span> 19.3 Para PMs & Executives<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 20 — El Futuro de la IA</div>
<a class="nav-link" data-target="s85"><span class="nav-icon">🔮</span> 20.1 Lo que se está Cociendo<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s86"><span class="nav-icon">📅</span> 20.2 Timeline 2026-2030<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s87"><span class="nav-icon">🤖</span> 20.3 AI + Ciencia y Robótica<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">Módulo 21 — Quantización</div>
<a class="nav-link" data-target="s88"><span class="nav-icon">📐</span> 21.1 Qué es Quantizar<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s89"><span class="nav-icon">🔬</span> 21.2 GPTQ, AWQ, GGUF, BitsAndBytes<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s90"><span class="nav-icon">📊</span> 21.3 Calidad vs Tamaño<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">🛠️ Herramientas</div>
<a class="nav-link" data-target="s52"><span class="nav-icon">🔢</span> Token Counter<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s53"><span class="nav-icon">💵</span> Cost Calculator<span class="nav-check">✅</span></a>
<a class="nav-link" data-target="s54"><span class="nav-icon">⚔️</span> Prompt Diff Comparator<span class="nav-check">✅</span></a>
</div>
<div class="nav-module">
<div class="nav-module-title">🚀 Práctica Avanzada</div>
<a class="nav-link" data-target="proj"><span class="nav-icon">📦</span> <span data-i18n="nav-proj">Mi Proyecto</span><span class="nav-check">✅</span></a>
<a class="nav-link" data-target="linter"><span class="nav-icon">🔍</span> <span data-i18n="nav-linter">Prompt Linter</span><span class="nav-check">✅</span></a>
<a class="nav-link" data-target="library"><span class="nav-icon">📚</span> <span data-i18n="nav-library">Prompt Library</span><span class="nav-check">✅</span></a>
<a class="nav-link" data-target="evolution"><span class="nav-icon">🔄</span> <span data-i18n="nav-evolution">Evolución de un Prompt</span><span class="nav-check">✅</span></a>
<a class="nav-link" data-target="antipatterns"><span class="nav-icon">⚠️</span> <span data-i18n="nav-antipatterns">Anti-patrones</span><span class="nav-check">✅</span></a>
<a class="nav-link" data-target="cheatsheet"><span class="nav-icon">📄</span> <span data-i18n="nav-cheatsheet">Cheatsheet</span><span class="nav-check">✅</span></a>
</div>
</nav>
<main id="main">
<!-- ============================================================ -->
<!-- MÓDULO 1: FUNDAMENTOS -->
<!-- ============================================================ -->
<section id="s1">
<h2>1.1 ¿Qué es un LLM?</h2>
<p class="subtitle">Large Language Models — El cerebro detrás de la IA generativa</p>
<div class="lang-block" data-lang="es">
<div class="card card-accent">
<div class="card-title">🔬 ¿Cómo funciona realmente?</div>
<p>Un LLM recibe una secuencia de <strong>tokens</strong> (sub-palabras) y predice el siguiente token más probable. Genera texto de forma <strong>autoregresiva</strong>, token por token. No "piensa" como un humano — es un simulador estadístico entrenado con cantidades masivas de texto.</p>
<p>En 2026, los modelos han evolucionado para incorporar <strong>razonamiento interno</strong> (thinking tokens), uso de herramientas, y visión.</p>
</div>
<h3>Modelos Frontier (2026)</h3>
<p style="font-size:13px;color:var(--text-dim);">El curso cubre el ecosistema completo: cloud propietario (US + China), open-weights y modelos locales. Precios orientativos a inicios de 2026, varían por región y volumen.</p>
<div class="table-wrap">
<table>
<tr><th>Modelo</th><th>Empresa</th><th>Contexto</th><th>Precio (1M tok in)</th><th>Fortaleza</th></tr>
<tr><td><strong>Claude Opus 4.7</strong></td><td>Anthropic 🇺🇸</td><td>200K</td><td>$15</td><td>Razonamiento profundo, agentes</td></tr>
<tr><td><strong>GPT-5.5</strong></td><td>OpenAI 🇺🇸</td><td>256K</td><td>$3.75</td><td>Generalista, ecosistema</td></tr>
<tr><td><strong>Gemini 2.5 Pro</strong></td><td>Google 🇺🇸</td><td>1M+</td><td>$1.25</td><td>Contexto masivo, multimodal</td></tr>
<tr><td><strong>DeepSeek V4 Pro</strong></td><td>DeepSeek 🇨🇳</td><td>128K</td><td>~$0.50</td><td>30× más barato, coding veloz</td></tr>
<tr><td><strong>Kimi K2</strong></td><td>Moonshot 🇨🇳</td><td>2M</td><td>~$0.60</td><td>Contexto enorme, agentes nativos</td></tr>
<tr><td><strong>MiniMax M2</strong></td><td>MiniMax 🇨🇳</td><td>1M</td><td>~$0.30</td><td>Multimodal eficiente, vídeo</td></tr>
<tr><td><strong>Qwen3-Max</strong></td><td>Alibaba 🇨🇳</td><td>262K</td><td>~$0.80</td><td>Multilingüe, open-weights primos</td></tr>
<tr><td><strong>GLM-5</strong></td><td>Zhipu 🇨🇳</td><td>128K</td><td>~$0.40</td><td>Agentes web, coding, function-calling</td></tr>
<tr><td><strong>Grok 4</strong></td><td>xAI 🇺🇸</td><td>256K</td><td>$3</td><td>Razonamiento, datos en tiempo real (X)</td></tr>
<tr><td><strong>Mistral Large 3</strong></td><td>Mistral 🇪🇺</td><td>256K</td><td>$2</td><td>Eficiencia europea, multilingüe</td></tr>
</table>
</div>
<h3>Modelos Open-Weights / Locales (2026)</h3>
<div class="table-wrap">
<table>
<tr><th>Familia</th><th>Tamaños</th><th>Empresa</th><th>Notas</th></tr>
<tr><td><strong>Llama 4</strong></td><td>8B / 70B / 405B</td><td>Meta</td><td>Open weights, multimodal nativo</td></tr>
<tr><td><strong>Qwen 3</strong></td><td>0.5B / 7B / 14B / 32B / 72B</td><td>Alibaba</td><td>Apache 2.0, top en multilingüe + coding</td></tr>
<tr><td><strong>Gemma 3</strong></td><td>1B / 4B / 12B / 27B</td><td>Google</td><td>On-device first, eficiente, <1.5 GB Q4</td></tr>
<tr><td><strong>Mistral / Codestral</strong></td><td>7B / 22B / Large</td><td>Mistral</td><td>Apache 2.0, fuerte en coding</td></tr>
<tr><td><strong>DeepSeek V3 / Coder V4</strong></td><td>16B-MoE / 671B-MoE</td><td>DeepSeek</td><td>MIT, MoE eficiente, coding SOTA OSS</td></tr>
<tr><td><strong>Phi-4</strong></td><td>3.8B / 14B</td><td>Microsoft</td><td>Pequeño + razonamiento, edge devices</td></tr>
<tr><td><strong>Yi-Lightning / Yi-2</strong></td><td>9B / 34B</td><td>01.AI</td><td>Multilingüe ZH/EN, contexto largo</td></tr>
<tr><td><strong>Command R+</strong></td><td>104B</td><td>Cohere</td><td>RAG nativo, function calling robusto</td></tr>
</table>
</div>
<h3>Parámetros Clave de Configuración</h3>
<p style="font-size:13px;color:var(--text-dim);">Cada API usa un nombre ligeramente distinto, pero los conceptos son universales. Esta es la lista práctica de parámetros que tocas en el 95% de los casos.</p>
<div class="card card-accent">
<div class="card-title">🌡️ <code>temperature</code> — aleatoriedad del muestreo</div>
<p>Controla cuánta aleatoriedad introduce el sampler al elegir el siguiente token. Internamente divide los logits por T antes del softmax: T baja agudiza la distribución (el token top siempre gana), T alta la aplana (todos los tokens viables tienen oportunidad).</p>
<p><strong>Rango típico:</strong> <code>0.0 – 2.0</code> (la mayoría de APIs limitan a 2.0; valores >1.5 producen alucinación e incoherencia).</p>
<p><strong>Cuándo usar qué:</strong></p>
<ul>
<li><code>0.0</code> — Determinista. Mismo input → mismo output. Code generation, extracción de datos, clasificación, evals reproducibles.</li>
<li><code>0.2 – 0.4</code> — Casi determinista con un poco de variedad. Refactoring, traducción, summarization fiel.</li>
<li><code>0.5 – 0.7</code> — Equilibrio. Conversación general, asistente, tutorial. Es el default sensato.</li>
<li><code>0.8 – 1.0</code> — Creativo. Brainstorming, copywriting, ficción, generación de variantes.</li>
<li><code>1.0 – 1.5</code> — Muy aleatorio. Solo casos donde quieres explorar el espacio de salida (p.ej. self-consistency CoT).</li>
</ul>
</div>
<div class="card card-accent">
<div class="card-title">🎯 <code>top_p</code> — nucleus sampling</div>
<p>Recorta la cola de la distribución: en cada paso solo se consideran los tokens cuyas probabilidades acumuladas suman <code>p</code>. Si <code>top_p=0.9</code>, descartamos el 10% menos probable de cada decisión. Es complementario a <code>temperature</code> — Anthropic recomienda tocar uno u otro, no ambos a la vez.</p>
<p><strong>Rango típico:</strong> <code>0.7 – 1.0</code>. Por debajo de 0.5 el modelo se vuelve repetitivo.</p>
<p><strong>Defaults sensatos:</strong> <code>top_p=1.0</code> y subir <code>temperature</code>, o <code>temperature=1.0</code> y bajar <code>top_p</code>.</p>
</div>
<div class="card card-accent">
<div class="card-title">🔝 <code>top_k</code> — corte por número de candidatos</div>
<p>Solo considera los <code>k</code> tokens más probables en cada paso. Más burdo que <code>top_p</code> (no se adapta a la forma de la distribución). Útil cuando quieres garantizar diversidad acotada. Algunos APIs (Google, DeepSeek) lo exponen; Anthropic no.</p>
<p><strong>Rango:</strong> <code>1 – 50</code>. <code>k=1</code> es greedy (equivalente a <code>temperature=0</code>).</p>
</div>
<div class="card card-accent">
<div class="card-title">📏 <code>max_tokens</code> — tope de salida</div>
<p>Número máximo de tokens que el modelo puede generar antes de detenerse forzosamente. Es un cap duro, no una sugerencia. Si el modelo iba a producir más, su respuesta se trunca abruptamente (a menudo dejando JSON malformado).</p>
<p><strong>Reglas prácticas:</strong></p>
<ul>
<li>Respuesta corta esperada: <code>256 – 1024</code>.</li>
<li>Respuesta media (artículo, función completa): <code>2048 – 4096</code>.</li>
<li>Respuesta larga (código grande, ensayo): <code>8192 – 16384</code>.</li>
<li>Tareas con thinking activo: subir a <code>32k – 64k</code> (los thinking tokens cuentan).</li>
</ul>
<p>Cap por modelo: Claude 4.x 64k, GPT-5 16k, Gemini 2.5 Pro 64k, DeepSeek 8k.</p>
</div>
<div class="card card-accent">
<div class="card-title">🛑 <code>stop_sequences</code> / <code>stop</code> — paradas explícitas</div>
<p>Lista de strings que, si aparecen en la salida, hacen que el modelo se detenga inmediatamente. Útil cuando estás haciendo few-shot con un delimitador propio (<code>###</code>, <code>END</code>, <code></answer></code>) y no quieres que el modelo continúe alucinando un siguiente ejemplo.</p>
<p>Hasta 4 secuencias en la mayoría de APIs. La secuencia consumida NO aparece en la respuesta final.</p>
</div>
<div class="card card-accent">
<div class="card-title">🔁 <code>frequency_penalty</code> y <code>presence_penalty</code> (OpenAI / DeepSeek)</div>
<p>Reducen la probabilidad de que el modelo repita tokens.</p>
<ul>
<li><code>frequency_penalty</code> — penaliza tokens proporcionalmente a cuántas veces ya han aparecido (más apariciones, más penalty). Combate bucles literales.</li>
<li><code>presence_penalty</code> — penaliza cualquier token que ya haya aparecido al menos una vez (penalty plana). Empuja a explorar vocabulario nuevo.</li>
</ul>
<p><strong>Rango:</strong> <code>-2.0 – 2.0</code>. Default <code>0.0</code>. Subir a <code>0.3 – 0.7</code> si ves repeticiones; pasar de 1.0 introduce ruido. Anthropic no los expone (Claude tiene anti-repetición interna).</p>
</div>
<div class="card card-accent">
<div class="card-title">🎲 <code>seed</code> — reproducibilidad</div>
<p>Fija el RNG del sampler. Mismo seed + mismos parámetros + misma versión del modelo → misma salida (con asterisco: la mayoría de proveedores no garantizan determinismo bit-exact entre versiones de infraestructura).</p>
<p>Crítico para evals automatizados, debugging de prompts y reproducibilidad de papers. OpenAI y DeepSeek lo exponen; Anthropic no.</p>
</div>
<div class="card card-accent">
<div class="card-title">🧠 <code>thinking</code> / <code>reasoning_effort</code> — razonamiento interno</div>
<p>Activa los tokens de razonamiento internos antes de la respuesta visible. El modelo razona "para sí mismo" durante segundos o minutos, y luego entrega la respuesta final más sólida. Estos tokens se facturan.</p>
<div class="table-wrap"><table>
<tr><th>API</th><th>Parámetro</th><th>Valores</th></tr>
<tr><td><span class="badge badge-claude">Claude</span></td><td><code>thinking={"type":"adaptive"}</code> + <code>output_config.effort</code></td><td><code>low / medium / high / xhigh / max</code></td></tr>
<tr><td>OpenAI (o-series, GPT-5)</td><td><code>reasoning_effort</code></td><td><code>minimal / low / medium / high</code></td></tr>
<tr><td>Gemini 2.5</td><td><code>thinking_config.thinking_budget</code></td><td><code>0 – 24576</code> (tokens) o <code>-1</code> (auto)</td></tr>
<tr><td><span class="badge badge-ds">DeepSeek R / V4</span></td><td><code>thinking={"type":"enabled"}</code></td><td><code>on / off</code></td></tr>
<tr><td>Qwen 3</td><td><code>enable_thinking</code></td><td><code>true / false</code></td></tr>
</table></div>
<p>Activar thinking sube calidad 5-30% en tareas multi-step (matemáticas, debugging, planificación) pero multiplica latencia 5-50× y coste por la misma proporción.</p>
</div>
<div class="card card-accent">
<div class="card-title">📦 <code>response_format</code> — formato estructurado</div>
<p>Fuerza al modelo a emitir output que cumpla un esquema determinado.</p>
<ul>
<li><code>{"type": "text"}</code> — Default. Texto libre.</li>
<li><code>{"type": "json_object"}</code> — Garantiza JSON válido en la salida (OpenAI, DeepSeek, Mistral, GLM). Formato libre.</li>
<li><code>{"type": "json_schema", "schema": {...}}</code> — JSON estricto que cumple el schema (OpenAI, Gemini "controlled generation"). El modelo NO puede desviarse.</li>
<li>Anthropic no expone <code>response_format</code> directamente; usa <code>tool_use</code> con <code>input_schema</code> para el mismo efecto.</li>
</ul>
</div>
<div class="card card-accent">
<div class="card-title">🛠️ <code>tools</code> y <code>tool_choice</code> — function calling</div>
<p>Lista de herramientas que el modelo puede invocar (definidas con nombre, descripción y schema de parámetros).</p>
<ul>
<li><code>tool_choice="auto"</code> — El modelo decide si llama a alguna o responde directamente (default).</li>
<li><code>tool_choice="required"</code> / <code>"any"</code> — Forzar llamada a alguna tool.</li>
<li><code>tool_choice={"type":"tool","name":"X"}</code> — Forzar tool específica.</li>
<li><code>tool_choice="none"</code> — Prohibir tools, responder con texto solo.</li>
</ul>
</div>
<div class="card card-accent">
<div class="card-title">💾 <code>cache_control</code> — prompt caching (Anthropic)</div>
<p>Marca bloques del prompt como cacheables. La primera llamada paga 1.25× el precio normal de input para escribirlos en caché; las siguientes pagan 0.10× para leerlos. TTL típico 5 min (extensible a 1 h con <code>"ttl": "1h"</code>). Critical para system prompts largos y RAG con docs repetidos.</p>
</div>
<div class="card card-accent">
<div class="card-title">🌐 <code>system</code> / mensaje system — instrucciones globales</div>
<p>El system prompt tiene prioridad máxima sobre los mensajes del usuario. Es donde defines rol, reglas, formato esperado, restricciones de seguridad. NO va dentro de <code>messages[]</code> en Anthropic (es un parámetro top-level <code>system</code>); en OpenAI/DeepSeek va como primer mensaje con <code>role: "system"</code>.</p>
</div>
<div class="warn"><strong>⚠️ Defaults son tu enemigo.</strong> Si dejas todos los parámetros sin especificar, cada modelo elige unos diferentes (Claude usa <code>temperature=1.0</code>, OpenAI <code>1.0</code>, DeepSeek <code>1.0</code>, Gemini <code>1.0</code> pero con <code>top_p=0.95</code> y <code>top_k=64</code>). Para producción, especifica explícitamente <code>temperature</code>, <code>max_tokens</code> y al menos uno de <code>top_p</code>/<code>top_k</code>.</div>
</div>
<div class="lang-block" data-lang="en">
<div class="card card-accent">
<div class="card-title">🔬 How does it actually work?</div>
<p>An LLM receives a sequence of <strong>tokens</strong> (sub-words) and predicts the next most likely token. It generates text <strong>autoregressively</strong>, token by token. It does not "think" like a human — it's a statistical simulator trained on massive amounts of text.</p>
<p>By 2026, models have evolved to incorporate <strong>internal reasoning</strong> (thinking tokens), tool use, and vision.</p>
</div>
<h3>Frontier Models (2026)</h3>
<p style="font-size:13px;color:var(--text-dim);">The course covers the full ecosystem: proprietary cloud (US + China), open-weights, and local models. Prices indicative as of early 2026 and vary by region and volume.</p>
<div class="table-wrap">
<table>
<tr><th>Model</th><th>Company</th><th>Context</th><th>Price (1M tok in)</th><th>Strength</th></tr>
<tr><td><strong>Claude Opus 4.7</strong></td><td>Anthropic 🇺🇸</td><td>200K</td><td>$15</td><td>Deep reasoning, agents</td></tr>
<tr><td><strong>GPT-5.5</strong></td><td>OpenAI 🇺🇸</td><td>256K</td><td>$3.75</td><td>Generalist, ecosystem</td></tr>
<tr><td><strong>Gemini 2.5 Pro</strong></td><td>Google 🇺🇸</td><td>1M+</td><td>$1.25</td><td>Massive context, multimodal</td></tr>
<tr><td><strong>DeepSeek V4 Pro</strong></td><td>DeepSeek 🇨🇳</td><td>128K</td><td>~$0.50</td><td>30× cheaper, fast coding</td></tr>
<tr><td><strong>Kimi K2</strong></td><td>Moonshot 🇨🇳</td><td>2M</td><td>~$0.60</td><td>Massive context, native agents</td></tr>
<tr><td><strong>MiniMax M2</strong></td><td>MiniMax 🇨🇳</td><td>1M</td><td>~$0.30</td><td>Efficient multimodal, video</td></tr>
<tr><td><strong>Qwen3-Max</strong></td><td>Alibaba 🇨🇳</td><td>262K</td><td>~$0.80</td><td>Multilingual, open-weights cousins</td></tr>
<tr><td><strong>GLM-5</strong></td><td>Zhipu 🇨🇳</td><td>128K</td><td>~$0.40</td><td>Web agents, coding, function-calling</td></tr>
<tr><td><strong>Grok 4</strong></td><td>xAI 🇺🇸</td><td>256K</td><td>$3</td><td>Reasoning, real-time data (X)</td></tr>
<tr><td><strong>Mistral Large 3</strong></td><td>Mistral 🇪🇺</td><td>256K</td><td>$2</td><td>European efficiency, multilingual</td></tr>
</table>
</div>
<h3>Open-Weights / Local Models (2026)</h3>
<div class="table-wrap">
<table>
<tr><th>Family</th><th>Sizes</th><th>Company</th><th>Notes</th></tr>
<tr><td><strong>Llama 4</strong></td><td>8B / 70B / 405B</td><td>Meta</td><td>Open weights, native multimodal</td></tr>
<tr><td><strong>Qwen 3</strong></td><td>0.5B / 7B / 14B / 32B / 72B</td><td>Alibaba</td><td>Apache 2.0, top in multilingual + coding</td></tr>
<tr><td><strong>Gemma 3</strong></td><td>1B / 4B / 12B / 27B</td><td>Google</td><td>On-device first, efficient, <1.5 GB Q4</td></tr>
<tr><td><strong>Mistral / Codestral</strong></td><td>7B / 22B / Large</td><td>Mistral</td><td>Apache 2.0, strong at coding</td></tr>
<tr><td><strong>DeepSeek V3 / Coder V4</strong></td><td>16B-MoE / 671B-MoE</td><td>DeepSeek</td><td>MIT, efficient MoE, OSS coding SOTA</td></tr>
<tr><td><strong>Phi-4</strong></td><td>3.8B / 14B</td><td>Microsoft</td><td>Small + reasoning, edge devices</td></tr>
<tr><td><strong>Yi-Lightning / Yi-2</strong></td><td>9B / 34B</td><td>01.AI</td><td>ZH/EN multilingual, long context</td></tr>
<tr><td><strong>Command R+</strong></td><td>104B</td><td>Cohere</td><td>Native RAG, robust function calling</td></tr>
</table>
</div>
<h3>Key Configuration Parameters</h3>
<p style="font-size:13px;color:var(--text-dim);">Each API uses slightly different names, but the concepts are universal. This is the practical list of parameters you'll touch in 95% of cases.</p>
<div class="card card-accent">
<div class="card-title">🌡️ <code>temperature</code> — sampling randomness</div>
<p>Controls how much randomness the sampler injects when picking the next token. Internally it divides the logits by T before softmax: low T sharpens the distribution (top token always wins), high T flattens it (every viable token gets a chance).</p>
<p><strong>Typical range:</strong> <code>0.0 – 2.0</code> (most APIs cap at 2.0; values >1.5 produce hallucination and incoherence).</p>
<p><strong>When to use what:</strong></p>
<ul>
<li><code>0.0</code> — Deterministic. Same input → same output. Code generation, data extraction, classification, reproducible evals.</li>
<li><code>0.2 – 0.4</code> — Almost deterministic with a touch of variety. Refactoring, faithful translation, summarization.</li>
<li><code>0.5 – 0.7</code> — Balanced. General conversation, assistant, tutorial. The sensible default.</li>
<li><code>0.8 – 1.0</code> — Creative. Brainstorming, copywriting, fiction, generating variants.</li>
<li><code>1.0 – 1.5</code> — Very random. Only when you want to explore the output space (e.g. self-consistency CoT).</li>
</ul>
</div>
<div class="card card-accent">
<div class="card-title">🎯 <code>top_p</code> — nucleus sampling</div>
<p>Trims the tail of the distribution: at each step only tokens whose cumulative probabilities sum to <code>p</code> are considered. With <code>top_p=0.9</code>, you discard the 10% least likely tokens at every decision. It's complementary to <code>temperature</code> — Anthropic recommends tuning one or the other, not both at once.</p>
<p><strong>Typical range:</strong> <code>0.7 – 1.0</code>. Below 0.5 the model becomes repetitive.</p>
<p><strong>Sensible defaults:</strong> <code>top_p=1.0</code> and raise <code>temperature</code>, or <code>temperature=1.0</code> and lower <code>top_p</code>.</p>
</div>
<div class="card card-accent">
<div class="card-title">🔝 <code>top_k</code> — candidate count cutoff</div>
<p>Only considers the <code>k</code> most likely tokens at each step. Cruder than <code>top_p</code> (it doesn't adapt to the shape of the distribution). Useful when you want bounded diversity guaranteed. Some APIs (Google, DeepSeek) expose it; Anthropic doesn't.</p>
<p><strong>Range:</strong> <code>1 – 50</code>. <code>k=1</code> is greedy (equivalent to <code>temperature=0</code>).</p>
</div>
<div class="card card-accent">
<div class="card-title">📏 <code>max_tokens</code> — output cap</div>
<p>Maximum number of tokens the model can generate before being forcibly stopped. It's a hard cap, not a hint. If the model intended to produce more, the response truncates abruptly (often leaving malformed JSON).</p>
<p><strong>Practical rules:</strong></p>
<ul>
<li>Short response expected: <code>256 – 1024</code>.</li>
<li>Medium response (article, full function): <code>2048 – 4096</code>.</li>
<li>Long response (large code, essay): <code>8192 – 16384</code>.</li>
<li>Tasks with thinking enabled: raise to <code>32k – 64k</code> (thinking tokens count).</li>
</ul>
<p>Per-model caps: Claude 4.x 64k, GPT-5 16k, Gemini 2.5 Pro 64k, DeepSeek 8k.</p>
</div>
<div class="card card-accent">
<div class="card-title">🛑 <code>stop_sequences</code> / <code>stop</code> — explicit halts</div>
<p>List of strings that, if they appear in the output, make the model stop immediately. Useful when you're doing few-shot with your own delimiter (<code>###</code>, <code>END</code>, <code></answer></code>) and don't want the model to keep hallucinating a next example.</p>
<p>Up to 4 sequences in most APIs. The consumed sequence is NOT included in the final response.</p>
</div>
<div class="card card-accent">
<div class="card-title">🔁 <code>frequency_penalty</code> and <code>presence_penalty</code> (OpenAI / DeepSeek)</div>
<p>Reduce the probability of the model repeating tokens.</p>
<ul>
<li><code>frequency_penalty</code> — penalizes tokens proportionally to how many times they've appeared (more occurrences, more penalty). Fights literal loops.</li>
<li><code>presence_penalty</code> — penalizes any token that appeared at least once (flat penalty). Pushes the model to explore new vocabulary.</li>
</ul>
<p><strong>Range:</strong> <code>-2.0 – 2.0</code>. Default <code>0.0</code>. Raise to <code>0.3 – 0.7</code> if you see repetitions; above 1.0 introduces noise. Anthropic doesn't expose them (Claude has internal anti-repetition).</p>
</div>
<div class="card card-accent">
<div class="card-title">🎲 <code>seed</code> — reproducibility</div>
<p>Fixes the sampler RNG. Same seed + same parameters + same model version → same output (asterisk: most providers don't guarantee bit-exact determinism across infra versions).</p>
<p>Critical for automated evals, prompt debugging, and paper reproducibility. OpenAI and DeepSeek expose it; Anthropic doesn't.</p>
</div>
<div class="card card-accent">
<div class="card-title">🧠 <code>thinking</code> / <code>reasoning_effort</code> — internal reasoning</div>
<p>Enables internal reasoning tokens before the visible answer. The model thinks "to itself" for seconds or minutes, then delivers a stronger final answer. These tokens are billed.</p>
<div class="table-wrap"><table>
<tr><th>API</th><th>Parameter</th><th>Values</th></tr>
<tr><td><span class="badge badge-claude">Claude</span></td><td><code>thinking={"type":"adaptive"}</code> + <code>output_config.effort</code></td><td><code>low / medium / high / xhigh / max</code></td></tr>
<tr><td>OpenAI (o-series, GPT-5)</td><td><code>reasoning_effort</code></td><td><code>minimal / low / medium / high</code></td></tr>
<tr><td>Gemini 2.5</td><td><code>thinking_config.thinking_budget</code></td><td><code>0 – 24576</code> (tokens) or <code>-1</code> (auto)</td></tr>
<tr><td><span class="badge badge-ds">DeepSeek R / V4</span></td><td><code>thinking={"type":"enabled"}</code></td><td><code>on / off</code></td></tr>
<tr><td>Qwen 3</td><td><code>enable_thinking</code></td><td><code>true / false</code></td></tr>
</table></div>
<p>Enabling thinking lifts quality 5-30% on multi-step tasks (math, debugging, planning) but multiplies latency 5-50× and cost proportionally.</p>
</div>
<div class="card card-accent">
<div class="card-title">📦 <code>response_format</code> — structured format</div>
<p>Forces the model to emit output that conforms to a given schema.</p>
<ul>
<li><code>{"type": "text"}</code> — Default. Free text.</li>
<li><code>{"type": "json_object"}</code> — Guarantees valid JSON in the output (OpenAI, DeepSeek, Mistral, GLM). Free form.</li>
<li><code>{"type": "json_schema", "schema": {...}}</code> — Strict JSON conforming to the schema (OpenAI, Gemini "controlled generation"). The model CANNOT deviate.</li>
<li>Anthropic doesn't expose <code>response_format</code> directly; use <code>tool_use</code> with <code>input_schema</code> for the same effect.</li>
</ul>
</div>
<div class="card card-accent">
<div class="card-title">🛠️ <code>tools</code> and <code>tool_choice</code> — function calling</div>
<p>List of tools the model can invoke (defined with name, description, and parameter schema).</p>
<ul>
<li><code>tool_choice="auto"</code> — The model decides whether to call any tool or answer directly (default).</li>
<li><code>tool_choice="required"</code> / <code>"any"</code> — Force a tool call.</li>
<li><code>tool_choice={"type":"tool","name":"X"}</code> — Force a specific tool.</li>
<li><code>tool_choice="none"</code> — Forbid tools, text-only response.</li>
</ul>
</div>
<div class="card card-accent">
<div class="card-title">💾 <code>cache_control</code> — prompt caching (Anthropic)</div>
<p>Marks blocks of the prompt as cacheable. The first call pays 1.25× the normal input price to write to cache; subsequent calls pay 0.10× to read it. Typical TTL 5 min (extensible to 1 h with <code>"ttl": "1h"</code>). Critical for long system prompts and RAG with repeated docs.</p>
</div>
<div class="card card-accent">
<div class="card-title">🌐 <code>system</code> / system message — global instructions</div>
<p>The system prompt has top priority over user messages. It's where you define role, rules, expected format, safety constraints. It does NOT go inside <code>messages[]</code> in Anthropic (it's a top-level <code>system</code> parameter); in OpenAI/DeepSeek it goes as the first message with <code>role: "system"</code>.</p>
</div>
<div class="warn"><strong>⚠️ Defaults are your enemy.</strong> If you leave all parameters unspecified, each model picks different ones (Claude uses <code>temperature=1.0</code>, OpenAI <code>1.0</code>, DeepSeek <code>1.0</code>, Gemini <code>1.0</code> but with <code>top_p=0.95</code> and <code>top_k=64</code>). For production, explicitly set <code>temperature</code>, <code>max_tokens</code> and at least one of <code>top_p</code>/<code>top_k</code>.</div>
</div>
</section>
<section id="s2">
<h2>1.2 ¿Qué es Prompt Engineering?</h2>
<p class="subtitle">La disciplina de diseñar instrucciones que obtienen resultados consistentes y de alta calidad de un LLM</p>
<div class="lang-block" data-lang="es">
<div class="card card-green">
<div class="card-title">🎯 No es solo "escribir prompts"</div>
<p>Es un <strong>proceso iterativo</strong>: definir criterios de éxito → crear prompt → evaluar → iterar. Como TDD pero para lenguaje natural. Anthropic recomienda definir <strong>evals</strong> (evaluaciones) antes de empezar a iterar prompts.</p>
</div>
<h3>El Ciclo de Prompt Engineering</h3>
<p style="color:var(--text-dim);font-size:13px;">Ver diagrama animado completo en <a href="#" onclick="document.getElementById('s35').scrollIntoView({behavior:'smooth'});return false;" style="color:var(--accent);">Sección 8.1 →</a></p>
<div class="tip"><strong>💡 Regla de Oro (Anthropic):</strong> Enséñale tu prompt a un colega sin contexto. Si él se confunde, Claude también.</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0;">
<div class="card"><div class="card-title">❌ Mal Prompt</div>
<pre><code>Write code for a login page</code></pre></div>
<div class="card card-green"><div class="card-title">✅ Buen Prompt</div>
<pre><code>Create a React login page with:
- Email + password form
- "Remember me" checkbox
- Error handling (invalid creds)
- Responsive design
- Loading state on submit</code></pre></div>
</div>
</div>
<div class="lang-block" data-lang="en">
<div class="card card-green">
<div class="card-title">🎯 It's not just "writing prompts"</div>
<p>It's an <strong>iterative process</strong>: define success criteria → create prompt → evaluate → iterate. Like TDD but for natural language. Anthropic recommends defining <strong>evals</strong> (evaluations) before iterating on prompts.</p>
</div>
<h3>The Prompt Engineering Cycle</h3>
<p style="color:var(--text-dim);font-size:13px;">See the full animated diagram in <a href="#" onclick="document.getElementById('s35').scrollIntoView({behavior:'smooth'});return false;" style="color:var(--accent);">Section 8.1 →</a></p>
<div class="tip"><strong>💡 Golden Rule (Anthropic):</strong> Show your prompt to a colleague with no context. If they get confused, Claude will too.</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0;">
<div class="card"><div class="card-title">❌ Bad Prompt</div>
<pre><code>Write code for a login page</code></pre></div>
<div class="card card-green"><div class="card-title">✅ Good Prompt</div>
<pre><code>Create a React login page with:
- Email + password form
- "Remember me" checkbox
- Error handling (invalid creds)
- Responsive design
- Loading state on submit</code></pre></div>
</div>
</div>
</section>
<section id="s3">
<h2>1.3 Anatomía de un Prompt</h2>
<p class="subtitle">Las 5 secciones que componen un prompt profesional</p>
<div class="lang-block" data-lang="es">
<div class="card">
<pre><code><!-- 1. IDENTITY — Quién eres -->
You are a senior code reviewer specializing in security.
<!-- 2. INSTRUCTIONS — Qué hacer (y NO hacer) -->
<instructions>
1. Analyze code for OWASP Top 10 vulnerabilities
2. Rate each finding: Critical / High / Medium / Low
3. Suggest concrete fixes with code examples
4. Do NOT comment on style or formatting
</instructions>
<!-- 3. EXAMPLES — 3-5 ejemplos input→output -->
<examples>
<example>...</example>
</examples>
<!-- 4. CONTEXT — Datos externos -->
<context>Project uses Node.js 20, Express 5, JWT auth</context>
<!-- 5. INPUT — La tarea concreta -->
Review this authentication middleware for vulnerabilities:
[paste code here]</code></pre>
</div>
<div class="table-wrap"><table>
<tr><th>Sección</th><th>Prioridad</th><th>Propósito</th></tr>
<tr><td><strong>Identity</strong></td><td>Alta</td><td>Rol, tono, expertise</td></tr>
<tr><td><strong>Instructions</strong></td><td>Crítica</td><td>Pasos, reglas, restricciones</td></tr>
<tr><td><strong>Examples</strong></td><td>Muy Alta</td><td>Patrón input→output (3-5)</td></tr>
<tr><td><strong>Context</strong></td><td>Alta</td><td>Datos, docs, conocimiento externo</td></tr>
<tr><td><strong>Input</strong></td><td>—</td><td>La pregunta/tarea concreta</td></tr>
</table></div>
<div class="tip"><strong>💡 Orden importa:</strong> Documentos largos ARRIBA, query al FINAL. Mejora hasta un 30% la calidad de respuesta.</div>
</div>
<div class="lang-block" data-lang="en">
<div class="card">
<pre><code><!-- 1. IDENTITY — Who you are -->
You are a senior code reviewer specializing in security.
<!-- 2. INSTRUCTIONS — What to do (and what NOT to do) -->
<instructions>
1. Analyze code for OWASP Top 10 vulnerabilities
2. Rate each finding: Critical / High / Medium / Low
3. Suggest concrete fixes with code examples
4. Do NOT comment on style or formatting
</instructions>
<!-- 3. EXAMPLES — 3-5 input→output examples -->
<examples>
<example>...</example>
</examples>
<!-- 4. CONTEXT — External data -->
<context>Project uses Node.js 20, Express 5, JWT auth</context>
<!-- 5. INPUT — The concrete task -->
Review this authentication middleware for vulnerabilities:
[paste code here]</code></pre>
</div>
<div class="table-wrap"><table>
<tr><th>Section</th><th>Priority</th><th>Purpose</th></tr>
<tr><td><strong>Identity</strong></td><td>High</td><td>Role, tone, expertise</td></tr>
<tr><td><strong>Instructions</strong></td><td>Critical</td><td>Steps, rules, constraints</td></tr>
<tr><td><strong>Examples</strong></td><td>Very High</td><td>Input→output pattern (3-5)</td></tr>
<tr><td><strong>Context</strong></td><td>High</td><td>Data, docs, external knowledge</td></tr>
<tr><td><strong>Input</strong></td><td>—</td><td>The concrete question/task</td></tr>
</table></div>
<div class="tip"><strong>💡 Order matters:</strong> Long documents UP TOP, query at the END. Improves response quality by up to 30%.</div>
</div>
</section>
<section id="s4">
<h2>1.4 Roles del Sistema</h2>
<p class="subtitle">La cadena de mando: system → user → assistant</p>
<div class="lang-block" data-lang="es">
<div class="compare">
<div><h4><span class="badge badge-claude">Claude</span> System Prompt</h4>
<pre><code>system="You are a Python expert.
Reply only with code, no text."</code></pre></div>
<div><h4><span class="badge badge-ds">DeepSeek</span> System Message</h4>
<pre><code>messages=[
{"role":"system","content":"..."},
{"role":"user","content":"..."}
]</code></pre></div>
</div>
<div class="table-wrap"><table>
<tr><th>Rol</th><th>Quién lo pone</th><th>Prioridad</th></tr>
<tr><td><code>system</code> / <code>developer</code></td><td>Desarrollador de la app</td><td>MÁXIMA — Anula al usuario</td></tr>
<tr><td><code>user</code></td><td>Usuario final</td><td>Media</td></tr>
<tr><td><code>assistant</code></td><td>El modelo (historial)</td><td>Solo referencia</td></tr>
</table></div>
<div class="tip"><strong>💡 Piensa en:</strong> system = definición de función. user = argumentos. El system prompt tiene prioridad absoluta.</div>
</div>
<div class="lang-block" data-lang="en">
<div class="compare">
<div><h4><span class="badge badge-claude">Claude</span> System Prompt</h4>
<pre><code>system="You are a Python expert.
Reply only with code, no text."</code></pre></div>
<div><h4><span class="badge badge-ds">DeepSeek</span> System Message</h4>
<pre><code>messages=[
{"role":"system","content":"..."},
{"role":"user","content":"..."}
]</code></pre></div>
</div>
<div class="table-wrap"><table>
<tr><th>Role</th><th>Who sets it</th><th>Priority</th></tr>
<tr><td><code>system</code> / <code>developer</code></td><td>App developer</td><td>HIGHEST — Overrides the user</td></tr>
<tr><td><code>user</code></td><td>End user</td><td>Medium</td></tr>
<tr><td><code>assistant</code></td><td>The model (history)</td><td>Reference only</td></tr>
</table></div>
<div class="tip"><strong>💡 Think of it as:</strong> system = function definition. user = arguments. The system prompt has absolute priority.</div>
</div>
</section>
<section id="s5">
<h2>1.5 Zero-shot vs Few-shot</h2>
<div class="lang-block" data-lang="es">
<div class="compare">
<div><h4>Zero-shot</h4>
<p>Sin ejemplos. El modelo infiere la tarea solo de las instrucciones.</p>
<pre><code>Clasifica: "Qué producto tan malo" →</code></pre>
<p style="font-size:12px;color:var(--text-muted);margin-top:8px;">Funciona para tareas simples. Para tareas complejas, la calidad varía mucho.</p>
</div>
<div><h4>Few-shot <span class="badge badge-claude">Recomendado</span></h4>
<p>3-5 ejemplos. El modelo aprende el patrón en contexto.</p>
<pre><code>"Me encanta" → Positivo
"Qué horror" → Negativo
"Está bien" → Neutral
"Qué malo" →</code></pre>
<p style="font-size:12px;color:var(--text-muted);margin-top:8px;">Mucho más fiable. Claude Opus 4.7 responde excepcionalmente bien.</p>
</div>
</div>
<div class="card card-accent">
<div class="card-title">📊 Datos de Anthropic</div>
<p>En benchmarks internos, pasar de zero-shot a 5-shot puede mejorar la accuracy en <strong>20-40 puntos porcentuales</strong> en tareas de clasificación y extracción.</p>
</div>
</div>
<div class="lang-block" data-lang="en">
<div class="compare">
<div><h4>Zero-shot</h4>
<p>No examples. The model infers the task from instructions alone.</p>
<pre><code>Classify: "What an awful product" →</code></pre>
<p style="font-size:12px;color:var(--text-muted);margin-top:8px;">Works for simple tasks. For complex tasks, quality varies a lot.</p>
</div>
<div><h4>Few-shot <span class="badge badge-claude">Recommended</span></h4>
<p>3-5 examples. The model learns the pattern in context.</p>
<pre><code>"I love it" → Positive
"How awful" → Negative
"It's OK" → Neutral
"What a bad one" →</code></pre>
<p style="font-size:12px;color:var(--text-muted);margin-top:8px;">Far more reliable. Claude Opus 4.7 responds exceptionally well.</p>
</div>
</div>
<div class="card card-accent">
<div class="card-title">📊 Anthropic Data</div>
<p>In internal benchmarks, going from zero-shot to 5-shot can improve accuracy by <strong>20-40 percentage points</strong> on classification and extraction tasks.</p>
</div>
</div>
</section>
<!-- ============================================================ -->
<!-- MÓDULO 2 -->
<!-- ============================================================ -->
<section id="s6">
<h2>2.1 Claridad y Precisión</h2>
<p class="subtitle">El principio más importante. Claude Opus 4.7 es especialmente LITERAL.</p>
<div class="lang-block" data-lang="es">
<div class="card">
<div class="card-title">📝 Ejemplo: Explicar el POR QUÉ</div>
<pre><code>❌ "NUNCA uses puntos suspensivos en tu respuesta".
✅ "Tu respuesta la leerá en voz alta un motor text-to-speech,
por lo que nunca uses puntos suspensivos — el motor no sabrá pronunciarlos".</code></pre>
<p>El modelo es lo bastante inteligente para generalizar a partir de la explicación, en lugar de tratar la regla como un caso aislado.</p>
</div>
<h3>Checklist de Claridad</h3>
<div class="table-wrap"><table>
<tr><th>✅ Hacer</th><th>❌ Evitar</th></tr>
<tr><td>Especificar formato de salida</td><td>Instrucciones vagas ("hazlo bien")</td></tr>
<tr><td>Usar listas numeradas si el orden importa</td><td>Solo decir qué NO hacer</td></tr>
<tr><td>Explicar el porqué</td><td>Asumir que el modelo "entenderá"</td></tr>
<tr><td>Pedir "above and beyond" explícitamente</td><td>Esperar que infiera que quieres más</td></tr>
</table></div>
</div>
<div class="lang-block" data-lang="en">
<div class="card">
<div class="card-title">📝 Example: Explain the WHY</div>
<pre><code>❌ "NEVER use ellipses in your response"
✅ "Your response will be read aloud by a text-to-speech engine,
so never use ellipses — the engine won't know how to pronounce them."</code></pre>
<p>Claude is smart enough to generalize from the explanation.</p>
</div>
<h3>Clarity Checklist</h3>
<div class="table-wrap"><table>
<tr><th>✅ Do</th><th>❌ Avoid</th></tr>
<tr><td>Specify output format</td><td>Vague instructions ("do it well")</td></tr>
<tr><td>Use numbered lists if order matters</td><td>Only telling what NOT to do</td></tr>
<tr><td>Explain the why</td><td>Assuming the model "will understand"</td></tr>
<tr><td>Ask for "above and beyond" explicitly</td><td>Hoping it infers you want more</td></tr>
</table></div>
</div>
</section>
<section id="s7">
<h2>2.2 Usar Ejemplos (Few-shot Prompting)</h2>
<div class="lang-block" data-lang="es">
<div class="card card-green">
<div class="card-title">📋 Reglas para Buenos Ejemplos</div>
<ul>
<li><strong>Relevantes:</strong> Reflejan tu caso de uso exacto</li>
<li><strong>Diversos:</strong> Cubren edge cases, no solo el happy path</li>
<li><strong>Estructurados:</strong> Envueltos en <code><example></code> tags</li>
<li><strong>Cantidad:</strong> 3-5 ejemplos (sweet spot según Anthropic)</li>
</ul>
</div>
<pre><code><examples>
<example>
<input>User reports: "App crashes when I upload a photo"</input>
<output>
<diagnosis>Memory overflow on large images</diagnosis>
<fix>Add image resize before upload (max 2048px)</fix>
<files>src/utils/imageProcessor.ts, src/components/Upload.tsx</files>
</output>
</example>
<!-- 2-4 ejemplos más con diferentes escenarios -->
</examples></code></pre>
</div>
<div class="lang-block" data-lang="en">
<div class="card card-green">
<div class="card-title">📋 Rules for Good Examples</div>
<ul>
<li><strong>Relevant:</strong> Reflect your exact use case</li>
<li><strong>Diverse:</strong> Cover edge cases, not just the happy path</li>
<li><strong>Structured:</strong> Wrapped in <code><example></code> tags</li>
<li><strong>Quantity:</strong> 3-5 examples (Anthropic's sweet spot)</li>
</ul>
</div>
<pre><code><examples>
<example>
<input>User reports: "App crashes when I upload a photo"</input>
<output>
<diagnosis>Memory overflow on large images</diagnosis>
<fix>Add image resize before upload (max 2048px)</fix>
<files>src/utils/imageProcessor.ts, src/components/Upload.tsx</files>
</output>
</example>
<!-- 2-4 more examples covering different scenarios -->
</examples></code></pre>
</div>
</section>
<section id="s8">
<h2>2.3 Role Prompting</h2>
<div class="lang-block" data-lang="es">
<p>Una sola frase definiendo el rol transforma completamente la calidad y el tono de las respuestas.</p>
<div class="table-wrap"><table>
<tr><th>Rol</th><th>Efecto en la respuesta</th></tr>
<tr><td>"Eres un profesor de matemáticas"</td><td>Explicaciones paso a paso, ejemplos didácticos</td></tr>
<tr><td>"Eres un revisor de código senior"</td><td>Crítico, encuentra bugs, sugiere mejoras concretas</td></tr>
<tr><td>"Eres un abogado de propiedad intelectual"</td><td>Lenguaje legal preciso, cita jurisprudencia</td></tr>
<tr><td>"You are a staff SRE at Google"</td><td>Enfoque en reliability, monitoring, incident response</td></tr>
</table></div>
</div>
<div class="lang-block" data-lang="en">
<p>A single sentence defining the role completely transforms the quality and tone of responses.</p>
<div class="table-wrap"><table>
<tr><th>Role</th><th>Effect on response</th></tr>
<tr><td>"You are a math teacher"</td><td>Step-by-step explanations, didactic examples</td></tr>
<tr><td>"You are a senior code reviewer"</td><td>Critical, finds bugs, suggests concrete fixes</td></tr>
<tr><td>"You are an IP lawyer"</td><td>Precise legal language, cites case law</td></tr>
<tr><td>"You are a staff SRE at Google"</td><td>Focus on reliability, monitoring, incident response</td></tr>
</table></div>
</div>
</section>
<section id="s9">
<h2>2.4 Estructura XML</h2>
<p class="subtitle">La técnica MÁS recomendada por Anthropic para prompts complejos</p>
<div class="lang-block" data-lang="es">
<div class="card card-accent">
<div class="card-title">¿Por qué XML?</div>
<ul>
<li>Separa instrucciones de contexto y ejemplos sin ambigüedad</li>
<li>Permite jerarquías anidadas (documentos dentro de documentos)</li>
<li>Claude Opus 4.7 está fine-tuned específicamente para XML</li>
<li>Facilita extraer secciones específicas de la respuesta</li>
</ul>
</div>
<pre><code><task>
<instructions>Analyze the documents and extract delivery dates.</instructions>
<documents>
<document index="1">
<source>contract.pdf</source>
<content>{{CONTRACT_TEXT}}</content>
</document>
<document index="2">
<source>addendum.docx</source>
<content>{{ADDENDUM_TEXT}}</content>
</document>
</documents>
<format>Respond in <dates>...</dates> tags</format>
</task></code></pre>
<div class="warn"><strong>⚠️ DeepSeek:</strong> También soporta XML pero con menos fine-tuning específico. Prioriza claridad sobre estructura XML compleja.</div>
</div>
<div class="lang-block" data-lang="en">
<div class="card card-accent">
<div class="card-title">Why XML?</div>
<ul>
<li>Separates instructions from context and examples without ambiguity</li>
<li>Allows nested hierarchies (documents within documents)</li>
<li>Claude Opus 4.7 is fine-tuned specifically for XML</li>
<li>Makes it easy to extract specific sections from the response</li>
</ul>
</div>
<pre><code><task>
<instructions>Analyze the documents and extract delivery dates.</instructions>
<documents>
<document index="1">
<source>contract.pdf</source>
<content>{{CONTRACT_TEXT}}</content>
</document>
<document index="2">
<source>addendum.docx</source>
<content>{{ADDENDUM_TEXT}}</content>
</document>
</documents>
<format>Respond in <dates>...</dates> tags</format>
</task></code></pre>
<div class="warn"><strong>⚠️ DeepSeek:</strong> Also supports XML but with less specific fine-tuning. Prioritize clarity over complex XML structure.</div>
</div>
</section>
<section id="s10">
<h2>2.5 Chain of Thought (CoT)</h2>
<div class="lang-block" data-lang="es">
<div class="compare">