![[Django] DTL(Django Template Library)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FQRy1d%2FbtsKyG4ji6z%2FAAAAAAAAAAAAAAAAAAAAAMXC9EGCMST4iqcnJmmWlckw8RD7-MqWVWKzM09FMjUD%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DvizwVsd%252BOLIwKTJjZnhJURaqQ%252Bw%253D)
Django Template Language (DTL) 이해하기Django Template Language(DTL)는 Django에서 템플릿을 작성할 때 사용하는 언어임. HTML에 데이터를 삽입하여 동적 웹 페이지를 만들 수 있도록 도와줌.DTL의 기본 구조DTL은 템플릿 파일에서 변수 출력, 조건문, 반복문 등을 지원함. 일반적인 HTML 파일에 {{ }}와 {% %} 문법을 통해 파이썬 코드를 삽입하는 방식임.1. 변수 출력{{ }} 구문을 사용하여 변수 값을 출력할 수 있음. 예를 들어, 뷰에서 전달된 변수 name을 출력하려면 아래와 같이 작성함.Hello, {{ name }}!2. 필터 사용DTL은 텍스트나 변수에 대해 다양한 필터를 제공함. 예를 들어, 문자열을 대문자로 변환하는 upper ..
![[LangChain] Cache](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FydqH5%2FbtsKzzb7J6b%2FAAAAAAAAAAAAAAAAAAAAACiSkfO69fqGgoXj4qNb26ECGz9J-aE-eFr-wRrPTaOl%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D5ovJwJQn76Nn3a6uIGYSFsY9mvQ%253D)
캐싱(Caching)LangChain은 LLM을 위한 선택적 캐싱 레이어를 제공한다.이는 두 가지 이유로 유용하다.동일한 완료를 여러 번 요청하는 경우 LLM 공급자에 대한 API 호출 횟수를 줄여 비용을 절감할 수 있다.LLM 제공업체에 대한 API 호출 횟수를 줄여 애플리케이션의 속도를 높일 수 있다.InMoeryCache메모리 공간을 활용한 캐싱단점: 서버가 재시작되거나 메모리에서 사라지면 캐시 데이터도 함께 소실됨.%%timefrom langchain.globals import set_llm_cachefrom langchain.cache import InMemoryCacheset_llm_cache(InMemoryCache())response = chain.invoke({"country":"한국"..
![[LangChain] OutputParser 종류](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FxxUTA%2FbtsKuxZQsGi%2FAAAAAAAAAAAAAAAAAAAAAEPTlx5r042ypfXp1dJng1FGiG7rxow-FmhBY2_uR5-S%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DoImNC12RtRugburWtDPJqfzsp50%253D)
LangChain Output Parser: 다양한 출력 파서 설명LangChain 라이브러리에서는 다양한 형식의 출력을 다루기 위한 여러 종류의 Output Parser를 제공함. Output Parser는 AI 모델의 출력 결과를 구조화된 형식으로 변환하는 역할을 하며, 상황에 따라 적절한 Parser를 선택하여 사용할 수 있음. 아래에서는 LangChain에서 제공하는 주요 Output Parser들을 소개하고, 각 Parser의 특징과 사용 사례를 설명함.1. PydanticOutputParserPydanticOutputParser는 Pydantic 모델을 활용하여 출력 결과를 검증하고 구조화하는 Parser임. Pydantic은 Python의 데이터 유효성 검사 라이브러리로, 모델을 정의하여 데..
![[LangChain] RAG 프로세스](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FddDjOn%2FbtsKm7mRTh6%2FAAAAAAAAAAAAAAAAAAAAAIGpLawgJ15TGMaVgFi7M3ZVpgPQbYSE6qyY0aNFRUtb%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DeWt9HXpIt0GavX8W0O40jhxJJO4%253D)
LangChain을 이용한 RAG 프로세스 구현LangChain을 활용하여 RAG 프로세스를 구현하는 방법을 단계별로 설명함. LangChain 라이브러리와 함께 다양한 모듈과 메서드를 이용해 문서 로드, 분할, 임베딩 생성, 검색, 프롬프트 및 모델 생성 등의 과정이 포함됨.1. 문서 로드 (Load)LangChain의 PyMuPDFLoader를 이용하여 PDF 파일과 같은 문서를 로드함. 이 모듈을 사용하면 다양한 형식의 문서를 쉽게 불러올 수 있음.from langchain_community.document_loaders import PyMuPDFLoader# PDF 문서 로드 예시loader = PyMuPDFLoader("sample.pdf")documents = loader.load()2. 분할..
![[FastAPI] FastAPI 사용하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fba3v9F%2FbtsKlHBq8zP%2FAAAAAAAAAAAAAAAAAAAAAFHkCQBkeX9rYCJNTsQr-Tp5JOgkKnCxOkR5OOypqJli%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DIReSSYlQdmISnVRarNUug22KgpM%253D)
FastAPI 사용하기FastAPI는 Python으로 간단하게 API 서버를 구축할 수 있도록 도와주는 프레임워크로, Pydantic을 활용해 데이터 유효성 검사를 수행함. 이번 글에서는 FastAPI와 Pydantic을 이용한 간단한 CRUD API 서버를 구현하고, 각 기능과 Swagger를 이용한 문서화에 대해 설명함.코드 예제from typing import Optionalfrom fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()# 데이터 저장소 역할을 하는 딕셔너리items = { 0: {"name": "bread", "price": 1000}, 1: {"name": "water", "price": 500}, ..
![[LangChain] load prompt 파일 형식](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FyAUd0%2FbtsKlcIucBZ%2FAAAAAAAAAAAAAAAAAAAAAPRoEXpkg-72js-_MNGl3bvt9HqoN62qFZD08xNlCZAe%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DMOPkiRnbrRgXSqma3me73%252BFdXfs%253D)
LangChain - load_prompt 함수LangChain의 load_prompt 함수를 사용하여 다양한 파일 형식(YAML, JSON, .txt, .py)으로 프롬프트 템플릿을 불러오고, 이를 채팅 모델에서 사용하는 방법을 설명합니다. load_prompt는 지정된 파일 형식에 맞추어 템플릿을 동적으로 로드할 수 있는 기능을 제공함.1. YAML 파일 예시YAML 파일 형식으로 템플릿을 정의하고, load_prompt로 불러올 수 있음.파일명: template.yamltemplate: | {name}님, 오늘의 날씨는 {weather}입니다. 좋은 하루 보내세요!variables: - name - weatherPython 코드에서 사용하기:from langchain_core.prompts..
![[LLM] Zero, One, Few Shot](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcLa5V2%2FbtsKhQrbpEB%2FAAAAAAAAAAAAAAAAAAAAADdjlj0irlosi4nYq0twn8jC9REhgPLbeSJEOJxLS5TC%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DN839oHr3eu9sKDJj3qTAm9WNDRQ%253D)
LLM에서 Zero-shot, One-shot, Few-shot 학습대규모 언어 모델(LLM, Large Language Model)에서 흔히 언급되는 학습 방식으로 Zero-shot, One-shot, Few-shot 학습이 있음. 이 방식들은 주어진 과제에서 모델이 얼마나 많은 예시를 보고 학습해야 하는지를 기준으로 나누어지며, 각각의 개념을 아래에서 자세히 설명함.1. Zero-shot 학습Zero-shot 학습은 모델이 특정 과제에 대해 아무런 예시를 제공받지 않은 상태에서 바로 문제를 해결하는 능력을 말함. 이는 LLM이 방대한 데이터로 사전 학습되었기 때문에 새로운 과제에 대해 일반화된 지식을 적용할 수 있다는 것을 의미함.예시: 모델에게 "한글로 번역해보세요: 'The sky is blue...
![[LangChain] Output Parser](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcIKFKb%2FbtsKeBWZxCz%2FAAAAAAAAAAAAAAAAAAAAAExehCHb2xKSGlFoM702TnHM6c_OPyWX5sXdJrbXijwm%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DShAGFARjTHzYRijNDsd5LgfHYi8%253D)
LangChain Output Parser에 대한 설명1. Output Parser란?Output Parser는 AI 모델로부터 나온 비정형 텍스트 응답을 받아서 구조화된 데이터로 변환하는 역할을 함. 예를 들어, 모델이 생성한 자연어 응답을 특정 JSON 형식, 리스트, 테이블 등으로 변환할 수 있음.2. StrOutputParser 사용 예시LangChain에서 StrOutputParser는 단순 문자열 형식의 출력을 처리하는 Parser임. 아래는 StrOutputParser를 사용하여 요리 레시피를 파싱하는 예시임:from langchain.prompts import PromptTemplatefrom langchain_core.output_parsers import StrOutputParser# ..