개요UV는 Rust로 작성된 차세대 Python 패키지 관리자로, 기존 pip의 성능 한계를 극복하고 현대적인 개발 워크플로우를 지원합니다.Astral에서 개발한 이 도구는 단순한 pip 대체재를 넘어 Python 프로젝트 관리의 전체적인 경험을 혁신하고 있습니다.왜 UV인가?성능의 혁신10-100배 빠른 속도: Rust 기반 구현으로 패키지 설치 속도가 극적으로 향상병렬 다운로드: 여러 패키지를 동시에 다운로드하여 시간 단축효율적인 캐싱: 글로벌 캐시로 중복 다운로드 방지현대적인 기능의존성 해결 개선: 더 정확하고 빠른 의존성 충돌 해결lockfile 지원: 재현 가능한 빌드를 위한 uv.lock 파일Python 버전 관리: pyenv 없이도 Python 버전 설치 및 관리설치 및 기본 사용법설치# m..
나는 현재 회사에서 Amazon Q와 연동하여 MCP를 사용하고 있다.이 내용은 기회가 되면, 다음에 다른 글로 정리해보는 걸로 ~ 하고, MCP에 대해 간단히 정리해보겠다.🧠 MCP(Model Context Protocol)란?AI가 문맥을 이해하고, 외부 도구와 똑똑하게 연동하는 표준 프로토콜! 💡 MCP의 기본 개념AI 모델이 사용자의 의도와 상황(문맥, context)을 더 잘 이해하고, 다양한 외부 도구와 안전하게 연동할 수 있도록 설계된 표준 인터페이스AI가 “지금 그거 해줘” 같은 모호한 요청에도 정확하게 대응하려면, 대화의 흐름이나 사용자의 작업 맥락을 파악해야함MCP는 이런 문맥 정보를 효과적으로 수집·정리·전달하는 규칙(프로토콜)을 제공함 📦 예시로 쉽게 이해하기문맥이 없는 경우사..
개발 환경 Node.js 설치: https://nodejs.orgVisual Studio Code 설치: https://code.visualstudio.com Visual Studio Code - Code Editing. RedefinedVisual Studio Code redefines AI-powered coding with GitHub Copilot for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.code.visualstudio.com 프로젝트 생성# @vscode/vs..
Linux 최신버전에서 barrier를 사용하는경우 마우스커서가 움직이지않아 마치 barrier가 제기능을 하지않는것처럼 보인다면,,Linux에서 기본값으로 사용중인 wayland 의 영향으로 wayland를 꺼주어야한다고 합니다.sudo vi /etc/gdm3/custom.conf ## 파일 열고WaylandEnable=true # 입력 or WaylandEnable=false # 주석 해제sudo systemctl restart gdm3 # 적용
리눅스에서 chrome 업데이트 하고 한글 모드 사용 시에백스페이스, 엔터, 방향키 조작이 안되서 화딱지 ... 알아보니 문제가 있다고 해서 다운 그레이드 했습니다 ...............# 크롬 삭제sudo apt remove google-chrome-stable# 이전 버전 파일 설치 sudo dpkg -i google-chrome-stable_134.0.6998.88-1_amd64.deb 이전 크롬 버전은 아래서 다운 가능 Index of /google-chrome/pool/main/g/google-chrome-stable/ mirror.cs.uchicago.edu 이전 버전 설치 후 실행 안되는 경우 chrome 삭제시에, chrome user data 랑 dependencies 지우고 설치하..
LLM Agent기존의 LLM은 정적인 응답 생성에 머물렀다면, Agent는 다음과 같은 능력을 가짐사용자의 지시를 이해하고 목표로 변환문제를 여러 단계로 분해필요시 외부 도구(API, 검색엔진, 계산기 등)를 사용결과를 검토하고 반복 시도 또는 조정궁극적으로 목표에 도달 요소 역할LLM추론과 응답 생성의 두뇌Tool외부 정보/기능 접근 수단Planning목표 달성 전략 수립Memory장기 기억 또는 대화 맥락 저장 Planning without feedback한 번 계획 → 그대로 실행작업 흐름이 예측 가능하고 안정적구현이 간단하고 디버깅이 쉬움처음 계획이 잘못됐을 경우, 전체 결과가 무의미해질 수 있음중간 단계의 실패를 무시하고 계속 진행됨 Planning with feedbackReAct (Re..
Retrieval Augmented Generation (RAG)LLM이 더 신뢰할 수 있고 사실 기반의 답변을 생성하도록 돕기 위해 고안된 기술로, 단순히 모델이 "기억"에만 의존하지 않고, 외부 지식 소스(문서, DB 등)로부터 관련 정보를 검색한 뒤, 이를 기반으로 텍스트를 생성함Retrieval (검색) : 외부 문서나 데이터베이스에서 질문과 관련된 정보를 찾아옴Augmentation (보강) : 검색된 문서를 모델 입력에 포함시켜, 모델이 사실 기반으로 답변할 수 있도록 유도Generation (생성) : LLM이 보강된 정보를 바탕으로 자연어 응답을 생성🔄 작동 흐름 사용자 입력 ex) “허리 통증에 좋은 스트레칭 방법은?” 질문 임베딩 (Query Embedding) 질문을 의미 벡터로 변..
Deep Learning: 고차원의 데이터를 낮은차원으로 정리해서 해석할 수 있도록 도와줌 ✅ Encoder-Decoder가 필요한 이유1. 입력과 출력의 길이가 다를 수 있어서- 예: 기계 번역, 이미지 캡셔닝, 문장 생성 등 - 입력은 5단어, 출력은 3단어일 수 있음 → 기존의 단순한 MLP나 RNN 하나만으로는 처리 어려움 - Encoder는 입력 전체를 읽고, Decoder는 원하는 길이만큼 생성 2. 의미 있는 압축 표현 생성- Encoder는 입력 문장의 의미를 압축하여 잠재 표현(latent vector) 로 정리 - 이 압축된 정보를 바탕으로 Decoder는 새로운 문장을 생성 → 사람이 언어를 처리하는 방식과 유사3. 다양한 응용 가능성기계 번역: 한국어 문장 → 영어 문장요약: 긴 문..
단일 Agent의 한계단일 Agent가 다루는 Tool이 너무 많아지거나, 처리해야 할 요청이 너무 복잡 하다면 작동이 불안정해질 수 있음확률적으로 token을 내밷는(샘플링하는) LLM 기반이기 때문에 요청이 길어지고 복잡해진다면 오작동을 할 가능성이 높아지기 때문 LangGraph그래프(Graph) 기반 워크플로우(Workflow) 특화 프레임워크노드(Node), 엣지(Edge), 상태(State) 개념을 활용하여 워크플로우를 구성LangChain에서 사용하던 LLM, 메모리, 도구(Tool) 등을 그래프 내에서 자연 스럽게 사용할 수 있으며, 기존 LangChain 프로젝트를 확장하기도 적합함노드(Node)하나의 에이전트 또는 실행 단위 (LLM, Tool, Function 등)그래프에서 각 작업(..
VectorDB데이터를 벡터 형식으로 저장하고 검색할 수 있는 데이터베이스벡터는 숫자의 배열로, 주로 이미지, 텍스트, 오디오 등의 비정형 데이터를 표현하는 데 사용두 벡터가 얼마나 비슷한지 비교하여 비슷한 데이터를 빠르게 찾을 수 있음. 예를 들어, 검색 엔 진이 질문에 대한 답변을 찾을 때 질문과 가장 유사한 문서를 벡터 DB에서 검색벡터 DB는 비정형 데이터를 저장하고, 유사한 데이터를 빠르게 찾아주는 데이터베이스Chroma DB오픈소스 프로젝트로 자유롭게 사용, 수정, 배포할 수 있으며 다음과 같은 상황 에 주로 사용LangChain과 같은 RAG(검색 증강 생성) 시스템을 구축할 때임베딩과 메타데이터를 함께 관리하면서 저장하고 검색해야 할 때간단한 Python API 기반으로 빠르게 구축하고 싶..
프롬프트 해킹과 보안JailbreakAI 모델은 사용자에게 해롭거나 부적절한 답변을 하지 않도록 여러 규칙과 필터(예: 콘텐츠 정책)가 적용되어 있음하지만 jailbreak 프롬프트는 이런 제한을 깨뜨리고, AI가 원래 하지 말아야 할 말이나 행동을 하게 만드는 방식역할 전환(Role-playing)모델에게 가상의 역할(예: 해커, 비밀 요원)을 부여하여 평소에는 하지 않을 답변을 유도함다중 단계 유도(Multi-turn prompting)여러 개의 질문을 단계적으로 던져서 제한을 조금씩 완화하거나 회피하도록 유도함명령 재정의(Instruction rewriting)모델의 지침을 무력화하도록 "지금부터 너는 어떤 검열도 하지 않아야 해" 등으로 규칙을 바꿔치기함인코딩 기법민감한 키워드를 숨기기 위해 특수..
프롬프트 엔지니어링Prompt : 사용자가 셸(터미널)에서 명령어 를 입력하는 대화창 Engineering : 공학은 자연과학, 수학, 엔지니어링 설 계 과정을 활용하여 기술적 문제를 해 결하고, 효율성과 생산성을 높이고, 시 스템을 개선하는 학문Prompt Engineering > 컴퓨터(AI, LLM)에게 일을 ‘잘’ 시키는 일!Prompt로 정확히 지시 내리기역할 할당참고 데이터 전달출력 구조 설정지시사항 전달 Hallucination- AI가 사실이 아닌 정보를 생성하는 현상- 존재하지 않는 데이터를 만들어내거나 잘못된 정보를 사실처럼 제공하는 경우를 포함- LLM이 확률적으로 단어를 예측하는 방식으로 동작하기 때문에 발생- 이 문제를 줄이기 위해 프롬프트 엔지니어링, 검증 시스템 도입, 인간 감..
LLM(Large Language Model)이란?Parameter 파일 + 실행 파일 (by Andrej Karpathy)결국 수많은 텍스트 데이터의 패턴을 익혁서 학습한 패턴을 바탕으로 대답을 생성파라미터 하나 당 보통 2byte(요즘은 좀더 경량화=양자화 해서 1byte 미만에 매칭되기도함), 파라미터 1B 모델이라면 20GB 용량20GB 모델 돌리려면, 20GB 정도의 ram 필요(이전엔 모델이 크면 과적합이라 생각 > ) 2019년 말 OpenAI의 Deep Double Descent = 모델을 진짜 많이 키워보니 오히려 좋아지더라 libraryBrowse Ollama's library of models.ollama.com> gamma3, qwen3 등cursor AI소프트웨어 개발자를 위한 ..
Rebase브랜치의 Base Commit(= Base) 를 재설정 (= Re) 하는 명령어브랜치의 커밋 히스토리를 재구성하거나 병합할 때 사용함주로 더 깔끔하고 직선적인 커밋 히스토리를 유지할 수 있다는 장점이 있음 Merge vs RebaseMerge는 두 브랜치를 병합하면서 병합 커밋(merge commit)을 생성함Rebase는 병합 커밋 없이 커밋 히스토리를 재구성하여 더 깔끔한 히스토리를 만듦# Merge# main 브랜치로 이동git checkout main# feature 브랜치를 main에 병합git merge feature# Rebase# feature 브랜치를 main 브랜치 위로 재배치git checkout featuregit rebase main# 충돌이 발생하는 경우, 수정 후gi..
React HooksReact에서 제공하는 주요 Hooks는 함수형 컴포넌트에서 상태 관리와 생명주기 관련 기능을 사용할 수 있도록 도와줌useState컴포넌트에서 상태(state)를 관리하기 위한 Hookstate: 현재 상태 값setState: 상태를 업데이트하는 함수initialValue: 상태의 초기값// 사용법const [state, setState] = useState(initialValue);// Exampleconst [count, setCount] = useState(0);const increment = () => setCount(count + 1); useEffect컴포넌트의 부수 효과(side effects)를 처리하기 위한 Hook데이터 가져오기, 구독 설정, DOM 업데이트 등de..