[00:00]
OpenAI가 방금 새로운 에이전트 빌더를 출시했고
[00:02]
이미 일부 사람들은 이걸 N8N 킬러라고 부르고 있습니다.
[00:03]
아직 완전히 그 수준까진 아니라고 생각하지만
[00:06]
간단한 테스트를 해봤는데
[00:08]
GitHub PR 코드 리뷰 에이전트를 만들 수 있었고
[00:10]
이건 N8N에서 만들 것과 꽤 비슷한 수준이었습니다.
[00:11]
솔직히 말하면, 여기엔 게임체인저 수준의 기능들이 있고
[00:14]
특히 위젯 기능이 정말 인상적입니다.
[00:15]
하지만 몇 가지 작은 문제들도 있어서
[00:18]
완전히 사랑하기엔 아직 부족한 부분들이 있습니다.
[00:19]
에이전트 빌더는 OpenAI 플랫폼에서 찾을 수 있습니다.
[00:21]
보시는 바와 같이 첫 번째 워크플로우를 만들거나
[00:23]
제공되는 6개의 템플릿 중에서
[00:25]
선택할 수 있습니다.
[00:26]
제 경우엔 이전에 만든
[00:28]
GitHub 코드 PR 리뷰 에이전트를 다시 불러와보겠습니다.
[00:29]
이렇게 서로 연결된 노드들을 보실 수 있고
[00:31]
확대해보면
[00:33]
이런 플랫폼들에서 기대하는
[00:34]
일반적인 드래그 앤 드롭 인터페이스입니다.
[00:36]
N8N이나 Zapier에서 보는 것과 비슷하죠.
[00:37]
왼쪽에는 사용할 수 있는 모든 노드들이 있습니다.
[00:38]
에이전트는 모델을 가지고
[00:41]
프롬프트를 주어 출력을 얻는 노드입니다.
[00:43]
아래에는 파일 검색, 가드레일, MCP 같은
[00:44]
도구들이 있습니다.
[00:46]
MCP는 정말 멋진 기능인데
[00:48]
기본적으로 원하는 모든 것을
[00:49]
이 워크플로우에 연결할 수 있기 때문입니다.
[00:52]
그리고 로직 노드들도 있는데
[00:53]
이것들은 복잡한 워크플로우를
[00:55]
다단계로 구성하는 데 도움을 줍니다.
[00:57]
개별 노드들과 제가 이 워크플로우를
[00:58]
어떻게 설정했는지 보여드리기 전에
[01:00]
빠르게 미리보기를 해서
[01:02]
실제로 작동할 때 어떤 모습인지
[01:03]
컨텍스트를 얻어보겠습니다.
[01:04]
제 에이전트의 경우
[01:06]
'review'라고 말하고
[01:08]
GitHub PR 링크를 보내기만 하면 됩니다.
[01:09]
여기서 엔터를 누르면
[01:11]
제 워크플로우의 모든 개별 단계들을
[01:13]
거치는 것을 볼 수 있습니다.
[01:14]
현재 가드레일 단계에 있고
[01:16]
그걸 통과했습니다. PR 정보 추출도 했고
[01:18]
if-else 블록도 거쳤습니다.
[01:19]
현재는 GitHub에서 실제 세부사항을
[01:21]
가져오기 위한 MCP 서버 단계에 있고
[01:22]
이제 코드 리뷰 에이전트 단계입니다.
[01:24]
이 단계는 GPT-4o를 사용하고
[01:26]
모든 추론 과정을 거치기 때문에
[01:28]
시간이 좀 걸립니다.
[01:30]
또한 웹 검색과 MCP 서버도
[01:32]
연결되어 있습니다.
[01:33]
코드 리뷰가 완료되면
[01:34]
최종 에이전트로 넘어가는데
[01:36]
이 에이전트는 단순히 위젯을 반환합니다.
[01:38]
여기 아래 보이는 이 위젯은
[01:40]
이제 채팅 내에서 가질 수 있는
[01:42]
인터랙티브 컴포넌트입니다.
[01:44]
제 경우에는
[01:45]
코드 리뷰를 기반으로
[01:47]
랜덤 밈을 보여주도록 연결했습니다.
[01:49]
위젯은 실제로 ChatKit의 일부이고
[01:51]
그것도 그들이 출시한 또 다른 기능입니다.
[01:52]
더 긴 동영상을 작업 중이니
[01:54]
거기서 나온 모든 것들을 다룰 예정입니다.
[01:55]
OpenAI가 하고 있는 모든 일들에 대해
[01:57]
최신 정보를 받고 싶으시다면 구독해주세요.
[01:58]
실제 작동하는 것을 보신 컨텍스트로
[02:00]
이제 어떻게 설정되었는지와
[02:02]
모든 개별 노드들이 워크플로우에서
[02:04]
어떻게 작동하는지 살펴보겠습니다.
[02:06]
우리는 항상 왼쪽부터 시작합니다.
[02:08]
맨 왼쪽에서 시작하는 블록이 보입니다.
[02:09]
이 블록은 단순히 텍스트 입력을 받습니다.
[02:11]
보통 채팅 메시지가 들어갑니다.
[02:13]
여기서 맞춤 변수도 정의할 수 있어요.
[02:14]
문자열, 숫자, 불리언, 객체나
[02:16]
리스트가 될 수 있죠. 시작 블록에서
[02:18]
가드레일 도구로 연결됩니다.
[02:20]
정말 멋진 기능이에요.
[02:23]
실제로 검열 체크를 할 수 있고
[02:24]
환각, 탈옥 공격뿐만 아니라
[02:26]
개인정보 검사도 가능합니다.
[02:28]
정말 유연하게 커스터마이징할 수 있어요.
[02:30]
현재 제가 설정한 것은
[02:31]
검열과 탈옥 방지 기능을 켜놨습니다.
[02:33]
이런 기능들 옆의 설정 아이콘을 클릭하면
[02:34]
차단하거나 검열할 수 있는
[02:36]
옵션이 정말 많이 있습니다.
[02:38]
탈옥 방지 기능을 보면
[02:40]
탈옥 검사를 수행할 모델까지
[02:41]
선택할 수 있고 신뢰도 임계값도
[02:43]
설정할 수 있어요. 제 경우에는
[02:44]
사용자 입력에 대해서만 설정했지만
[02:46]
모델의 출력에 대해서도
[02:48]
설정할 수 있습니다.
[02:50]
가드레일 검사에 실패하면
[02:52]
아래쪽 에이전트로 연결됩니다.
[02:54]
이 에이전트도 정말 간단해요.
[02:55]
단순히 "사용자에게
[02:57]
다시 시도하지 말라고 경고하는
[02:59]
재미있는 메시지를 보내라"고 하고
[03:00]
GPT-4o mini를 사용합니다.
[03:03]
그리고 워크플로우를 종료합니다.
[03:05]
이건 기본적으로 채팅 메시지죠.
[03:07]
검사를 통과하면
[03:08]
정보를 추출하는
[03:10]
에이전트로 이동합니다.
[03:11]
이 경우 GitHub 레포
[03:13]
이름, 소유자, 풀 리퀘스트를
[03:15]
채팅 기록에서 추출하도록 했습니다.
[03:17]
여기서 가장 중요한 부분은
[03:18]
출력 형식입니다.
[03:20]
텍스트, JSON, 위젯 옵션이 있고
[03:22]
나중에 보실 텐데 JSON으로 설정했습니다.
[03:24]
그리고 원하는 스키마를 정의합니다.
[03:26]
여기서 보시면 제 스키마는
[03:28]
owner, repo, pool number인데
[03:29]
각각 문자열, 문자열, 숫자
[03:31]
형태입니다. 그리고
[03:32]
설명을 추가할 수 있어서 AI가
[03:34]
이 값들이 무엇인지 이해할 수 있습니다.
[03:36]
현재 이 부분에서 한 가지
[03:38]
알아두셔야 할 것은 필수 버튼이
[03:39]
완전히 작동하지 않는다는 점이에요.
[03:41]
필수가 아닌 것으로 체크를 해제하면
[03:43]
전체 워크플로우가 망가집니다.
[03:44]
며칠 내에 고쳐질 문제겠지만
[03:46]
이걸 알아내기까지 정말 짜증났어요.
[03:47]
이 대화상자에서 또 다른 기능은
[03:49]
아래쪽에 생성 버튼이 있어서
[03:50]
원하는 JSON 스키마를 입력하면
[03:52]
AI가 알아서 구축해주고
[03:53]
또는 여기 고급 옵션을 클릭하면
[03:55]
실제 JSON 스키마를 볼 수 있습니다.
[03:57]
이제 이 단계에서 구조화된
[03:59]
출력을 받았으니
[04:01]
if-else 검사를 실행합니다.
[04:02]
여기 if-else 검사는 단순히
[04:04]
PR 정보가 있는지 확인합니다.
[04:06]
이 부분을 클릭해보시면
[04:08]
정보가 있는지 확인하기 위해
[04:09]
사용한 공통 표현 언어를
[04:11]
볼 수 있어요. 소유자가
[04:13]
빈 문자열인지, 레포가 빈 문자열인지
[04:15]
또는 풀 번호가 0인지 확인합니다.
[04:17]
말씀드린 대로, 필수 체크를 남겨둬야 하기 때문에
[04:20]
여기서 null을 확인할 수는 없습니다.
[04:22]
정보가 없다면,
[04:24]
가드레일과 매우 유사하게
[04:26]
다른 에이전트로 보냅니다.
[04:28]
텍스트 응답을 보내서
[04:30]
조금 더 많은 정보가 필요하다고
[04:31]
말하고 워크플로를 종료합니다.
[04:33]
하지만 정보가 있다면
[04:35]
transform data 노드로 보냅니다.
[04:37]
이건 출력을 재구성할 수 있게 해주는
[04:39]
헬퍼입니다.
[04:40]
MCP 서버의 다음 단계에서
[04:43]
특정 입력 스키마가 필요하기 때문입니다.
[04:44]
두 노드 사이의 경로를 클릭하면
[04:46]
그것이 무엇인지 볼 수 있습니다.
[04:48]
target input schema로 가면
[04:49]
owner는 문자열, pool number는 숫자
[04:52]
repo도 문자열이어야 합니다.
[04:53]
우리는 그것과 아주 가까운 상태입니다.
[04:55]
이 transform data 노드 이전으로 돌아가면
[04:57]
여기로 들어오는 입력이
[04:59]
output pass이고
[05:01]
그 다음에 owner, repo, pool number였습니다.
[05:02]
실제로는 중첩된 객체입니다.
[05:04]
그래서 이 transform 단계를 사용해서
[05:06]
데이터를 평면화해야 합니다.
[05:08]
이전에 본 것과 같은 방식으로
[05:10]
스키마를 설정하지만
[05:11]
이번에는 값들을 매핑합니다.
[05:12]
이걸 select로 바꾸면
[05:14]
워크플로에서 접근할 수 있는
[05:16]
값들 중 일부를 선택할 수 있습니다.
[05:18]
제 경우에는
[05:20]
여기 output path에 있는 중첩된 객체에 접근하고 싶습니다.
[05:23]
그래서 pool number를
[05:25]
거기서 가져온 pool number에 매핑하겠습니다.
[05:26]
이제 MCP 서버가 올바른 입력을 가졌습니다.
[05:28]
MCP 노드를 살펴보겠습니다.
[05:30]
GitHub MCP 서버를 사용하고 있고
[05:32]
링크와
[05:34]
인증 키를 제공했습니다.
[05:36]
이 경우 GitHub MCP 서버에 있는
[05:38]
모든 도구를 선택할 수 있습니다.
[05:39]
저는 pull request diff를 가져오는
[05:41]
도구만 사용하고 있습니다.
[05:43]
require approval의 경우
[05:45]
사용자에게 묻기를 원하지 않으므로
[05:46]
never로 설정했습니다.
[05:48]
이것이 완전히 자동화된 단계가 되기를 원합니다.
[05:50]
MCP 서버 설정이 어떻게 생겼는지 보여드리겠습니다.
[05:52]
여기에 새로운 노드를 드래그하고 이걸 클릭하면
[05:54]
add 버튼을 클릭할 수 있습니다.
[05:56]
OpenAI에서 생성하고 유지 관리하는
[05:57]
MCP 서버들과
[05:59]
일부 서드파티 승인된 서버들로 이동합니다.
[06:00]
여기서 Zappia를 보는 게 흥미로웠습니다.
[06:02]
많은 사람들이 이것이 Zappia 킬러가 될 수 있다고 말했는데
[06:03]
이것은 그들이 함께 작업하고 싶어 한다는 것을 보여줍니다.
[06:05]
이 목록 외부의 것을 추가하고 싶다면
[06:07]
여기서 server를 클릭하면 됩니다.
[06:09]
streamable HTTP를 지원하는
[06:12]
모든 MCP 서버를 추가할 수 있습니다.
[06:13]
현재 MCP 노드에 대해 말할 수 있는 한 가지는
[06:15]
다시 완전히 망가진 것 같다는 것입니다.
[06:17]
적어도 이 GitHub MCP 서버는 그렇습니다.
[06:18]
이전에는 작동했는데
[06:20]
지난 한 시간 어느 시점에서
[06:22]
더 이상 작동하지 않습니다.
[06:23]
그래서 실제로 MCP 서버에서
[06:25]
가져오고 있던 diff를 반환하는
[06:27]
가짜 diff 서버를 만들어야 했습니다.
[06:29]
데모에서 작동하는 모습을 보여드리기 위해서요.
[06:30]
정말로, 이런 초기 버그들을 수정할 수 있도록
[06:32]
일주일 정도 기다려보세요.
[06:32]
하지만 우리가 하는 일은 다른 변환 데이터
[06:34]
노드로 문자열로 바꿔주는 거예요.
[06:36]
그리고 이걸 제 코드 리뷰 에이전트에 전달합니다.
[06:37]
이 에이전트에는 코드 리뷰를 작성하라고
[06:40]
지시하는 긴 프롬프트가 있어요.
[06:41]
그리고 여기서 차이점을 사용자로
[06:43]
전달하기도 하죠. 보시다시피,
[06:45]
실제로 여러 개의 지시사항 단계를
[06:46]
설정할 수 있어요. 원하는 만큼
[06:48]
추가할 수 있고, 프롬프트를
[06:49]
어떻게 구성하든 사용자와 어시스턴트 중에서
[06:51]
선택할 수 있습니다. AI가
[06:53]
프롬프트를 작성하게 하고 싶다면
[06:55]
이 버튼을 클릭할 수도 있어요.
[06:56]
이 에이전트 노드에서 다른 멋진 기능은
[06:58]
먼저 채팅 기록 포함 토글입니다.
[07:00]
제 경우에는 이걸 꺼뒀어요.
[07:01]
이걸 켜두면 모든 사용자 입력과
[07:03]
이전에 나온 노드들의 출력까지
[07:05]
채팅 기록의 일부로 계산됩니다.
[07:07]
제가 이걸 끈 이유는 여기 MCP 서버의
[07:09]
차이점이 사용자 프롬프트로
[07:10]
보내는 것과 결합되는 걸 원하지 않기 때문이에요.
[07:12]
전적으로 프롬프트를 제가 직접
[07:13]
제어하고 싶거든요. 그래서 코드 리뷰와
[07:15]
관련없는 것들로 컨텍스트를
[07:17]
채우지 않으려고 합니다.
[07:18]
그 다음에는 에이전트 자체에
[07:20]
도구들도 있어요. 여기 아래에
[07:22]
Context 7 MCP 서버가 연결되어 있는 걸
[07:24]
볼 수 있어요. 코드 모범 사례가 있는데
[07:26]
실제로는 파일 검색이에요.
[07:28]
OpenAI 내 벡터 데이터베이스에서 가져오는 거죠.
[07:30]
설정하기가 매우 간단해요.
[07:32]
그리고 웹 검색도 허용합니다. 여기를 클릭하면
[07:35]
추가할 수 있는 다른 도구들을 볼 수 있어요.
[07:37]
클라이언트 도구, 파일 검색, 코드 인터프리터,
[07:40]
함수, 그리고 커스텀 도구들도 있어요.
[07:42]
이게 바로 코드 리뷰 에이전트입니다.
[07:44]
코드 리뷰 에이전트 다음의 마지막 단계는
[07:45]
코드 리뷰에서 얻은 출력을
[07:47]
이 마지막 에이전트의 프롬프트에
[07:48]
추가하는 것입니다. 이 에이전트는
[07:50]
밈 선택기라고 되어 있어요.
[07:52]
코드 리뷰가 주어지면 적절한 밈을 생성합니다.
[07:54]
여기 아래에서 출력 형식을 보면
[07:56]
실제로 위젯을 선택했어요.
[07:57]
위젯 자체를 클릭하면
[07:59]
이 위젯이 어떻게 생겼는지와
[08:01]
들어가는 코드의 미리보기를 볼 수 있어요.
[08:02]
이건 그냥 위젯을 정의하는 JSON이에요.
[08:04]
하지만 정말 멋진 건, 여기 편집 버튼을
[08:05]
클릭하면 위젯 빌더로 이동한다는 거예요.
[08:07]
여기에는 실제로 AI를 사용해서
[08:09]
이런 위젯들을 만들어주는 도구가 있어요.
[08:10]
새 위젯을 클릭하면 바이브 코딩 도구 중
[08:12]
하나처럼 간단히 프롬프트를 주고
[08:13]
채팅 키트용 위젯을 만들 수 있어요.
[08:14]
예시 컴포넌트들도 있어요.
[08:16]
갤러리로 가보면
[08:17]
OpenAI가 생각하는 이런 것들의
[08:19]
용도를 볼 수 있어요.
[08:20]
항공편 정보, 달력, ChatGPT 내에서 물건 구매하기,
[08:23]
그리고 수많은 다른 훌륭한 사용 사례들이 있어요.
[08:25]
OpenAI가 정말로 ChatGPT에 앱을 추가하는 데
[08:29]
열심히 나서고 있는 것 같아요.
[08:31]
앱 SDK까지 있으니까요. 이건
[08:34]
제가 따로 다뤄야 할 완전히 다른 주제네요.
[08:40]
다루겠습니다. 하지만 이 영상에서는
[08:41]
에이전트 빌더에만 집중하겠습니다. 그리고
[08:43]
여기에는 몇 가지 멋진 기능들이 더 있습니다.
[08:45]
그 중 하나가 여기 위에 있는 평가 기능입니다.
[08:47]
이 기능은 이 워크플로우가 실행했던
[08:49]
마지막 실행들의 추적 기록을 보여줍니다. 따라서
[08:51]
정보를 확인하고 무엇이 잘못되었는지
[08:52]
디버깅을 시작할 수 있습니다. 또한
[08:54]
이런 평가자들도 있습니다. 평가자에서
[08:56]
우리는 '에이전트가 코드 리뷰를 수행했나?'
[08:57]
같은 프롬프트를 줄 수 있습니다. '에이전트가
[08:59]
예의 바르게 행동했나?' 이런 식으로 말이죠.
[09:01]
그리고 엔터를 누르면, 여기에 표시된
[09:03]
모든 추적 기록에 대해 이를 실행합니다.
[09:05]
완료되면, 통과했는지
[09:06]
알려줍니다. 즉, 모든 항목이 여러분이
[09:08]
설정한 기준을 통과했는지 말이죠. 제
[09:09]
경우에는 모두 통과했습니다. 마지막으로,
[09:11]
에이전트를 실제로 여러분의 제품에
[09:12]
통합하려면, 여기 위에 있는 코드 버튼을
[09:14]
클릭하면 됩니다. 이를 수행하는 방법 중
[09:16]
하나는 ChatKit을 사용하는 것인데, 아마
[09:17]
그들이 선호하는 방법일 것입니다. 하지만
[09:19]
에이전트 SDK도 있습니다. 하지만 안타깝게도
[09:21]
현재는 MCP 노드가 있는 에이전트
[09:23]
워크플로우를 지원하지 않습니다. 따라서
[09:24]
빠른 시일 내에 이 기능이 추가되기를 바랍니다.
[09:26]
또한 여기 위에 있는 게시 버튼을 클릭하면
[09:28]
초안 변경 사항을 가져와서
[09:30]
프로덕션 API에 푸시할 수 있습니다.
[09:32]
자, 이것이 에이전트 빌더의 개요입니다.
[09:33]
솔직히 말씀드리면, n8n은 안전하다고 생각합니다.
[09:35]
하지만 그것이 에이전트 빌더가
[09:37]
나쁜 제품이어서가 아닙니다. 단지
[09:39]
서로 같은 것을 놓고 경쟁하고 있지 않다고 생각합니다.
[09:41]
n8n은 비MCP 연결 및 통합과 같은
[09:43]
더 많은 기능을 가지고 있습니다.
[09:45]
공유 가능한 워크플로우, 셀프 호스팅, 그리고
[09:47]
가장 중요한 것은, 그들의 플로우가
[09:49]
항상 AI를 포함할 필요가 없다는 것입니다.
[09:51]
에이전트 빌더는 주로 OpenAI
[09:53]
모델과의 작업에 중점을 두고 있습니다. 따라서
[09:55]
솔직히 말씀드리면, 사람들은
[09:56]
결국 n8n과 Zapier를 OpenAI
[09:58]
에이전트 빌더와 결합하여 훨씬 더
[10:01]
강력한 플로우를 만들게 될 것이라고 생각합니다.
[10:03]
또 다른 매우 중요한 점은 이것이
[10:04]
여러분을 OpenAI의 모델에 종속시킬 것이라는 점입니다.
[10:07]
그래서 언젠가 Anthropic이 최고의 모델을 가지게 된다면,
[10:08]
n8n 같은 것을 사용하는 것이
[10:09]
OpenAI 에이전트 빌더 대신에
[10:11]
모델을 바꾸는 것이 훨씬 쉬울 것입니다.
[10:13]
하지만 여러분은 어떻게 생각하시나요? OpenAI가
[10:14]
출시하는 새로운 기능들이 마음에 드시나요?
[10:17]
여러분의 활용 사례가 무엇인지
[10:18]
아래 댓글로 알려주세요. 댓글을 다는 김에
[10:19]
구독도 눌러주시고,
[10:21]
언제나 그렇듯이 다음 영상에서 만나요.