[00:00]
Cursor나 Windsurf 같은 AI 보조 IDE는 코딩에 정말 뛰어나지만
[00:03]
대부분의 경우 여전히 사람의 개입이 필요합니다
[00:07]
하지만 이제 새로운 카테고리의
[00:09]
AI 코딩 에이전트가 등장하고 있습니다
[00:11]
여기에는 Claude Code와
[00:14]
Devins 같은 도구들이 포함되는데
[00:16]
이들은 코딩 작업을
[00:18]
자율적이고 비동기적으로 수행할 수 있습니다
[00:20]
이 카테고리에 새로운 도구가 추가되었는데
[00:23]
바로 Warp입니다
[00:26]
Warp는 에이전트 개발 환경으로
[00:29]
분류될 수 있습니다
[00:31]
Claude Code와 매우 유사한 기능을 제공하며
[00:33]
대규모 코드베이스와 함께 작업할 수 있습니다
[00:35]
이 영상에서는 Warp의 에이전트를 사용해서
[00:38]
Local GPT에
[00:40]
새로운 컨텍스트 검색 기능을 구현하는
[00:42]
실제 예시를 보여드리겠습니다
[00:46]
오늘 영상의 스폰서이기도 하지만
[00:47]
도구 자체가 정말 놀랍습니다
[00:49]
그럼 시작해보겠습니다
[00:53]
Warp를 처음 실행했을 때의 인터페이스입니다
[00:55]
터미널처럼 보이지만
[00:58]
Warp의 에이전트 개발 환경을 사용해서
[01:00]
대규모 코드베이스에서
[01:02]
새로운 기능을 구현하는 방법을 보여드리겠습니다
[01:05]
먼저 사용 가능한 기능이나
[01:07]
옵션들을 살펴보겠습니다
[01:10]
첫 번째로
[01:12]
최신 대형 언어 모델들을 다양하게 선택할 수 있습니다
[01:16]
저는 자동 모드를 선호하는데
[01:20]
에이전트가 작업의 복잡성에 따라
[01:22]
어떤 모델을 사용할지 결정하기 때문입니다
[01:25]
또한 이미지를 첨부하거나
[01:27]
GitHub 저장소를 연결할 수 있고
[01:30]
음성 입력 기능도 있어서 정말 유용합니다
[01:32]
원한다면 일반 터미널 모드로 사용하거나
[01:35]
자동 감지 기능을 사용할 수 있는데
[01:38]
이는 에이전트 모드와 일반 터미널 사이를
[01:40]
자동으로 전환합니다
[01:43]
예를 들어 이런 bash 명령어를 입력하면
[01:46]
bash 명령어를 실행해줍니다
[01:49]
다시 ls를 실행하면 bash 명령어를 실행합니다
[01:53]
하지만 음성 입력 모드를 사용해서
[01:55]
자연어로 음성 명령을 제공하면
[01:58]
자동으로 에이전트 모드로
[02:01]
전환됩니다
[02:03]
예시를 보여드리겠습니다
[02:06]
이 폴더의 모든 항목을 나열하고
[02:09]
크기순으로 정렬해줄 수 있나요?
[02:12]
자연어 쿼리를 받아서 텍스트로 변환했습니다
[02:15]
이제 실행하면 에이전트가
[02:18]
먼저 쿼리나 bash 명령어를
[02:20]
생성하는 것을 볼 수 있습니다
[02:23]
실행할 bash 명령어의 결과입니다
[02:27]
그리고 대형 언어 모델을 사용해서
[02:29]
결과를 분석하고
[02:31]
폴더에 있는 내용들을 크기순으로 정렬해서
[02:34]
정말 자세한 정보를 제공합니다
[02:36]
정말 훌륭합니다
[02:39]
더 이상 bash 명령어를 기억할 필요가 없습니다
[02:41]
터미널과 자연어로
[02:43]
상호작용할 수 있습니다
[02:45]
Warp의 진정한 매력은
[02:48]
에이전트 개발 환경입니다
[02:51]
영상의 나머지 부분에서는
[02:53]
에이전트를 사용해서 제 Local GPT
[02:56]
코드베이스와 상호작용해보겠습니다
[03:00]
이는 제 개인 프로젝트로
[03:02]
20,000개 이상의 스타를 받았습니다
[03:06]
코드베이스를 업데이트한 지
[03:07]
꽤 오래되어서 Warp의 에이전트를 사용해
[03:11]
새로운 기능을 구현하고 싶습니다
[03:14]
구체적으로는 Anthropic의
[03:17]
컨텍스트 검색 기법을 구현하고 싶습니다
[03:20]
먼저 에이전트에게
[03:21]
저장소를 복제하고 분석해서
[03:24]
이 레포지토리를 클론하고, 레포지토리의
[03:27]
내용을 분석해서 레포에 정확히
[03:30]
무엇이 들어있는지 스스로 파악하고,
[03:33]
프로젝트를 실행하기 위한
[03:36]
가상 환경을 설정하도록 할 거예요.
[03:38]
그리고 나중에 영상에서 이 새로운
[03:41]
기능을 구현하도록 요청할 거예요.
[03:43]
에이전트에게 레포를 get 폴더에
[03:46]
클론하라고 요청하고 에이전트가
[03:49]
모든 걸 처리하게 할 거예요.
[03:51]
보시다시피 명령어를 생성했어요.
[03:53]
특히 폴더 이름을 local GPT contextual로
[03:56]
하고 싶었는데, 그렇게 할 수 있었어요.
[03:59]
기본적으로 각 명령을 수동으로
[04:01]
실행하도록 요청하는데, 이건 정말
[04:03]
좋은 기능이에요. 특히 샌드박스 밖에서
[04:06]
실행하는 경우라면요. 하지만 자동 실행도
[04:10]
활성화할 수 있는데 이것도 꽤 멋져요.
[04:12]
지금까지는 레포만 클론했네요.
[04:15]
이제 제 머신에 local GPT를
[04:16]
설정하라고 요청해볼게요. 그리고 모든 걸
[04:20]
자동 승인하겠습니다. 먼저 디렉토리로
[04:22]
이동하네요. 그리고 readme 파일을 보고
[04:25]
지시사항을 읽고 있어요.
[04:27]
다시 말하지만 저는 코드베이스만 제공했는데
[04:30]
이제 이 특정 프로젝트를 제 로컬
[04:32]
머신에서 실행하는 방법을 자동으로 파악하고
[04:36]
있어요. 정말 멋지네요.
[04:37]
여기서 문제가 발생한 것 같아요.
[04:40]
디렉토리를 변경하려고 했는데 이미
[04:43]
거기에 있었던 것 같네요. 이제
[04:45]
그 문제를 복구하고 있어요.
[04:47]
지금 가상 환경을 생성하고
[04:49]
모든 패키지를 다운로드하는 것 같네요.
[04:52]
여기서 보시다시피 가상
[04:53]
환경을 생성했어요. 이제 명령을
[04:56]
실행하고 있네요. 가상 환경을
[04:58]
활성화했고 이제 모든
[05:00]
의존성을 설치하고 있어요.
[05:03]
정말 놀라운 것은 에이전트가
[05:05]
readme 파일을 읽고 모든
[05:07]
지시사항을 따르고 모든
[05:09]
의존성을 설치할 수 있다는 거예요. 정말 멋진 일이죠.
[05:12]
한 가지 더, local GPT는 설치하기가
[05:14]
조금 까다로운데 왜냐하면
[05:15]
사용하는 운영체제에 따라
[05:18]
다른 버전의 llama CPP를
[05:20]
설치해야 하거든요. 지금 readme를
[05:23]
읽고 있고 제가 Mac OS에서
[05:26]
실행하고 있으니까 Apple 실리콘용
[05:29]
특정 버전을 사용하기로 결정했어요.
[05:31]
정말 멋지네요. 코딩 에이전트가
[05:34]
한 아주 흥미로운 일들을
[05:36]
보여드릴게요. 첫 번째는
[05:39]
기본적으로 local GPT는 llama 38억 모델을 사용하는데
[05:44]
우리는 공식 메타 버전을 사용하고 있고
[05:46]
이건 게이트 모델이에요. 그래서
[05:49]
허깅페이스 계정에 그에 대한
[05:52]
액세스 권한을 부여해야 하죠. 하지만
[05:55]
Warp 에이전트는 게이트되지 않은 양자화된
[05:59]
버전을 사용하기로 했고, 제가 Apple 실리콘에서
[06:01]
사용하고 있으니까 이 양자화된
[06:03]
버전이 더 잘 실행될 거예요.
[06:06]
모델이나 에이전트가 그걸
[06:08]
결정했다는 게 꽤 흥미로워요. 그리고
[06:11]
지시사항을 따라서 소스 문서
[06:14]
폴더를 살펴봤는데 예시 문서가
[06:16]
있어서 계속 진행해서
[06:19]
가상 환경을 활성화한 후
[06:22]
주입 파이프라인을 실행했는데 이게 아주
[06:25]
흥미로웠어요. 그리고 전체 과정에서
[06:28]
에이전트는 실제로 자신이 취한
[06:30]
단계들을 추적하고 있고
[06:33]
출력이 어떻게 보이는지도 말이에요. 예를 들어
[06:35]
여기서는 벡터 스토어가 생성되었는지 확인하고 있어요.
[06:38]
벡터 스토어가 생성되었는지 확인합니다. 이제
[06:40]
특정 함수를 로드할 수 없는 문제가 발생했지만
[06:43]
이를 복구할 수 있는 것 같고
[06:45]
설정을 다시 실행하는 방법에 대한
[06:47]
가이드를 만들어주었고, 로컬 GPT를 실행할 수 있는
[06:51]
유용한 bash 스크립트도 생성했습니다.
[06:54]
하지만 이제 리트리벌 파이프라인을 실행해서
[06:56]
제공한 문서들을 기반으로 질문할 수 있도록
[06:59]
하고 싶습니다.
[07:01]
이걸 파악할 수 있는지 보겠습니다.
[07:03]
다음으로 리트리벌 파이프라인을 어떻게
[07:05]
실행하는지 물어보니
[07:08]
파이프라인 실행 방법을 알아냈고
[07:10]
특히 문서 소스를 요청했기 때문에
[07:13]
해당 플래그도 사용하고 있습니다.
[07:16]
실제로 코드베이스를 살펴보고 있네요.
[07:19]
이것을 실행하고
[07:21]
모델이 로드되길 기다려봅시다.
[07:23]
로컬 GPT는 기본적으로
[07:24]
이 논문을 소스 문서로 제공하지만
[07:27]
자신만의 문서를 가져와서
[07:29]
채팅할 수도 있습니다.
[07:32]
좋습니다. 여기 하나의 질문이 있습니다.
[07:35]
모델이 답변을 생성했고
[07:37]
제공한 문서에서 특정 청크들을
[07:40]
인용하기도 했습니다.
[07:43]
모든 것이 정상적으로 작동하는 것 같습니다.
[07:45]
출력의 품질은
[07:47]
로컬 GPT가 사용하는 모델에 따라
[07:49]
달라질 것입니다.
[07:52]
이제 로컬 GPT 내에
[07:54]
이 맥락적 리트리벌 기능을 구현하고 싶습니다.
[07:56]
아이디어는 각 청크마다
[07:59]
주변 청크들의 요약을
[08:01]
추가하는 것입니다.
[08:04]
맥락적 리트리벌은 전체 문서를 사용해서
[08:06]
요약을 생성하지만, 저는
[08:08]
슬라이딩 윈도우 접근법을 구현하고 싶습니다.
[08:11]
이는 주어진 청크 주변의 특정
[08:14]
청크들만 고려하고
[08:17]
요약을 생성할 때
[08:18]
전체 문서 대신 사용하는 것입니다.
[08:21]
여기 사용할 프롬프트가 있습니다.
[08:22]
청킹 과정에서
[08:24]
맥락적 리트리벌을 구현하도록 요청할 것입니다.
[08:27]
문서도 제공했습니다.
[08:29]
웹 검색 도구를 사용해서
[08:31]
이 웹 링크의 내용을 실제로
[08:33]
가져와서 이해할 것입니다.
[08:36]
하지만 제안된 방법의 변형을 원합니다.
[08:38]
주어진 청크의 맥락적 요약을
[08:40]
생성하기 위해 전체 문서 대신
[08:42]
현재의 두 청크만 사용하고 싶습니다.
[08:45]
각 청크에 대해 주변의 두 청크라고 하겠습니다.
[08:49]
슬라이딩 윈도우 접근법은
[08:52]
지연시간을 줄이고
[08:54]
요약이 현재 청크와
[08:56]
관련성을 유지하도록 보장합니다.
[08:58]
먼저 에이전트가 이 문서가 무엇에 관한 것인지
[09:01]
파악해야 합니다.
[09:04]
그 다음 정확히 어디에 변경사항을
[09:07]
구현할지 파악하고
[09:09]
그 변경사항들을 구현합니다.
[09:11]
맥락적 리트리벌 방법을 구현하기 위해
[09:13]
완전히 새로운 모듈을 작성했고
[09:15]
제공한 웹 링크를 기반으로 한
[09:18]
구현이 올바른 것 같습니다.
[09:20]
여기 사용할 프롬프트가 있습니다.
[09:21]
주변 청크들과
[09:22]
텍스트 청크들을 가져와서
[09:24]
이를 LLM에 전달해
[09:27]
요약을 생성합니다.
[09:28]
변경사항을 적용하고 이제
[09:31]
모든 변경사항을 메인 파이프라인에 가져오고 있습니다.
[09:33]
파이프라인으로 이동합니다. 실제로
[09:34]
새로운 모듈을 가져온 차이점을 확인할 수 있습니다.
[09:37]
생성된 모듈이고 청킹 과정에서
[09:40]
이 새로운 모듈을 사용할 것입니다.
[09:42]
좋습니다, 변경사항이 적용되었습니다.
[09:45]
현재 제가 모든 것을 수동으로 승인하고 있지만
[09:47]
자동 승인을 활성화할 수 있고
[09:49]
에이전트가 자동으로
[09:52]
작업을 승인하고 계속 진행하겠지만
[09:54]
지금은 정확히 무엇을 하는지
[09:56]
더 많은 제어권을 갖고 보고 싶습니다.
[09:58]
이것이 주요 변경사항이었습니다.
[10:00]
컨텍스추얼이 활성화되면
[10:04]
각 청크와 그 주변 윈도우를
[10:06]
우리가 생성한 새로운 모듈로 전달할 것입니다.
[10:10]
새로운 컨텍스추얼 검색 구현을
[10:13]
실행하는 방법에 대한 readme를 생성했고
[10:15]
시도했을 때 다른 문제가 발생했지만
[10:18]
복구할 수 있었습니다.
[10:20]
이제 새로운 컨텍스추얼 검색
[10:22]
구현으로 주입 과정을 다시 실행하겠습니다.
[10:26]
구현으로 다시 실행하겠습니다.
[10:27]
실행했을 때 출력이 어떻게 보이는지
[10:29]
확인해보겠습니다.
[10:31]
모든 청크마다
[10:34]
컨텍스트가 될 작은 요약을 추가하고
[10:35]
원본 청크가 뒤따를 것입니다.
[10:38]
요약인 컨텍스트가 있고
[10:41]
그 다음에 원본 청크가 있습니다.
[10:43]
ORCA 논문 51페이지 전체에 대해
[10:45]
전체 과정을 실행했습니다.
[10:48]
개별 청크마다 처리해야 해서
[10:50]
시간이 좀 걸렸지만
[10:53]
검색이 어떻게 보이는지 확인해봅시다.
[10:55]
이 질문에 대한 검색입니다.
[10:57]
LLaMA가 ORCA와 어떻게 비교되는가? 여기
[11:00]
생성되는 답변입니다.
[11:02]
컨텍스트에서 사용하는 각 청크를 보면
[11:05]
주변 청크들을 기반으로 한
[11:07]
해당 청크의 요약이 있고
[11:10]
그 다음에 원본 청크가 있습니다.
[11:13]
이제 PR을 생성해서 Local GPT에 푸시하고
[11:16]
이 새로운 기능을 구현할 수 있습니다.
[11:18]
이것은 에이전트 개발 환경으로
[11:20]
소프트웨어를 구축하는 방법에 대한 간단한 튜토리얼이었고
[11:24]
이제 아키텍트로 일할 수 있고
[11:26]
에이전트 그룹이
[11:28]
코드베이스를 구현할 수 있다는 것을 보여줍니다.
[11:31]
이것은 소프트웨어 구축의 새로운 패러다임입니다.
[11:34]
새로운 패러다임입니다.
[11:37]
Warp를 무료로 시작할 수 있습니다.
[11:38]
월 150개의 AI 요청을 제공합니다.
[11:40]
유료 버전으로 업그레이드할 수도 있는데
[11:44]
적극 추천합니다.
[11:47]
어쨌든 한번 확인해보세요.
[11:50]
링크는 영상 설명에
[11:51]
있을 것입니다.
[11:53]
이 영상이 유용했기를 바랍니다.