dspy.Code

dspy.Code

dspy.Code는 DSPy의 코드 타입입니다. 코드 생성과 코드 분석에 유용합니다.

출처: 문서

본문

dspy.Code
  • Bases: Type

DSPy의 코드 타입입니다. 코드 생성과 코드 분석에 유용합니다.

예시 1: 코드 생성에서 출력 타입으로 dspy.Code

import dspy

dspy.configure(lm=dspy.LM("openai/gpt-4o-mini"))


class CodeGeneration(dspy.Signature):
    '''Generate python code to answer the question.'''

    question: str = dspy.InputField(description="The question to answer")
    code: dspy.Code["java"] = dspy.OutputField(description="The code to execute")


predict = dspy.Predict(CodeGeneration)

result = predict(question="Given an array, find if any of the two numbers sum up to 10")
print(result.code)

예시 2: 코드 분석에서 입력 타입으로 dspy.Code

import dspy
import inspect

dspy.configure(lm=dspy.LM("openai/gpt-4o-mini"))

class CodeAnalysis(dspy.Signature):
    '''Analyze the time complexity of the function.'''

    code: dspy.Code["python"] = dspy.InputField(description="The function to analyze")
    result: str = dspy.OutputField(description="The time complexity of the function")


predict = dspy.Predict(CodeAnalysis)


def sleepsort(x):
    import time

    for i in x:
        time.sleep(i)
        print(i)

result = predict(code=inspect.getsource(sleepsort))
print(result.result)

Methods

description() -> str (classmethod)

dspy.Code의 설명입니다. 코드는 code 필드에 지정된 문자열로 표현됩니다. 출력 필드라면 마크다운 코드 블록 형식(```{cls.language.lower()}```)을 따라야 하며, 프로그래밍 언어가 함께 표시됩니다.

validate_input(data) (classmethod)

dspy.Code 입력을 검증합니다. 이미 Code 객체면 그대로 반환하고, 문자열이면 {"code": _filter_code(data)}로, 딕셔너리면 code 키(문자열)를 검증해 필터링합니다. 그 외 값이면 ValueError를 발생시킵니다.

format()

코드를 f"{self.code}"로 반환합니다.

serialize_model()

표준 커스텀 타입 태그(<<CUSTOM-TYPE-START-IDENTIFIER>>, <<CUSTOM-TYPE-END-IDENTIFIER>>)를 우회하기 위해 override하며, self.format()을 반환합니다.

표준 상속 메서드

adapt_to_native_lm_feature(...), extract_custom_type_from_annotation(annotation), parse_lm_response(...), parse_stream_chunk(...), is_streamable() 등은 모든 커스텀 타입이 공유하는 base_type.py의 표준 메서드입니다.

더 알아보기 (Learn more)