LangChain(2):LangSmith와 Question-Answering Auto-Eval

당신이 인공지능(AI) 및 자연어 처리(NLP)에 관심이 있다면, 이 블로그 포스트는 당신을 위한 것입니다. 그동안 자연어 처리의 강력함과 영향력을 알리기 위해 취했던 여정에서, 오늘날 우리는 두 가지 놀라운 도구, Langsmith와 Auto-eval에 대해 소개하게 되어 기쁩니다. Langsmith는 최신 언어 모델의 잠재력을 해방시키는 플랫폼으로, 연구자들과 개발자들이 더 깊고 창조적인 방식으로 AI와 상호작용할 수 있는 다양한 기능을 제공합니다. 이는 LLM(대화형 언어 모델) 체인을 구성하고, 개선하며, 최적화하는 데 필요한 모든 것을 담아내고 있습니다. 한편, Auto-eval은 이러한 체인의 성능을 정밀하게 평가하는 도구로, 사용자가 적용하고자 하는 특정 사례에 대해 가장 효과적인 구성을 찾는 데 도움이 됩니다. 더 나아가, 이는 사용자가 AI 체인의 성능을 직접 테스트하고 평가하는 기회를 제공하며, 이로 인해 AI 체인의 능력을 완전히 이해하고 실제 환경에서 어떻게 작동하는지를 볼 수 있게 됩니다.

이 포스트에서는 이러한 두 도구가 어떻게 작동하는지, 그리고 그들이 어떻게 대화형 언어 모델의 미래를 구축하는 데 기여하고 있는지에 대해 자세히 알아보겠습니다. 인공지능의 능력을 최대한 활용하고 싶은 모든 연구자와 개발자들에게 이 포스트는 놀라운 가능성을 펼쳐줄 것입니다. 지금 바로 이 흥미로운 여행을 시작해봅시다!

LangSmith 소개

LangChain은 LLM 기반 애플리케이션 개발을 최대한 쉽게 만드는 데 목표를 두고 있습니다.

우리는 단순한 프로토타입을 작동시키는 것이 LLM 기반 애플리케이션을 구축하는 주요 장애물일 때 오픈 소스 파이썬 패키지로 시작했습니다. 2022년 말에 Nat Friedman이 “충분한 테링크가 이루어지지 않고 있다”고 트윗한 것을 기억합니다. LangChain 오픈소스 패키지는 이를 해결하기 위해 마련되었고, 지금은 많은 사람들이 다양한 작업에 참여하고 있습니다(Nat도 동의) – 사람들은 내부 회사 문서를 통해 챗봇을 만드는 것부터 Dungeons and Dragons 게임의 AI 던전 마스터를 만드는 것까지 다양하게 만들고 있습니다.

장애물이 이제 바뀌었습니다. 애플리케이션의 원형을 LangChain 코드 ~5줄로 쉽게 만들 수 있지만, 애플리케이션을 원형에서 생산으로 전환하는 것은 여전히 교묘하게 어렵습니다. 우리가 오늘 볼 수 있는 주요 문제는 애플리케이션의 성능 – 약 30%의 시간 동안 작동하는 것이 트위터 데모에는 충분하지만, 생산에는 훨씬 부족합니다.

오늘, 우리는 원형과 생산 사이의 격차를 줄이는 데 도움이 될 LangSmith라는 플랫폼을 소개합니다. 이것은 LLM의 복잡성을 관리하고 그 힘을 이용할 수 있는 제품을 만들고 반복하는 데 설계되었습니다.

LangSmith는 현재 폐쇄 베타 상태에 있습니다. 그래서 만약 당신이 디버깅, 테스팅, 평가, 그리고 당신의 LLM 애플리케이션을 모니터링하는 강력하고 통합된 시스템을 찾고 있다면, 여기에 가입하세요.

우리는 어떻게 여기까지 왔나요?

LLM의 확률적인 특성을 고려하면, “이 모델들에서 무슨 일이 일어나고 있는가?”라는 간단한 질문에 답하는 것은 쉽지 않고, 현재로서는 그럴 수 있는 방법이 전혀 없습니다. 그냥 그들을 신뢰하게 만드는 것조차도 그렇습니다. 우리가 듣는 개발자들은 같은 장애물에 부딪히고 있습니다(우리 팀에도 마찬가지입니다):

