본문 바로가기

[기초문법] zip()의 활용 (feat. 행렬 전치) " 파이썬의 마법 도구, zip() 함수 완벽 정리: 기초부터 행렬 전치까지 "파이썬에서 여러 개의 리스트를 동시에 다루거나, 행렬의 모양을 바꿀 때 zip()만큼 유용한 함수는 없습니다. 오늘은 이 함수의 기초 사용법부터 고급 테크닉인 '행렬 전치(Transpose)'까지 핵심 코드 위주로 살펴보겠습니다.zip() 함수란?names = ["Alice", "Bob", "Charlie"]scores = [85, 92, 78]# 두 리스트를 하나로 묶기for name, score in zip(names, scores): print(f"{name}: {score}")# 결과:# Alice: 85# Bob: 92# Charlie: 78zip():여러 개의 순회 가능한(iterable) 객체를 인자로 받아,..
[기초문법] 우선순위큐 (feat. heap) Queue (큐) 개념 : 각 요소에 우선순위를 부여하는 데이터 구조의 한 종류이다. 인큐(enqueue): 큐에 요소를 추가하여 큐 뒤쪽에 배치하는 것 데큐(dequeue) : 큐에 가장 오랫동안 있던 요소를 삭제하는 것큐는 선입 선출(First In First Out, FIFO) 데이터 구조 이다. 가장 먼저 추가된 요소가 우선적으로 삭제됨스택(stack)은 후입선출Priority Queue (우선순위 큐)키와 값의 체계를 사용해 큐의 요소들을 정렬한다. 우선순위 큐에서 모든 요소는 우선순위가 있으며 이는 키에 해당한다. 우선순위가 높은 요소는 우선순위가 낮은 요소보다 먼저 삭제된다. (같다면 먼저 들어온것 부터) 메소드 : 요소 추가하기, 요소 삭제하기, 우선순위가 높은 요소 가져오기, 큐가 가득 ..
[기초문법] Python Counter object Counter는 Python의 collections 모듈에서 제공하는 특수한 딕셔너리 형태로, 해시 가능한(hashable) 객체를 카운팅 하는데 사용됩니다. 각 객체를 키(key)로 하고, 그 객체의 개수를 값(value)으로 저장합니다. 이는 데이터의 개수를 셀 때 매우 유용하며, 일단 딕셔너리와 비슷한 인터페이스를 가지고 있지만, 카운팅과 관련된 추가적인 기능들을 제공합니다. 주요 특징 해시 가능한 객체의 개수를 세어서 저장 각 객체는 딕셔너리의 키로 저장되며, 해당 객체의 개수는 딕셔너리의 값으로 저장 객체의 개수가 0이 되거나 음수가 되더라도 자동으로 Counter에서 제거되지 않음기본 사용법 from collections import Counter# 리스트의 요소를 카운팅cnt = Counte..
[MCP] FastMCP rules (@mcp.tool) https://github.com/modelcontextprotocol/python-sdk GitHub - modelcontextprotocol/python-sdk: The official Python SDK for Model Context Protocol servers and clientsThe official Python SDK for Model Context Protocol servers and clients - modelcontextprotocol/python-sdkgithub.comModel Context Protocol(MCP) 서버를 개발할 때, FastMCP는 개발자의 생산성을 극대화해주는 강력한 도구이다. 복잡한 JSON 스키마를 직접 짤 필요없이, Python 함수에 Docstring과..
[기초문법] sys.stdin ; 3 method ; in python 파이썬에서 입력을 받을 때 가장 성능이 좋은 sys.stdin의 세 가지 활용법을 비교해 보겠습니다. 모든 방식은 공통적으로 줄 바꿈 문자(\n)를 포함한다는 점을 기억하세요! 1. sys.stdin.readline() : 딱 한 줄만 읽기import sys# 한 줄 읽기line = sys.stdin.readline()print(f"입력받은 문장: {line.strip()}") # strip()으로 \n 제거 가능이 방식은 입력 스트림에서 한 줄만 가져와 문자열로 반환합니다. 특징 : 호출할 때마다 한 줄씩 읽습니다. 장점 : 메모리 효율이 아주 좋습니다. (딱 필요한 만큼만 읽기 때문)단점 : 여러 줄을 읽으려면 반복문(for/while)을 직접 돌려야 합니다. 2. sys.stdin.readlines..
[Search] Tavily API (*Domain Control*) https://www.tavily.com/ Tavily - The Web Access Layer for AI AgentsTavily is the real‑time search engine for AI agents and RAG workflows — Fast and secure APIs for web search and content extraction. Trusted by 600K+ developers.www.tavily.com Tavily는 AI 에이전트가 실시간으로 신뢰할 수 있는 사실 기반 정보를 검색, 요약, 정제하여 가져올 수 있도록 돕는 AI-Native 검색 라이브러리입니다. 단순히 URL을 나열하는 것이 아니라, LLM이 즉시 이해할 수 있는 형태의 데이터를 반환합니다.TavilyNo HT..
[기초문법] sys.stdin.readline (feat. input()) 파이썬의 입력에서 가장 먼저 배우는 것은 input() 입니다. 하지만 데이터 양이 많아지면 input()은 속도가 느려 시간 초과가 발생할 수 있습니다. 이때 사용하는 것이 바로 sys.stdin.readline 입니다. input() vs sys.stdin.readlineinput()속도가 상대적으로 느림입력값에서 줄바꿈 문제(개행문자 \n)를 자동으로 제거함 내장함수 (built-in) 인자로 안내 문자열("숫자를 입력하시오:")을 출력할 수 있음sys.stdin.readline속도가 매우 빠름 줄바꿈 문자(\n)를 포함하여 읽음 안내 문자열을 넣을 수 없음sys 모듈의 표준 입력 객체 sys.stdin.readline 사용법기본 사용법 : sys 모듈을 먼저 importimport sys# 한 줄..
[Agent] LCEL(a.k.a. Langchain pattern) Langchain이 진화함에 따라 기존의 LLMChain 방식에서 벗어나, 더 직관적이고 유연한 LCEL(Langchin expression Language) 패턴이 표준으로 자리잡고 있습니다. LCEL Concept기본 개념Langchain 컴포넌트들을 연결하기 위한 선언적 방식이다. 데이터의 흐름을 직관적으로 정의하여 입력에서 출력까지 깔끔한 워크플로우를 보장한다. (like 리눅스의 '|')장점 가독성 : 데이터 흐름을 명확하게 시각화 할 수 있다. 구성 용이성 : 복잡한 체인을 레고 블록처럼 쉽게 조립할 수 있다. 유연성 : 병렬 실행, 비동기 지원, 스트리밍 등의 기능을 기본적으로 지원한다. Pipe Operator(|) Method# LCEL 패턴 예시 chain = prompt | llm ..
[Agent] ReAct (Agent Prompt format) AI 에이전트(Agent)는 사용자의 목표를 이해하고, 스스로 계획을 세우며, 다양한 도구를 활용해 자율적으로 작업을 수행하는 지능형 소프트웨어 시스템이다. 랭체인에서는 ReAct 구조와 Plan-and-Solve 구조로 작동하거나, Function Calling으로 작동하는 Agent를 지원한다. 이 글에서는 ReAct 구조의 Agent를 설명한다. AI AgentRetrievalQA(Chain)에서는 Vector Store를 검색하고 검색 결과를 바탕으로 LLM이 응답 -> 고정된 처리 흐름OpenAPIEndPointChain : 랭체인에서 LLM의 응답을 기반으로 API를 호출하는 Chain SQLDatabaseChain : 랭체인에서 LLM의 응답을 기반으로 SQL을 실행하는 ChainAgen..
[python] Higher Order Function(feat. decorator) Higher Order Function ; 2가지 조건 중 하나 이상 만족함수를 함수 인자(Argument) 로 받을 수 있음. 함수를 데이터 처럼 다루는 함수ex) map(), filter(), sorted() : 첫번째 인자로 함수를 받음 함수를 결과 (Return Value)로 반환함함수 내부에서 새로운 함수를 정의하고, 그 함수 자체를 외부로 반환데코레이터(Decorator)를 구현할 때 많이 사용Decorator# Decorator# Wrap another function to extend the functionality without changing the original codedef higher_order_example(func): # 1번 조건 만족(함수를 인자로) def insi..
[Agent] LangChain for AI agent (Intro) LangChain은 LLM의 지능을 활용하여실제 복잡한 작업을 수행하는 AI Agent를 만들때 필요한모든 연결 고리(Chains)와 구성 요소를 제공하는 '뼈대' 역할을 합니다. Langchain 개념 : LLM(거대 언어 모델) 기발 애플리케이션 개발을 간소화 하기 위한 오픈 소스 Python 프레임워크 목적 : 개발자들이 LLM을 AI app에 통합할 수 있도록 컴포넌트(구성 요소)와 인터페이스(조작 방식)를 제공복잡한 작업 처리 : 텍스트나 여러 출처에서 정보를 검색하고(Retrieval), 추출하고(Extraction), 처리한 다음(Processing), 최종적으로 일관된 응답을 생성하는(Generation) 일련의 작업들을 연결(Chain)한다. 복잡한 프롬프트 처리: 복잡한 질문에 대한 데..
[Agent] In-Context Learning (feat. prompt) 이 글은 AI의 중요한 학습 방법 중 하나인 In-Context Learning의 정의, 특징, 그리고 이를 활용하는 프롬프트 엔지니어링의 기초를 쉽게 설명합니다. 두 개념의 이해를 통해 AI agent의 작동 원리를 이해할 수 있습니다. In-Context Learning정의 :모델에게 새로운 작업을 가르치기 위해,프롬프트(입력 문맥) 안에 해당 작업의 예시(시범)을 자연어 형태로 직접 제공하는 방식.특징 : 추가 훈련 불필요 : 별도로 모델의 가중치를 조정하는 복잡하고 시간이 많이 걸리는 파인튜닝(FineTuning) 과정 불필요추론 시 학습 : 모델이 응답을 생성하는 바로 그 순간(추론 시간)에, 프롬프트 속의 소수의 예시를 보고 새로운 작업을 학습장단점장점 : 파인튜닝이 필요없어 시간과 자원을 ..
[DB] MongoDB Atlas MongoDB atlas는 MongoDB사에서 직접 제공하는 클라우드 기반의 완전 관리형 데이터베이스 서비스(DBaaS)입니다. 서버 설치, 구성, 유지 보수, 백업 등을 사용자가 직접 관리할 필요 없이 클릭 몇 번으로 데이터베이스를 배포하고 운영할 수 있게 해 줍니다. 왜 쓰는가? Zero Ops: 데이터베이스 서버 구축/관리에 시간을 낭비할 필요가 없다. 멀티 클라우드 : AWS, Google Cloud, Azure 중 원하는 곳을 골라 쓸 수 있다. 사용 예시) 백엔드를 AWS를 Seoul 리전에 배포, MongoDB atlas를 AWS/Seoul 리전 선택결과) 콘솔에 통합된 것은 아니지만 AWS 인프라 위에서 돌아가 두 영역이 효율적으로 통신함. 무료 사용: 평생 무료 등급(M0)이 있어 학..
[DB] SQL vs NoSQL (feat.MongoDB) DB 사용에 있어 SQL과 NoSQL의 개념을 이해 및 비교 하는 것이 중요하다. 각각의 사용 목적 및 특성을 고려하여 DB를 선택해야 한다. 그 중 NoSQL이면서 문서 데이터베이스인 MongoDB는 AI 시대에 점차 중요해지고 있다. SQLSQL : Structured Query Language데이터베이스 내 데이터 삽입, 업데이트 쿼리, 삭제와 같은 작업에 일반적으로 사용되는 도메인 특화 프로그래밍* 언어데이터베이스 스키마**를 생성 및 수정하고 엑세스 및 관리 매개변수를 정의하는데 사용정형 데이터***는 SQL 데이터베이스(특히, 관계형 데이터베이스)에 저장됨 *도메인 특화 프로그래밍 언어 : 특정 작업이나 문제를 대상으로 하는 언어**데이터베이스 스키마 : 데이터 형식 지정 규칙, 테이블/인덱스..
[python] Class Construct(__init__) Naming ConventionPascalCase : class name모든 단어의 첫 글자를 '대문자'로 표기 공백 없이 붙혀 씀ex) ClassName, MyNewProjectcamelCase : object name첫 단어는 '소문자'로 시작공백 없이 붙혀씀ex) objectName, getUserProfilesnake_name : anything selse(variable, Function, Module) 모든 단어를 소문자로 표기언더바(_)로 연결ex) variable_name, calculation_sumClass constructor ; __init__(생성자)__init__ 메서드 클래스로부터 객체(Object)를 생성할 때 자동으로 호출되는 특별한 메서드 값을 명시적으로 return 하지..
[python] Pypi (pip install) Don't reinvent the wheel바퀴를 다시 발명하지 마라Pypi 는 파이썬의 라이브러리들이 모여있는 거대한 저장소입니다. 이 Pypi를 활용해 필요한 패키지를 찾고, 설치하고, 관리하는 방법에 대해 알아보겠습니다. 필요한 기능이 있다면 Pypi에서 먼저 찾아 보는 것이 좋습니다. https://pypi.org/ PyPI · 파이썬 패키지 인덱스파이썬 패키지 인덱스(PyPI)는 파이썬 프로그래밍 언어를 위한 소프트웨어 리포지터리입니다.pypi.org pip (패키지 설치 관리자) pip install 패키지명# 예시: requests 라이브러리 설치pip install requests# 특정 버전 설치하기pip install requests==2.28.1터미널에서 바로 Pypi에 등록된 패키지..
[python] Common Coding Mistakes 파이썬 입문자가 흔히 범하는 대표적인 코딩 실수 3가지를 정리했습니다. 사소한 습관을 교정하여 더 간결하고 정확한 'Pythonic'한 코드로 나아가 봅시다. Boolean# Bad Patterndef func(): if is_correct == True: return True else: return False# Good Pattern (Pythonic)def func(): return is_correctis_correct 변수 자체가 이미 True 혹은 False 값을 가지고 있다면, 굳이 if문을 사용하여 True와 같은지 한 번 더 비교할 필요가 없음코드가 불필요하게 길어지는(verbose) 원인이 됨. sort vs sorted l1 = [4, 2, 3, 7, 5]print(l1..
[python] Docstrings(String Literal) Docstring(Documentation String)이란, 모듈, 함수, 클래스 또는 메서드 정의의 가장 첫 번째 줄에 선언된 문자열 리터럴(String Literal)을 의미합니다. 일반적인 주석(Comment, #)이 코드가 '어떻게(How)' 작동하는지 구현 원리를 메모하는 용도라면, Docstring은 이 함수가 '무엇을(What)' 하는지, 어떤 파라미터를 받고 무엇을 반환하는지를 설명하는 역할을 합니다. Function's docstrings def get_name(first_name, last_name): '''take first name and last name then return combine two''' if first_name == "": return "..
[python] Scope(local, global, enclosing) Local Scopemy_score = 50def inside_value_function(): my_score = 80 print(f"my score inside is {my_score}")함수 내는 새로운 Name Space를 만들기에, 새로운 변수를 만들면 바깥 변수랑 다른 변수가 생성됨. 이 변수는 함수가 호출될 때 생성되고, 함수 실행이 끝나면 소멸됨. Global Scopemy_score = 50def inside_value_function(): global my_score my_score = 80 print(f"my score inside is {my_score}")global 선언한 외부 변수 값을 바꿀 수 있음.global을 선언하면 함수 내의 global 변수는..
[python] Assignment vs Shallow vs Deep Copy Assignment (할당)a = ['red', 'blue', 'green']b = a b.append('black') --> Assignment 하고 값 변경 시 원본(a)과 새 변수(b) 모두 변경됨개념 : 동일한 Adress(주소값)을 다른 변수에 적용하는 것a와 b가 동일한 주소값 가짐 (= b는 a가 참조하는 동일한 객체를 참조)주소값을 Copy (동일한 주소 포인팅, 메모리 내 같은 객체) Shallow Copy (얕은 복사)a = [[1, 2], [2, 4]]b = a[:] # list(a) # copy.copy(a) b.append([3, 6]) --> 새로운 변수(b)에 대해서만 [[1, 2], [2, 4], [3 6]] 으로 변경됨b[0].append(4) --> 두 변수(a, b) ..
[자료구조] 파이썬 객체지향과 모듈 파이썬을 객체지향적과 패키지 기능에 대한 기초 개념 # 파이썬 객체 지향 프로그래밍 개요 대부분의 도구 들이 객체 지향 기법(OOP)으로 작성됨 객체는 속성(init, 매직 메소드)과 행동(def)을 가짐 변수와 클래스 이름 규칙 파이썬 함수/변수명 : 띄워쓰기 부분에 "_"를 추가 클래스 명 : 띄워쓰기 부분에 대문자 사용 / 첫문자 대문자Attribute "__" 의미 : 특수한 예약 함수 ; __main__, __str__ 등__init__ : 객체 초기화 예약 함수 __str__ , __add__ : 매직 메소드(자동 호출됨, 클래스 기본 속성)의 하나 ; 객체를 표현하는 방식을 정의상속 (Inheritance) 정의 : 부모클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성super..
[KTB] 카카오테크부트캠프 2기 맛보기 여러분들이 부트캠프를 진행하는 동안 저희가 여러분의 소속이 되어드리겠습니다. - KTB 운영진 - 안녕하세요 !! 카카오테크 부트캠프 2기 `해보` 의 카테부 리뷰 시작합니다. (교육장 안에서는 모두 영어 닉네임을 사용해요 ~) ... 저는 생성형 AI 과정으로 시작을 했습니다. 처음 시작할 때는 생성형 AI 가 뭔지도 몰랐어요 ! 한 마디로 적당히 설명해보자면 생성형 AI 는텍스트, 이미지, 음악, 영상 등 새로운 콘텐츠를 만들어내는 인공지능 기술을 말해요 ! ... 교육 커리큘럼 적인 내용은 다른 글에서 쉽게 찾아 볼수 있으니 저는 어떤 환경과 지원 속에서 공부를 하는 지 말해보려 해요 ~ 카카오테크 부트캠프는 어떤 것을 제공해줄까요? ```맥북 프로 대여 견고한 책상과 모니터생수를 공급해..
[meow] 데이터셋 및 모델 자체 평가 "Garbage in, garbage out" 관련 모델 허깅페이스 주소https://huggingface.co/haebo/meow-clovax-v3 haebo/meow-clovax-v3 · Hugging Face⭐ Meow-Clovax-v3 ⭐ Overview Meow-Clovax-v3는 카카오테크 부트캠프 팀 프로젝트의 일환으로 개발된 경량 한국어 언어 모델입니다. 네이버의 HyperCLOVAX-SEED-Text-Instruct-1.5B를 기반으로 SNS 서비스 환경에 최huggingface.co 데이터 설명파일명설명데이터 개수dataset_0515_made.jsonl초기 유저 데이터로, 342개의 샘플이 수록되어 있습니다. 대부분 자연스러운 사용자 텍스트를 기반으로 구성되어 있어, 기초 분석 및 프..
[meow] Bert-score : 문장 간 의미 유사도 평가 LLM 말투변환에서 원문의 의미를 유지하면서 말투만 변화시키는 것이 중요하다. Introduction 기존의 방식은 "Exact Match" 혹은 "n-gram match"를 기반으로 를 평가한다.Exact Match : ex) 답답형 문제 정답방식 : 완벽하게 동일한 결과를 도출했는지 평가한계 : 동일한 의미의 다른 표현에 대해 오답으로 평가 (구조적-의미적 차이 반영x)n-Gram Matching Approach : ex) BLEU Score, METEOR Score 방식 : 단어 묶음의 일치를 기반으로 평가 한계 : 문장 구조의 변화와 의미 유사성 등을 완벽히 반영하지 못함. Bert Score는 임베딩을 통한 유사도를 평가한다. Embedding-Based Metrics : Bert의 임베딩..
[LLM] Llama1 살펴보기 ===========================- Llama 1 모델 논문 리뷰- Byte Pair Encoding (BFE) 알고리즘===========================Llama 1 모델 논문 리뷰https://arxiv.org/abs/2302.13971 LLaMA: Open and Efficient Foundation Language ModelsWe introduce LLaMA, a collection of foundation language models ranging from 7B to 65B parameters. We train our models on trillions of tokens, and show that it is possible to train state-of-the-a..
[LLM] LLM 기본개념 LLM을 이해하기 위한 기본적인 용어들LLM 이란? 대부분 Transformer 딥러닝 모델을 사용한다. 파운데이션 모델 : 대규모 데이터(corpus dataset)에 대해 학습이 되어있는 모델 ex) Llama, GPT, Palm fre-train 후 RLHF(Reinforcement Human Feedback) 기법으로 추가적 파인튜닝을 진행한다. : 문제 발언 학습과정에서 낮은 가중치 부여, 결과적으로 사람이 선호하는 답변이 나오게됨 전이학습 (Transfer Learning): 목적에 맞게 Fine-Tuning을 진행 : 특정 도메인에 대해서는 대규모 모델보다 더 좋은 결과를 도출 가능위험성 : 편향(bias), 할루시네이션(Hallucination): 다양한 처리를 통해 위험을 낮춰야 한다. ..
[LLM] HyperCLOVAX-SEED-Text-Instruct-1.5B 모델 분석 https://huggingface.co/naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B naver-hyperclovax/HyperCLOVAX-SEED-Text-Instruct-1.5B · Hugging FaceOverview HyperCLOVAX-SEED-Text-Instruct-1.5B is a model developed by NAVER that can understand and generate text. It demonstrates competitive performance on major benchmarks related to Korean language and culture. In addition, it supports a context leng..
[GPU] LLM 추론 병렬처리 방법 (feat. CUDA) 병렬처리는 마치 여러 조리사가 각자 요리를 동시에 만드는 것과 같습니다.배치 처리는 여러 작업을 한 번에 묶어 처리하는 급식소처럼 빠르고 효율적이며, 스트림 처리는 손님이 올 때마다 즉시 요리하는 식당처럼 실시간 응답에 유리합니다. 멀티 스레드는 여러 조리사가 각기 다른 주방에서 주문을 받아 독립적으로 요리합니다. 개요 LLM 추론에서 병렬처리란, 대형 언어 모델이 여러 입력(prompt) 또는 연산을 동시에 처리하여 전체 처리 속도와 자원 활용도를 높이는 기술을 의미한다. 이는 주로 입력을 하나의 배치로 묶어 GPU에서 병렬 연산을 수행하는 배치 처리(batch inference) 방식과, 여러 개의 입력을 GPU의 서로 다른 실행 흐름(stream)에서 비동기적으로 실행하는 스트림 처리(CUDA s..
[Fine Tuning] LoRA LLM 을 자신의 작업에 좋은 성능이 나오도록 하기위해 다양한 SFT(supervised Finetuning) 기법을 사용한다. SFT의 여러 튜닝 기법 중 하나인 LoRA(a parameter-efficient finetuning technique)를 소개한다. Full Fine Tuning vs Parameter-Efficient Fine-Tuning(PEFT) 1. Full Fine Tuning : 모델의 모든 파라미터를 학습 시키는 방법 일반적 딥러닝 모델인 Bert, Resnet 과 같이 base_model (일반적 업무를 위한 모델)을 학습시키는 방법이다. 전체 모델 학습을 위한 메모리와 계산 자원이 많이 필요하다. 2. Parameter-Efficient Fine-Tuning(PEFT) ..
[자격증] 머신러닝-딥러닝 (for AICE Associate) 머신러닝과 딥러닝 모델을 학습하고 결과를 확인하는전반적인 과정에 대한 코드 맛보기 !  데이터 준비 @ 필요한 라이브러리 임포트import numpy as npimport pandas as pdimport matplotlib.pyplot as plt@ cvs 데이터 읽어오기 : pandas의 read_csv로 읽어오면 dataframe 형식의 파일로 생성된다. df = pd.read_csv('data_v1_save.csv')@ 라벨 인코딩 : 특정 시리즈(컬럼)의 범주형 데이터에 0부터의 정수를 할당하여 변환 / fit-정수할당, transform-변환from sklearn.preprocessing import LabelEncoderle = LabelEncoder()le.fit(df['gender'])d..