用途:dspy.ChatAdapter 是 DSPy 的默认适配器。每当模块调用语言模型时,它承担两项工作:格式化——把签名、示例和输入转换为聊天消息列表(system、user、assistant);解析——用 [[ ## field_name ## ]] 分隔符从模型响应中抽取输出字段,并用 [[ ## completed ## ]] 标记输出结束。用户无需直接调用它。需要调试格式问题、自定义提示构建、生成微调数据或使用原生函数调用时,才需了解其内部机制;若只需选择适配器,可先看适配器对比。
主要能力:构造函数为 dspy.ChatAdapter(callbacks=None, use_native_function_calling=False, native_response_types=None, use_json_adapter_fallback=True)。callbacks 控制格式化与解析期间的回调;use_native_function_calling 启用提供商原生函数调用;native_response_types 限定哪些输出类型使用原生特性;use_json_adapter_fallback 在解析失败时自动用 JSONAdapter 重试(ContextWindowExceededError 会重新抛出)。格式上,system 消息含任务说明与字段结构,示例按 user/assistant 对写入,dspy.History 转为交替消息;字段用 [[ ## question ## ]] 等标头标记,[[ ## completed ## ]] 表示结束。解析时按标头切分、映射字段、用 parse_value() 转型并校验必填字段,失败抛 AdapterParseError。
使用方式:用 dspy.inspect_history() 查看实际构建的消息。启用原生函数调用可传 use_native_function_calling=True,并用 native_response_types=[BaseModel] 限定 Pydantic 类型。关闭回退后解析失败会立即报错。format_finetune_data 可从签名、示例、输入输出生成 OpenAI 兼容的 {"messages": [...]} 微调数据。安装技能:npx skills add lebsral/DSPy-Programming-not-prompting-LMs-skills --skill <name>。
适用场景与限制:适合通用场景与多数模型;复杂嵌套 Pydantic 类型解析失败可转 JSONAdapter,推理模型可转 TwoStepAdapter,偏好 XML 的模型可转 XMLAdapter,无问题则保留默认。注意:并非所有提供商支持原生函数调用,本地小模型可能失败;适配器内部细节不一定出现在追踪中;手动构造少样本示例时遗漏 [[ ## completed ## ]] 会导致模型继续生成。