포도가게의 개발일지

바닥부터 LangSmith(6) 본문

Tech

바닥부터 LangSmith(6)

grape.store 2025. 1. 15. 17:33
반응형

LLM Tracing

- LLM 호출 및 애플리케이션 로직의 다른 부분에 대한 가시성 확보.

- LLM을 chaining한것에 동작을 자세히 살펴볼 수 있어서 좋았던 것 같다. 또한 playground를 통해서 prompt를 빠르게 수정해보며 output이 어떻게 나오는지 빠르게 확인해볼 수 있어서 좋았다.

Evaluate

- 모델, 프롬프트 및 아키텍처 간의 결과를 비교하여 최적의 방식을 식별.

- prompt 개선과 모니터링을 빠르게 하게되면서 evaluate이란 기능에도 관심이 많이 생겼습니다.

  • 데이터셋 생성
  • 성능측정 지표 정의
  • 프롬프트 평가 실행
  • 결과 수동 비교
  • 결과 추적
  • ci/cd 통합.
  1. Schema
    1. 최소한 애플리케이션의 입력값을 포함해야합니다.
    2. 기대 출력값도 정의하는것이 좋음. 예상되는 출력값
    3. 평가는 반복적인 과정이므로 , 점진적 개선하면됨.
  2. 데이터 포인트
    1. 고려해야할 엣지 케이스를 충분히 다룰 수 있는지
    2. 초기에는 10~50개로도 충분
    3. 점진적으로 추가하자
  3. 데이터포인트 수집법
    1. 초기에는 10~20개 직접 수집
    2. 이후에는 실제 사용자 피드백 기반으로 문제 발견 및 데이터셋에 추가
    3. 합성데이터를 사용하기보단 초기에는 직접 라벨링이 낫다

- 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