/mh?ddlZddlZddlZddlmZmZmZmZ eje dZ dZ dZ GddZ edk(re Zej!d d d d ej!d ddiej#dd dej#d d dej#d ddej%d ddiej'yy#gZ YxYw)N)Prompt ALCEDocPrompt DocPromptNewALCEVanillaPromptzres.jsonc|jdk(rtj|}d|_|j }t |t |k(s6dt |j vrdt |j vryd|_|j }t |t |k(s6dt |j vrdt |j vryy)NverifierToutputFr) model_typecopydeepcopy last_messagesendstrlower)moduletarget test_module true_targets //Users/shenjiajun/Desktop/2code/2code/parser.py weight_checkr s J&mmF+ #'  !&&( v;#k* *x3v;;L;L;N/NS[_bcn_o_u_u_wSw#(  !&&( v;#k* *x3v;;L;L;N/NS[_bcn_o_u_u_wSw c Lddl}|jt|dr,t|jdr|jjnd}|r0t |t r|d}|j|j|j}t|dk(rt|d}n|sd}nd}t|dr|jrdn|jrdnd}nd}t|d r*t|d r|jd k(rdn |j}nd}|j t#|d d|t#|d d|t|dr'|jr|jj%|nd|d}t'|i}|j)D] \}} | s | ||<|S)Nr prompt_maker componentsr zN/Az'Not Available for multiple destinations iterativeparallelif_add_output_to_headhead_keyF model_namemax_turn)typeModelModezMax Turn Destinationrz Global Prompt)r rhasattrrr isinstancetupleupdate self_promptget_destinationslenrrrrr r getattr make_promptprintitems) rr componets destinationmode global_promptparamsnon_empty_paramskvs r get_paramsr:s P^@_dklrllBNeOf11<<UYZI i '!! I++,))+K ;1+a.)  ? v{#$..{6??ZX\v./GFJ4O!'!=!=!FFOO  !!t4FJ5"@G~@^cicvcv&%%11)<}A&F &M $1 "# Q $ rceZdZddZdZdZdZddZdZe dZ dd Z d Z d Z d Zd ZdZdZddZdZefdZdZdZdZefdZy) PipelineGraphNc ||_iid|_i|_d|_|r?|j |t d|j Dcgc] }t|c}yycc}w)Ninputr rz FINDING ATTR:)pipelinenodesedges node_count load_pipeliner0rr)selfr@rs r__init__zPipelineGraph.__init__FsY  !R0      x ( /hoo#NFCK#N O #NsA" cJ|xjdz c_d|jS)u生成自动节点名。r Node)rCrEs rget_auto_node_namez PipelineGraph.get_auto_node_nameOs" 1doo&''rc<|j|jy)N)r@)rFr@rIs rr*zPipelineGraph.updateTs t}} -rcj|j}g}|s |j}|jt|t ||j dt|d|j ||j}|s|j t|ddy|D]G}t||}|j|||j t|t|dIt|d r7|jr*t|d}|j t|d|yyy) u#从现有Pipeline对象加载图。rnamer6r?r from_nodeto_nodeweightr N)processed_nodes output_cond) get_initial_modulellmadd_noderr:add_edgeappendr,r load_noder'rU)rEr@initial_modulerTsubnodessubnoderSs rrDzPipelineGraph.load_pipelineWs!446%\\N S0)@  B ^1DQ O~.!224 MMC$7RSM T  YG!.':F NN7ON D MMC$7WVWM X Y >- 0^5O5O!.(;F MMC$7RXM Y6P 0rc||vry|jt|t||j||j }|s|j t|ddy|D]F}|j ||t||}|j t|t||Ht|dr7|jr*t|d}|j t|ddyyy)NrMrNr rrPrU) rXrr:rZr,rYr[rr'rU)rErrTr]r^rSs rr[zPipelineGraph.load_nodeos _ $  S[)8  :v&**, MMCK!M L  VG NN7O 4!&'2F MMCKWfM U V 6- (V-?-?!&(3F MMCK!M L.@ (rc0|jjDcic]\}}||j}}}g}|jjD]2\}}|jD]\}}|j |||d4||dScc}}w)uB将图结构导出为字典格式,包含节点和边的信息。)fromtorSrArB)rAr1r rBrZ) rErOr6 nodes_export edges_exportrQ connectionsrRrSs rexportzPipelineGraph.exports@D @P@P@RS ffkkm+S S &*jj&6&6&8  "I{#.#4#4#6 ##%!$%  "!  TsBc|}i|_|djD]\}}|j|||dD]}|j|d|d|d |S)u1从字典数据创建新的PipelineGraph实例。rArBrarbrS)rAr1rXrY)clsdatagraphrOr6edges rimport_from_dictzPipelineGraph.import_from_dictsx  M//1 )LD& NN4 ( )M ED NN4<dT(^ D E rcF|i}|j|j|<y)u'添加或更新节点,参数可选。N)r rArErOr6s rrXzPipelineGraph.add_nodes >F!;;= 4rc^|dvr td||jvry|j|=||jvr |j|=t|jj D]A}||j|vs|j||=|j|r5|j|=Cy)uH删除节点,自动移除相关边。不能删除input/output节点。r>z(Cannot remove 'input' or 'output' nodes.N) ValueErrorrArBlistkeys)rErOrQs r remove_nodezPipelineGraph.remove_nodes & &GH H tzz !  JJt  4::  4 djjoo/0 .Itzz),,JJy)$/zz), 9-  .rc|dvr td||jvrtd|d||jvrtd|d||jvri|j|<||j||<y)u2添加或更新边,权重必须是0、-1或+1。>rr r zWeight must be 0, -1, or 1.Node '' does not exist.N)rqrAKeyErrorrB)rErQrRrSs rrYzPipelineGraph.add_edges  #:; ; DJJ &VI;.?@A A $** $VG9,=>? ? DJJ &$&DJJy !)/ 9g&rc||jvr@||j|vr.|j||=|j|s|j|=yyyy)u删除指定边。N)rB)rErQrRs r remove_edgezPipelineGraph.remove_edgesU  "w$**Y2G'G 9%g.::i(JJy))(H "rcHt|jjS)u返回所有节点名。)rrrArsrIs r get_nodeszPipelineGraph.get_nodessDJJOO%&&rcg}|jD];}|j|jD]\}}|j|||f=|S)u9返回所有边的列表,形式为(from, to, weight)。)rBr1rZ)rErBrQrRrSs r get_edgeszPipelineGraph.get_edgessY ;I#'::i#8#>#>#@ ; i&9: ; ; rc||jvrtd|d|j|j|jy)u更新节点的参数表。rvrwN)rArxr*r ros rupdate_node_paramsz PipelineGraph.update_node_paramss@ tzz !VD6):;< < 4 .rc |r$ ddl}|j dddi}|j D]}|j |}dj |jDcgc] \}}|d |c}}}|d vr!|j||r|d |d n|d ddn|j||r|d |d n|ddd|jjD]<\} } | jD]$\} } |j| | t| dd&>|jdddy|jy#t$rtd|jcYSwxYwcc}}w)u 可视化图结构: - 默认尝试用graphviz生成矢量图(需安装graphviz) - 若未安装graphviz,则用文本模式输出 rNuOGraphviz未安装,切换到文本模式。安装命令:pip install graphvizzPipeline GraphrankdirLR)comment graph_attrz, =r>z () doublecirclefilledz#e6f3ff)labelshapestyle fillcolorboxzrounded,filledz#f0f0f0z#666666z#ff5555)rcolor fontcolorpipeline_graphT)viewcleanup) graphviz ImportErrorr0_visualize_textDigraphrAjoinr1noderBrlrrender) rE use_graphvizrdot node_namer6r8r9 params_strrQrfrRrSs r visualizezPipelineGraph.visualizes  . ""+;TXHY"ZC"ZZ  I.!YYv||~'Ntq!1#Qqc 'NO  33HH!@J 3zl!u──(-)──>u───────>)r r rz)======================================== N)r0rAr1rrB) rErr6r8r9 param_descrQrfrRrSarrows rrzPipelineGraph._visualize_texts AB  ! JJ,,. 0LD&&,,."I$!QaS!:"IJJ CRy*. / 0 ozz ) **.***:*:*< ?& ;'2'8'8':?OGV-.3 E YrN!E7!G9=> ? ? m!#JsD c  t|tsJddl}|}|jt |} g}|j D]6}|j |}|j ||jd||d8g}|jjD]2\}} | jD]\} } |j || | d4|j|} |j|} t ddd5}|j}dddjd | jd | jd |jd d jdtt|D}|S#1swYuxYw)Nrr#idr#r6sourcerrSz*htmls/html_templates/pipeline_template.txtrutf-8encoding z c34K|]}d|d|dzdywzN.0is r z.PipelineGraph.generate_html..Ssa[fMN^mnomppyz{|}z}y~~G\H[f)r(rjsonloadopenrArZgetrBr1dumpsreadreplacerranger-rEresultsr result_path nodes_datarOr6 edges_datarQto_nodesrRrSnodes_jsedges_jsftemplates r generate_htmlzPipelineGraph.generate_html4s'3''' $))DM*J JJ DZZ%F    640    #'::#3#3#5  Ix#+>>#3 !!'%$#  4::j)4::j) >g V Z[vvxH ##K:BB;PXYaaboq|}FFGRTVT[T[[fRWX[\cXdRe[fTfg   s ?FF cg}|jD]6}|j|}|j||jd||d8tj|S)Nr#r)rArZrrr)rErrOr6s rr|zPipelineGraph.get_nodesWs` JJ DZZ%F    640   zz*%%rcg}|jjD]2\}}|jD]\}}|j|||d4tj|S)Nr)rBr1rZrr)rErrQrrRrSs rr~zPipelineGraph.get_edgesbso #'::#3#3#5  Ix#+>>#3 !!'%$#  zz*%%rcD|j|jdS)Nrc)r|r~rIs rget_jsonzPipelineGraph.get_jsonms ^^%^^%  rc t|tst|tsJddl}|}t|tr|jt |} g}|j D]6}|j |}|j||jd||d8g}|jjD]2\}} | jD]\} } |j|| | d4|j|} |j|} t ddd5}|j}dddjd | jd | jd |j|jd d jdtt!|D}|S#1swYxYw)Nrr#rrz.htmls/html_templates/pipeline_template_emb.txtrrrrrz rrc34K|]}d|d|dzdywrrrs rrz4PipelineGraph.generate_html_embed..saalSTdstusvv@ABC@CDDMbNalr)r(rrrrrrrArZrrBr1rrrrrr-rs rgenerate_html_embedz!PipelineGraph.generate_html_embedss'3':gt+DDD gs #diiW .GJ JJ DZZ%F    640    #'::#3#3#5  Ix#+>>#3 !!'%$#  4::j)4::j) BCRY Z ^_vvxH ##K:BB;PXYaabmoyosoyoy{BpCDLLMXZ\ZaZaalX]^abi^jXkalZlm   s F44F=)N)T)__name__ __module__ __qualname__rFrJr*rDr[rg classmethodrmrXrtrYrzr|r~rrrexample_resultsrrrrrrr<r<DsP( .Z0M&   ) .$ 0*'/ 9v6'6 F & & -<!rr<__main__ processor transformg?)r#rate validator thresholdg?r?r r r rg?)hashlibr rcitekit.prompt.promptrrrrrrrrr:r<rrkrXrYrrrrrrs VVdiiZ 01O  (TPPd  z OE NN;c BC NN;c 23 NN7K+ NN; R0 NN;!, [63-8 OO!] Os CC