数据
DSPy 是一个机器学习框架,因此在其中工作涉及训练集、开发集和测试集。对于数据中的每个示例,我们通常区分三种类型的值:输入、中间标签和最终标签。您可以在没有任何中间或最终标签的情况下有效使用 DSPy,但您至少需要一些示例输入。
DSPy Example
对象
DSPy 中数据的核心数据类型是 Example
。您将使用 Examples 来表示训练集和测试集中的项。
DSPy Examples 类似于 Python 的 dict
,但有一些实用的工具函数。您的 DSPy 模块将返回类型为 Prediction
的值,它是 Example
的一个特殊子类。
当您使用 DSPy 时,您会进行大量的评估和优化运行。您的单个数据点将是 Example
类型。
qa_pair = dspy.Example(question="This is a question?", answer="This is an answer.")
print(qa_pair)
print(qa_pair.question)
print(qa_pair.answer)
Example({'question': 'This is a question?', 'answer': 'This is an answer.'}) (input_keys=None)
This is a question?
This is an answer.
Example 可以包含任何字段键和任何值类型,尽管通常值为字符串。
例如,您现在可以将训练集表示为
指定输入键
在传统的机器学习中,存在分离的“输入”和“标签”。
在 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()
方法分别返回仅包含输入键或非输入键的新 Example 对象。
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)
输出