Python

80 posts
browser-use: AI 에이전트가 웹 브라우저를 자유자재로 다루는 시대

browser-use: AI 에이전트가 웹 브라우저를 자유자재로 다루는 시대

웹 브라우저 자동화라고 하면 보통 Playwright나 Selenium으로 셀렉터를 하나하나 잡아가며 스크립트를 짜는 모습이 떠오릅니다. 버튼 위치가 바뀌면 셀렉터도 고쳐야 하고, 페이지마다 로딩 타이밍이 달라서 wait_for 코드를 여기저기 넣어야 하죠. 이런 작업이 번거로워서 "AI한테 그냥 시키면 안 되나?"라고 한 번쯤 생각해보신 적 있을 겁니다. browser-use는 바로 그 발상에서 출발한 오픈소스 Python 라이브러리입니다. 자연어로 "해커뉴스에서 오늘의 인기 글 5개를 찾아줘"라고 지시하면 LLM이 직접 브라우저

Google Cloud Vertex AI로 AI 모델 사용하기

Google Cloud Vertex AI로 AI 모델 사용하기

AI API를 서비스에 통합하려고 할 때 고민이 하나 생기죠. OpenAI, Anthropic, Google 같은 각 AI 제공업체마다 계정을 만들고 API 키를 따로 관리해야 한다는 겁니다. 이미 Google Cloud를 쓰고 있는 조직이라면 기존 인프라와 동떨어진 별도 인증 체계를 관리하는 게 부담스러울 수 있어요. Google Cloud의 Vertex AI는 이 문제를 깔끔하게 해결해줍니다. Google의 Gemini 모델뿐 아니라 Anthropic의 Claude, Meta의 Llama 같은 서드파티 모델까지 Google Cl

uv로 파이썬 프로젝트를 빠르게 관리하기

uv로 파이썬 프로젝트를 빠르게 관리하기

파이썬으로 개발하다 보면 패키지 설치와 가상 환경 관리가 의외로 번거롭다는 걸 느끼게 되는데요. pip으로 패키지를 설치하고, venv로 가상 환경을 만들고, pyenv로 파이썬 버전을 바꾸고... 도구를 여러 개 써야 한다는 점이 특히 불편합니다. uv는 이런 고민을 한 방에 해결해주는 도구입니다. Rust로 작성되어 pip보다 10~100배 빠르고 패키지 설치부터 가상 환경, 파이썬 버전 관리까지 하나의 도구로 전부 처리할 수 있습니다. 이번 글에서는 uv를 설치하고 실제 프로젝트에서 활용하는 방법을 하나씩 살펴보겠습니다. uv

파이썬 itertools로 이터레이터 마음껏 조합하기

파이썬 itertools로 이터레이터 마음껏 조합하기

파이썬으로 데이터를 다루다 보면 여러 리스트를 하나로 이어 붙이거나, 조건을 만족할 때까지만 순회하거나, 모든 조합을 구해야 하는 상황이 생기곤 하는데요. 그럴 때마다 for 루프와 임시 리스트를 조합해 작성하다 보면 코드가 생각보다 길어집니다. 😅 이럴 때 파이썬 표준 라이브러리의 itertools 모듈이 큰 도움이 됩니다. 이터레이터를 효율적으로 만들고 조합하는 함수를 모아놓은 모듈인데요. 내장 함수인 map()이나 filter()와 마찬가지로 결과를 한꺼번에 메모리에 올리지 않고 필요할 때마다 하나씩 생성하기 때문에 대용량

파이썬의 is 연산자와 == 연산자

파이썬의 is 연산자와 == 연산자

파이썬에서는 두 객체를 비교할 때 is 연산자와 == 연산자를 사용합니다. 비슷해 보이지만 이 두 연산자는 비교하는 대상이 완전히 다른데요. 차이점을 정확히 이해하지 않으면 찾기 어려운 버그를 만들어낼 수 있습니다. 이번 포스팅에서는 is 연산자와 == 연산자가 정확히 무엇을 비교하는지, 그리고 언제 어떤 연산자를 써야 하는지 알아보겠습니다. is 연산자 🆚 == 연산자 파이썬에서 is 연산자는 두 변수가 메모리 상에서 같은 객체를 가리키는지를 확인합니다. 반면 == 연산자는 두 객체의 값이 같은지를 비교합니다. 간단한 예로 리스

파이썬 세트(set) 완벽 가이드

