ó
    nëh  ã                   ó
  • S r SSKJr   " S S5      r\S:X  ak  \" S5        \" 5       r\R                  5         \" S\" \R                  5       35        \" S5        \" S	5        \" S
5        \" S5        \" S5        \" S5        gg)z1
Few-Shot Learner - Learn from just 1-5 examples
é    )Údefaultdictc                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	ÚFewShotLearneré   c                 ó:   • [        [        5      U l        0 U l        g ©N)r   ÚlistÚlearned_patternsÚtask_templates)Úselfs    ÚE/home/james-whalen/eden-agi-project/core/autonomy/few_shot_learner.pyÚ__init__ÚFewShotLearner.__init__   s   € Ü +¬DÓ 1ˆÔØ ˆÕó    c                 óÂ   • [        U5      S:  a  SSS.$ U R                  U5      nU R                  U   R                  U[        U5      US.5        SU[        U5      SS.$ )z"Learn a new task from few examplesé   FzNeed at least 1 example©ÚsuccessÚerror)ÚpatternÚexamples_countÚexamplesT)r   Ú	task_typeÚexamples_usedÚpattern_learned)ÚlenÚextract_patternr
   Úappend)r   r   r   r   s       r   Úlearn_from_examplesÚ"FewShotLearner.learn_from_examples   su   € äˆx‹=˜1ÓØ$Ð/HÑIÐIð ×&Ñ& xÓ0ˆð 	×Ñ˜iÑ(×/Ñ/ØÜ! (›mØ ñ1
ô 	ð Ø"Ü  ›]Ø#ñ	
ð 	
r   c                 óä  • U(       d  0 $ [        US   R                  S5      5      R                  [        US   R                  S5      5      R                  SS.n[        S U 5       5      (       aá   U Vs/ s H  o3S   PM	     nnU Vs/ s H  o3S   PM	     nn[        S [	        XE5       5       5      (       a–  [	        XE5       VVs/ s H	  u  pgXv-
  PM     nnn[        [        U5      5      S:X  a  S	US
'   US   US'   U$ [	        XE5       VVs/ s H  u  pgUS:w  a  Xv-  OSPM     n	nn[        [        U	5      5      S:X  a  SUS
'   U	S   US'   U$ U$ s  snf s  snf s  snnf s  snnf !    U$ = f)z(Extract underlying pattern from examplesr   ÚinputÚoutputÚlearned)Ú
input_typeÚoutput_typeÚtransformationc              3   óD   #   • U  H  nS U;   =(       a    SU;   v •  M     g7f)r"   r#   N© )Ú.0Úexs     r   Ú	<genexpr>Ú1FewShotLearner.extract_pattern.<locals>.<genexpr>.   s    é € ÐCº(°Bˆw˜"‰}×/ ¨R¡Ô/º(ùs   ‚ c              3   óŒ   #   • U  H:  u  p[        U[        [        45      =(       a    [        U[        [        45      v •  M<     g 7fr   )Ú
isinstanceÚintÚfloat)r*   ÚiÚos      r   r,   r-   4   s4   é € ÐtÒ_sÑW[ÐWX”z !¤c¬5 \Ó2×R´zÀ!ÄcÌ5À\Ó7RÔRÒ_sùs   ‚AAr   ÚaddÚ	operationÚvalueÚmultiply)ÚtypeÚgetÚ__name__ÚallÚzipr   Úset)
r   r   r   r+   ÚinputsÚoutputsr2   r3   ÚdiffsÚratioss
             r   r   ÚFewShotLearner.extract_pattern!   s{  € æØˆIô ˜x¨™{Ÿ™¨wÓ7Ó8×AÑAÜ ¨¡§¡°Ó 9Ó:×CÑCØ'ñ
ˆô ÑC¹(ÓC×CÑCðÙ08Ó9²¨"˜Wœ+±Ð9Ù2:Ó;²(¨B˜hœ<±(Ð;äÑtÔ_bÐciÔ_sÓt×tÑtä/2°6Ô/CÔDÒ/C¡t q˜QœUÑ/CEÑDÜœ3˜u›:“¨!Ó+Ø/4˜ Ñ,Ø+0°©8˜ Ñ(ð ˆô FIÈÔEYÔ!ZÒEY¹T¸Q¨1°«6 !¢%°qÒ"8ÑEY˜Ñ!ZÜœs 6›{Ó+¨qÓ0Ø3=˜G KÑ0Ø/5°a©y˜G GÑ,ð ˆˆwˆùò# :ùÚ;ùó Eùó
 "[øðØàˆúsH   Á2E* Á6EÂE* Â
EÂ0E* ÃEÃ(E* ÄE* ÄE$Ä((E* ÅE* Å*E/c                 óð   • XR                   ;  a  SSS.$ U R                   U   S   nUS   nSU;   a%  US   S:X  a  X$S   -   nOUS   S	:X  a  X$S   -  nO	S
nOSU S3nSUUUS   [        US   S-  S5      S.$ )z"Apply learned pattern to new inputFz%No pattern learned for this task typer   éÿÿÿÿr   r5   r4   r6   r7   Nztransformed(Ú)Tr   é   g      ð?)r   r"   r#   Úlearned_fromÚ
confidence)r
   Úmin)r   r   Ú	new_inputÚpattern_datar   Úresults         r   Úapply_learned_patternÚ$FewShotLearner.apply_learned_patternD   sÅ   € à×1Ñ1Ó1à Ø@ñð ð ×,Ñ,¨YÑ7¸Ñ;ˆØ˜yÑ)ˆð ˜'Ó!Ø{Ñ# uÓ,Ø"¨WÑ%5Ñ5‘Ø˜Ñ%¨Ó3Ø"¨WÑ%5Ñ5‘à‘ð $ I ;¨aÐ0ˆFð ØØØ(Ð)9Ñ:Ü˜lÐ+;Ñ<¸qÑ@À#ÓFñ
ð 	
r   c                 óX  • [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        SSS	.S
SS	./nU R                  SU5      n[        SUS    S35        [        S5        U R                  SS5      n[        SUS    35        [        SUS   S 35        [        S5        [        S5        SSS	./nU R                  SU5        [        S5        U R                  SS5      n[        SUS    35        [        SUS   S S35        [        S5        g)z(Demonstrate few-shot learning capabilityzG
======================================================================u$   ðŸŽ¯ FEW-SHOT LEARNING DEMONSTRATIONzF======================================================================u   
ðŸ“š Learning from 2 examples:u      Example 1: 3 â†’ 6u      Example 2: 5 â†’ 10é   r   )r"   r#   rF   é
   Údoublingu      âœ… Pattern learned from r   z
 examples!u   
ðŸ”® Applying to new input: 7é   z   Prediction: r#   z   Confidence: rH   z.0%u   
ðŸ“š Learning from 1 example:u      Example: 10 â†’ 15é   Úadd_fiveu   
ðŸ”® Applying to new input: 20é   z (lower with 1 example)N)Úprintr   rM   )r   r   rL   s      r   Údemonstrate_few_shotÚ#FewShotLearner.demonstrate_few_shotd   sH  € äˆmÔÜÐ4Ô5ÜˆfŒô 	Ð0Ô1ÜÐ%Ô&ÜÐ&Ô'ð  1Ñ%Ø 2Ñ&ð
ˆð
 ×)Ñ)¨*°hÓ?ˆÜÐ,¨V°OÑ-DÐ,EÀZÐPÔQô 	Ð/Ô0Ø×+Ñ+¨J¸Ó:ˆÜ  xÑ 0Ð1Ð2Ô3Ü  |Ñ 4°SÐ9Ð:Ô;ô 	Ð/Ô0ÜÐ%Ô&à ¨BÑ/Ð0ˆØ× Ñ  ¨XÔ6äÐ0Ô1Ø×+Ñ+¨J¸Ó;ˆÜ  xÑ 0Ð1Ð2Ô3Ü  |Ñ 4°SÐ9Ð9PÐQÔRäˆmÕr   )r
   r   N)
r:   Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   rM   rX   Ú__static_attributes__r)   r   r   r   r      s   † ò!ò
ò,!òF
õ@%r   r   Ú__main__zFEW-SHOT LEARNER TESTu   
ðŸ“Š Patterns learned: u   
ðŸŽ¯ Eden can now:z   - Learn from 1-5 examplesz   - Extract patterns quicklyz   - Apply to new situationsz   - Adapt with minimal datau!   
âœ… FEW-SHOT LEARNER OPERATIONALN)
Ú__doc__Úcollectionsr   r   r:   rW   ÚlearnerrX   r   r
   r)   r   r   Ú<module>rb      sœ   ðñõ $÷Cñ CðJ ˆzÓÙ	Ð
!Ô"áÓ€Gð × Ñ Ô"á	Ð%¡c¨'×*BÑ*BÓ&CÐ%DÐ
EÔFá	Ð
 Ô!Ù	Ð
(Ô)Ù	Ð
)Ô*Ù	Ð
(Ô)Ù	Ð
(Ô)á	Ð
.Õ/ð! r   