본문 바로가기

전체 글

랭체인 공부 랭체인을 사용하는 이유ChatGPT 같은 애플리케이션을 개발할 때 단순히 대화만 하는 경우에는 OpenAI API 만으로 충분랭체인이 필요한 경우는 LLM에 외부 지식, 계산 능력을 활용하게 하고 싶을 때 사용  FastAPI와 랭체인?랭체인은 프레임워크로 간주FastAPI도 프레임워크 FastAPI와 랭체인을 이용해서 프로젝트를 만든다면 2개의 프레임워크를 사용하는 것FastAPI는 웹 프레임워크로서 API 엔드포인트를 정의하고 HTTP 요청을 처리함랭체인은 자연어처리(NLP)작업을 위한 프레임워크로서 텍스트 분석, 생성 및 기타 NLP 관련 작업을 수행하는 역할 두 프레임워크를 함께 사용할 때 FastAPI는 클라이언트와의 인터페이스 역할을하고, 랭체인은 NLP 작업을 처리하는 백엔드 역할을 하게됨예.. 더보기
[LangChain] 랭체인의 Components(구성요소) - Prompt template(프롬프트 템플릿) 1. prompt tmplate프롬프트 템플릿은 사용자 입력 및 매개 변수를 언어 모델에 대한 지침으로 변환하는 데 도움이 됩니다.이를 통해 모델의 응답을 안내하여 문맥을 이해하고 관련성 있고 일관된 언어 기반 출력을 생성하는 데 도움을 줄 수 있습니다. 1) 프롬프트 템플릿 입력딕셔너리를 입력으로 받으며, 각 키는 프롬프트 템플릿에서 입력할 변수를 나타냅니다. 2) 프롬프트 템플릿 출력프롬프트 템플릿은 프롬프트 값(PromptValue)을 출력합니다.PromptValue는 LLM이나 ChatModel에 전달할 수 있으며, 문자열이나 메시지 목록으로 캐스팅할 수도 있습니다.PromptValue가 존재하는 이유는 문자열과 메시지 간에 쉽게 전환할 수 있도록 하기 위해서입니다. 2. 프롬프트 템플릿 유형1).. 더보기
[LangChain] 랭체인의 Components(구성요소) - Chat model, LLM 1. Langchain의 구성요소 Chat model과 LLMLangChain 모델 유형에는 Chat model과 LLM이 있습니다. 두 클래스는 각각 다른 형태의 입력과 출력을 다루는 언어 모델입니다.이 두 모델은 각기 다른 특성과 용도를 가지고 있기 때문에 사용자 요구사항에 맞추어 선택하여 사용하면 되지만 Chat model 사용을 권장합니다.일반적으로 LLM은 주로 단일 요청에 대한 복잡현 출력을 생성하는데 적합하며, Chat model은 사용자와 상호작용을 통한 연속적인 대화 관리에 적합합니다. 2. Chat models일련의 메시지를 입력으로 사용하고 채팅 메시지를 출력으로 반환하는 언어 모델이며 최신 모델(이전 모델은 일반 텍스트를 사용하는 LLM 컴포넌트)채팅 모델은 대화 메시지에 고유한 역.. 더보기
[LangChain] 랭체인의 Components(구성요소) 1. 랭체인의 ComponentsLangChain은 LLM으로 구축하는 데 유용한 다양한 구성 요소에 대해 확장 가능한 표준 인터페이스와 외부 통합을 제공합니다.일부 구성 요소는 LangChain이 구현하고, 일부 구성 요소는 타사 통합에 의존하며, 다른 구성 요소는 혼합되어 있습니다.  2. 랭체인 Componets 종류Chat modelsLLMsMessagesPrompt templatesExmple selectorsOutput parsersChat historyDocumentsDocument LoadersText splittersEmbedding modelsVector storesRetrieversToolsToolkitsAgentsCallbacks 더보기
[LangChain] 랭체인 표현 언어(LCEL) 1. 랭체인 표헌 언어(LangChain Expression Language)랭체인 표현 언어(LCEL)는 랭체인 구성요소를 체인화하는 선언적 방법LCEL은 가장 간단한 "프롬프트 + LLM" 체인부터, 가장 복잡한 체인까지 코드 변경 없이 프로토타입을 프로덕션에 넣을 수 있도록 설계되었습니다. 2. LCEL을 사용해야 하는 이유1) 최고 수준의 스트리밍 지원LCEL로 체인을 구축하면 첫 번째 토큰에 도달하는 시간(첫 번째 출력 청크가 나올 때까지 경과된 시간)을 최대한 단축할 수 있습니다.일부 체인의 경우 이는 예를 들어 LLM에서 스트리밍 출력 파서로 토큰을 바로 스트리밍하고, LLM 공급자가 원시 토큰을 출력하는 것과 동일한 속도로 파싱된 증분 출력 청크를 다시 받는다는 것을 의미합니다.2) 비동기.. 더보기
[LangChain] 랭체인이란? 1. 랭체인(LangChain)LLM을 사용하여 애플리케이션 생성을 단순화하도록 설계된 언어 모델 통합 프레임워크개발: LangChain: 오픈소스 빌딩 블록 및 구성 요소를 사용하여 애플리케이션 구축생산: LangSmith: 체인 검사, 모니터링 및 평가, 지속적인 최적화와 배포배포: LangServer: 모든 체인을 API로 전환복잡한 작업을 단일 LLM(Lang)으로 해결하기보다 이를 연결(chain)함으로서 복잡하고 어려운 작업을 돕는 프레임 워크사용자가 요구하는 방향에 따라 다양한 모델을 사용하게됨(중개자 역할이라고 볼 수 있음)  2. 랭체인(LangChain)의 구성랭체인은 다음과 같은 오픈 소스 라이브러리로 구성됨 1. LangChain오픈소스 빌딩 블록 및 구성 요소를 사용하여 애플리케이.. 더보기
Builder 패턴을 사용하여 데이터 넣기 vs Repository에서 데이터 조회하여 리스트에 넣기 /* 프로젝트 상세 조회 */ @Override @Transactional public Response getProject(Map headers, ProjectGetRequestDto projectGetRequestDto) { validateUser(headers); Project project = validateProjectAndAuth(headers, Long.valueOf(projectGetRequestDto.getBody().getProjectId())); GetProjectResponseDto getProjectResponseDto = GetProjectResponseDto.builder() .projectInfo(.. 더보기
[Python] 파이썬 프로젝트에서 가상환경 파이썬 프로젝트에서 가상환경을 만드는 것은 필수는 아니지만 강력히 권장되는 관례이다. 1. 의존성 관리각 프로젝트마다 필요한 패키지와 라이브러리가 다를 수 있으므로 프로젝트마다 독립적인 환경을 만들어 서로 다른 프로젝트의 패키지 충돌방지2. 프로젝트 재현성특정 버전의 라이브러리를 설치하여 프로젝트가 특정 환경에서 정확하게 작동하도록 할 수 있어서 나중에 프로젝트를 재현하거나 배포할 때 도움이 됨 3. 시스템 전역 환경 보호가상환경을 사용하지 않으면 시스템 전역에 설치하게 되는데, 이는 다른 프로젝트나 시스템의 다른 응용 프로그램과 충돌을 일으킬 수 있기 때문에 가상환경을 사용하여 이러한 문제를 피할 수 있음 4. 편리한 관리'pip' 과 같은 패키지 관리 도구와 가상환경 도구('venv', 'virtua.. 더보기