포도가게의 개발일지
바닥부터 LangChain(0) 본문
LLM을 이용한 서비스를 개발하면서, 시스템 명령어가 너무 많이 포함되게 되었습니다. 이로 인해 명령어들 간에 모순이 발생하거나, 모델이 일부 명령어를 제대로 이해하지 못하게 되었습니다. 결과적으로 프롬프트의 사소한 변화에도 출력이 크게 달라지는 문제가 발생했습니다. 또한, 하나의 요청에서 너무 많은 작업을 처리하려다 보니, 원하는 결과물이 아닌 부정확한 출력들이 생성된 것 같습니다.
필요한점
- 작고 구체적인 단위로 보다 정확한 처리
- 여러 모델을 협력시켜서 최종 아웃풋에 도달
LangChain이란 무엇일까요?
- LangChain은 다양한 AI 애플리케이션을 구축하는 데 유용한 프레임워크로, LLMs(대형 언어 모델)을 다루는 방법과 데이터 처리 및 결과 생성 과정을 최적화하는 다양한 도구를 제공합니다.
Chat models
- message sequence를 입력받아 모델의 응답을 반환하는 LLMs
- 현대의 LLM은 보통 채팅 모델 인터페이스를 통해 접근됩니다. 이 인터페이스는 메시지 목록을 입력받고, 메시지를 출력하는 방식으로 동작합니다.
Context window
- 채팅 모델이 한 번에 처리할 수 있는 최대 입력 시퀀스를 의미합니다.
- 채팅 모델에서 컨텍스트 윈도우는 모델이 대화 중에 얼마나 많은 정보를 “기억”할 수 있는지를 결정합니다. 대화의 일관성을 유지하려면 입력을 컨텍스트 윈도우 내로 관리해야 합니다.
- 입력 크기는 모델이 처리하는 토큰 단위로 측정됩니다. 토큰은 모델이 이해하는 기본 처리 단위입니다.
Tools
- LangChain의 도구 추상화는 Python 함수를 특정 스키마와 연결하여 함수의 이름, 설명, 예상 인수를 정의합니다. 이러한 도구는 채팅 모델에 전달되어 모델이 특정 입력과 함께 특정 함수의 실행을 요청할 수 있게 합니다.
- 함수와 그 스키마를 캡슐화하여 채팅 모델에 전달할 수 있게 해주는 방식입니다.
Tool calling(함수 호출(function calling)
- 모델이 자연어로 응답하는 것이 적합합니다. 하지만 모델이 데이터베이스나 API와 같은 시스템과 직접 상호작용해야 하는 경우에는 어떻게 해야 할까요?
- API는 자주 필요한 페이로드 구조를 가지고 있습니다. 이런 필요로 인해 도구 호출 개념이 등장했습니다. 도구 호출을 사용하면, 모델의 응답이 특정 스키마에 맞게 요청될 수 있습니다.
- 핵심 개념
- 1. Tool 생성: @tool 데코레이터를 사용하여 도구를 생성합니다. 도구는 함수와 해당 함수의 스키마를 연결하는 것입니다.
- 2. Tool 바인딩: 도구는 도구 호출을 지원하는 모델에 연결되어야 합니다. 이를 통해 모델은 도구와 도구가 요구하는 입력 스키마를 인식하게 됩니다.
- 3. Tool 호출: 모델이 적절한 상황에서 도구를 호출하고, 그 응답이 도구의 입력 스키마에 맞는지 확인합니다.
- 4. Tool 실행: 모델이 제공한 인수를 사용하여 도구를 실행할 수 있습니다.
Message
- 채팅 모델에서 입력과 출력을 표현하는 기본 단위, 사용자의 입력과 모델의 응답으로 나뉩니다.
Chat history
- 대화의 흐름을 나타내는 메시지의 순차적인 기록.
Structured output
- 모델의 응답을 주어진 스키마에 맞는 구조화된 방식으로 만드는 기법
Memory
- 대화의 정보를 저장하여 향후 대화에서 사용할 수 있게 하는 기능.
Multimodality
- 텍스트, 오디오, 이미지, 비디오 등 다양한 형태의 데이터를 처리할수 있는 능력.
Streaming
- 결과를 생성하는 대로 실시간으로 표출하는 LangChain streaming api
LangChain Expression Language(LCEL)
- LangChain 구성 요소를 조작하는 구문. 간단한 애플리케이션에서 유용합니다.
Document loaders
- 소스를 문서 목록으로 로드하는 기능
Retrieval
- 데이터 소스에서 쿼리에 대한 답을 찾기 위해 정보를 검색하는 시스템
Text splitters
- 긴 텍스트를 작은 청크로 나우어 세밀한 검색을 가능하게 하는 기법.
Embedding models
- 텍스트나 이미지와 같은 데이터를 벡터 공간에 표현하는 모델
Vector stores
- 벡터와 관련된 메타데이터를 저장하고 효율적으로 검색하는 저장소
Retriever
- 지식 베이스에서 쿼리에 대해 관련 무서를 반환하는 구성 요소
Retrieval Augumented Generation(RAG)
- 외부 지식 베이스를 결합하여 언어 모델을 향상시키는 기법
Agents
- 언어 모델을 사용하여 수행할 일련의 작업을 선택하는 방식, 외부 자원과 상호작용을 할 수 있습니다.
Prompt templates
- 모델 프롬프트의 정적인 부분을 분리하여 재사용, 버전 관리 및 직렬화에 유용한 구성 요소
Output parsers
- 모델의 출력을 후속 작업에 적합한 형식으로 변환하는 역할을 합니다. tool calling 및 구조환된 출력이 일반화되기전에 유용했습니다.
Tracing
- 애플리케이션이 입력에서 출력으로 가는 과정의 단계를 기록하는 작업. 복잡한 애플리케이션에서 디버깅 및 문제 해결에 유용
Evaluation
- AI 애플레케이션의 성능을 평가하는 과정. 모델 응답을 기준에 맞춰 평가하여 품질을 보장합니다.
• AIMessage: AI 모델의 완전한 응답을 나타내는 메시지.
• BaseTool: LangChain에서 도구를 생성하는 기본 클래스.
• Toolkits: 함께 사용할 수 있는 도구들의 모음.
• Vector stores: 벡터 임베딩과 메타데이터를 저장하고 효율적으로 검색하는 저장소.
'Tech' 카테고리의 다른 글
바닥부터 LangGraph(2) (0) | 2024.12.24 |
---|---|
바닥부터 LangChain(1) (0) | 2024.12.20 |
[k8s] Strategy for Gitops (0) | 2024.04.27 |
[K8S] AWS EKS IRSA 동작 (0) | 2024.04.23 |
쿠버네티스(k8s) (0) | 2023.03.19 |