Development 8

코딩 테스트에서 자주 사용하는 Python 내장 함수 및 라이브러리

1. collection.Countercollection.Counter는 파이썬에서 해시 가능한 객체들의 개수를 세어 딕셔너리 형태로 저장하는 컬렉션 클래스입니다. 각 요소는 키가 되고 그 요소의 출현 횟수가 값이 됩니다.from collections import Counter# 리스트, 문자열 또는 다른 이터러블 객체를 Counter에 전달합니다.data = ['사과', '바나나', '사과', '오렌지', '바나나', '사과']# Counter 객체 생성count = Counter(data)# 결과 출력print(count)# 특정 요소의 개수 확인print(f"'사과'의 개수: {count['사과']}")Counter({'사과': 3, '바나나': 2, '오렌지': 1})'사과'의 개수: 3 2. s..

Development 2025.12.07

LangChain Expression Language(LCEL) 사용 방법 및 예시

LangChain Expression Language(LCEL)은 LangChain에서 여러 컴포넌트(prompt, LLM, 파서, 후처리 함수 등)를 “파이프(pipe)” 형태로 간결하게 연결해 주는 표현 방식입니다. 2023년 하반기부터 LangChain에서 체인(chain) 구성 방식에서 LCEL을 활용하는 경향이 커지고 있습니다. 이번 포스팅에서는 LCEL의 주요 개념과 예제에 대해서 정리해보도록 하겠습니다.주요 개념Runnable: 입력(input)을 받아 출력(output)을 내는 구성 요소RunnableSequence: 여러 Runnable을 직렬(sequence) 로 연결한 것RunnableLambda: 단순한 Python 함수를 Runnable로 감싸서 파이프에서 쓸 수 있게 함Runna..

Development 2025.12.07

Prefect: Airflow보다 가벼운 Python 워크플로 자동화 도구 소개

데이터 수집, 전처리, 모델 학습과 같은 작업은 대부분 반복적이고 단계적으로 연결되어 있습니다.예를 들어, 매일 아침 뉴스 데이터를 수집해서 정리하고, 엑셀 파일로 저장한다면, 아래와 같은 단계를 따릅니다.1. 데이터 가져오기2. 데이터에서 불필요한 부분 제거하기3. 정리한 데이터를 파일에 저장하기 이 과정을 매일 손으로 직접 한다면, 귀찮을 뿐만 아니라 실수가 발생할 수도 있습니다.이러한 문제를 해결하기 위해 워크플로 자동화 도구를 사용합니다. 오픈소스 워크플로 자동화 도구는 n8n, Node-RED, Apache Airflow가 있습니다.각각의 특징을 다음과 같습니다.- n8n: 다양한 API와 서비스를 연결해 손쉽게 자동화할 수 있는 범용 워크플로 도구- Node-RED: IoT와 센서 연동에 강점..

Development 2025.09.28

LangChain의 주요 컴포넌트 사용 방법 및 예시 - Output Parser

지난 게시글에 이어서 Output Parser에 대해서 정리해보겠습니다. Output Parser는 LLM을 특정 형식으로 출력하도록 할 때, 그 출력을 프로그램적으로 다루고 싶을 때 사용합니다.Output Parser는 JSON 등의 출력 형식을 지정하는 프롬프트 작성과 응답 텍스트의 Python 객체로의 변환 기능을 제공합니다. LangChain에서 제공하는 OutputParser의 종류는 다음과 같습니다.StrOutputParser: 메시지/LLMResult → “가장 그럴듯한 문자열”CommaSeparatedListOutputParser: “a, b, c” → ["a","b","c"]MarkdownListOutputParser: "- 항목1\n- 항목2\n- 항목3" 같은 마크다운 불릿 리스트 텍..

Development 2025.09.24

LangChain의 주요 컴포넌트 사용 방법 및 예시 - Prompt Template

지난 게시글에서는 LangChain의 주요 컴포넌트 중에 하나인 Chat model 컴포넌트 사용 방법에 대해서 정리했습니다. 2025.09.08 - [AI] - LangChain의 주요 컴포넌트 사용 방법 및 예시 - LLM/Chat model 이번 글에서는 Prompt Template 사용 방법과 예시에 대해서 정리하도록 하겠습니다. PromptTemplatePromptTemplate은 단순 문자열 템플릿에 변수를 주입해 프롬프트를 재사용할 수 있게 합니다.input_variables에 입력받을 변수를 넣어주고, format 함수에서 각각 변수에 입력할 값을 넣어주면 됩니다.from langchain.prompts import PromptTemplatetemplate = "너는 {subject} 전..

Development 2025.09.22

LangChain의 주요 컴포넌트 사용 방법 및 예시 - LLM/Chat model

지난 게시글에서는 Langchaindml 패키지 그룹과 주요 컴포넌트에 대해서 정리했습니다. 2025.09.08 - [AI] - LangChain의 패키지 그룹과 주요 컴포넌트 정리 LangChain에서 특히 중요한 컴포넌트는 LLM/Chat model, Prompt template, Output parser, Chain, RAG 관련 컴포넌트라고 하였습니다. 이번 글에서는 그중에서도 LLM/Chat model 컴포넌트 사용 방법과 예시에 대해서 정리하도록 하겠습니다. LLM/Chat modelLLM과 Chat model 모두 언어 모델을 LangChain 방식으로 사용할 수 있는 래퍼입니다.LLM은 하나의 텍스트 입력에 대해 하나의 텍스트 출력을 반환하는 형식이고,Chat model은 채팅 형식의 언..

Development 2025.09.20

LangChain의 패키지 그룹과 주요 컴포넌트 정리

LangChain은 LLM(Large Language Model)을 사용하여 애플리케이션을 개발하기 위한 오픈소스 프레임워크입니다.2023년도에 사용해 봤을 때는 크게 필요성을 못 느꼈었는데, 2024년 1월에 v0.1.0으로 업데이트되면서 많이 바뀐 것으로 보입니다. v0.1.0에서는 기존 langchain 패키지에 대한 의존 관계가 너무 많아지는 문제 등을 해결하기 위해 langchain-core, langchain-community 등을 분리하여 아키텍처를 모듈화 하고,LangGraph라는 새로운 라이브러리를 소개하며, 에이전트에 그래프 기반 워크플로우를 도입하게 되었다고 합니다. 따라서, 최근 다시 LangChain을 공부하면서 배운 것을 정리해보고자 합니다. 제가 읽고 있는 책은 "랭체인과 ..

Development 2025.09.18

LLM JSON 출력 안정화: JSON Mode·Function Calling·Structured Output 정리

LLM을 활용해 구조화된 JSON 형식을 출력할 때, 출력 형식이 깨져 파싱이 실패하는 경우가 종종 발생합니다. 이뿐만 아니라, 코드 블록으로 나오는 경우나 코드 블록 없이 나오는 경우도 있어서 이를 위한 처리 과정이 필요하기도 합니다. 서비스에서 LLM이 지정한 JSON 형식으로 답변을 생성하지 않아 오류가 발생하면 서비스에 지장이 생기기 때문에 반드시 해결해야 하는 문제였습니다. 당시에 openai 모델과 자사 모델을 모두 사용했었는데, 자사 모델의 경우에는 학습 데이터를 구축해서 학습시키기도 했습니다. 하지만 100% 완벽하진 않았습니다. 이를 해결하기 위해서 시도했던 방법과 openai api 이용자의 경우 사용할 수 있는 기능을 소개해드리도록 하겠습니다. 1~3번은 어떤 LLM이든 공통적으로 적..

Development 2025.09.08