소개
프로덕션 LLM 애플리케이션을 구축하고 계신가요? 다음 두 가지 질문이 아마도 밤잠을 설치게 할 것입니다:- LLM이 안전하고 적절한 콘텐츠를 생성하도록 어떻게 보장할 수 있을까요?
- 출력 품질을 어떻게 측정하고 시간이 지남에 따라 개선할 수 있을까요?
- 가드레일로서: 안전하지 않은 콘텐츠가 사용자에게 도달하기 전에 차단하거나 수정
- 모니터로서: 시간이 지남에 따라 품질 지표를 추적하여 추세와 개선 사항 식별
용어
이 가이드 전체에서
@weave.op로 장식된 함수를 “ops”라고 부를 것입니다. 이는 Weave의 추적 기능으로 강화된 일반 Python 함수입니다.바로 사용 가능한 Scorer
이 가이드에서는 사용자 정의 scorer를 만드는 방법을 보여주지만, Weave에는 다양한 사전 정의된 scorer가 포함되어 있어 바로 사용할 수 있습니다. 다음과 같은 것들이 있습니다:가드레일 vs. 모니터: 각각 언제 사용해야 할까요
scorer는 가드레일과 모니터 모두에 사용되지만, 그 목적은 다릅니다:
예를 들어, 유해성 scorer는 다음과 같이 사용될 수 있습니다:
- 가드레일로서: 유해한 콘텐츠를 즉시 차단
- 모니터로서: 시간이 지남에 따라 유해성 수준 추적
모든 scorer 결과는 자동으로 Weave 데이터베이스에 저장됩니다. 이는 가드레일이 추가 작업 없이 모니터 역할도 한다는 의미입니다! 원래 어떻게 사용되었든 상관없이 항상 과거 scorer 결과를 분석할 수 있습니다.
다음 .call() 메서드 사용하기
Weave ops에서 scorer를 사용하려면 작업 결과와 추적 정보 모두에 액세스해야 합니다. .call() 메서드는 둘 다 제공합니다:
Scorer 시작하기
기본 예제
다음은.call()를 scorer와 함께 사용하는 간단한 예제입니다:
가드레일로 Scorer 사용하기
가드레일은 LLM 출력이 사용자에게 도달하기 전에 실행되는 안전 검사 역할을 합니다. 다음은 실용적인 예제입니다:Scorer 타이밍
scorer를 적용할 때:
- 주요 작업(
generate_text)이 완료되고 UI에서 완료된 것으로 표시됩니다 - Scorer는 주요 작업 후에 비동기적으로 실행됩니다
- Scorer 결과는 완료되면 호출에 첨부됩니다
- UI에서 scorer 결과를 보거나 API를 통해 쿼리할 수 있습니다
모니터로 Scorer 사용하기
앱에 점수 매기기 로직을 작성하지 않고 품질 지표를 추적하려면 monitors를 사용할 수 있습니다. 모니터는 다음과 같은 백그라운드 프로세스입니다:- 로 장식된 하나 이상의 지정된 함수를 감시합니다
weave.op - 다음을 사용하여 호출의 하위 집합에 점수를 매깁니다: LLM-as-a-judge scorer, 이는 점수를 매기려는 ops에 맞춰진 특정 프롬프트가 있는 LLM 모델입니다
- 지정된
weave.op가 호출될 때마다 자동으로 실행되며, 수동으로.apply_scorer()
- 프로덕션 동작 평가 및 추적
- 회귀 또는 드리프트 포착
- 시간이 지남에 따라 실제 성능 데이터 수집
모니터 생성하기
- 왼쪽 메뉴에서 Monitors 탭을 선택합니다.
- 모니터 페이지에서 New Monitor를 클릭합니다.
- 서랍에서 모니터를 구성합니다:
- Name: 유효한 모니터 이름은 문자나 숫자로 시작해야 하며 문자, 숫자, 하이픈 및 밑줄만 포함할 수 있습니다.
- Description (선택 사항): 모니터가 하는 일을 설명합니다.
- Active monitor toggle: Turn the monitor on or off.
- Calls to monitor:
- Operations: 모니터링할 하나 이상의
@weave.op를 선택합니다. - Filter (선택 사항): 모니터링 대상이 되는 op 열을 좁힙니다(예:
max_tokens또는top_p) - Sampling rate: 점수를 매길 호출의 비율로, 0%에서 100% 사이입니다(예: 10%)
- Operations: 모니터링할 하나 이상의
- LLM-as-a-Judge 구성:
- 스코어러 이름: 유효한 스코어러 이름은 문자나 숫자로 시작해야 하며 문자, 숫자, 하이픈 및 밑줄만 포함할 수 있습니다.
- 판단 모델: 작업을 평가할 모델을 선택하세요. 세 가지 유형의 모델을 사용할 수 있습니다:
- 저장된 모델
- W&B 관리자가 구성한 제공업체의 모델
- W&B Inference 모델 선택한 모델에 대해 다음 설정을 구성하세요:
- 구성 이름
- 시스템 프롬프트
- 응답 형식
- 스코어링 프롬프트: LLM-as-a-judge가 작업을 평가하는 데 사용하는 프롬프트입니다. “다음을 참조할 수 있습니다
{output}, 개별 입력(예:{foo}), 그리고{inputs}딕셔너리로. 자세한 내용은 프롬프트 변수를 참조하세요.”
- 클릭 모니터 생성. Weave는 지정된 기준과 일치하는 호출을 자동으로 모니터링하고 점수를 매기기 시작합니다. 모니터 탭에서 모니터 세부 정보를 볼 수 있습니다.
Example: Create a truthfulness monitor
다음 예시에서는 다음을 생성합니다:- 모니터링할
weave.op,generate_statement. 이 함수는 입력ground_truth문장을 반환하거나(예:"The Earth revolves around the Sun."),ground_truth에 기반하여 잘못된 문장을 생성합니다(예:"The Earth revolves around Saturn.") - 모니터,
truthfulness-monitor, 생성된 문장의 진실성을 평가합니다.
-
정의
generate_statement: -
코드 실행
generate_statement트레이스를 기록합니다.generate_statement작업은 최소 한 번 기록되지 않으면 Op 드롭다운에 나타나지 않습니다. - Weave UI에서 모니터로 이동합니다.
- 모니터 페이지에서 새 모니터를 클릭합니다.
-
다음과 같이 모니터를 구성합니다:
-
이름:
truthfulness-monitor -
설명:
A monitor to evaluate the truthfulness of statements generated by an LLM. -
활성 모니터 toggle:
토글 켜기 모니터가 생성되는 즉시 호출 점수 매기기를 시작합니다.
-
모니터링할 호출:
-
작업:
generate_statement. -
필터 (선택 사항): 이 예시에서는 적용되지 않았지만,
temperature또는max_tokens와 같은 인수로 모니터링 범위를 지정하는 데 사용할 수 있습니다. -
샘플링 비율:
설정100%모든 호출에 점수를 매깁니다.
-
작업:
-
LLM-as-a-Judge 구성:
- 스코어러 이름:
truthfulness-scorer - 판단 모델:
o3-mini-2025-01-31 - 모델 설정:
- LLM ID:
o3-mini-2025-01-31 - 구성 이름:
truthfulness-scorer-judge-model - 시스템 프롬프트:
You are an impartial AI judge. Your task is to evaluate the truthfulness of statements. - 응답 형식:
json_object - 스코어링 프롬프트:

