강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của codehater
codehater

câu hỏi đã được viết

Phát triển ứng dụng LLM sử dụng RAG (feat. LangChain)

5.1 Đánh giá LLM sử dụng LangSmith

[5.1 강의] LLM Evaluator에 Upstage를 사용하는 방법 + 변경된 Langsmith Docs를 참고하여 구현하는 방법 공유

Viết

·

52

·

Đã chỉnh sửa

0

안녕하세요. 강의 수강 중 중간중간에 일이 생겨 이제서야 빠르게 복습하고 다시 수강하고 있는 수강생입니다.

 

저는 강의에서 사용되었던 코드를 실행했을 때, 평가 실행 시 "KeyError" 오류가 발생되었습니다. 많은 분들께서 따라하는 과정에서 저와 같은 오류를 마주하고 Langsmith Docs를 열어보셨을 것 같습니다.

 

다만 강의에서 다루는 코드와 현재 시점에 Langsmith Docs에 작성된 튜토리얼 코드는 많은 부분이 변경되었기에 현재 시점의 Langsmith Docs에서 다루는 LLM Evaluator 구현 시 포인트와 함께 Upstage를 사용한 방법을 정리하여 공유드리려합니다.

 

참고로 현재 시점의 Langsmith Docs는 아래 링크의 문서이며, 이하 설명에서는 Langsmith Docs를 Docs로 부르겠습니다.

https://docs.langchain.com/langsmith/evaluate-rag-tutorial

 

1. Evaluator 종류

- 현재 Doc에서는 다음과 같은 평가 지표에 대한 예시를 제공하고 있습니다.

1) 정확성(Correctness): LLM의 답변이 실제 답변과 얼마나 유사하고 정확한지 측정

2) 관련성(Relevance): LLM의 답변이 사용자의 질문과 얼마나 관련있는지 측정

3) 근거성(Groundedness): LLM의 답변이 검색된 데이터의 맥락과 얼마나 일치하는지 측정

4) 검색 관련성(Retrieval relevance): 입력된 질문과 검색된 데이터는 얼마나 관련있는지 측정

 

2. 데이터 셋 형식 변경

- 현재의 Docs에서는 다음과 같은 데이터 셋 형식을 사용하고 있습니다.

# Define the examples for the dataset
examples = [
    {
        "inputs": {"question": "How does the ReAct agent use self-reflection? "},
        "outputs": {"answer": "ReAct integrates reasoning and acting, performing actions - such tools like Wikipedia search API - and then observing / reasoning about the tool outputs."},
    },
    ...
]

 

- 따라서 강의에서 제공된 데이터 셋을 다음과 같이 변경할 수 있습니다. Docs의 Evaluator에서는 'contexts' 를 사용하진 않는 것 같지만 기존 데이터 셋의 내용에 맞추어 수정한 점은 참고바랍니다.

examples = [
    {
        "inputs": {"question": "제1조에 따른 소득세법의 목적은 무엇인가요?"},
        "outputs": {"answer": "소득세법의 목적은 소득의 성격과 납세자의 부담능력에 따라 적정하게 과세함으로써 조세부담의 형평을 도모하고 재정수입의 원활한 조달에 이바지하는 것입니다."},
        "metadata": {"contexts": "제1조(목적) 이 법은 개인의 소득에 대하여 소득의 성격과 납세자의 부담능력 등에 따라 적정하게 과세함으로써 조세부담의 형평을 도모하고 재정수입의 원활한 조달에 이바지함을 목적으로 한다."},
    },
    ...
]

 

3. Upstage Model을 사용하는 방법

- 현재의 Docs에서는 각 단계에서 LLM을 선언하는 부분에서 다음과 같이 'ChatOpenAI()' 함수를 사용하고 있습니다.

# Rag-Bot
from langchain_openai import ChatOpenAI
...
llm = ChatOpenAI(model="gpt-4.1", temperature=1)

# Evaluators
grader_llm = ChatOpenAI(model="gpt-4.1", temperature=0).with_structured_output(
    ...
)

 

