decision-models-comparison / build_graph.py
hmb's picture
hmb HF Staff
Upload folder using huggingface_hub
e9040fd verified
Raw History Blame Contribute Delete
3.2 kB
import json
T=lambda i,l,t="text",**k:{"id":i,"label":l,"type":t,**k}
def ref(i,l,default):
return {"id":i,"role":"reference","label":l,"asset_type":"text","inputs":[T("in","Text")],"outputs":[T("out","Text")],"data":{"out":default}}
def space(i,l,sid,ins,res_idx,res_t,data=None):
return {"id":i,"role":"operator","kind":"space","space_id":sid,"endpoint":"/decide","label":l,"inputs":ins,
"outputs":[T("result","Result",res_t,output_index=res_idx)],"data":data or {}}
refs=[ref("prompt","Prompt","I was charged twice for my subscription this month and nobody answers my emails. Fix it today or I cancel."),
ref("question","Question + options","Which team should handle this request?\nbilling\ntechnical\nsales\nshipping")]
fmt={"id":"fmt","role":"operator","kind":"fn","fn":"format_question","label":"Format question","inputs":[T("in_question_block","Question + options",required=True)],
"outputs":[T("out_0","Questions JSON",output_index=0),T("out_1","Question",output_index=1),T("out_2","Options",output_index=2),T("out_3","Decider questions",output_index=3)],"data":{}}
S=lambda i,l,**k:T(i,l,required=True,**k)
spaces=[space("d3","vllm-sr/d3","vllm-sr/d3-decision-model",[S("state","State"),S("questions","Questions")],1,"json"),
space("clef","Cloudflare/clef","hugging-apps/clef-decision-model",[S("state","State"),S("questions","Questions")],1,"json"),
space("jev","autotrust/JEV-27B-VL","hugging-apps/jev-27b-vl",[S("state_text","State"),T("images","Images","json"),T("kind","Kind"),S("question","Question"),S("options_text","Options")],2,"text",{"images":[],"kind":"choice"}),
space("decider","Mapika/decider-2b","hugging-apps/decider-2b-demo",[S("state_text","State"),S("questions_text","Questions"),T("temperature","Temperature","number"),T("independent","Independent","boolean"),T("isolated","Isolated","boolean")],1,"text",{"temperature":1.3,"independent":True,"isolated":True})]
KEYS=["d3","clef","jev","decider"]
cmp={"id":"cmp","role":"operator","kind":"fn","fn":"compare_decisions","label":"Compare decisions","inputs":[T(f"in_{k}",k,"json") for k in KEYS],"outputs":[T("out_0","Comparison","markdown",output_index=0)],"data":{}}
subs=[{"id":"out","role":"subject","label":"Comparison","asset_type":"markdown","inputs":[T("in","Comparison","markdown")],"outputs":[T("out","Comparison","markdown")],"data":{}}]
E=[]
def e(a,ap,b,bp,t="text"): E.append({"id":f"e{len(E)}","from_node_id":a,"from_port_id":ap,"to_node_id":b,"to_port_id":bp,"type":t})
e("question","out","fmt","in_question_block")
for s,p in [("d3","state"),("clef","state"),("jev","state_text"),("decider","state_text")]: e("prompt","out",s,p)
e("fmt","out_0","d3","questions"); e("fmt","out_0","clef","questions")
e("fmt","out_1","jev","question"); e("fmt","out_2","jev","options_text"); e("fmt","out_3","decider","questions_text")
for k in KEYS: e(k,"result","cmp",f"in_{k}")
e("cmp","out_0","out","in","markdown")
json.dump({"schema_version":"2","name":"Decision Models Comparison","references":refs,"operators":[fmt]+spaces+[cmp],"subjects":subs,"edges":E},open("workflow.json","w"),indent=1)
print(len(refs)+len(spaces)+2+len(subs),"nodes",len(E),"edges")