dspy.TwoStepAdapter
dspy.TwoStepAdapter(extraction_model: LM)
基类: Adapter
一个两阶段适配器,它
- 为主语言模型 (main LM) 使用更简单、更自然的提示
- 使用带有聊天适配器 (chat adapter) 的较小语言模型从主语言模型的响应中提取结构化数据
此适配器使用基类 Adapter 中定义的通用调用逻辑。此类在与推理模型作为主语言模型交互时特别有用,因为已知推理模型难以处理结构化输出。
Example
import dspy
lm = dspy.LM(model="openai/o3-mini", max_tokens=10000, temperature = 1.0)
adapter = dspy.TwoStepAdapter(dspy.LM("openai/gpt-4o-mini"))
dspy.configure(lm=lm, adapter=adapter)
program = dspy.ChainOfThought("question->answer")
result = program("What is the capital of France?")
print(result)
源代码位于 dspy/adapters/two_step_adapter.py
函数
__call__(lm: LM, lm_kwargs: dict[str, Any], signature: Type[Signature], demos: list[dict[str, Any]], inputs: dict[str, Any]) -> list[dict[str, Any]]
源代码位于 dspy/adapters/base.py
acall(lm: LM, lm_kwargs: dict[str, Any], signature: Type[Signature], demos: list[dict[str, Any]], inputs: dict[str, Any]) -> list[dict[str, Any]]
async
源代码位于 dspy/adapters/two_step_adapter.py
format(signature: Type[Signature], demos: list[dict[str, Any]], inputs: dict[str, Any]) -> list[dict[str, Any]]
为第一阶段(主语言模型)格式化提示。主语言模型不需要特定的结构,我们定制 format 方法而不是 format_field_description 或 format_field_structure。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
signature
|
Type[Signature]
|
原始任务的签名 |
必需 |
demos
|
list[dict[str, Any]]
|
演示示例列表 |
必需 |
inputs
|
dict[str, Any]
|
当前输入 |
必需 |
返回值
类型 | 描述 |
---|---|
list[dict[str, Any]]
|
要传递给主语言模型的消息列表。 |
源代码位于 dspy/adapters/two_step_adapter.py
format_assistant_message_content(signature: Type[Signature], outputs: dict[str, Any], missing_field_message: Optional[str] = None) -> str
源代码位于 dspy/adapters/two_step_adapter.py
format_conversation_history(signature: Type[Signature], history_field_name: str, inputs: dict[str, Any]) -> list[dict[str, Any]]
格式化对话历史。
此方法将对话历史和当前输入格式化为多轮消息。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
signature
|
Type[Signature]
|
需要格式化对话历史的 DSPy 签名。 |
必需 |
history_field_name
|
str
|
签名中历史字段的名称。 |
必需 |
inputs
|
dict[str, Any]
|
DSPy 模块的输入参数。 |
必需 |
返回值
类型 | 描述 |
---|---|
list[dict[str, Any]]
|
多轮消息列表。 |
源代码位于 dspy/adapters/base.py
format_demos(signature: Type[Signature], demos: list[dict[str, Any]]) -> list[dict[str, Any]]
格式化少样本示例。
此方法将少样本示例格式化为多轮消息。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
signature
|
Type[Signature]
|
需要格式化少样本示例的 DSPy 签名。 |
必需 |
demos
|
list[dict[str, Any]]
|
少样本示例列表,每个元素是一个字典,其键为签名的输入和输出字段。 |
必需 |
返回值
类型 | 描述 |
---|---|
list[dict[str, Any]]
|
多轮消息列表。 |
源代码位于 dspy/adapters/base.py
format_field_description(signature: Type[Signature]) -> str
为系统消息格式化字段描述。
此方法为系统消息格式化字段描述。它应该返回一个包含输入字段和输出字段描述的字符串。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
signature
|
Type[Signature]
|
需要格式化字段描述的 DSPy 签名。 |
必需 |
返回值
类型 | 描述 |
---|---|
str
|
包含输入字段和输出字段描述的字符串。 |
源代码位于 dspy/adapters/base.py
format_field_structure(signature: Type[Signature]) -> str
为系统消息格式化字段结构。
此方法为系统消息格式化字段结构。它应该返回一个字符串,指定输入字段提供给语言模型的格式,以及响应中输出字段的格式。请参阅 ChatAdapter 和 JsonAdapter 获取示例。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
signature
|
Type[Signature]
|
需要格式化字段结构的 DSPy 签名。 |
必需 |
源代码位于 dspy/adapters/base.py
格式化任务描述(signature: Signature) -> str
format_task_description(signature: Signature) -> str
源代码位于 dspy/adapters/two_step_adapter.py
根据签名创建任务描述
源代码位于 dspy/adapters/two_step_adapter.py
format_user_message_content(signature: Type[Signature], inputs: dict[str, Any], prefix: str = '', suffix: str = '') -> str
parse(signature: Signature, completion: str) -> dict[str, Any]
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
signature
|
Signature
|
原始任务的签名 |
必需 |
使用带有聊天适配器 (chat adapter) 的较小语言模型 (extraction_model) 从主语言模型的原始补全文本中提取结构化数据。
|
str
|
completion |
必需 |
返回值
类型 | 描述 |
---|---|
dict[str, Any]
|
主语言模型的补全文本 |