- 따라서 다음과 같이 'ChatUpstage' 라이브러리를 import한 후, 'ChatOpenAI()' 함수를 사용하는 부분을 'ChatUpstage()' 함수로 변경해주면 됩니다. 'Rag-Bot' 코드를 작성하는 셀에서 'ChatUpstage' 라이브러리를 import한다면 이하 코드에서는 일일이 import하지 않아도 되며, 'ChatOpenAI()' 함수에서 사용하던 'temperature=1' 인자는 제거해도 무방했습니다.

 # Rag-Bot
from langchain_upstage import ChatUpstage
...
llm = ChatUpstage(model="solar-pro3")

# Evaluators
grader_llm = ChatUpstage(model="solar-pro3").with_structured_output(
    ...
)

 

제가 수정한 전체 코드, 코드별 설명과 변경된 데이터 셋 파일은 아래 링크에 업로드해두었으며, 참고하시면 좋을 것 같습니다.

https://github.com/C0deH4ter/llm-application/tree/main/5.1%20Upstage%20Challenge

vector-databasellmlangchainragopenai-api

Câu trả lời 2

0

jasonkang님의 프로필 이미지
jasonkang
Người chia sẻ kiến thức

상세하게 공유해주셔서 감사합니다!

공유해주신 내용은 자주 묻는 질문에 등록해두겠습니다.

추가로 이번달 안에 AI 에이전트 평가 강의를 출시할 예정입니다. 강의 소식으로 안내 드리겠습니다!

0

안녕하세요, 인프런 AI 인턴입니다. CodeHater님!

강의 중 발생하신 “KeyError” 오류와 Langsmith Docs의 변경 사항에 대해 공유해 주셔서 감사드립니다. 말씀하신 것처럼, Langsmith의 최신 문서에서는 데이터 형식과 일부 코드 사용법이 변화되었습니다. 이러한 변화는 강의를 수강하며 실습하는 데 어려움을 겪을 수 있으므로, 이를 해결하기 위해 중요한 포인트를 정리하여 제공해주신 부분은 다른 수강생들에게 많은 도움이 될 것입니다.

수정된 주요 사항

  1. 데이터 셋 형식 변경

    • 최신 Langsmith Docs에 따라, 데이터 셋 형식을 개선했습니다. “inputs”와 “outputs” 구조로 변환하여, 코드 실행 시 데이터 구조에 따른 오류를 방지할 수 있습니다.
  2. Upstage 모델 사용

    • Langsmith의 예제 코드에서 OpenAI 대신 ChatUpstage를 사용하는 방법에 대해 설명하셨습니다. 이는 Upstage 기반의 모델을 활용하려는 수강생들에게 유용한 정보입니다. 특히, OpenAI의 ChatOpenAI() 함수를 ChatUpstage()로 대체하는 자세한 설명은 실습 환경에서 발생할 수 있는 혼란을 줄여줄 것입니다.

    • temperature 인자를 제거하면, Upstage의 ChatUpstage와 모델의 기본 설정에 의해 동작합니다. 이는 OpenAI와 동일한 스타일이므로, 큰 차이가 없으리라 예상됩니다.

전체 코드 및 예제 제공

  • 구체적인 적용 방법에 대한 코드와 데이터셋을 제공하신 GitHub 링크는 실습에 도움을 줄 것입니다. 예시 코드와 설명 문서를 함께 제공하는 것은 큰 도움이 되며, 다른 학생들이 클론하여 직접 테스트해볼 수 있어 유익합니다.

  • 좀 더 다양한 유사 질문 및 답변: Langsmith Docs의 변경점에 대한 다양한 사용자 경험은 커뮤니티에서 중요한 정보입니다. 다른 수강생들도 이러한 업데이트에 대한 정보를 공유하고 해결책을 얻기 위해 참고할 수 있으니, 솔루션을 널리 공유해 주시면 좋겠습니다.

추가적인 관련 질문 링크들:

이 답변이 CodeHater님의 복습과 강의 수강에 도움이 되길 바랍니다. 다른 질문이 있거나 추가적인 도움이 필요하시다면 언제든지 말씀해 주세요!

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của codehater
codehater

câu hỏi đã được viết

Đặt câu hỏi