Python
[Python] Pydantic Field: 더 세밀한 데이터 검증하기
[Python] Pydantic Field: 더 세밀한 데이터 검증하기
2025.01.12Pydantic의 Field는 BaseModel의 필드를 더 자세하게 정의하고 검증하기 위한 도구입니다. 단순히 타입을 지정하는 것을 넘어서, 데이터의 범위, 형식, 기본값 등을 세밀하게 제어할 수 있게 해줍니다.Field가 필요한 이유기본 BaseModel만으로는 이런 제약사항을 표현하기 어려웠습니다.class Product(BaseModel): name: str # 길이 제한을 어떻게 할까요? price: float # 음수는 어떻게 막을까요? stock: int # 재고가 0 미만이면 안 되는데...Field를 사용하면 이런 제약사항을 명확하게 표현할 수 있습니다.from pydantic import BaseModel, Fieldclass Product(BaseModel): ..
[Python] Pydantic BaseModel: 데이터 검증을 쉽게 하자
[Python] Pydantic BaseModel: 데이터 검증을 쉽게 하자
2025.01.11Pydantic의 BaseModel은 Python 데이터의 유효성을 검사하고 관리하기 위한 강력한 도구입니다. JSON 데이터를 파이썬 객체로 변환하거나, API 요청/응답을 검증할 때 특히 유용합니다. 간단한 클래스 정의만으로 복잡한 데이터 검증 로직을 구현할 수 있어요.BaseModel이 필요한 이유기존에는 데이터 검증을 이렇게 했습니다.def validate_user(data: dict): if "name" not in data: raise ValueError("이름이 필요합니다") if not isinstance(data["name"], str): raise ValueError("이름은 문자열이어야 합니다") if "age" in data and not i..
[Python] TypedDict: 딕셔너리에 타입 힌트 추가하기
[Python] TypedDict: 딕셔너리에 타입 힌트 추가하기
2025.01.11Python의 TypedDict는 딕셔너리의 키와 값에 대한 타입을 명확하게 지정할 수 있게 해주는 기능입니다. 특히 복잡한 데이터 구조를 다룰 때 발생할 수 있는 타입 관련 오류를 미리 방지할 수 있어 유용합니다.TypedDict가 필요한 이유기존 딕셔너리는 이런 문제가 있었습니다.# 일반 딕셔너리 사용 시user = { "name": "김철수", "age": 25, "email": "kim@example.com"}# 흔히 발생하는 실수들print(user["Name"]) # KeyError: 'Name' (키 이름 오타)print(user["age"] + "살") # TypeError: int + str 연산 불가user["phone"] = 123 # 예상치 못한 새로운 키 추가..
AI 에이전트 시작하기: LangGraph 개념과 실습
AI 에이전트 시작하기: LangGraph 개념과 실습
2024.11.26AI 에이전트는 LLM(Large Language Model)을 활용하여 복잡한 작업을 수행하는 자동화된 시스템입니다. 일반적인 LLM 사용이 단순 프롬프트-응답 방식이라면, 에이전트는 더 복잡하고 반복적인 작업을 수행할 수 있습니다.AI 에이전트의 핵심 디자인 패턴계획(Planning): 작업을 수행하기 위한 단계를 미리 생각하고 계획합니다.도구 사용(Tool Use): 검색, 계산 등 필요한 도구들을 활용합니다.반성(Reflection): 결과를 반복적으로 개선하며, 여러 LLM이 결과를 검토하고 제안할 수 있습니다.다중 에이전트 통신: 각각의 LLM이 고유한 역할을 수행하며 서로 협력합니다.메모리: 여러 단계에 걸친 진행 상황과 결과를 추적합니다. AI와 AI 에이전트의 차이: 깊이 '생각하는' A..
[Python] 함수형 프로그래밍
[Python] 함수형 프로그래밍
2024.11.24함수형 프로그래밍은 함수를 일급 객체로 취급하며, 불변 데이터와 순수 함수를 중심으로 하는 프로그래밍 패러다임입니다. Python은 객체지향 언어이지만, 함수형 프로그래밍의 강력한 기능도 제공합니다. 이 글에서는 Python에서 제공하는 함수형 프로그래밍 기법과 이를 활용하는 방법을 다룹니다.1. 함수형 프로그래밍이란?함수형 프로그래밍은 다음과 같은 특징을 가지고 있습니다:순수 함수: 함수는 입력값만을 사용하며 외부 상태를 변경하지 않습니다.불변성: 데이터는 변경되지 않고, 항상 새 데이터를 반환합니다.고차 함수: 함수를 매개변수로 전달하거나 반환할 수 있습니다.Python에서 함수형 프로그래밍을 지원하는 주요 도구는 map(), filter(), reduce(), 그리고 lambda 함수입니다.2. m..
[Python] 제너레이터 (Generator)
[Python] 제너레이터 (Generator)
2024.11.18Python에서 제너레이터(Generator)는 큰 데이터를 메모리에 효율적으로 처리할 수 있게 도와주는 특별한 이터레이터입니다. 일반적인 함수와 달리, 제너레이터는 값을 한 번에 하나씩 반환하고, 매번 호출될 때 이전 상태를 기억합니다. 제너레이터는 yield 키워드를 사용하여 값을 반환하며, return을 사용하면 더 이상 값을 생성하지 않고 종료됩니다제너레이터의 특징메모리 효율성: 제너레이터는 값을 필요할 때마다 하나씩 생성하므로, 큰 데이터를 처리할 때 메모리를 아낄 수 있습니다.Lazy Evaluation(지연 평가): 모든 값을 한꺼번에 생성하지 않고, 요청할 때마다 값을 생성하여 반환합니다.상태 유지: yield 키워드 덕분에 함수의 상태가 유지되며, 중단된 위치에서 다시 시작할 수 있습니다..
[Python] 정규 표현식 (Regex)
[Python] 정규 표현식 (Regex)
2024.11.12정규 표현식(Regex, Regular Expression)은 문자열에서 특정 패턴을 찾고, 추출하거나, 치환할 때 사용하는 방법입니다. Python에서는 re 모듈을 통해 정규 표현식을 사용할 수 있습니다. 정규 표현식은 다양한 패턴을 통해 복잡한 문자열을 다룰 수 있어, 데이터 처리, 텍스트 분석, 웹 크롤링 등에 자주 활용됩니다.기본적인 정규 표현식 패턴정규 표현식에는 다양한 패턴이 있으며, 기본적인 패턴은 다음과 같습니다:. : 줄 바꿈 문자를 제외한 모든 문자 하나와 일치^ : 문자열의 시작을 의미$ : 문자열의 끝을 의미* : 앞의 문자가 0번 이상 반복됨을 의미+ : 앞의 문자가 1번 이상 반복됨을 의미? : 앞의 문자가 0번 또는 1번 나타남을 의미{n} : 정확히 n번 반복되는 패턴{n,..
[Python] 코드를 한 줄로 줄이는 방법: 내포 표현식과 One-liners
[Python] 코드를 한 줄로 줄이는 방법: 내포 표현식과 One-liners
2024.11.111. 리스트 내포 (List Comprehension)리스트 내포는 조건에 따라 요소를 필터링하거나 변환하여 새로운 리스트를 만들 수 있습니다. 예를 들어, 0부터 9까지의 숫자 중 짝수만 제곱한 리스트를 생성하려면 다음과 같이 작성할 수 있습니다.squares = [x**2 for x in range(10) if x % 2 == 0]print(squares) # [0, 4, 16, 36, 64]2. 딕셔너리 내포 (Dictionary Comprehension)딕셔너리 내포를 사용하면 키-값 쌍을 조건에 맞게 필터링하여 새로운 딕셔너리를 생성할 수 있습니다. 예를 들어, 0부터 4까지의 숫자와 그 제곱을 키-값으로 하는 딕셔너리는 다음과 같이 만들 수 있습니다.squares_dict = {x: x**2..
Python Packaging: pyproject.toml로 프로젝트 설정을 간편하게!
Python Packaging: pyproject.toml로 프로젝트 설정을 간편하게!
2024.04.25Python 프로젝트를 개발하다 보면 프로젝트 설정과 관련된 여러 파일들을 다뤄야 합니다. setup.py, requirements.txt, Pipfile, setup.cfg 등 다양한 파일들이 존재하죠. 하지만 이제 pyproject.toml이라는 새로운 표준이 등장했습니다. 이 글에서는 pyproject.toml에 대해 자세히 알아보고, 어떻게 구성하고 사용하는지 살펴보겠습니다.pyproject.toml 소개pyproject.toml은 Python 프로젝트의 빌드 시스템과 관련된 설정을 포함하는 파일입니다. 패키징 도구뿐만 아니라 linters, type checkers 등 다양한 도구들에서 사용됩니다. pyproject.toml에는 세 가지 TOML 테이블이 있을 수 있습니다.[build-syste..
Google Gemini API 사용하기 - Python (2) : 사용법과 실습
Google Gemini API 사용하기 - Python (2) : 사용법과 실습
2023.12.18Google DeepMind가 개발한 'Gemini'는 멀티모달을 위해 설계된 AI 모델의 집합체입니다. Vertex AI Gemini API를 통해, 사용자는 Gemini Pro Vision와 Gemini Pro 모델에 접근할 수 있게 되었습니다. 이 두 모델은 각각 다양한 멀티미디어 데이터와 자연어 처리 기능을 지원합니다. Gemini Pro: 자연어 처리 작업, 다중턴 텍스트 및 코드 채팅, 그리고 코드 생성과 같은 작업을 처리하는 데에 최적화되어 있습니다. Gemini Pro Vision: 멀티모달 프롬프트를 지원합니다. 사용자는 텍스트, 이미지, 비디오를 포함한 프롬프트 요청을 할 수 있으며, 텍스트나 코드 형태의 응답을 받을 수 있습니다. Gemini API의 모델 정보에 대한 자세한 사양은 ..
Google Gemini API 사용하기 - Python (1) : 사전준비
Google Gemini API 사용하기 - Python (1) : 사전준비
2023.12.152023년 12월 6일, Google은 Gemini(제미나이)라는 Large Multimodal Model을 세상에 공개했습니다. 이 모델은 텍스트, 이미지, 오디오에 이르기까지 광범위하게 다양한 형태의 데이터 처리를 가능하게 합니다. 물론 발표 이후 시연 영상 편집 논란과 실제 사용자들 사이에서는 GPT-4와의 비교를 통해 기대에 못 미치는 것으로 평가되는 경우도 있었습니다. 구글의 제미나이(Gemini) 살펴보기: 우리 생활에 가져올 변화 구글이 현지시간 6일, GPT-4를 능가하는 새로운 AI 모델인 '제미나이(Gemini 또는 제미니)'를 발표했습니다. 이번 발표는 당초 내년 초로 예상되었던 출시 일정을 앞당겨 깜짝 발표를 했습니다. '제미 yunwoong.tistory.com 12월 13일 Go..
OpenAI Assistants API: 시작하기 (Python)
OpenAI Assistants API: 시작하기 (Python)
2023.12.07OpenAI의 API를 활용하는 개발자 수가 200만 명을 넘어섰습니다. 이제 새로운 기술이 형성되고 활용되는 방식에 중대한 변화가 일어나고 있음이 분명해졌습니다. 지난 2023년 11월 6일에 있었던 OpenAI의 첫 개발자 컨퍼런스인 DevDay는 AI의 발전과 도구들에 대한 최신 정보를 소개하는 자리였습니다. 이 중에서도 특히 주목할 만한 것은 지능적이고 반응적인 AI 어시스턴트를 구축할 수 있는 OpenAI Assistants API였습니다. 이 API는 현재 AI 기술을 적용하고 이해하는 방식에 있어 중요한 역할을 하고 있으며, 개발자들에게 새로운 가능성을 열어주고 있습니다. 경험이 풍부한 개발자든, 이제 막 시작한 초보 개발자든, 오늘날의 기술 환경에서 OpenAI Assistants API를..