
    uiL                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	 	 dZ
dZej                            ej                            e          d          Zej                            ej                            e          d          ZdZddd	d
ddddddZdedefdZdeddfdZdedefdZdedee         fdZdeeef         ddfdZdedededefdZd eeeef                  dededed!ee         deeeef                  fd"Zd#ed$eee	f         d%edeee	f         fd&Zd#ed%edefd'Zd( Z e!d)k    r$	  e              dS # e"$ r  e#d*           Y dS w xY wdS )+    N)ListDictAny11434   zconversatie.txtz	idei.jsonu9   Ce idei concrete, ne-repetate, poți adăuga mai departe?   2   Ti   gffffff?g?g?)num_ctxtemperaturetop_prepeat_penalty)rundepauzacontext_messages_limitstreamoptionsip_strreturnc                 4    d}t          j        ||           d uS )Nz[^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)rematch)r   patterns     CC:\Users\Administrator\Desktop\discutie modele ai prin ollama\v4.pyvalidare_ipr   0   s    lG8GV$$D00    messagec                     t          t          dd          5 }|                    | dz              d d d            d S # 1 swxY w Y   d S )Nautf-8encoding
)openLOG_FILEwrite)r   fs     r   write_to_logr'   4   s    	hg	.	.	.  !	$                                   s   >AAsc                 ~    |                                  } t          j        dd|                                           } | S )Nz\s+ )lowerr   substrip)r(   s    r   	norm_textr.   8   s3    			A
vsA$$&&AHr   textc                     t          j        d|           }g }|D ]9}t          |          }t          |          dk    r|                    |           :|S )u   
    Heuristic simplu: împarte pe punct/linie nouă/bullet și returnează fraze curate,
    ignorând linii foarte scurte (<5 caractere).
    u   [.\n•\-\u2022;]+r   )r   splitr.   lenappend)r/   chunksoutcts        r   extrage_fraze_ideir8   =   sY    
 X+T22F
C  aLLq66Q;;JJqMMMJr   registryc           	      p   	 t          t          dd          5 }t          j        t	          t          |                                                     |dd           d d d            n# 1 swxY w Y   t          dt                      d S # t          $ r}t          d|            Y d }~d S d }~ww xY w)	Nwr   r    F   )ensure_asciiindentu   Registru idei salvat în z Eroare la salvarea registrului: )	r#   REGISTRY_FILEjsondumpsortedlistkeysr'   	Exception)r9   r&   es      r   salveaza_registrurG   J   s   =-w777 	V1IfT(--//2233QUSTUUUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V@@@AAAAA = = =;;;<<<<<<<<<=s;   B AA*B *A..B 1A.2B 
B5B00B5subiectrol
max_tokensc                 r    d|  d| d}|dk    r|dz   S |dk    r|dz   S |dk    r|d	z   S |d
v r|dz   S |dz   S )Nu   Discuți despre: u   . Răspunde concis (max u   tokeni), clar, în română.
Reguli generale:
1) Evită repetițiile. 2) Adaugă cel puțin O IDEE NOUĂ față de lista 'Idei deja menționate'. 3) Listează ideile ca bullets scurte, concrete, testabile. 4) Fii specific (cifre, condiții, costuri, pași).	generatoruO   
Rol: GENERATOR – propune idei noi, combinații neobișnuite, dar plauzibile.criticuo   
Rol: CRITIC – semnalează riscuri/limitări și oferă o îmbunătățire alternativă pentru fiecare punct.	moderatorup   
Rol: MODERATOR – impune noutatea, rezumă scurt progresul, pune o întrebare-țintă pentru runda următoare.)synthsintetizatorsynthesizeruj   
Rol: SINTETIZATOR – combină cele mai bune idei, elimină redundanța, propune o mini-foaie de parcurs.u-   
Rol: GENERAL – adaugă idei utile și noi. )rH   rI   rJ   bazas       r   sistem_role_promptrT   T   s    	zG 	z 	zZ 	z 	z 	z 	 khhh
h  I  I  	I
k  J  J  	J
666  D  D  	DBBBr   conversatie	idei_dejac                     t          |||          }|r dd                    |dd                    z   nd}| dt           d}d|dg}|                    |            |                    d	|d           |S )
Nu%   Idei deja menționate până acum:
- z
- iu%   Nu există idei înregistrate încă.ue   
Asigură-te că fiecare punct nou este ne-repetat față de listă. După idei, încheie cu: 'NEXT: 'systemrolecontentuser)rT   joinINTREBARE_IMPLICITAextendr3   )	rU   rH   rI   rJ   rV   sistem
idei_blockinstructiunemessagess	            r   construieste_mesajere   f   s    j99F\e  S9FKK	RURVRV<X<XXX  lSJ 	B 	B+>	B 	B 	B  "f556HOOK   OOV==>>>Or   urlpayloadtimeoutc           	      |   d}|}d}d }|t           k     rx	 t          d|  d|                    d           d| d           t          d|  d|                    d           d| d           t	          |                    dd	                    }t          j        d
|  d|||          }|                                 |r|                                D ]}	|	st          j
        |	          }