파이썬 세트(set) 완벽 가이드

세트(set)는 파이썬에서 고유한 값들의 집합을 다루는 자료구조입니다. 이를 활용하면 데이터 중복을 제거하고 유일한 값들을 효과적으로 관리할 수 있는데요. 이번 포스팅에서는 다양한 예제를 통해서 파이썬의 세트을 어떻게 사용하는지 아주 꼼꼼하고 차근차근 알아보도록 하겠습니다. 세트 자료구조 먼저, 파이썬와 별개로 자료구조로서의 집합이라고도 불리는 세트에 대해서 가볍게 개념 정리를 하고 넘어가면 좋을 것 같습니다. 세트(set)는 한마디로 순서가 없는 중복되지 않은 데이터의 집합인데요. 리스트(list)과 차이점을 이해하는 것이 무엇보

파이썬의 내장 함수 any() 사용법

파이썬의 내장 함수 any() 사용법

이번 포스팅에서는 파이썬에서 하나라도 참인지 확인할 때 사용하는 any() 내장 함수에 대해서 알아보겠습니다. 반복문으로 하나라도 참인지 확인하기 여러 개의 데이터가 하나라도 어떤 조건을 만족하는지 확인을 해야 할 때 보통 어떻게 접근을 하시나요? 많은 분들이 자연스럽게 반복문을 떠올릴 것 같은데요. 예를 들어, 여러 숫자 중에서 하나라도 양의 짝수인지를 확인하는 함수를 다음과 같이 구현할 수 있을 것입니다. 이 함수에 양의 짝수가 하나라도 들어있는 리스트를 넘겨서 호출하면 True를 반환하겠죠? 반면에 인자로 넘긴 리스트에 양의

파이썬 리스트(list) 완벽 가이드

파이썬 리스트(list) 완벽 가이드

파이썬에서 리스트(list)는 사전(dictionary)과 더불어 가장 널리 사용되는 내장 자료형입니다. 이 두 가지 자료형은 파이썬 프로그래밍에서 필수적인 요소로 사용되지 않은 프로그램을 보기 힘들 정도이죠. 이번 포스팅에서는 다양한 예제를 통해서 파이썬에서 리스트를 어떻게 사용하는지 아주 꼼꼼하게 차근차근 알아보도록 하겠습니다. 참고로 사전(dictionary)에 대해서는 별도의 포스팅에서 아주 자세히 다루고 있습니다! 리스트의 특징 리스트(list)는 여러 데이터를 순서있게 담기 위해서 파이썬에서 가장 범용적으로 사용되는 자료

파이썬의 패키지 매니저 pip 사용법

파이썬의 패키지 매니저 pip 사용법

pip(Package Installer for Python)는 파이썬에 기본적으로 내장되어 있는 패키지 매니저입니다. 이 명령줄 도구를 사용하면 Python Package Index에 다른 개발자들이 올려놓은 패키지를 쉽게 다운로드하고 설치할 수 있는데요. 이번 포스팅에서는 pip를 사용하여 패키지를 관리하는 기본적인 방법에 대해서 알아보겠습니다. pip 설치 여부 확인 pip는 파이썬만 설치하면 기본적으로 딸려서 설치가 되는데요. 혹시 모르니 컴퓨터에 먼저 파이썬과 pip의 설치 여부를 확인하고 넘어가주세요. 패키지 설치 pip로

ChatGPT 터미널 앱 파이썬으로 만들어보기

ChatGPT 터미널 앱 파이썬으로 만들어보기

이번 포스팅에서는 ChatGPT API를 활용하여 파이썬으로 GhatGPT와 유사하지만 터미널 상에서 돌아가는 간단한 챗앱을 구현해보겠습니다. OpenAI API 키 설정 OpenAI에서 회원 가입 후에 API 키를 발급받는 방법은 별도 포스팅에서 자세히 다루었으니 참고 바랍니다. 사전 준비로 터미널을 열고 OPENAI_API_KEY라는 환경 변수에 OpenAI에서 발급받은 API 키를 설정해줍니다. 이렇게 API 키를 환경 변수로 저장해놓으면 Python 코드를 실행할 때 os 모듈의 getenv() 함수를 통해 쉽게 환경 변수를

파이썬으로 ChatGPT API를 호출하는 방법

파이썬으로 ChatGPT API를 호출하는 방법