LLM 호출에 대한 최종 프롬프트가 정확히 무엇인지 이해하기 (모든 프롬프트 템플릿 포맷팅 이후, 이 최종 프롬프트는 길고 혼란스러울 수 있습니다) 각 단계에서 LLM 호출에서 정확히 무엇이 반환되는지 이해하기 (아무런 방식으로 후처리 또는 변형되기 전에) LLM (또는 다른 자원)에 대한 호출의 정확한 순서를 이해하고, 어떻게 연결되는지 이해하기 토큰 사용 추적 비용 관리 지연 시간 추적 (및 디버깅) 그들의 애플리케이션을 평가할 좋은 데이터셋이 없음 그들의 애플리케이션을 평가할 좋은 측정 항목이 없음 사용자가 제품

디버깅 동작 LangSmith는 모델의 모든 단계에서 입력과 출력을 완전히 볼 수 있게 해줍니다. 이를 통해 팀들은 새로운 체인과 프롬프트 템플릿을 실험하고, 예상치 못한 결과, 오류 또는 지연 문제의 원인을 찾는 것이 쉬워집니다. 또한 지연과 토큰 사용을 드러내어 문제를 일으키는 호출을 식별할 수 있도록 돕습니다.

우리는 또한 UI에서 예제를 변경하고 다시 실행하기 쉽게 했습니다. 나쁜 예제의 로그를 가져와서 OpenAI 놀이터에 붙여넣어 좋은 결과를 얻을 때까지 프롬프트를 조정하는 팀들을 보고 이 기능을 추가했습니다. 이제 버튼 클릭 한 번으로 로그에서 놀이터로 이동하여 활발하게 편집할 수 있습니다. 이 기능은 현재 OpenAI와 Anthropic 모델 모두 지원되며, 더 많은 지원이 곧 추가될 예정입니다. 또한 일반적인 체인에 대해 이를 지원하는 작업도 진행 중입니다.

이 모델 성능에 대한 깊은 통찰력은 복잡한 응용 프로그램을 개발하는 팀에게 특히 도움이 되었습니다. LangSmith는 Streamlit와 Snowflake가 데이터에 대한 질문에 지능적이고 신뢰할 수 있는 답변을 제공할 수 있는 에이전트를 구현하는 데 도움을 주었습니다.

“LangChain은 Snowflake에서 지능형 에이전트를 프로토타입으로 만드는 데 큰 도움이 되었습니다.”라고 Snowflake의 제품 부문 이사인 Adrien Treuille가 말했습니다. “LangSmith는 통합하기 쉬웠으며, 중립적인 오픈 소스 API가 구현에 맞게 매우 유연하게 적응할 수 있도록 만들었습니다.”라고 Snowflake의 고급 소프트웨어 엔지니어인 Richard Meng이 덧붙였습니다.

보스턴 컨설팅 그룹(BCG)은 이와 같은 인프라에 의존하여 LangChain의 프레임워크 위에 매우 맞춤화되고 성능이 뛰어난 일련의 응용 프로그램을 만들었습니다.

“우리는 초기 LangChain 디자인 파트너이자 LangSmith 사용자 중 하나인 것을 자랑스럽게 생각합니다.” 라고 BCG의 관리 이사 겸 파트너인 Dan Sack이 말했습니다. “LangSmith의 사용은 우리 고객에게 생산 준비가 된 LLM 응용 프로그램을 제공하는 데 핵심적인 역할을 했습니다. LangSmith의 통합 용이성과 직관적인 UI는 우리가 평가 파이프라인을 매우 빠르게 실행하게 했습니다. 또한, 복잡한 에이전트 프롬프트 체인을 추적하고 평가하는 것이 훨씬 쉬워져, 프롬프트를 디버그하고 세밀하게 조정하는 데 필요한 시간을 줄이고, 우리가 배포로 이동할 수 있는 자신감을 줬습니다.”

