数据
DSPy是一个机器学习框架,因此在其中工作涉及训练集、开发集和测试集。对于数据中的每个示例,我们通常区分三种类型的值:输入、中间标签和最终标签。您可以在没有任何中间或最终标签的情况下有效使用DSPy,但至少需要一些示例输入。
DSPy Example 对象
DSPy中数据的核心数据类型是Example。您将使用Examples来表示训练集和测试集中的项目。
DSPy 示例类似于Python的dict,但具有一些实用工具。您的DSPy模块将返回Prediction类型的值,这是Example的一个特殊子类。
当你使用DSPy时,你会进行大量的评估和优化运行。你的单个数据点将是Example类型:
qa_pair = dspy.Example(question="这是一个问题?", answer="这是一个答案。")
print(qa_pair)
print(qa_pair.question)
print(qa_pair.answer)
示例可以包含任意字段键和任意值类型,但通常值是字符串。
现在你可以这样表达你的训练集,例如:
指定输入键
在传统机器学习中,存在分开的"输入"和"标签"。
在DSPy中,Example对象有一个with_inputs()方法,可以将特定字段标记为输入。(其余部分仅为元数据或标签。)
# Single Input.
print(qa_pair.with_inputs("question"))
# Multiple Inputs; be careful about marking your labels as inputs unless you mean it.
print(qa_pair.with_inputs("question", "answer"))
可以使用.(点)运算符访问值。您可以通过object.name访问已定义对象Example(name="John Doe", job="sleep")中键name的值。
要访问或排除某些键,使用 inputs() 和 labels() 方法分别返回仅包含输入或非输入键的新示例对象。
article_summary = dspy.Example(article= "This is an article.", summary= "This is a summary.").with_inputs("article")
input_key_only = article_summary.inputs()
non_input_key_only = article_summary.labels()
print("Example object with Input fields only:", input_key_only)
print("Example object with Non-Input fields only:", non_input_key_only)
输出