用途:介绍 DSPy 内置原始类型(primitives),用于处理纯字符串之外的输入输出,涵盖图像、音频、代码、文件、对话历史与推理轨迹,并覆盖训练与预测数据结构。
主要能力:dspy.Image 从 URL、本地路径、bytes 或 PIL 图像构造,需视觉模型;dspy.Audio 通过 from_file、from_url、from_array 构造,音频以 base64 编码,需支持音频的模型;dspy.Code["python"] 等按语言标注代码,DSPy 格式化为 markdown 代码块;dspy.History 表示对话轮次,对象不可变;dspy.File 支持 from_path、from_bytes、from_file_id,以 base64 data URI 编码,需模型支持文件输入;dspy.Reasoning 捕获 o1/o3、DeepSeek-R1、Claude 扩展思考的推理轨迹,行为类似字符串;dspy.Tool 与 dspy.ToolCalls 用于智能体与工具调用;dspy.Example 为数据容器,需 with_inputs 标记输入;dspy.Prediction 为模块返回结果,可用 get_lm_usage 查看 token 用量。
使用方式:在 dspy.Signature 中将原始类型声明为 InputField 或 OutputField,配合 dspy.Predict 或 dspy.ChainOfThought 调用。例如 dspy.Image(url=...) 传入图像,dspy.Code["python"] 生成或审查代码,dspy.History(messages=[...]) 维护多轮对话。
适用场景:图像分析、转录与音频分类、代码生成与转换、文档问答、多轮对话、捕获推理模型思考过程。
限制:图像需视觉模型、音频需音频模型、文件需支持文件输入的模型;结构化文档建议用 OCR 库提取文本;对准确度要求高时建议先转录音频;短文档直接传文本;非推理模型建议用 dspy.ChainOfThought。dspy.Tool 与 dspy.ToolCalls 的细节另见 /dspy-tools,训练数据构造见 /dspy-data。