이번 포스팅에서는 파이썬으로 ChatGPT API를 호출하는 방법에 대해서 알아보겠습니다. OpenAI API 키 설정 OpenAI에서 회원 가입 후에 API 키를 발급받는 방법은 별도 포스팅에서 자세히 다루었으니 참고 바랍니다. 사전 준비로 터미널을 열고 OPENAI_API_KEY라는 환경 변수에 OpenAI에서 발급받은 API 키를 설정해줍니다. 이렇게 API 키를 환경 변수로 저장해놓으면 Python 코드를 실행할 때 os 모듈의 getenv() 함수를 통해 쉽게 환경 변수를 읽어올 수 있습니다. Python에서 환경 변수를

Ruff로 파이썬 린팅과 포맷팅 한 번에 해결하기

Ruff로 파이썬 린팅과 포맷팅 한 번에 해결하기

파이썬 프로젝트에서 코드 품질을 관리하려면 여러 도구를 함께 써야 했습니다. 린팅에는 Flake8이나 Pylint, 포맷팅에는 Black, import 정렬에는 isort... 프로젝트 설정 파일만 해도 꽤 복잡해지죠 😅 Ruff는 이 도구들을 하나로 합친 올인원 파이썬 도구입니다. Rust로 작성되어서 기존 도구보다 10~100배 빠르고요. 이번 글에서는 Ruff의 설치부터 린터, 포맷터 활용법, 프로젝트에 적용하는 방법까지 살펴보겠습니다. Ruff란? Ruff는 Astral에서 개발한 파이썬 린터 겸 포맷터입니다. Rust로

파이썬의 divmod() 내장 함수로 나눗셈하기

파이썬의 divmod() 내장 함수로 나눗셈하기

이번 포스팅에서는 파이썬에서 연산자를 이용해서 나눗셈을 하는 방법에 대해서 간단히 알아보고, 몫과 나머지를 동시에 구할 때 사용하는 divmod() 내장 함수에 대해서도 알아보겠습니다. 나누기 연산자 파이썬은 특이하게도 2가지 나누기 연산자를 제공하는데요. 첫 번째는 실수 나누기 연산자인 /이고, 두 번째는 정수 나누기 연산자인 //입니다. 이 두 종의 나누기 연산자는 나머지가 없는 경우에는 동일한 값을 반환하는데요. 하지만 엄밀히 얘기하면 이 두 값의 자료형(data type)은 각각 실수와 정수로 차이가 있습니다. 그럼 나눗셈

빠른 선택 (Quick Select) 알고리즘

빠른 선택 (Quick Select) 알고리즘

빠른 선택 알고리즘은 여러 값이 주어졌을 때 k 번째로 작은 값이나 큰 값을 찾을 매우 유용한 검색 알고리즘인데요. 보통 이럴 때 정렬을 생각하지만 빠른 선택 알고리즘을 이용하면 배열을 정렬하지 않고도 빠르게 해당 원소를 찾을 수 있습니다. 알고달레에서 코딩 테스트/인터뷰 준비에 좀 더 특화된 컨텐츠를 만나보세요! 📝 아이디어 일반적으로 빠른 선택 알고리즘을 설명할 때 빠른 정렬 (Quick Sort) 알고리즘이 빠지지 않는데요. 이 두 알고리즘은 공통적으로 피봇(pivot)이라고 하는 임의의 값을 기준으로 배열을 분할하는 로직을

파이썬의 sorted() 내장 함수로 데이터 정렬하기 (feat. 리스트의 sort() 함수)

파이썬의 sorted() 내장 함수로 데이터 정렬하기 (feat. 리스트의 sort() 함수)

어느 프로그래밍 언어로 코딩을 하든 우리는 수시로 데이터를 정렬해야 되는데요. 이번 포스팅에서는 파이썬에서 데이터를 어떻게 정렬하는지 알아보도록 하겠습니다. sorted() 내장 함수 파이썬에서 정렬을 할 때 가장 부담없이 사용할 수 있는 방법은 내장된 sorted() 함수를 이용하는 것입니다. sorted() 내장 함수는 파이썬에서 순회가 가능한(iterable) 객체를 인자로 받아 데이터를 정렬해줄 수 있습니다. sorted() 내장 함수는 인자로 넘어온 객체의 원래 순서를 건드리지 않고 정렬된 원소들을 새로운 객체에 담아서 반

파이썬의 reversed() 함수로 거꾸로 루프 돌리기 (vs. slicing 연산자 & reverse() 함수)

