
단일 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)에게 일을 ‘잘’ 시키는 일! Hallucination- AI가 사실이 아닌 정보를 생성하는 현상- 존재하지 않는 데이터를 만들어내거나 잘못된 정보를 사실처럼 제공하는 경우를 포함- LLM이 확률적으로 단어를 예측하는 방식으로 동작하기 때문에 발생- 이 문제를 줄이기 위해 프롬프트 엔지니어링, 검증 시스템 도입, 인간 감수 과정, function calling을 통한 출처 활용 등이 필요 프롬프트 설계..

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..

Tailwind CSS유틸리티 퍼스트(Utility-First) 접근 방식을 기반으로 한 CSS 프레임워크HTML 태그에 직접 적용할 수 있는 미리 정의된 유틸리티 클래스를 제공하여, 별도의 복잡한 CSS 코드를 작성하지 않고도 빠르고 효율적으로 스타일링할 수 있도록 도움전통적인 CSS 작성 방식과 달리, 클래스 기반의 스타일링을 통해 빠르게 UI를 구현할 수 있음설치# tailwindcss 설치npm install -D tailwindcss# tailwind.config.js 파일 생성npx tailwindcss init 레이아웃 (Layout)Container : 반응형 컨테이너를 설정mx-auto : 수평 중앙 정렬flex : Flexbox 컨테이너 생성grid : 그리드 레이아웃 설정space-x..

회사에서 react를 이용해서 project를 진행하게 되었다 ..이 전에 react를 써본 경험이 거의 없어서,, (Vue.js 만 조금 써봤다) 이번 기회에 react에 대해 간단히 정리해 보려고 한다. React 란?React는 컴포넌트 기반의 JavaScript 라이브러리로, UI를 효율적으로 관리할 수 있도록 도와줌# Node.js 설치# install react.jsnpm install -g create-react-app# create projectcreate-react-app my-app# runcd my-app npm start Component재사용 가능한 UI 조각으로, 독립적으로 동작하며 다른 컴포넌트와 결합하여 복잡한 UI를 구성함ex) 버튼이나 폼 같은 UI 요소를 컴포넌트로 만들..

MOM(Message Oriented Middleware, 메세지 지향 미들웨어)응용 소프트웨어 간의 비동기적 데이터 통신을 위한 소프트웨어비동기 방식으로 메세지를 전달함 ex) Queue, Broadcast, Multicast 등메세지를 통해 여러 분산되어 있는 시스템간의 Connector 역할로 결합성을 낮춤메세지를 발행하는 Publisher (Producer), 소비하는 Subscribe (Consumer)로 구성되어 있음메세지를 전달하는 과정에서 보관, 라우팅, 변환할 수 있다는 장점이 있음보관 : 한 은행 시스템에서 고객의 송금 요청이 발생했지만, 수신 측 시스템이 일시적으로 다운된 경우에도 메시지 지향 미들웨어가 해당 요청을 큐에 저장해 둠. 수신 시스템이 복구되면 메시지가 자동으로 처리되어 ..

team-mate 활동이란?팀메이트란 "하나의 팀으로 연결되다" 라는 의미로,선도기업 아카데미 과정 수료생 멘토와의 온·오프라인 멘토링 활동이다!나는 K-디지털 트레이닝 과정인 SSAFY와 SKT FLY AI 과정에 참여했었고,언젠가 취업을 하고 나서 취준생을 돕고 싶다는 마음이 있었어서, 멘토로 지원해서 활동했다 ! 선정 과정어느 날 멘토를 모집한다는 메일이 왔고,간단한 지원서 -> 면접 후 멘토로 선정되었다.면접은 약 15분 정도 진행되었던 것 같고, 다대다 면접이라 질문은 2개 정도 간단하게 하셨다. 내가 진행했던 멘토링우선 멘토/멘티를 선정이 완료되면대한상공회의소 측에서 7~8(멘토/멘티 3~4인씩)인으로 구성된 팀을 빌딩해준다.물론 멘티당 한명의 멘토도 배정해준다!! 나 같은 경우에는 팀 멘토링..

git commit --amend브랜치의 최신 커밋을 수정하는 가장 간단한 방법기능을 만들고 커밋을 했는데, 빠진 내용이 있거나 잘못 올린 경우 수정을 위해 사용만약 워킹 디렉토리에 변경 사항이 없다면 단순히 메시지만 수정할 수도 있음커밋 ID가 변경됨 (즉, 새로운 커밋이 생성되므로 기존의 커밋은 사라지고 새로운 커밋이 그 자리를 대신함) # ex) 파일을 까먹은 경우$ git add forgotten_file$ git commit --amend# 커밋 메시지만 수정하고 싶을 때 사용하는 옵션# (오타나 불필요한 정보가 포함된 커밋 메시지를 수정할 때 유용함)$ git commit --amend --no-edit

Chrome을 최신 버전으로 업데이트하면서, 자동화 테스트 중 ChromeDriver 설치에 문제가 생겼다 ..구글링을 하던 중 ChromeDriver를 설치하지 않고, webdriver_manager를 이용하는 방식을 알게 되어서관련된 개념을 정리할 겸 글을 작성해 보려고 한다.기존에는 Chrome 버전에 맞는 ChromeDriver를 찾아서 설치해주는 방식을 이용했는데,최신 Chrome 버전에 맞는 ChromeDriver 버전이 chromedriver.storage에 없어서 다운 받지 못하는 문제였다 .. selenium웹사이트 테스트를 위한 도구로 브라우저 동작을 자동화할 수 있음프로그래밍으로 브라우저 동작을 제어해서 마치 사람이 이용하는 것 같이 웹페이지를 요청하고 응답을 받아올 수 있음 Chro..

1. String parameter GIT_BRANCH 추가 2. Branches to build > Branch Specifier에 ${GIT_BRANCH} 넣어주기

잘 트리거 되고 있던 Jenkins 에서 다음과 같은 문제가 발생했다 ,,ERROR: Error cloning remote repo 'origin'...error=0, Failed to exec spawn helper: pid: 2293555, exit value: 1 문제 원인Jenkins 에이전트 프로세스를 중지하고 다시 시작하지 않고 Java 버전을 업데이트한 것computer running that Java process has updated the Java version without stopping and restarting the Jenkins agent process.해결 방법Jenkins Agent 재시작