d|
v rZd|
d         v rP|
d         d         }||z  }t          j                            |           t          j                                         |
                    dd          r&|
                    dd           }t                        n||dS |	                                }
d|
v rd|
d         v r|
d         d         }|
                    dd           }t          |           ||dS # t
          j        j        $ r4 d| d|  d}t          |           t          |           |dz  }|dz  }Y nPt
          j        j        $ r:}d|  d| }t          |           t          |           |dz  }|dz  }Y d }~nd }~ww xY w|t           k     xdt            d|  d}t          |           t          |           d d dS )Nr    u%   Încerc să trimit cerere la: http://z/api/chat cu modelul modelz (timeout: zs)r   Thttp://z	/api/chat)r@   rh   r   r   r\   doneF
eval_count)r/   tokensu   Timeout depășit (u
   s) către u   . Reîncerc...   r<   u   Eroare către : u   Maxim de încercări atins (u	   ) către z. Abort.)	MAX_RETRYprintgetr'   boolrequestspostraise_for_status
iter_linesr@   loadssysstdoutr%   flush
exceptionsReadTimeoutRequestException)rf   rg   rh   retrycurrent_timeoutraspuns_complettokens_eval
use_streamresplinechunktokenmsgrF   s                 r   api_chat_streamr   v   s   EOOK
)

%	-  I#  I  IT[T_T_`gThTh  I  I  vE  I  I  I  J  J  J  P  P  P[b[f[fgn[o[o  P  P  }L  P  P  P  Q  Q  Qgkk(D99::J=!93!9!9!9Q`istttD!!### H OO--  D !  Jt,,E E))i5;K.K.K %i 0 ;'50
((///
((***yy// &+iid&C&C !0;GGG 		%%)uY7G*G*G&+I&6y&AO#iid;;o&&& /;GGG". 	- 	- 	-VVV3VVVC#JJJS)))QJE1,"3 	- 	- 	--3--!--C#JJJS)))QJE1,	-G )

N K
J
JS
J
J
JC	#JJJS!!!D)))s&   E9G* AG* *AI>1I>0I99I>c                     	 t          j        d|  d|          }|j        dk    rdS t          d|  d|j                    dS # t           j        j        $ r }t          d	|  d
|            Y d}~dS d}~ww xY w)u7   Verifică dacă serverul Ollama răspunde pe /api/tags.rl   z	/api/tags)rh      TzServer u    răspunde cu cod FzNu se poate atinge rq   N)rv   rt   status_coder'   r~   r   )rf   rh   rrF   s       r   test_serverr      s    L131117CCC=C4EsEEamEEFFFu/   5355!55666uuuuus   %A A A9A44A9c                     t          t          dd          5 } |                     d           d d d            n# 1 swxY w Y   t          d                                          }t          d                                                                          pd}|dk    r	 t          d	t          d
          d                                          }|rt          |          nt          d
         }n;# t          $ r. t          dt          d
          d           t          d
         }Y nw xY w	 t          dt          d          d                                          }|rt          |          nt          d         }n;# t          $ r. t          dt          d          d           t          d         }Y nw xY w	 t          dt          d          d                                          }|rt          |          nt          d         }n;# t          $ r. t          dt          d          d           t          d         }Y nw xY wt          dt          d         rdnd d                                                                          }	|	dvrt          d         n|	dk    }
	 t          dt          d         d          d                                          }|rt          |          nt          d         d         }n## t          $ r t          d         d         }Y nw xY w	 t          dt          d         d          d                                          }|rt          |          nt          d         d         }n## t          $ r t          d         d         }Y nw xY w	 t          dt          d         d          d                                          }|rt          |          nt          d         d         }n## t          $ r t          d         d         }Y nw xY w	 t          d t          d         d!          d                                          }|rt          |          nt          d         d!         }n# t          $ r t          d         d!         }Y nw xY wt          d
         }t          d         }t          d         }t          d         }