파이썬의 reversed() 함수로 거꾸로 루프 돌리기 (vs. slicing 연산자 & reverse() 함수)

이번 포스팅에서는 파이썬에서 reversed() 함수를 이용해서 거꾸로 루프를 돌리는 방법에 대해서 알아보려고합니다. 뿐만 아니라 reversed() 함수와 비슷해보이지만 오묘하게 틀린 리스트의 slicing 연산자와 reverse() 함수에 대해서 간단히 살펴보도록 하겠습니다. 거꾸로 루프 돌리기 다음과 같이 5개의 알파멧 문자를 담고 있는 리스트를 어떻게 루프 돌면서 각 문자를 출력할 수 있을까요? 아마도 다음과 같이 간단한 for 문으로 어렵지 않게 각 문자에 순서대로 접근할 수 있을 것입니다. 그럼 역방향으로 각 문자에 접근

파이썬의 range() 내장 함수로 정수 범위 만들기 (feat. for 루프)

파이썬의 range() 내장 함수로 정수 범위 만들기 (feat. for 루프)

다른 프로그래밍 언어를 쓰시다가 파이썬으로 넘어온 분들이 for 루프 때문에 적지 않게 당황하시는 것을 자주 보게 됩니다. 다른 언어에서는 일반적으로 for 루프를 작성할 때 항상 다음 3가지를 명시를 하면서 시작하죠? 인덱스 변수의 초기 값 반복 지속 조건 인덱스 변수 갱신 방법 예를 들어, 자바의 경우 보통 다음과 같은 형태로 for 루프를 돌고요. 자바스크립트에서 for 루프를 돌리는 모습도 크게 다르지는 않습니다. 하지만 파이썬에서는 이러한 전형적인 for 문법을 제공하지 않고, 비교적 다른 언어에서는 나중에 추가된 for-

파이썬의 내장 함수 all() 사용법

파이썬의 내장 함수 all() 사용법

이번 포스팅에서는 파이썬에서 모든 것이 참인지 확인할 때 사용하는 all() 내장 함수에 대해서 알아보겠습니다. 반복문으로 모두 참인지 확인하기 여러 개의 데이터가 모두 어떤 조건을 만족하는지 확인을 해야 할 때 보통 어떻게 접근을 하시나요? 많은 분들이 자연스럽게 반복문을 떠올릴 것 같은데요. 예를 들어, 여러 숫자가 모두 양의 짝수인지 확인하는 함수를 다음과 같이 구현할 수 있을 것입니다. 이 함수에 양의 짝수로만 이루어진 리스트를 넘겨서 호출하면 True를 반환하겠죠? 반면에 인자로 넘긴 리스트에 음수가 하나라도 있다면 Fal

파이썬의 global과 nonlocal 키워드 사용법

파이썬의 global과 nonlocal 키워드 사용법

파이썬에는 global과 nonlocal이라는 아주 많이 쓰이지는 않지만 종종 만나게 되는 재미있는 키워드가 있습니다. 이 두 키워드를 한글로 해석하면 각각 '전역', '비지역'으로 비슷한 의미인 것 같아서 많은 분들이 햇갈려하시는데요. 이번 포스팅에서는 이 두 개의 키워드가 왜 필요하고 어떤 경우에 사용해야되는지에 대해서 알아보도록 하겠습니다. 변수의 범위(scope) global과 nonlocal 키워드에 대해서 이해하려면 먼저 변수의 범위(scope)에 대한 개념을 간단히 짚고 넘어가야할 것 같습니다. 비단 파이썬 뿐만 아니라

파이썬의 print() 함수 제대로 활용하기

파이썬의 print() 함수 제대로 활용하기

아마도 파이썬에서 가장 많이 사용되는 내장 함수는 뭐니 뭐니 해도 print()일 것 같은데요. 특히 아무리 디버거(debugger)가 좋아지더라도 간단한 버그를 찾을 때 print()로 출력해보는 것만큼 빠르고 간단한 방법도 없기 때문일 것입니다. 이렇게 정말 유용하고 많이 사용되는 print() 함수를 어떻게하면 좀 더 잘 활용할 수 있을까요? 기본 출력 제일 먼저 주변에서 print() 함수를 사용하는 가장 흔한 방법을 살펴볼까요? 매일 쓰다보니 당연히 받아드려지는 부분이지만 print() 함수는 문자열을 출력하지만 입력으로

Discord