langfx.js 0.1.0-alpha.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 (104) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +11 -0
  3. package/README.md +107 -0
  4. package/dist/agentic.d.ts +128 -0
  5. package/dist/agentic.js +265 -0
  6. package/dist/agentic.js.map +1 -0
  7. package/dist/cache.d.ts +32 -0
  8. package/dist/cache.js +135 -0
  9. package/dist/cache.js.map +1 -0
  10. package/dist/cancellation.d.ts +9 -0
  11. package/dist/cancellation.js +70 -0
  12. package/dist/cancellation.js.map +1 -0
  13. package/dist/errors.d.ts +40 -0
  14. package/dist/errors.js +44 -0
  15. package/dist/errors.js.map +1 -0
  16. package/dist/index.d.ts +18 -0
  17. package/dist/index.js +15 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/json-stream.d.ts +73 -0
  20. package/dist/json-stream.js +222 -0
  21. package/dist/json-stream.js.map +1 -0
  22. package/dist/langfunc.d.ts +20 -0
  23. package/dist/langfunc.js +28 -0
  24. package/dist/langfunc.js.map +1 -0
  25. package/dist/language-model.d.ts +78 -0
  26. package/dist/language-model.js +218 -0
  27. package/dist/language-model.js.map +1 -0
  28. package/dist/llms/anthropic.d.ts +30 -0
  29. package/dist/llms/anthropic.js +365 -0
  30. package/dist/llms/anthropic.js.map +1 -0
  31. package/dist/llms/gemini.d.ts +34 -0
  32. package/dist/llms/gemini.js +380 -0
  33. package/dist/llms/gemini.js.map +1 -0
  34. package/dist/llms/images.d.ts +10 -0
  35. package/dist/llms/images.js +43 -0
  36. package/dist/llms/images.js.map +1 -0
  37. package/dist/llms/index.d.ts +7 -0
  38. package/dist/llms/index.js +4 -0
  39. package/dist/llms/index.js.map +1 -0
  40. package/dist/llms/openai.d.ts +30 -0
  41. package/dist/llms/openai.js +398 -0
  42. package/dist/llms/openai.js.map +1 -0
  43. package/dist/llms/transport.d.ts +4 -0
  44. package/dist/llms/transport.js +90 -0
  45. package/dist/llms/transport.js.map +1 -0
  46. package/dist/mapping.d.ts +71 -0
  47. package/dist/mapping.js +190 -0
  48. package/dist/mapping.js.map +1 -0
  49. package/dist/message.d.ts +56 -0
  50. package/dist/message.js +86 -0
  51. package/dist/message.js.map +1 -0
  52. package/dist/python-preview.d.ts +24 -0
  53. package/dist/python-preview.js +368 -0
  54. package/dist/python-preview.js.map +1 -0
  55. package/dist/python-stream.d.ts +15 -0
  56. package/dist/python-stream.js +29 -0
  57. package/dist/python-stream.js.map +1 -0
  58. package/dist/python.d.ts +85 -0
  59. package/dist/python.js +728 -0
  60. package/dist/python.js.map +1 -0
  61. package/dist/query.d.ts +31 -0
  62. package/dist/query.js +151 -0
  63. package/dist/query.js.map +1 -0
  64. package/dist/retry.d.ts +12 -0
  65. package/dist/retry.js +56 -0
  66. package/dist/retry.js.map +1 -0
  67. package/dist/schema/zod.d.ts +4 -0
  68. package/dist/schema/zod.js +7 -0
  69. package/dist/schema/zod.js.map +1 -0
  70. package/dist/schema.d.ts +10 -0
  71. package/dist/schema.js +7 -0
  72. package/dist/schema.js.map +1 -0
  73. package/dist/template.d.ts +14 -0
  74. package/dist/template.js +75 -0
  75. package/dist/template.js.map +1 -0
  76. package/dist/testing/index.d.ts +33 -0
  77. package/dist/testing/index.js +56 -0
  78. package/dist/testing/index.js.map +1 -0
  79. package/dist/tool-call.d.ts +27 -0
  80. package/dist/tool-call.js +16 -0
  81. package/dist/tool-call.js.map +1 -0
  82. package/dist/tools.d.ts +43 -0
  83. package/dist/tools.js +155 -0
  84. package/dist/tools.js.map +1 -0
  85. package/docs/ANTHROPIC.md +43 -0
  86. package/docs/API_DESIGN.md +200 -0
  87. package/docs/GEMINI.md +68 -0
  88. package/docs/IMPLEMENTATION_STATUS.md +77 -0
  89. package/docs/LIVE_TESTING.md +24 -0
  90. package/docs/MAPPING.md +54 -0
  91. package/docs/OPENAI.md +40 -0
  92. package/docs/PORTING_PLAN.md +135 -0
  93. package/docs/PROMPT_PARITY.md +379 -0
  94. package/docs/PYTHON_PROTOCOL.md +109 -0
  95. package/docs/PYTHON_PROTOCOL_PARITY.md +964 -0
  96. package/docs/PYTHON_SCHEMA_EVALUATION.md +93 -0
  97. package/docs/PYTHON_STREAMING_PARITY.md +59 -0
  98. package/docs/RELEASING.md +25 -0
  99. package/docs/RETRIES_AND_CACHE.md +56 -0
  100. package/docs/SESSION_EVENTS.md +40 -0
  101. package/docs/SOURCE_AUDIT.md +133 -0
  102. package/docs/STREAMING.md +76 -0
  103. package/docs/TOOL_STREAMING.md +31 -0
  104. package/package.json +95 -0