t          d         d         }t          d         d         }t          d         d         }t          d         d!         }	 t          t          d"                    }n!# t          $ r t          d#           d$}Y nw xY w|d$k     rd$}g }t          |          D ]}t          d%|d&z    d'           |d(k    r	d)}d*}d+}d,}n|d&k    r	d-}d.}d+}d,}nd }d/}d0}d,}	 |rd2| dnd3}t          |                                          }|s|r|}t          |          rnt          d4           Qt          d5t           d                                          pt          }t          d6| d                                          }|s|n|}t          d7                                                                          pd8}	 t          d9| d          pt          |          } t          |           }!n# t          $ r |}!Y nw xY w	 t          d:| d          pt          |          }"t          |"          }#n# t          $ r |}#Y nw xY w|dk    r<	 t          d;| d<| d                                          }$|$rt          |$          n|}%n# t          $ r |}%Y nw xY w	 t          d=| d<| d                                          }&|&rt          |&          n|}'n# t          $ r |}'Y nw xY w	 t          d>| d<| d                                          }(|(rt          |(          n|})n# t          $ r |})Y nw xY w	 t          d?| d<| d                                          }*|*rt          |*          n|}+n# t          $ r |}+Y nw xY w|}%|}'|})|}+|                    | d@| |||!|#|%|'|)|+dAdB           g },i }-|D ]7}.t!          |.dC         |.dD                   st          dE|.dC          dF           8d(}/	 |/d&z  }/|d(k    r;|/|k    r5dG| d}0t          |0           t#          |0           t%          |-           d S t          dH|/ dI           t#          dH|/ dI           |D ]}.|.dJ         }|.dK         }1|.dD         }#|.dC         }2|.dL         }t'          |-                                          }3t+          |,          |k    r|,| d          n|,}4t-          |4|||1|3          }5||5|
|1|.d         d         |.d         d         |.d         d         |.d         d!         dMdN}6t/          |2|6|#          }7|7dO         }8|7dP         }9|86dQ|2 dR}:t          |:           t#          |:           t%          |-            d S t#          dS|                                 dT|2 dU|9 dV|8            t3          |8          };d(}<|;D ]}=|=|-vr
d1|-|=<   |<d&z  }<|,                    dW|8dX           |,                    dYt4          dX           t          dZ|<            t#          d[|<            t          d\                                                                          }>|>d]k    r	 t          d^| d                                          }?|?rt          |?          }n# t          $ r t          d_           Y nw xY w	 t          d`| d                                          }@|@rt          |@          }n# t          $ r t          da           Y nw xY wt          db|
rdnd d                                                                          }A|Adv r|Adk    }
t7          j        |           q)cNr;   r   r    u   == Conversație multi-AI ==
u   Introdu tema de discuție: z5Mod configurare [simplu/avansat] (implicit: simplu): simpluavansatu$   Număr runde (0 = infinit, implicit r   z): u   Valoare invalidă. Implicit z runde.u"   Pauză între runde sec (implicit r   z	 secunde.u!   Limită mesaje context (implicit r   .u%   Stream răspunsuri [da/nu] (implicit r   danu)r   r   zTemperature (implicit r   r   zTop_p (implicit r   zRepeat penalty (implicit r   znum_ctx (implicit r
   u/   Câte mașini (>=2) dorești să configurezi?: u&   Valoare invalidă. Implicit 2 mașini.r<   u   
-- Config mașină #rp   z --r   z100.76.154.75zqwen3-coder:480b-cloudi  x   z100.73.213.29zgpt-oss:120b-cloudzllama3:latestr   TzIP (default zIP (ex: 100.76.154.75): u   IP invalid, reîncearcă.zPort (gol pentru default zModel (default z>Rol [generator/critic/moderator/synth] (implicit: generator): rL   u    Limita tokeni răspuns (default u   Timeout inițial sec (default zTemperature pentru z (gol = zTop_p pentru zRepeat penalty pentru znum_ctx pentru :)r   r   r   r
   )rf   rk   rI   rJ   rh   r   rf   rh   zAvertisment: Serverul u.    nu răspunde la /api/tags. Continuăm oricum.u   Procesul s-a încheiat după z
===== RUNDA z =====rI   rJ   rk   )num_predictr   r   r   r
   )rk   rd   r   r   r/   ro   u   Nu s-a primit răspuns de la z	. Oprire.[z @ z :: tokens=z] 	assistantrZ   r]   u)   
