dspy.BaseLM — 언어 모델 기반 인터페이스
dspy.BaseLM — 언어 모델 기반 인터페이스 (LM 인터페이스)
dspy.BaseLM(model, model_type='chat', temperature=None, max_tokens=None, cache=True, callbacks: list[BaseCallback] | None = None, num_retries: int = 3, **kwargs)
DSPy 언어 모델의 기반 클래스예요. 실제 클라이언트인 dspy.LM이 이 인터페이스를 구현하고, 직접 커스텀 LM을 만들 때도 이 클래스의 규약을 따라요.
레거시 서브클래스는 forward(prompt=None, messages=None, **kwargs)를 구현하고, 선택적으로 같은 인자의 aforward도 구현해요. 일반 호출은 문자열 또는 사전의 목록을 돌려줍니다. 내장 LM은 명시적 dspy.lm15.Request 호출도 받아요.
파라미터
| 이름 | 타입 | 설명 | 기본값 |
|---|---|---|---|
model |
모델 식별자 | 필수 | |
model_type |
LM API 타입. "chat", "text", "responses" 등 |
'chat' |
|
temperature |
기본 샘플링 온도 | None |
|
max_tokens |
기본 최대 출력 토큰 수 | None |
|
cache |
기본적으로 요청이 DSPy 캐시를 쓸지 | True |
|
num_retries |
int |
기본 프로바이더 요청 재시도 횟수 | 3 |
callbacks |
list[BaseCallback] | None |
선택적 인스턴스 레벨 콜백 핸들러 | None |
**kwargs |
self.kwargs에 저장되는 추가 기본 요청 파라미터 |
{} |
커스텀 LM 구현 방향
forward() / aforward()로 커스텀 LM을 구현하는 방식은 지원 중단(deprecated) 되었어요. 기존 서브클래스 인터페이스는 DSPy 3.4 전반에서 계속 지원되지만, 3.5에서 제거 예정이에요. 대신 complete(Request) -> Response를 구현한 엔진을 만들어 dspy.LM(engine=…)으로 넘기는 방식으로 바꿔요. LegacyEngine과 AsyncLegacyEngine은 3.4 전환용 래퍼로, 이것들도 3.5에서 제거 예정이에요.
OpenAI 스타일 messages= 사전도 지원 중단됐어요. lm15.Request와 Message 객체를 쓰세요. lm("hello")는 여전히 목록을 돌려주는 편의 호출로 남아요. 자세한 건 마이그레이션 가이드를 봐요.
영속적인 커스텀 상태는 dump_state/load_state에 두고, 런타임 클라이언트는 copy()로 공유하되 DSPy의 history·callbacks·kwargs는 격리돼요.
주요 메서드
__call__(prompt=None, *, messages=None, **kwargs)— 레거시 출력을 돌려주거나, 명시적 Request에는lm15.Response하나를 돌려줘요acall(prompt=None, *, messages=None, **kwargs)(async) —call의 비동기 대응aforward(prompt=None, messages=None, **kwargs)(async) — OpenAI 형태의 프로바이더 응답을 비동기로 반환copy(**kwargs)— 파라미터를 갱신한 LM 사본을 반환. 기본 구현은 얕은 런타임 복사이고, 프로바이더 클라이언트·세션·로컬 모델 핸들은 참조로 보존돼요
더 알아보기 (Learn more)
- dspy.LM — 실제로 쓰는 언어 모델 클라이언트 구성
- 커스텀 LM 엔진 — 나만의 LM 구현·마이그레이션 가이드
- dspy.Predict — LM 요청을 만드는 기본 모듈