디버깅 작업의 또 다른 예로, 우리는 최근에 출시된 LangChain 과정에서 학습자들에게 LangSmith에 대한 접근 권한을 제공하기 위해 DeepLearningAI와 파트너십을 맺었습니다. 이를 통해 학생들은 체인의 정확한 호출 순서와 체인에서 각 단계의 입력과 출력을 정확하게 이해할 수 있습니다. 학생들은 체인, 프롬프트, 그리고 LLM이 무엇을 하는지 정확하게 이해할 수 있으며, 이는 그들이 새롭고 더 정교한 응용 프로그램을 만드는 방법을 배우면서 직관력을 기르는 데 도움이 됩니다.

테스트 우리가 개발자들로부터 보는 주요 질문 중 하나는: “이 체인/프롬프트를 변경하면 출력에 어떤 영향을 미치나요?” 이 질문에 가장 효과적으로 대답하는 방법은, 당신이 신경 쓰는 예제들의 데이터셋에 새로운 체인이나 프롬프트를 적용하고 결과를 보는 것입니다. 그리고 이를 위해 우리는 테스트 기능을 만들었습니다.

테스트에서, 개발자들은 프롬프트/체인의 변경 사항이 결과에 미치는 영향을 빠르게 볼 수 있습니다. 이러한 테스트는 데이터셋에 있는 모든 예제에 대해 실시간으로 실행됩니다. 테스트 결과는 종합적인 통계, 원시 응답, 그리고 체인의 각 단계에서의 입출력을 포함합니다.

이 기능은 개발자가 더 효과적인 체인과 프롬프트를 빠르게 실험하고 찾아낼 수 있게 하고, 그 결과를 기존 버전과 비교할 수 있게 합니다. 이로 인해 팀들은 변화에 대한 피드백을 즉시 얻을 수 있어, 개발 주기가 빨라집니다.

“테스트는 LangSmith에서 가장 유용한 기능 중 하나입니다.”라고 OpenAI의 고급 연구 과학자인 Jan Leike는 말합니다. “테스트를 사용하면 체인이나 프롬프트를 업데이트 할 때마다 즉각적인 피드백을 얻을 수 있으며, 이는 개발 주기를 빠르게 만드는 데 큰 도움이 됩니다.”

계획 LangSmith는 아직 초기 단계에 있지만, 우리는 그것이 OpenAI와 다른 큰 플레이어들이 어떻게 대화형 언어 모델을 이용하는 방식을 혁신적으로 바꿀 수 있는 도구가 될 수 있을 것이라는 확신을 가지고 있습니다. 우리는 이를 통해 개발자들이 자신들의 솔루션을 빠르고 효과적으로 구축하고 테스트할 수 있도록 도와주고 싶습니다.

앞으로 몇 달 동안, 우리는 개발자가 더 나은 체인과 프롬프트를 만들 수 있도록 도움이 될 수 있는 더 많은 기능을 추가할 예정입니다. 예를 들어, 우리는 기존 체인과 프롬프트를 쉽게 재사용할 수 있는 기능, 그리고 다양한 체인과 프롬프트 사이에서 더 쉽게 전환할 수 있는 기능을 추가할 계획입니다.

또한, 우리는 LangSmith를 통해 모델과 대화할 수 있는 더 많은 방법을 제공하고자 합니다. 이는 다양한 응용 프로그램을 만들 수 있도록 기존 API를 확장하고, 더 다양한 형태의 입력과 출력을 처리할 수 있도록 하는 것을 포함합니다.

LangSmith의 성공은 개발자 커뮤니티와 협업하는 데 달려 있습니다. 따라서 우리는 앞으로 개발자 커뮤니티의 피드백을 적극적으로 수렴하고자 합니다. 우리는 이를 통해 개발자들이 효과적으로 문제를 해결하고, 그들이 만든 솔루션을 확장하고 향상시킬 수 있도록 돕는 것이 LangSmith의 주요 목표라는 것을 잊지 않고 있습니다.

LangSmith를 사용해 보실 분들은 저희 웹사이트에 방문하시어 무료로 시험해 보실 수 있습니다.

Question-Answering Auto-Eval

