포도가게의 개발일지
바닥부터 LangSmith(6) 본문
반응형
LLM Tracing
- LLM 호출 및 애플리케이션 로직의 다른 부분에 대한 가시성 확보.
- LLM을 chaining한것에 동작을 자세히 살펴볼 수 있어서 좋았던 것 같다. 또한 playground를 통해서 prompt를 빠르게 수정해보며 output이 어떻게 나오는지 빠르게 확인해볼 수 있어서 좋았다.
Evaluate
- 모델, 프롬프트 및 아키텍처 간의 결과를 비교하여 최적의 방식을 식별.
- prompt 개선과 모니터링을 빠르게 하게되면서 evaluate이란 기능에도 관심이 많이 생겼습니다.
- 데이터셋 생성
- 성능측정 지표 정의
- 프롬프트 평가 실행
- 결과 수동 비교
- 결과 추적
- ci/cd 통합.
- Schema
- 최소한 애플리케이션의 입력값을 포함해야합니다.
- 기대 출력값도 정의하는것이 좋음. 예상되는 출력값
- 평가는 반복적인 과정이므로 , 점진적 개선하면됨.
- 데이터 포인트
- 고려해야할 엣지 케이스를 충분히 다룰 수 있는지
- 초기에는 10~50개로도 충분
- 점진적으로 추가하자
- 데이터포인트 수집법
- 초기에는 10~20개 직접 수집
- 이후에는 실제 사용자 피드백 기반으로 문제 발견 및 데이터셋에 추가
- 합성데이터를 사용하기보단 초기에는 직접 라벨링이 낫다
- RAG 평가
- 정확성
- RAG chain의 응답이 기준 답변과 얼마나 유사하고 정확한지를 측정
- 레퍼런스 답변이 제공되어야함
- LLM을 평가자로 사용하여 정확성평가
- 관련성
- 생성된 응답이 초기 사용자 입력을 얼마나 잘 반영하는지
- 기준답변이 필요없으며, 응답을 입력질문과 비교
- LLM을 평가자로 사용하여 응답의 관련성, 유용성 등을 평가
- 근거성
- 생성된 응답이 검색된 문맥과 얼마나 일치하는지 측정
- 기준 답변이 필요하지 않으며, 응답을 검색된 문맥과 비교
- LLM 평가자로 사용하여 faithfulness, hallucination 여부 평가
Back Testing
- back testing은 과거 데이터를 사용하여 애플리케이션의 새로운 버전을 평가하고, 새로운 출력 결과를 기존 출력 결과와 비교하는 과정을 의미합니다.
실습해볼려하는데 langsmith ui로는 너무 어려운거같다..
from datasets.config import create_clients
from datasets.evaluator import accuracy
from datasets.target import create_target
from datasets.dataset_manager import create_example_data, setup_dataset
def main():
# Initialize clients
langsmith_client, openai_client = create_clients()
# Create target function
target = create_target(openai_client)
# Setup dataset
inputs, outputs = create_example_data()
dataset = setup_dataset(langsmith_client, inputs, outputs)
# Run evaluation
experiment_results = langsmith_client.evaluate(
target,
data=dataset.name,
evaluators=[
lambda outputs, reference_outputs: accuracy(openai_client, outputs, reference_outputs),
],
experiment_prefix="first-eval-in-langsmith",
max_concurrency=2,
)
return experiment_results
if __name__ == "__main__":
main()
Improve Prompt
- 더 정확하고 신뢰할 수 있는 결과를 얻기 위해 프롬프트를 신속히 개선.
- playgroud를 통해 llm에 넘어가는 prompt를 즉각적으로 수정 할 수 있었고 example의 적용유무에 따른 결과값개선을 빠르게 확인할수있었다.
- 또한 prompt를 commit하여 prompt 변화에 따른 결과를 빠르게 모니터링할수있었다.
'Tech' 카테고리의 다른 글
바닥부터 LangGraph(5) (2) | 2024.12.26 |
---|---|
바닥부터 LangChain(4) (0) | 2024.12.26 |
바닥부터 LangFlow(3) (0) | 2024.12.24 |
바닥부터 LangGraph(2) (0) | 2024.12.24 |
바닥부터 LangChain(1) (0) | 2024.12.20 |
Comments