@@ -0,0 +1,964 @@
1
+ # Python-protocol parity
2
+
3
+ Captured Python commit: `504233a5c4a10e45684530ff58d7e2bd9d8ae58e` (clean); Python 3.14.0.
4
+
5
+ The capture executes default Python lf.query with fake model responses and independently checks LfQuery.render/parse_result. The JS check uses the same responses with equivalent explicitly registered classes. No inference or credentials are used.
6
+
7
+ | Case | Parsed values/class identity | Roles + request | Exact full prompt |
8
+ | --- | --- | --- | --- |
9
+ | integer | PASS | PASS | PASS |
10
+ | class | PASS | PASS | PASS |
11
+ | union-foo | PASS | PASS | PASS |
12
+ | union-bar | PASS | PASS | PASS |
13
+ | nested | PASS | PASS | PASS |
14
+ | few-shot | PASS | PASS | PASS |
15
+ | nullable-list | PASS | PASS | PASS |
16
+ | nested-few-shot | PASS | PASS | PASS |
17
+ | few-shot-system | PASS | PASS | PASS |
18
+
19
+ ## Scope and remaining limits
20
+
21
+ - For these captured cases, JS matches Python python:2.0 labels, built-in demonstration, schema declarations, dependency ordering, fences, few-shot formatting, and whitespace exactly.
22
+ - The check asserts complete role/text arrays with no normalization or substitutions. A whitespace mutation is checked to fail equality. Parsed results, class identity, and wrapper behavior are checked independently.
23
+ - This Python checkout rejects bare top-level union annotations in Schema.from_value. Union cases use the equivalent explicit PyGlove ValueSpec, recorded as schemaAdaptation in the fixture. This corrects the earlier assumption that a bare Foo | Bar works on every Python prompt-query path.
24
+ - JS requires explicit pure factories and supports only a bounded data grammar. This comparison does not establish parity for defaults, inheritance, tuples, recursive classes, arbitrary Python code, errors, streaming, or live model quality.
25
+
26
+ ## Captures
27
+
28
+ ### integer
29
+
30
+ Response: `42`
31
+
32
+ **Python**
33
+
34
+ ````text
35
+ [system]
36
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
37
+
38
+ OUTPUT PYTHON TYPE:
39
+ Answer
40
+
41
+ ```python
42
+ class Answer:
43
+ final_answer: int
44
+ ```
45
+
46
+ REQUEST:
47
+ 1 + 1 =
48
+
49
+ OUTPUT PYTHON OBJECT:
50
+ ```python
51
+ output = Answer(
52
+ final_answer=2
53
+ )
54
+ ```
55
+
56
+ OUTPUT PYTHON TYPE:
57
+ int
58
+
59
+ [user]
60
+ REQUEST:
61
+ Return the requested value.
62
+
63
+ OUTPUT PYTHON OBJECT:
64
+
65
+ ````
66
+
67
+ **TypeScript**
68
+
69
+ ````text
70
+ [system]
71
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
72
+
73
+ OUTPUT PYTHON TYPE:
74
+ Answer
75
+
76
+ ```python
77
+ class Answer:
78
+ final_answer: int
79
+ ```
80
+
81
+ REQUEST:
82
+ 1 + 1 =
83
+
84
+ OUTPUT PYTHON OBJECT:
85
+ ```python
86
+ output = Answer(
87
+ final_answer=2
88
+ )
89
+ ```
90
+
91
+ OUTPUT PYTHON TYPE:
92
+ int
93
+
94
+ [user]
95
+ REQUEST:
96
+ Return the requested value.
97
+
98
+ OUTPUT PYTHON OBJECT:
99
+
100
+ ````
101
+
102
+ ### class
103
+
104
+ Response: `Foo(text="hello")`
105
+
106
+ **Python**
107
+
108
+ ````text
109
+ [system]
110
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
111
+
112
+ OUTPUT PYTHON TYPE:
113
+ Answer
114
+
115
+ ```python
116
+ class Answer:
117
+ final_answer: int
118
+ ```
119
+
120
+ REQUEST:
121
+ 1 + 1 =
122
+
123
+ OUTPUT PYTHON OBJECT:
124
+ ```python
125
+ output = Answer(
126
+ final_answer=2
127
+ )
128
+ ```
129
+
130
+ OUTPUT PYTHON TYPE:
131
+ Foo
132
+
133
+ ```python
134
+ class Foo:
135
+ text: str
136
+ ```
137
+
138
+ [user]
139
+ REQUEST:
140
+ Return the requested value.
141
+
142
+ OUTPUT PYTHON OBJECT:
143
+
144
+ ````
145
+
146
+ **TypeScript**
147
+
148
+ ````text
149
+ [system]
150
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
151
+
152
+ OUTPUT PYTHON TYPE:
153
+ Answer
154
+
155
+ ```python
156
+ class Answer:
157
+ final_answer: int
158
+ ```
159
+
160
+ REQUEST:
161
+ 1 + 1 =
162
+
163
+ OUTPUT PYTHON OBJECT:
164
+ ```python
165
+ output = Answer(
166
+ final_answer=2
167
+ )
168
+ ```
169
+
170
+ OUTPUT PYTHON TYPE:
171
+ Foo
172
+
173
+ ```python
174
+ class Foo:
175
+ text: str
176
+ ```
177
+
178
+ [user]
179
+ REQUEST:
180
+ Return the requested value.
181
+
182
+ OUTPUT PYTHON OBJECT:
183
+
184
+ ````
185
+
186
+ ### union-foo
187
+
188
+ Response: `Foo(text="hello")`
189
+
190
+ **Python**
191
+
192
+ ````text
193
+ [system]
194
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
195
+
196
+ OUTPUT PYTHON TYPE:
197
+ Answer
198
+
199
+ ```python
200
+ class Answer:
201
+ final_answer: int
202
+ ```
203
+
204
+ REQUEST:
205
+ 1 + 1 =
206
+
207
+ OUTPUT PYTHON OBJECT:
208
+ ```python
209
+ output = Answer(
210
+ final_answer=2
211
+ )
212
+ ```
213
+
214
+ OUTPUT PYTHON TYPE:
215
+ Union[Foo, Bar]
216
+
217
+ ```python
218
+ class Foo:
219
+ text: str
220
+
221
+ class Bar:
222
+ count: int
223
+ ```
224
+
225
+ [user]
226
+ REQUEST:
227
+ Return the requested value.
228
+
229
+ OUTPUT PYTHON OBJECT:
230
+
231
+ ````
232
+
233
+ **TypeScript**
234
+
235
+ ````text
236
+ [system]
237
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
238
+
239
+ OUTPUT PYTHON TYPE:
240
+ Answer
241
+
242
+ ```python
243
+ class Answer:
244
+ final_answer: int
245
+ ```
246
+
247
+ REQUEST:
248
+ 1 + 1 =
249
+
250
+ OUTPUT PYTHON OBJECT:
251
+ ```python
252
+ output = Answer(
253
+ final_answer=2
254
+ )
255
+ ```
256
+
257
+ OUTPUT PYTHON TYPE:
258
+ Union[Foo, Bar]
259
+
260
+ ```python
261
+ class Foo:
262
+ text: str
263
+
264
+ class Bar:
265
+ count: int
266
+ ```
267
+
268
+ [user]
269
+ REQUEST:
270
+ Return the requested value.
271
+
272
+ OUTPUT PYTHON OBJECT:
273
+
274
+ ````
275
+
276
+ ### union-bar
277
+
278
+ Response: `output = Bar(count=7)`
279
+
280
+ **Python**
281
+
282
+ ````text
283
+ [system]
284
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
285
+
286
+ OUTPUT PYTHON TYPE:
287
+ Answer
288
+
289
+ ```python
290
+ class Answer:
291
+ final_answer: int
292
+ ```
293
+
294
+ REQUEST:
295
+ 1 + 1 =
296
+
297
+ OUTPUT PYTHON OBJECT:
298
+ ```python
299
+ output = Answer(
300
+ final_answer=2
301
+ )
302
+ ```
303
+
304
+ OUTPUT PYTHON TYPE:
305
+ Union[Foo, Bar]
306
+
307
+ ```python
308
+ class Foo:
309
+ text: str
310
+
311
+ class Bar:
312
+ count: int
313
+ ```
314
+
315
+ [user]
316
+ REQUEST:
317
+ Return the requested value.
318
+
319
+ OUTPUT PYTHON OBJECT:
320
+
321
+ ````
322
+
323
+ **TypeScript**
324
+
325
+ ````text
326
+ [system]
327
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
328
+
329
+ OUTPUT PYTHON TYPE:
330
+ Answer
331
+
332
+ ```python
333
+ class Answer:
334
+ final_answer: int
335
+ ```
336
+
337
+ REQUEST:
338
+ 1 + 1 =
339
+
340
+ OUTPUT PYTHON OBJECT:
341
+ ```python
342
+ output = Answer(
343
+ final_answer=2
344
+ )
345
+ ```
346
+
347
+ OUTPUT PYTHON TYPE:
348
+ Union[Foo, Bar]
349
+
350
+ ```python
351
+ class Foo:
352
+ text: str
353
+
354
+ class Bar:
355
+ count: int
356
+ ```
357
+
358
+ [user]
359
+ REQUEST:
360
+ Return the requested value.
361
+
362
+ OUTPUT PYTHON OBJECT:
363
+
364
+ ````
365
+
366
+ ### nested
367
+
368
+ Response: `Group(items=[Foo(text="hi"), Bar(count=2)])`
369
+
370
+ **Python**
371
+
372
+ ````text
373
+ [system]
374
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
375
+
376
+ OUTPUT PYTHON TYPE:
377
+ Answer
378
+
379
+ ```python
380
+ class Answer:
381
+ final_answer: int
382
+ ```
383
+
384
+ REQUEST:
385
+ 1 + 1 =
386
+
387
+ OUTPUT PYTHON OBJECT:
388
+ ```python
389
+ output = Answer(
390
+ final_answer=2
391
+ )
392
+ ```
393
+
394
+ OUTPUT PYTHON TYPE:
395
+ Group
396
+
397
+ ```python
398
+ class Foo:
399
+ text: str
400
+
401
+ class Bar:
402
+ count: int
403
+
404
+ class Group:
405
+ items: list[Union[Foo, Bar]]
406
+ ```
407
+
408
+ [user]
409
+ REQUEST:
410
+ Return the requested value.
411
+
412
+ OUTPUT PYTHON OBJECT:
413
+
414
+ ````
415
+
416
+ **TypeScript**
417
+
418
+ ````text
419
+ [system]
420
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
421
+
422
+ OUTPUT PYTHON TYPE:
423
+ Answer
424
+
425
+ ```python
426
+ class Answer:
427
+ final_answer: int
428
+ ```
429
+
430
+ REQUEST:
431
+ 1 + 1 =
432
+
433
+ OUTPUT PYTHON OBJECT:
434
+ ```python
435
+ output = Answer(
436
+ final_answer=2
437
+ )
438
+ ```
439
+
440
+ OUTPUT PYTHON TYPE:
441
+ Group
442
+
443
+ ```python
444
+ class Foo:
445
+ text: str
446
+
447
+ class Bar:
448
+ count: int
449
+
450
+ class Group:
451
+ items: list[Union[Foo, Bar]]
452
+ ```
453
+
454
+ [user]
455
+ REQUEST:
456
+ Return the requested value.
457
+
458
+ OUTPUT PYTHON OBJECT:
459
+
460
+ ````
461
+
462
+ ### few-shot
463
+
464
+ Response: `Bar(count=7)`
465
+
466
+ **Python**
467
+
468
+ ````text
469
+ [system]
470
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
471
+
472
+ OUTPUT PYTHON TYPE:
473
+ Answer
474
+
475
+ ```python
476
+ class Answer:
477
+ final_answer: int
478
+ ```
479
+
480
+ REQUEST:
481
+ 1 + 1 =
482
+
483
+ OUTPUT PYTHON OBJECT:
484
+ ```python
485
+ output = Answer(
486
+ final_answer=2
487
+ )
488
+ ```
489
+
490
+ OUTPUT PYTHON TYPE:
491
+ Union[Foo, Bar]
492
+
493
+ ```python
494
+ class Foo:
495
+ text: str
496
+
497
+ class Bar:
498
+ count: int
499
+ ```
500
+
501
+ REQUEST:
502
+ Say hello.
503
+
504
+ OUTPUT PYTHON OBJECT:
505
+ ```python
506
+ output = Foo(
507
+ text='hello'
508
+ )
509
+ ```
510
+
511
+ OUTPUT PYTHON TYPE:
512
+ Union[Foo, Bar]
513
+
514
+ ```python
515
+ class Foo:
516
+ text: str
517
+
518
+ class Bar:
519
+ count: int
520
+ ```
521
+
522
+ [user]
523
+ REQUEST:
524
+ Return the requested value.
525
+
526
+ OUTPUT PYTHON OBJECT:
527
+
528
+ ````
529
+
530
+ **TypeScript**
531
+
532
+ ````text
533
+ [system]
534
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
535
+
536
+ OUTPUT PYTHON TYPE:
537
+ Answer
538
+
539
+ ```python
540
+ class Answer:
541
+ final_answer: int
542
+ ```
543
+
544
+ REQUEST:
545
+ 1 + 1 =
546
+
547
+ OUTPUT PYTHON OBJECT:
548
+ ```python
549
+ output = Answer(
550
+ final_answer=2
551
+ )
552
+ ```
553
+
554
+ OUTPUT PYTHON TYPE:
555
+ Union[Foo, Bar]
556
+
557
+ ```python
558
+ class Foo:
559
+ text: str
560
+
561
+ class Bar:
562
+ count: int
563
+ ```
564
+
565
+ REQUEST:
566
+ Say hello.
567
+
568
+ OUTPUT PYTHON OBJECT:
569
+ ```python
570
+ output = Foo(
571
+ text='hello'
572
+ )
573
+ ```
574
+
575
+ OUTPUT PYTHON TYPE:
576
+ Union[Foo, Bar]
577
+
578
+ ```python
579
+ class Foo:
580
+ text: str
581
+
582
+ class Bar:
583
+ count: int
584
+ ```
585
+
586
+ [user]
587
+ REQUEST:
588
+ Return the requested value.
589
+
590
+ OUTPUT PYTHON OBJECT:
591
+
592
+ ````
593
+
594
+ ### nullable-list
595
+
596
+ Response: `[Foo(text="hello"), None]`
597
+
598
+ **Python**
599
+
600
+ ````text
601
+ [system]
602
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
603
+
604
+ OUTPUT PYTHON TYPE:
605
+ Answer
606
+
607
+ ```python
608
+ class Answer:
609
+ final_answer: int
610
+ ```
611
+
612
+ REQUEST:
613
+ 1 + 1 =
614
+
615
+ OUTPUT PYTHON OBJECT:
616
+ ```python
617
+ output = Answer(
618
+ final_answer=2
619
+ )
620
+ ```
621
+
622
+ OUTPUT PYTHON TYPE:
623
+ list[Foo | None]
624
+
625
+ ```python
626
+ class Foo:
627
+ text: str
628
+ ```
629
+
630
+ [user]
631
+ REQUEST:
632
+ Return the requested value.
633
+
634
+ OUTPUT PYTHON OBJECT:
635
+
636
+ ````
637
+
638
+ **TypeScript**
639
+
640
+ ````text
641
+ [system]
642
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
643
+
644
+ OUTPUT PYTHON TYPE:
645
+ Answer
646
+
647
+ ```python
648
+ class Answer:
649
+ final_answer: int
650
+ ```
651
+
652
+ REQUEST:
653
+ 1 + 1 =
654
+
655
+ OUTPUT PYTHON OBJECT:
656
+ ```python
657
+ output = Answer(
658
+ final_answer=2
659
+ )
660
+ ```
661
+
662
+ OUTPUT PYTHON TYPE:
663
+ list[Foo | None]
664
+
665
+ ```python
666
+ class Foo:
667
+ text: str
668
+ ```
669
+
670
+ [user]
671
+ REQUEST:
672
+ Return the requested value.
673
+
674
+ OUTPUT PYTHON OBJECT:
675
+
676
+ ````
677
+
678
+ ### nested-few-shot
679
+
680
+ Response: `Group(items=[Bar(count=2)])`
681
+
682
+ **Python**
683
+
684
+ ````text
685
+ [system]
686
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
687
+
688
+ OUTPUT PYTHON TYPE:
689
+ Answer
690
+
691
+ ```python
692
+ class Answer:
693
+ final_answer: int
694
+ ```
695
+
696
+ REQUEST:
697
+ 1 + 1 =
698
+
699
+ OUTPUT PYTHON OBJECT:
700
+ ```python
701
+ output = Answer(
702
+ final_answer=2
703
+ )
704
+ ```
705
+
706
+ OUTPUT PYTHON TYPE:
707
+ Group
708
+
709
+ ```python
710
+ class Foo:
711
+ text: str
712
+
713
+ class Bar:
714
+ count: int
715
+
716
+ class Group:
717
+ items: list[Union[Foo, Bar]]
718
+ ```
719
+
720
+ REQUEST:
721
+ A group.
722
+
723
+ OUTPUT PYTHON OBJECT:
724
+ ```python
725
+ output = Group(
726
+ items=[Foo(
727
+ text='hi'
728
+ ), Bar(
729
+ count=2
730
+ )]
731
+ )
732
+ ```
733
+
734
+ OUTPUT PYTHON TYPE:
735
+ Group
736
+
737
+ ```python
738
+ class Foo:
739
+ text: str
740
+
741
+ class Bar:
742
+ count: int
743
+
744
+ class Group:
745
+ items: list[Union[Foo, Bar]]
746
+ ```
747
+
748
+ [user]
749
+ REQUEST:
750
+ Return the requested value.
751
+
752
+ OUTPUT PYTHON OBJECT:
753
+
754
+ ````
755
+
756
+ **TypeScript**
757
+
758
+ ````text
759
+ [system]
760
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
761
+
762
+ OUTPUT PYTHON TYPE:
763
+ Answer
764
+
765
+ ```python
766
+ class Answer:
767
+ final_answer: int
768
+ ```
769
+
770
+ REQUEST:
771
+ 1 + 1 =
772
+
773
+ OUTPUT PYTHON OBJECT:
774
+ ```python
775
+ output = Answer(
776
+ final_answer=2
777
+ )
778
+ ```
779
+
780
+ OUTPUT PYTHON TYPE:
781
+ Group
782
+
783
+ ```python
784
+ class Foo:
785
+ text: str
786
+
787
+ class Bar:
788
+ count: int
789
+
790
+ class Group:
791
+ items: list[Union[Foo, Bar]]
792
+ ```
793
+
794
+ REQUEST:
795
+ A group.
796
+
797
+ OUTPUT PYTHON OBJECT:
798
+ ```python
799
+ output = Group(
800
+ items=[Foo(
801
+ text='hi'
802
+ ), Bar(
803
+ count=2
804
+ )]
805
+ )
806
+ ```
807
+
808
+ OUTPUT PYTHON TYPE:
809
+ Group
810
+
811
+ ```python
812
+ class Foo:
813
+ text: str
814
+
815
+ class Bar:
816
+ count: int
817
+
818
+ class Group:
819
+ items: list[Union[Foo, Bar]]
820
+ ```
821
+
822
+ [user]
823
+ REQUEST:
824
+ Return the requested value.
825
+
826
+ OUTPUT PYTHON OBJECT:
827
+
828
+ ````
829
+
830
+ ### few-shot-system
831
+
832
+ Response: `Foo(text="done")`
833
+
834
+ **Python**
835
+
836
+ ````text
837
+ [system]
838
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
839
+
840
+ OUTPUT PYTHON TYPE:
841
+ Answer
842
+
843
+ ```python
844
+ class Answer:
845
+ final_answer: int
846
+ ```
847
+
848
+ REQUEST:
849
+ 1 + 1 =
850
+
851
+ OUTPUT PYTHON OBJECT:
852
+ ```python
853
+ output = Answer(
854
+ final_answer=2
855
+ )
856
+ ```
857
+
858
+ OUTPUT PYTHON TYPE:
859
+ Union[Foo, Bar]
860
+
861
+ ```python
862
+ class Foo:
863
+ text: str
864
+
865
+ class Bar:
866
+ count: int
867
+ ```
868
+
869
+ REQUEST:
870
+ Say hello.
871
+
872
+ OUTPUT PYTHON OBJECT:
873
+ ```python
874
+ output = Foo(
875
+ text='hello'
876
+ )
877
+ ```
878
+
879
+ OUTPUT PYTHON TYPE:
880
+ Union[Foo, Bar]
881
+
882
+ ```python
883
+ class Foo:
884
+ text: str
885
+
886
+ class Bar:
887
+ count: int
888
+ ```
889
+
890
+ Be concise.
891
+
892
+ [user]
893
+ REQUEST:
894
+ Return the requested value.
895
+
896
+ OUTPUT PYTHON OBJECT:
897
+
898
+ ````
899
+
900
+ **TypeScript**
901
+
902
+ ````text
903
+ [system]
904
+ Please respond to the last REQUEST with OUTPUT PYTHON OBJECT only according to OUTPUT PYTHON TYPE.
905
+
906
+ OUTPUT PYTHON TYPE:
907
+ Answer
908
+
909
+ ```python
910
+ class Answer:
911
+ final_answer: int
912
+ ```
913
+
914
+ REQUEST:
915
+ 1 + 1 =
916
+
917
+ OUTPUT PYTHON OBJECT:
918
+ ```python
919
+ output = Answer(
920
+ final_answer=2
921
+ )
922
+ ```
923
+
924
+ OUTPUT PYTHON TYPE:
925
+ Union[Foo, Bar]
926
+
927
+ ```python
928
+ class Foo:
929
+ text: str
930
+
931
+ class Bar:
932
+ count: int
933
+ ```
934
+
935
+ REQUEST:
936
+ Say hello.
937
+
938
+ OUTPUT PYTHON OBJECT:
939
+ ```python
940
+ output = Foo(
941
+ text='hello'
942
+ )
943
+ ```
944
+
945
+ OUTPUT PYTHON TYPE:
946
+ Union[Foo, Bar]
947
+
948
+ ```python
949
+ class Foo:
950
+ text: str
951
+
952
+ class Bar:
953
+ count: int
954
+ ```
955
+
956
+ Be concise.
957
+
958
+ [user]
959
+ REQUEST:
960
+ Return the requested value.
961
+
962
+ OUTPUT PYTHON OBJECT:
963
+
964
+ ````