LLM 운영 플랫폼들, 예를 들어 LangChain,은 LLM 컴포넌트들(예: 모델, 문서 검색기, 데이터 로더 등)을 체인으로 손쉽게 조립하는 것을 가능하게 합니다. 질문-답변(Question-Answering)은 이러한 체인의 가장 인기 있는 응용 중 하나입니다. 하지만 어떤 파라미터들(예: 청크 크기) 또는 컴포넌트들(예: 모델 선택, VectorDB)이 최상의 QA 성능을 내는지 항상 명확하게 결정하기는 쉽지 않습니다.

여기에서, 우리는 QA 체인을 평가하는 간단한 도구인 auto-evaluator를 소개하고자 합니다(코드는 이곳에서 확인하실 수 있습니다).

사용자에게 관심 있는 문서들의 집합을 입력하도록 요청합니다 LLM(GPT-3.5-turbo)을 사용하여 이러한 문서들로부터 자동으로 질문-답변 쌍을 생성합니다 지정된 UI-선택 구성들의 집합을 가진 질문-답변 체인을 생성합니다 각 질문에 대한 답변을 생성하기 위해 체인을 사용합니다 LLM(GPT-3.5-turbo)을 사용하여 답변에 대한 점수를 부여합니다 다양한 체인 구성들을 통해 점수를 조사합니다

사용자 입력

이는 사용자가 문서 집합을 제공할 수 있는 Streamlit 앱으로 구현되어 있습니다. 선택적으로, 사용자는 해당 질문-답변 쌍의 집합도 제공할 수 있습니다(예시는 여기에서 확인하실 수 있습니다). 만약 사용자가 이를 제공하지 않으면, 앱은 QAGenerationChain을 사용하여 평가 세트를 자동 생성합니다. 이는 무작위 청크에서 질문-답변 쌍을 선택하는 프롬프트를 사용합니다.

체인

UI에는 QA 체인을 생성하는 데 사용될 수 있는 다양한 조정 가능한 요소들이 있습니다. 예를 들어, 더 새로운 문서 검색기(예: SVM)를 선택하거나 벡터 저장소에서 유사성 검색을 사용할 수 있습니다. 여러 가지 문서 분할 방법, 분할 크기, 분할 중복을 선택할 수 있습니다. 또한, 검색된 문서들로부터 질문에 대한 답변을 최종적으로 요약하는데 사용되는 LLM을 선택할 수 있습니다. 이러한 다른 부분들은 Langchain을 사용하여 평가를 위한 체인으로 빠르고 쉽게 조립될 수 있습니다.

점수 매기기

LLM(GPT-3.5-turbo)을 사용하여 검색된 문서들의 품질을 점수 매기는 데 사용합니다. 이 아이디어는 LLama-Index의 Jerry Liu와의 토론에서 영감을 받았습니다(여기). 우리는 또한 LLM을 사용하여 답변의 품질을 평가 세트에 대비하여 점수 매기는 데 사용합니다. 두 경우 모두에서 우리는 프롬프트를 노출합니다. 사용자들은 이를 쉽게 엔지니어링할 수 있습니다. 우리는 또한 결과를 사람이 검토할 수 있도록 노출합니다. 설명적 프롬프트를 사용하여 LLM 등급 평가자에게 그 평가의 자세한 설명을 요청할 수 있습니다.

비교

우리는 각 테스트에서 평균 점수(답변 및 검색)에 대한 모델 대기 시간(초)의 산점도 및 테이블을 이용하여 실험 결과를 쉽게 비교할 수 있도록 모아둡니다.

향후 방향

피드백과 기여는 언제나 환영입니다. 예를 들어, 우리는 다른 검색기(예: LLama-Index)와 다른 모델들(예: 다양한 HuggingFace 모델들)을 포함하고 싶습니다. 우리는 평가 과정의 여러 단계에서의 성능(특히, 대기 시간)을 개선하고, 이를 무료로 호스팅되는 도구로 제공하고 싶습니다(일부 사용자들은 오늘날 GPT-4 또는 Claude에 접근할 수 없을 것입니다). 마지막으로, 우리는 이를 다른 작업들(예: 채팅)로 확장하고, 사용자가 지정한 목표(예: 채팅 또는 QA 목표)에 따라 최적의 체인 조립 과정을 자동화(예: 에이전트 사용)하고 싶습니다.

관련 링크

Langsmith
함께 공부하기

답글 남기기