thomasm291678
feat: 纳入 DAPT AI 引擎 vetnetv2.0 + 测试报告修复(语言约束/must_not_miss兜底/降温度/sdpa) + KB 走 git-lfs
9a71f08 Download vetnetv2.0/model/multi_agent.py from WWsCa/VetNet-LCPS: direct link, hf CLI and curl.
- Browser
- Download file 3.3 kB
-
https://huggingface.co/WWsCa/VetNet-LCPS/resolve/main/vetnetv2.0/model/multi_agent.py
- Command line
-
hf download hf://WWsCa/VetNet-LCPS/vetnetv2.0/model/multi_agent.py
-
curl -L -o multi_agent.py https://huggingface.co/WWsCa/VetNet-LCPS/resolve/main/vetnetv2.0/model/multi_agent.py
3.3 kB
| import json | |
| import time | |
| SPECIALTY_AGENTS = {'internal_medicine': {'name': '内科Agent', 'focus': '消化、呼吸、心血管、泌尿、内分泌、血液', 'prompt': '你是宠物内科专家。分析可能的内科疾病,评估脱水和电解质紊乱风险。输出JSON: {findings:[], recommendations:[], urgent_concerns:[]}'}, 'surgery': {'name': '外科Agent', 'focus': '骨科、软组织外科、神经外科', 'prompt': '你是宠物外科专家。评估是否需要外科干预(异物/骨折/肿瘤等),推荐影像检查。输出JSON: {findings:[], recommendations:[], urgent_surgery:bool}'}, 'dermatology': {'name': '皮肤科Agent', 'focus': '皮肤病、耳病、过敏', 'prompt': '你是宠物皮肤科专家。评估皮肤/耳部问题,过敏反应。输出JSON: {findings:[], recommendations:[]}'}, 'pharmacology': {'name': '药理Agent', 'focus': '药物选择、剂量、相互作用、禁忌、品种特异性', 'prompt': '你是宠物药理专家。评估用药方案(剂量/禁忌/相互作用/品种特异性警告)。输出JSON: {drug_recommendations:[], contradictions:[], monitoring_needed:[]}'}} | |
| def a(b, c, d, e, f=None): | |
| if f is None: | |
| f = ['internal_medicine', 'pharmacology'] | |
| g = time.time() | |
| h = {} | |
| i = {'problem_list': [], 'treatment_plan': {}, 'conflicts_resolved': []} | |
| for j in f: | |
| if j not in SPECIALTY_AGENTS: | |
| continue | |
| k = SPECIALTY_AGENTS[j] | |
| try: | |
| l = e.retrieve(f"{c} {k['focus']} {b[:200]}") if e else '' | |
| m = k['prompt'] | |
| if l: | |
| m += f'\n\n参考:\n{l}' | |
| n = d.chat_json(m, f'物种: {c}\n{b}') | |
| if not n.startswith('[API错误]'): | |
| h[j] = {'agent': k['name'], 'analysis': json.loads(n) if n.strip().startswith('{') else {'raw': n}} | |
| except Exception: | |
| h[j] = {'agent': k['name'], 'analysis': {'error': '分析失败'}} | |
| return {'agent_results': h, 'consensus': i, 'agents_activated': f, 'elapsed_seconds': round(time.time() - g, 2)} | |
| def o(i, m, g, p, h=3): | |
| e = time.time() | |
| b = [] | |
| n = ['从病理生理学角度', '从解剖定位角度', '从流行病学角度', '从药物反应角度', '从系统体检角度'] | |
| for q in range(min(h, len(n))): | |
| k = n[q] | |
| try: | |
| c = p.retrieve(f'{m} {i[:200]}') if p else '' | |
| f = f"你是兽医专家。{k}分析以下病例,给出诊断推理。输出JSON: {{diagnosis:'', differential:[], confidence:'高/中/低', reasoning:''}}" | |
| if c: | |
| f += f'\n\n参考:\n{c}' | |
| j = g.chat_json(f, f'物种: {m}\n{i}') | |
| if not j.startswith('[API错误]') and j.strip().startswith('{'): | |
| b.append({'angle': k, 'result': json.loads(j)}) | |
| except Exception: | |
| pass | |
| l = [] | |
| for q, r in enumerate(b): | |
| s = r['result'] | |
| d = (1 if s.get('diagnosis') else 0) * 3 + len(s.get('differential', [])) * 0.5 + (2 if s.get('confidence') == '高' else 1 if s.get('confidence') == '中' else 0) | |
| l.append({'rank': q + 1, 'angle': r['angle'], 'score': d, 'diagnosis': s.get('diagnosis', '')}) | |
| l.sort(key=lambda q: q['score'], reverse=True) | |
| return {'best_diagnosis': b[l[0]['rank'] - 1]['result'] if b and l else {}, 'ranking': l, 'confidence': l[0]['diagnosis'] if l else '', 'all_candidates': b, 'method': 'GRPO self-verification', 'elapsed_seconds': round(time.time() - e, 2)} |