[INFO] Idei noi adăugate în registru: u   [INFO] Idei noi adăugate: u9   
Enter pentru continuare, sau 'setari' pentru ajustări: setariu   Pauză sec (actual u5   Valoare pauză invalidă, păstrăm setarea curentă.u   Limită mesaje context (actual u"   Valoare limită context invalidă.zStream [da/nu] (actual )r#   r$   r%   inputr-   r+   GLOBAL_DEFAULTSint
ValueErrorrs   floatranger   PORT_DEFAULTstrr3   r   r'   rG   rC   rD   r2   re   r   upperr8   r_   timesleep)Br&   rH   modrunde_inputnumar_rundepauza_inputPAUZA_INTRE_RUNDE_SEC	ctx_inputCONTEXT_LIMIT
stream_rawSTREAM_MODEtemp_inTEMPtop_p_inTOP_Prp_inREPEAT_PENALTY
num_ctx_inNUM_CTXnumar_masinimasiniidx
ip_defaultmodel_defaultmax_tokens_defaulttimeout_default	ip_promptip_rawportmodel_inputrk   rI   max_tokens_inputrJ   timeout_inputrh   	temp_in_mtemp_m
top_p_in_mtop_p_mrp_in_mrp_mnum_ctx_in_m	num_ctx_mrU   r9   mrundarm   max_tokrf   	idei_listconv_trunchiatmesajerg   rezultatr/   ro   stopfrazeadaugatefrcmdpclsmsB                                                                     r   mainr      s4   	hg	.	.	. 1!	/0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 12288::G G
H
H
N
N
P
P
V
V
X
X
d\dC
i	| dW^G_ d d deekkmmK.9W#k***w?WKK 	| 	| 	|R1IRRRSSScrszc{U`U`U`	|	H b_U\E] b b bcciikkK8C$aC$4$4$4Y`Ia!! 	H 	H 	HT1ITTTUUUo~  @G  pHWlWlWl	H	Zp/RjBkpppqqwwyyI.7fC	NNN_Me=fMM 	Z 	Z 	Z]AY1Z]]]^^^p  AY  qZ`m`m`m	Z s?[cKdCn44jnsssttzz||  C  C  E  E
3=\3Q3Qoh//XbfjXj	=c_Y5OP]5^cccddjjllG%,[5>>>/)2L]2[DD 	= 	= 	="9-m<DDD	=	8X	0J70SXXXYY__aaH'/XE(OOO_Y5OPW5XEE 	8 	8 	8#I.w7EEE	8	Jgoi6PQa6bggghhnnppE-2dU5\\\	8RSc8dNN 	J 	J 	J,Y78HINNN	J	<^OI4Ny4Y^^^__eeggJ)3^c*ooo9ST]9^GG 	< 	< 	<%i0;GGG	< &g. / 8'(@A%h/y)-8	*73(34DE!),Y7J5!RSSTT J J J6777Ja#%F\"" R R1s1u111222!88(J4M!$!OOAXX(J0M!$!OO J+M!$!O	/:Dd6z6666JdI9%%++--F $j $#6"" -...	/ BBBBCCIIKK[|@m@@@AAGGII%0AkTUU[[]]cceetit	,$%_HZ%_%_%_``{dghzd{d{-..JJ 	, 	, 	,+JJJ	,	&!"W?"W"W"WXXp\_`o\p\pM-((GG 	& 	& 	&%GGG	& )!"P"P"Pt"P"P"PQQWWYY	-6@y)))D    "#L5#L#L%#L#L#LMMSSUU
/9D%
+++u       & [ [ [ [ [ [\\bbdd)0DuW~~~n & & &%&$$%Ru%R%Rg%R%R%RSSYY[[1=JC---7		 $ $ $#			$ FU7>Dw9%%t%%$% "&$	 
 
 	 	 	 	 )+K "H  e e1U8Qy\22 	ec1U8cccdddEO*
! 3 3G;GGGD$KKKd+++h'''E,u,,,---|<ZU<Z<Z<Z/[/[/[  1	C 1	CAE(CoG	lGE(CgJEX]]__--I=@=M=MP]=]=][-99cnN(#wPYZZF"%#*#$Y<#>y\'2&'	l3C&D |I6 	 G 'sGW==HF#Dh'F|EsEEEd\$///!(+++MSYY[[MMSMMVMMtMMNNN 't,,EH " "X%%#'HRLMH EEFFF;NOOPPPIxIIJJJAxAABBBB QRRXXZZ``bb(??OJ0EJJJKKQQSS 3,/FF) O O OMNNNNNO<O]OOOPPVVXX ,$'GGM < < <:;;;;;<S1N$SSSTTZZ\\bbddB\!!!Tz
()))_O*s4  :>>#AC2 25D*)D*.AE= =5F54F59AH 5I ?I !AK< <LL AM; ;NNAO: :PPAQ9 9RRT: :UU1[		[[1\\\(;]$$]32]37;^33__;```;aa a =6m4 4nn6o o'&o'__main__z
Oprire prin Ctrl+C.)$rv   r@   r   osr   r{   typingr   r   r   r   rr   pathr^   dirname__file__r$   r?   r_   r   r   ru   r   r'   r.   r8   rG   r   rT   re   r   r   r   __name__KeyboardInterruptrs   rR   r   r   <module>r      s5      				 				 



 " " " " " " " " " "  	7<<113DEERW__X66DDQ    	   1 1 1 1 1 1 #  $             
S T#Y    =S$Y =D = = = =C C# C3 C3 C C C C$T$sCx.%9 C c _b ostwox   ~B  CG  HK  MP  HP  CQ  ~R     .* .*tCH~ .* .*SRUX .* .* .* .*`
S 
3 
4 
 
 
 
u* u* u*n z' ' ' '%&&&&&&' s   
E E! E!