이 문서는 대화형 노트북입니다. 로컬에서 실행하거나 다음 링크를 사용하세요.
의존성 설치
시작하기 전에 이 튜토리얼 전반에서 사용하는 라이브러리를 설치하세요. 이 튜토리얼에서는 다음 라이브러리를 사용합니다.- DSPy: LLM 워크플로를 구축하고 최적화하는 데 사용합니다.
- Weave: LLM 워크플로를 추적하고 프롬프팅 전략을 평가하는 데 사용합니다.
- datasets: HuggingFace Hub에서 BIG-Bench Hard 데이터셋에 액세스하는 데 사용합니다.
Weave로 추적 활성화하기
이 섹션에서는 튜토리얼의 이후 단계에서 실행되는 DSPy Call이 자동으로 트레이스되고 Weights & Biases UI에서 확인할 수 있도록 Weave를 설정합니다. Weave는 DSPy와 통합되어 있습니다. 코드 시작 부분에weave.init을 추가하면 DSPy 함수가 자동으로 트레이스되며, 그 결과를 Weights & Biases UI에서 살펴볼 수 있습니다. 자세한 내용은 DSPy용 Weave 인테그레이션 문서를 참조하세요.
weave.Object를 상속한 메타데이터 클래스를 사용하여 메타데이터를 관리합니다.
BIG-Bench Hard 데이터셋 로드하기
Weave 추적을 활성화했다면, 이제 DSPy 프로그램을 트레이닝하고 평가하는 데 사용할 데이터를 준비합니다. HuggingFace Hub에서 이 데이터셋을 로드하고 트레이닝 세트와 검증 세트로 분할한 다음, Weave에 게시하세요. 데이터셋을 게시하면 버전을 관리할 수 있을 뿐 아니라weave.Evaluation으로 프롬프팅 전략을 평가할 수도 있습니다.

DSPy 프로그램
데이터셋을 Weave에 게시했으니, 이제 이후에 평가하고 최적화할 베이스라인 DSPy 프로그램을 정의할 수 있습니다. DSPy는 새로운 LM 파이프라인을 구축하는 방식을 자유 형식 문자열 조작에서 벗어나 프로그래밍(모듈식 연산자를 조합해 텍스트 변환 그래프를 구축하는 방식)에 가깝게 바꾸는 프레임워크입니다. DSPy에서는 컴파일러가 프로그램을 바탕으로 최적화된 LM 호출 전략과 프롬프트를 자동으로 생성합니다.dspy.LM으로 언어 모델을 설정하고, dspy.configure로 이를 기본값으로 지정하세요.
인과 추론 시그니처 작성하기
시그니처는 DSPy 모듈의 입력/출력 동작을 선언적으로 정의한 사양입니다. DSPy 모듈은 임의의 텍스트 변환을 추상화하는 작업 적응형 컴포넌트로, 신경망 레이어와 비슷한 역할을 합니다.CausalReasoningModule)를 테스트하세요.

DSPy 프로그램 평가하기
베이스라인 프롬프팅 전략이 준비되었으니, 예측된 답변과 정답의 일치 여부를 판단하는 메트릭과weave.Evaluation을 사용하여 검증 세트에서 평가해 보세요. Weave는 각 예시를 애플리케이션에 전달한 뒤, 여러 맞춤형 점수화 함수로 출력에 점수를 매깁니다. 이를 통해 애플리케이션의 성능을 한눈에 파악할 수 있는 뷰와, 개별 출력과 점수를 자세히 살펴볼 수 있는 풍부한 UI를 활용할 수 있습니다.
먼저, 예측된 답변이 정답과 일치하는지 확인하는 점수화 함수를 만드세요. Weave 점수화 함수는 모델의 반환 값을 output으로 받고, 데이터셋 예시에서 이름이 일치하는 키를 추가 인수로 받습니다. 여기서 answer는 데이터셋에서 가져오며, output은 CausalReasoningModule.forward가 반환하는 dict입니다.
weave.Evaluation에서 호출할 수 있도록 모듈을 트레이스되는 함수로 래핑하세요. 래퍼의 인수 이름은 모델이 사용하는 데이터셋의 열 이름과 일치해야 합니다.

Python 스크립트에서 실행하는 경우 다음 코드로 평가를 실행할 수 있습니다.
DSPy 프로그램 최적화하기
베이스라인 성능을 측정했으니 이제 DSPy 최적화기를 적용하고 그 결과를 베이스라인과 비교해 보세요. 베이스라인 DSPy 프로그램이 준비되었으므로 BootstrapFewShot 최적화기를 사용하여 인과 추론 성능을 개선하세요. 이 최적화기는 지정한 메트릭이 최대화되도록 DSPy 프로그램의 매개변수를 조정합니다.
