描述bug
PFClient.runs.get_details()
SDK方法加载运行的数据框可能会以不一致的结果顺序返回行。大多数情况下,它们按照输入的行号排序,但这不是一个保证。
我发现这个bug是因为在比较使用相同输入数据集的不同评估流程的输出时,出现了一些微妙的错误,有时1-2行无法正确对齐。
快速修复是在处理数据框之前,在用户空间中对行进行排序,但理想情况下,SDK应该为我们完成这个操作,并以与输入数据相同的顺序返回行:
def get_run_dataframe(run_name):
"""
Returns a run's dataframe sorted and indexed by line number
"""
return (
client.runs.get_details(run_name)
# sort by line number since the async executors may have returned results out of order
.sort_values("inputs.line_number")
# ignore the built-in dataframe index and sort by input line number for consistency across all runs
.set_index("inputs.line_number")
)
# ...
run_map = {k: get_run_dataframe(v) for k, v in run_name_map.items()}
如何重现bug
重现行为所需的步骤,您可以多频繁地体验到这个bug:
- 设置两个流程和一个包含约20行的输入数据CSV
- 使用输入数据执行这两个流程
- 使用
PFClient.runs.get_details()
方法为每个流程加载数据框并打印它
预期行为
数据框的行应与输入数据的顺序相同。
运行信息(请填写以下信息):
- 使用
pf -v
查看Promptflow包版本:1.5.0 - 操作系统:Sonoma 14.4.1
- 使用
python --version
查看Python版本:Python (Darwin) 3.9.18 (main, Sep 11 2023, 08:25:10)
5条答案
按热度按时间kcugc4gi1#
你好,@stewartadam ,感谢你的反馈!我认为我们在返回详细信息之前确实缺少一个有前途的排序;我会尝试修复这个问题。
uelo1irk2#
你好,我们发送这个友好的提醒是因为我们在30天内没有收到你的回复。我们需要更多关于这个问题的信息来帮助解决它。请务必给我们提供你的反馈。如果我们在7天内没有收到你的回复,问题将自动关闭。谢谢!
r8xiu3jd3#
要移除不活跃标签的注解
rqdpfwrv4#
你好,我们发送这个友好的提醒是因为我们在30天内没有收到你的回复。我们需要更多关于这个问题的信息来帮助解决它。请务必给我们提供你的反馈。如果我们在7天内没有收到你的回复,问题将自动关闭。谢谢!
myss37ts5#
要移除不活跃标签的注解