이 노트북은 대화형 노트북입니다. 로컬에서 실행하거나 아래 링크를 사용할 수 있습니다:
전제 조건
1. Weave로 프롬프트 생성 및 반복적으로 개선하기
2. 데이터셋 가져오기
base64로 인코딩되어 있으므로, LLM에서 별도의 전처리 없이 바로 사용할 수 있습니다.
3. NER 파이프라인 구성
- 데이터셋에서 가져온 PIL 이미지를 입력으로 받아, VLM에 전달할 수 있는
base64로 인코딩된 문자열 표현으로 변환해 반환하는encode_image함수 - 이미지와 시스템 프롬프트를 입력으로 받아, 시스템 프롬프트에서 설명한 대로 해당 이미지에서 추출된 엔티티를 반환하는
extract_named_entities_from_image함수
named_entity_recognation이라는 함수를 만들어서 다음을 수행하도록 하세요:
- 이미지 데이터를 NER 파이프라인에 전달하고
- 결과를 올바르게 포맷된 JSON으로 반환합니다.
@weave.op() decorator 데코레이터를 사용하세요.
각 named_entity_recognation run이 실행될 때마다 전체 트레이스 결과를 Weave UI에서 확인할 수 있습니다. 트레이스를 보려면 Weave 프로젝트의 Traces 탭으로 이동하세요.
processing_results.json에 저장합니다. 이 결과는 Weave UI에서도 확인할 수 있습니다.

4. Weave를 사용해 파이프라인 평가하기
- Programatic Scorer
- LLM-as-a-judge Scorer
프로그래매틱 스코어러
check_for_missing_fields_programatically는 모델 출력(named_entity_recognition 함수의 출력)을 받아 결과에서 어떤 키가 누락되었거나 비어 있는지 식별합니다.
이 검사는 모델이 필드를 하나도 추출하지 못한 샘플을 식별하는 데 매우 유용합니다.
LLM-as-a-judge 스코어러
check_for_missing_fields_with_llm는 LLM(구체적으로 OpenAI의 gpt-4o)을 사용해 점수를 산출합니다. eval_prompt의 내용에 따라 check_for_missing_fields_with_llm는 Boolean 값을 출력합니다. 모든 필드가 이미지에 있는 정보와 일치하고 형식도 올바르면 스코어러는 true를 반환합니다. 어떤 필드든 누락되었거나 비어 있거나, 잘못되었거나 일치하지 않을 경우 결과는 false가 되고, 스코어러는 문제를 설명하는 메시지도 함께 반환합니다.
5. 평가 실행
dataset 전체를 자동으로 순회하면서 결과를 Weave UI에 함께 로깅하는 평가 호출을 정의합니다.
다음 코드는 평가를 시작하고 두 개의 스코어러를 NER 파이프라인의 모든 출력에 적용합니다. 결과는 Weave UI의 Evals 탭에서 확인할 수 있습니다.
