dspy.ProgramOfThought
dspy.ProgramOfThought
ProgramOfThought는 파이썬 프로그램을 실행해 문제를 푸는 DSPy 모듈입니다. 다만 현재는 deprecated(사용 중단) 상태이며, RLM이 권장되는 대체재입니다.
출처: 문서
본문
Deprecated:
ProgramOfThought는 deprecated이며 DSPy 3.5에서 제거될 예정입니다. 대신RLM을 사용하세요.
dspy.ProgramOfThought(
signature: str | type[Signature],
max_iters: int = 3,
interpreter_factory: Callable[[], CodeInterpreter] = PythonInterpreter,
)
- Bases:
Module(callbacks=None) .. deprecated:: 3.4 ProgramOfThought is deprecated. RLM is the preferred replacement.
파이썬 프로그램을 실행해 문제를 푸는 DSPy 모듈입니다. 이 모듈은 Deno가 필요하며, DSPy의 관리형 런타임은 pip install "dspy[deno]"로 설치할 수 있습니다.
Examples
import dspy
lm = dspy.LM('openai/gpt-4o-mini')
dspy.configure(lm=lm)
pot = dspy.ProgramOfThought("question -> answer")
pot(question="what is 1+1?")
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
signature |
str | type[Signature] |
모듈의 시그니처. | required |
max_iters |
int |
코드 생성·실행을 재시도할 최대 반복 횟수. | 3 |
interpreter_factory |
Callable[[], CodeInterpreter] |
각 forward pass에 대해 interpreter를 만드는 zero-argument 콜러블. 이 콜러블은 동시에 호출될 수 있으며, DSPy는 반환된 각 interpreter를 종료합니다. 기본값은 dspy.PythonInterpreter. dspy.configure(interpreter_factory=...)로 이 기본값을 교체할 수 있습니다. |
PythonInterpreter |
소스 코드는 dspy/predict/program_of_thought.py에 있습니다.
def __init__(
self,
signature: str | type[Signature],
max_iters: int = 3,
interpreter_factory: Callable[[], CodeInterpreter] = PythonInterpreter,
):
"""
Args:
signature: The signature of the module.
max_iters: The maximum number of iterations to retry code generation and execution.
interpreter_factory: Zero-argument callable that creates an interpreter for each forward pass. The
callable may be invoked concurrently, and DSPy shuts down each interpreter it returns. Defaults to
``dspy.PythonInterpreter``. ``dspy.configure(interpreter_factory=...)`` replaces this default.
"""
super().__init__()
warnings.warn(
"ProgramOfThought is deprecated and will be removed in 3.5. RLM is the preferred replacement.",
DeprecationWarning,
stacklevel=2,
)
_validate_interpreter_factory(interpreter_factory)
self.signature = signature = ensure_signature(signature)
self.max_iters = max_iters
self.input_fields = signature.input_fields
self.output_fields = signature.output_fields
self.code_generate = dspy.ChainOfThought(
dspy.Signature(
self._generate_signature("generate").fields,
self._generate_instruction("generate"),
),
)
self.code_regenerate = dspy.ChainOfThought(
dspy.Signature(
self._generate_signature("regenerate").fields,
self._generate_instruction("regenerate"),
),
)
self.generate_output = dspy.ChainOfThought(
dspy.Signature(
self._generate_signature("answer").fields,
self._generate_instruction("answer"),
),
)
self._interpreter_factory = interpreter_factory
Methods
def forward(self, interpreter: CodeInterpreter | None = None, /, **kwargs):
"""Run the program with a fresh interpreter or a caller-owned override.
Args:
interpreter: Optional caller-owned interpreter, passed positionally. The caller must shut it down.
**kwargs: Input values matching the signature's input fields.
Raises:
CodeInterpreterError: If interpreter setup, process, or protocol fails.
"""
if "interpreter" in kwargs and "interpreter" not in self.input_fields:
raise TypeError(
"To use a caller-owned interpreter, pass it as the first positional argument when calling the module."
)
with self._interpreter_context(interpreter) as interpreter:
input_kwargs = {field_name: kwargs[field_name] for field_name in self.input_fields}
code_d...
forward(interpreter=None, /, **kwargs)
forward는 새 interpreter 또는 호출자가 소유한 override로 프로그램을 실행합니다. interpreter는 위치 인자로 전달되는 호출자 소유 interpreter이며, 호출자가 종료해야 합니다. kwargs는 시그니처의 입력 필드에 맞는 입력 값들입니다. interpreter 설정·프로세스·프로토콜이 실패하면 CodeInterpreterError를 발생시킵니다.
그 외 상속받은 메서드
ProgramOfThought는 Module/BaseModule/Parameter에서 다음의 공통 메서드를 상속받습니다. 각각에 대한 자세한 설명은 Predict 페이지를 참고하세요.
__call__(*args, **kwargs) -> Prediction— 모듈을 호출하고 사용량을 추적합니다.acall(*args, **kwargs) -> Prediction(async) — 비동기 호출.batch(...)—dspy.Example리스트를Parallel로 병렬 처리.deepcopy()— 파라미터만 깊은 복사.dump_state(json_mode=True)— 상태를 내보냄.get_lm()— 사용 중인 언어 모델 반환.inspect_history(n=1, file=None)— LM 호출 기록 표시.load(...)/load_state(...)— 저장된 상태 불러오기.map_named_predictors(func)— 모든 named predictor에 함수 적용.named_parameters()/named_predictors()/named_sub_modules()/parameters()/predictors()— 구조 탐색.reset_copy()— 복사 후 모든 파라미터 초기화.save(...)— 모듈 저장.set_lm(lm)— 모든 predictor에 언어 모델 설정.