- 스코어러 이름:
-
이름:
-
클릭 모니터 생성.
truthfulness-monitor가 모니터링을 시작할 준비가 되었습니다. -
모니터가 평가할 문장을 생성하기 위해 진실되고 쉽게 검증 가능한
ground_truth문장(예:"Water freezes at 0 degrees Celsius.")을 사용합니다. - Weave UI에서 트레이스 탭으로 이동합니다.
- 사용 가능한 트레이스 목록에서 LLMAsAJudgeScorer.score에 대한 트레이스를 선택합니다.
-
트레이스를 검사하여 모니터가 작동하는 것을 확인합니다. 이 예시에서 모니터는
output(이 경우ground_truth와 동일)를true로 올바르게 평가하고 타당한reasoning를 제공했습니다.
프롬프트 변수
스코어링 프롬프트에서 작업의 여러 변수를 참조할 수 있습니다. 이러한 값은 스코어러가 실행될 때 함수 호출에서 자동으로 추출됩니다. 다음 예시 함수를 고려해보세요:
예시:
AWS Bedrock Guardrails
이BedrockGuardrailScorer는 AWS Bedrock의 가드레일 기능을 사용하여 구성된 정책에 따라 콘텐츠를 감지하고 필터링합니다. apply_guardrail API를 호출하여 콘텐츠에 가드레일을 적용합니다.
다음을 사용하려면 BedrockGuardrailScorer, 다음이 필요합니다:
- Bedrock 액세스 권한이 있는 AWS 계정
- Bedrock 액세스 권한이 있는 AWS 계정
- AWS Bedrock 콘솔에서 구성된 가드레일
- 이
boto3Python 패키지
구현 세부 사항
스코어러 인터페이스
스코어러는Scorer를 상속하고 score 메서드를 구현하는 클래스입니다. 이 메서드는 다음을 받습니다:
output: 함수의 결과- 함수의 매개변수와 일치하는 입력 매개변수
점수 매개변수
매개변수 일치 규칙
- 이
output매개변수는 특별하며 항상 함수의 결과를 포함합니다 - 다른 매개변수는 함수의 매개변수 이름과 정확히 일치해야 합니다
- 스코어러는 함수 매개변수의 어떤 하위 집합이든 사용할 수 있습니다
- 매개변수 유형은 함수의 타입 힌트와 일치해야 합니다
매개변수 이름 불일치 처리하기
때로는 스코러의 매개변수 이름이 함수의 매개변수 이름과 정확히 일치하지 않을 수 있습니다. 예를 들어:column_map:
- 함수와 스코러 간의 다른 명명 규칙
- 다른 함수에서 스코러 재사용하기
- 타사 스코러를 자신의 함수 이름과 함께 사용하기
추가 매개변수 추가하기
때로는 스코러가 함수의 일부가 아닌 추가 매개변수를 필요로 합니다. 다음을 사용하여 이러한 매개변수를 제공할 수 있습니다additional_scorer_kwargs:
스코러 사용하기: 두 가지 접근 방식
- Weave의 Op 시스템 사용 (권장)
- 직접 사용 (빠른 실험)
- 프로덕션, 추적 및 분석에는 op 시스템 사용
- 빠른 실험이나 일회성 평가에는 직접 점수 매기기 사용
- 장점: 빠른 테스트에 더 간단함
- 장점: Op가 필요 없음
- 단점: LLM/Op 호출과 연결되지 않음
점수 분석
호출 및 스코러 결과 쿼리에 대한 자세한 정보는 다음을 참조하세요점수 분석 가이드 및데이터 액세스 가이드.프로덕션 모범 사례
1. 적절한 샘플링 비율 설정
2. 여러 측면 모니터링
3. 분석 및 개선
- Weave 대시보드에서 추세 검토
- 낮은 점수의 출력에서 패턴 찾기
- 인사이트를 활용하여 LLM 시스템 개선
- 우려되는 패턴에 대한 알림 설정(곧 제공 예정)
4. 과거 데이터 액세스
스코러 결과는 관련 호출과 함께 저장되며 다음을 통해 액세스할 수 있습니다:- Call 객체의
feedback필드 - Weave 대시보드
- 쿼리 API
5. 가드를 효율적으로 초기화
최적의 성능을 위해, 특히 로컬에서 실행되는 모델의 경우, 가드를 주요 함수 외부에서 초기화하세요. 이 패턴은 다음과 같은 경우에 특히 중요합니다:- 스코러가 ML 모델을 로드하는 경우
- 지연 시간이 중요한 로컬 LLM을 사용하는 경우
- 스코러가 네트워크 연결을 유지하는 경우
- 트래픽이 많은 애플리케이션이 있는 경우
전체 예제
다음은 지금까지 다룬 모든 개념을 종합한 포괄적인 예제입니다:- 적절한 스코러 초기화 및 오류 처리
- 가드레일과 모니터의 결합 사용
- 병렬 점수 매기기를 통한 비동기 작업
- 프로덕션 수준의 오류 처리 및 로깅
다음 단계
- 탐색사용 가능한 스코러
- 학습Weave Ops