[00:20]
네, 마지막 워크숍에 오신 걸 환영합니다.
[00:23]
여러분이 해내셨네요. 축하드립니다.
[00:28]
800명 중에서 여러분이
[00:30]
끝까지 남아있는 정말
[00:32]
헌신적인 엔지니어들입니다.
[00:35]
네, 이번 건은 좀 특별합니다.
[00:37]
Anthropic에게 혼났어요.
[00:39]
당연히 제목 때문이죠.
[00:41]
사실 제가 제목도 지어줬는데
[00:42]
바꾸고 싶냐고 물었더니
[00:44]
아니다, 그냥 가자고 하더라고요. 재밌다고요.
[00:46]
네, 이건 Anthropic에서
[00:48]
공식적으로 승인한 건 아니지만, 우리는 해커니까요.
[00:52]
그리고 Jared는 정말
[00:54]
헌신적입니다. 또 제가 정말 좋아하는 건
[00:57]
뉴욕의 주목할 만한 AI 인재들을
[00:59]
소개하는 것입니다.
[01:02]
이게 Jared가 하는 유일한 일이라고
[01:04]
생각하지는 마세요.
[01:06]
그는 여러분이 꼭 물어봐야 할
[01:07]
스타트업을 운영하고 있습니다.
[01:09]
하지만 지역 인재들을 위한
[01:11]
더 많은 콘텐츠를 소개하게 되어 정말 기쁩니다.
[01:14]
자, Jared, 시작하세요.
[01:15]
정말 감사합니다.
[01:17]
정말 훌륭한 컨퍼런스였습니다.
[01:19]
끝나는 게 아쉽지만
[01:21]
좋은 마무리가 되었으면 합니다.
[01:24]
네, 제 이름은 Jared입니다.
[01:27]
Claude Code가 어떻게 작동하는지에 대한 이야기를 해드리겠습니다.
[01:30]
다시 말하지만, Anthropic과는 무관합니다.
[01:32]
돈을 주지도 않아요. 받고는 싶지만요.
[01:35]
하지만 다른 코딩 에이전트들에 대해서도
[01:37]
이야기해보겠습니다.
[01:39]
제가 다룰 주요 목표는 개인적으로
[01:42]
저는 모든 코딩 에이전트의 열성 사용자이고
[01:45]
여기 계신 모든 분들도 마찬가지일 것입니다.
[01:47]
최근에 이런 도구들이 폭발적으로 늘어났고
[01:50]
개발자로서 무엇이 바뀌었는지 궁금했습니다.
[01:53]
무엇이 마침내
[01:55]
코딩 에이전트를 좋게 만들었는지 말이죠.
[01:58]
그럼 시작해보겠습니다.
[02:01]
먼저 저에 대해 말씀드리겠습니다. 저는 Jared입니다.
[02:03]
X나 Twitter에서 Jared Z로 찾으실 수 있습니다.
[02:06]
저는 AI 엔지니어링을 위한 워크벤치를 만들고 있습니다.
[02:08]
제 회사는 Prompt Layer라고 하고
[02:12]
뉴욕에 기반을 두고 있습니다.
[02:13]
여기서 저희 사무실을 보실 수 있는데
[02:15]
작은 건물이에요.
[02:17]
다른 몇 건물들에 가려져 있어서
[02:18]
저희는 작은 팀입니다.
[02:20]
3년 전에 제품을 출시했습니다.
[02:22]
AI 기준으로는 오래됐지만 다른 모든 것 기준으로는 짧죠.
[02:24]
저희의 핵심 신념은
[02:27]
엄격한 프롬프트 엔지니어링을 믿고
[02:30]
엄격한 에이전트 개발을 믿으며
[02:32]
제품팀이 참여해야 하고
[02:35]
엔지니어링팀도 참여해야 한다고 생각합니다.
[02:37]
AI 변호사를 만든다면
[02:39]
엔지니어뿐만 아니라 변호사도
[02:40]
참여해야 한다고 믿습니다.
[02:42]
그게 저희가 하는 일입니다.
[02:44]
매일 수백만 건의 LLM 요청을 처리하고 있고
[02:46]
이 발표의 많은 인사이트는
[02:48]
코딩 에이전트를 만드는 방법에 대한
[02:49]
고객들과의 대화에서 나온 것들입니다.
[02:52]
그리고 발표 중에 언제든지
[02:55]
편하게 해도 됩니다.
[02:57]
제가 하는 말 중에 궁금한 게 있으면
[02:59]
언제든지 질문해 주세요.
[03:00]
저는 시간을 많이 들여
[03:02]
제품을 직접 사용해보고 있습니다.
[03:05]
요즘 창업자의 일은 좀 이상해요.
[03:06]
반은 에이전트를 시작하는 일이고
[03:08]
반은 제 자신의
[03:10]
제품을 사용해서 에이전트를 만드는 일입니다.
[03:12]
에이전트를 만들고, 나머지 반은 그냥 제가
[03:14]
만든 제품을 사용해서 에이전트를 구축하는 거죠. 이상하긴 하지만
[03:16]
꽤 재미있어요. 그리고, 제가 마지막으로
[03:19]
덧붙이고 싶은 건 저는 정말 열성적인 사용자입니다.
[03:21]
우리는 말 그대로 Claude Code를 중심으로
[03:24]
엔지니어링 조직을 재구성했어요. 제 생각에
[03:26]
플랫폼을 구축하는 데 있어 어려운 점은
[03:28]
모든 엣지 케이스들을 다뤄야 한다는 거예요.
[03:30]
아, 여기서 데이터셋을 업로드하는데 작동이 안 되네요.
[03:33]
이런 식으로 천 번의 작은 상처로
[03:35]
죽을 수 있죠. 그래서 우리 엔지니어링
[03:38]
조직에 규칙을 만들었습니다.
[03:39]
Claude Code로 한 시간 안에 뭔가를
[03:42]
완료할 수 있다면, 그냥 하세요.
[03:44]
우선순위를 정하지 말고요. 우리는 의도적으로
[03:47]
작은 팀이지만, 이 방식이 우리에게 많은 도움이 됐고
[03:49]
정말 다음 단계로 끌어올려 준 것 같아요.
[03:52]
그래서 저는 큰 팬이고, 이제 이런 것들이
[03:53]
어떻게 작동하는지 살펴보겠습니다. 이게 바로
[03:56]
제가 말했듯이 이번 강연의 목표입니다.
[03:58]
첫째, 왜 이런 것들이 폭발적으로 성장했을까요?
[03:59]
혁신이 뭐였을까요? 코딩 에이전트를
[04:02]
마침내 작동하게 만든 발명품이 무엇일까요?
[04:05]
이 분야에 조금이라도 있어봤다면
[04:07]
자율 코딩 에이전트들이 처음에는
[04:08]
정말 형편없었다는 걸 아실 텐데, 우리 모두
[04:11]
사용해보려고 했었죠. 하지만 지금은
[04:14]
완전히 다른 수준이에요. 내부 구조를
[04:16]
들여다보겠고, 마지막으로 이 강연의 모든 내용은
[04:18]
밤과 낮만큼 차이가 납니다. 내부 구조를
[04:21]
살펴보겠고, 마지막으로 이 강연의
[04:24]
모든 내용은 여러분이 어떻게 자신만의
[04:27]
에이전트를 구축하고 이를 어떻게 사용해서
[04:29]
AI 엔지니어링을 할 수 있는지에
[04:31]
초점을 맞췄습니다. 그럼 잠깐 역사에 대해
[04:36]
얘기해보죠. 어떻게 여기까지 오게 됐을까요?
[04:38]
모든 분들이 아시겠지만 Chat GPT에서
[04:41]
코드를 복사해서 붙여넣기 하는 워크플로우로
[04:44]
시작됐던 걸 기억하시죠. 앞뒤로 복사 붙여넣기 하고
[04:47]
그거였는데, 그것만으로도 대단했고
[04:49]
그 당시엔 혁신적이었죠.
[04:50]
두 번째 단계는 Cursor가 나왔을 때인데
[04:52]
우리 모두 기억하듯이, 처음엔 그리 좋은 소프트웨어가 아니었어요.
[04:59]
그냥 VS Code 포크에 Command K가
[05:01]
있는 정도였는데 우리 모두 좋아했죠. 하지만 이제
[05:04]
우리는 더 이상 Command K만 쓰지 않죠.
[05:08]
그 다음에 Cursor 어시스턴트가 나왔어요.
[05:09]
그 작은 에이전트가 앞뒤로 대화하고
[05:11]
그리고 Claude Code가 나왔죠. 솔직히
[05:13]
제가 이 슬라이드를 만든 후 지난 며칠 동안
[05:15]
아마 여기서 얘기할 수 있는 새로운 버전이
[05:17]
나왔을지도 모르겠어요. 마지막에
[05:19]
다음엔 뭐가 올지에 대해 얘기하겠습니다.
[05:21]
하지만 이렇게 여기까지 오게 됐고
[05:22]
이게 정말 제 생각에 Claude Code는
[05:24]
일종의 헤드리스 같은, 아니 심지어
[05:26]
코드를 건드리지도 않는 새로운 워크플로우예요.
[05:29]
그리고 정말 좋아야 해요. 그럼 왜 이렇게 좋을까요?
[05:32]
여기서 큰 돌파구가 무엇이었을까요?
[05:35]
한번 알아보도록 하겠습니다. 그리고 다시 한번 말씀드리면
[05:38]
이 모든 건 제 의견이고
[05:40]
제가 생각하는 돌파구입니다.
[05:41]
다른 것들도 있을 수 있지만 간단한 아키텍처가
[05:44]
핵심이라고 생각해요. 에이전트가 어떻게
[05:46]
설계됐는지에서 많은 것들이
[05:47]
단순화됐다고 생각하고, 그리고 더 나은 모델들,
[05:50]
더 나은 모델들, 그리고 더 나은 모델들이죠.
[05:52]
제 생각에 돌파구의 많은 부분이
[05:54]
어떻게 보면 지루한데, 그냥 Anthropic에서
[05:57]
더 잘 작동하는 더 나은 모델을 출시한 거라고 생각해요.
[06:01]
돌파구의 많은 부분이 사실 좀
[06:03]
지루한 면이 있는데, 그냥 Anthropic에서
[06:06]
더 잘 작동하는 더 나은 모델을 출시한 거예요.
[06:07]
이런 종류의 툴링 호출들과
[06:09]
이런 종류의 작업들에 더 잘 작동합니다. 하지만 간단한
[06:12]
아키텍처가 그것과 관련이 있습니다. 그래서 우리는
[06:14]
그것에 대해 살펴볼 수 있습니다. 아키텍처와 그리고
[06:18]
이것은 저희의 작은 프롬프트를 보실 수 있습니다
[06:20]
랭글러는 저희 회사의 작은 마스코트입니다. 그래서 저희는
[06:22]
이 슬라이드들을 위해 많은 그래픽을 만들었지만
[06:24]
[06:26]
기본적으로 툴을 주고 그다음에 방해하지 않는 것이
[06:28]
오늘날 아키텍처의 한 줄 요약입니다. 만약 여러분이
[06:32]
LLM 위에서 구축하는 일을 조금 해보셨다면
[06:35]
이것이 항상 사실이었던 것은 아니라는 걸 아실 겁니다.
[06:38]
명백히 툴 호출은 항상
[06:39]
존재했던 것은 아니고 툴 호출은 일종의
[06:41]
JSON 포맷팅을 위한 새로운 추상화입니다
[06:43]
그리고 만약 여러분이 GitHub 라이브러리들을 기억하신다면
[06:46]
JSON former 같은 것들과
[06:48]
옛날의 그런 것들 말이죠. 하지만 툴을 주고
[06:50]
방해하지 않는 것입니다. 모델들은
[06:53]
이런 것들을 위해 만들어지고 훈련되어
[06:56]
툴 호출을 더 잘하고
[06:58]
이것을 더 잘하게 됩니다. 그래서 여러분이 더
[07:00]
과도하게 최적화하고 싶어할수록 그리고 모든 엔지니어들은
[07:02]
특히 저를 포함해서 과도하게 최적화하는 것을 좋아하고
[07:04]
에이전트를 어떻게 구축할지에 대한 아이디어를 처음 가질 때
[07:06]
여러분은 앉아서 말하게 됩니다 아 그럼
[07:08]
이 할루시네이션을 방지하기 위해
[07:10]
이 프롬프트를 하고 그다음에
[07:12]
이 프롬프트를 하고 그다음에
[07:13]
이 프롬프트를 하고
[07:15]
그러지 마세요
[07:17]
그냥 간단한 루프를 하고 방해하지 말고
[07:21]
그냥 스캐폴딩을 삭제하고
[07:25]
스캐폴딩은 적게 모델은 더 많이가
[07:27]
여기서의 태그라인입니다 그리고 이것은
[07:30]
이번 주의 리더보드입니다.
[07:34]
명백히 이 모델들은
[07:36]
점점 더 좋아지고 있습니다. 우리는 전체 대화를 할 수 있고
[07:38]
그리고 저는 이미
[07:39]
많은 대화가 있었을 것이라고 확신합니다
[07:41]
느려지고 있는가? 정체되고 있는가?
[07:43]
이 발표에서는 실제로 중요하지 않습니다. 우리는
[07:46]
그것이 더 좋아지고 있다는 것을 알고 있고
[07:48]
툴 호출에서 더 좋아지고 있고
[07:49]
자율적으로 실행하는 데 더 잘 최적화되고 있습니다.
[07:51]
그리고 하지 마세요 이것은
[07:55]
Anthropic에서 이것을 AGI 필이라고 부르는 것 같습니다
[07:56]
생각하는 방식은
[07:59]
오늘날의 모델 결함을 중심으로 과도하게 엔지니어링하려고 하지 마세요
[08:01]
왜냐하면 많은 것들이
[08:04]
그냥 더 좋아질 것이고 여러분은
[08:07]
시간을 낭비하게 될 것입니다. 그래서 여기 철학이 있습니다
[08:10]
제가 보는 Claude Code의 방식은
[08:12]
[08:14]
임베딩을 무시하고, 분류기를 무시하고
[08:16]
패턴 매칭을 무시합니다.
[08:19]
우리는 실제로 이 전체 RAG 시스템을 가지고 있었습니다
[08:21]
Cursor가 조금의 RAG를 다시 가져오고
[08:22]
그들이 어떻게 하고 있는지 그리고 그들이
[08:24]
섞고 매치하고 있습니다. 하지만 저는
[08:25]
Claude Code의 천재성은 그들이
[08:28]
이 모든 것을 긁어내고 그들이 말했습니다 우리는
[08:29]
모델이 나쁜 방법을 해결하기 위해 이 모든 화려한 패러다임들이 필요하지 않습니다
[08:33]
그냥 더 나은 모델을 만들고 그리고 그것이
[08:36]
요리하도록 놔두고 그냥
[08:38]
이런 툴 호출들에 의존하고
[08:43]
[08:46]
툴 호출을 단순화하는 것이
[08:48]
매우 중요한 부분입니다
[08:49]
마스터 프롬프트가 세 가지 다른 브랜치로 나눠지고
[08:53]
[08:55]
그다음 네 가지 다른 브랜치로 들어가는
[08:56]
워크플로우를 갖는 대신에
[09:00]
정말로 몇 가지 간단한 툴 호출들만 있습니다
[09:03]
RAG 대신에 grep를 포함해서 그리고 네 그리고 그게
[09:07]
이것이 바로 모델이 훈련된 방식입니다.
[09:09]
이들은 매우 최적화된 도구 호출
[09:11]
모델입니다.
[09:13]
이것은 파이썬의 선(禪) 철학입니다.
[09:17]
파이썬에서 import this를 하면 나오는 내용이죠.
[09:18]
저는 이 철학을 정말 좋아하는데
[09:20]
시스템을 구축할 때
[09:22]
정말 적절하다고 생각하고
[09:26]
Claude Code가 구축된 방식에 정말 적합합니다.
[09:29]
정말 간단한 것이 복잡한 것보다 낫고
[09:31]
복잡한 것이 복잡하게 얽힌 것보다 낫고
[09:32]
평면적인 것이 중첩된 것보다 낫습니다.
[09:34]
이것이 바로 전부입니다. 이것이 이 발표의 전부이고
[09:36]
Claude Code가 어떻게 작동하는지에 대해
[09:38]
알아야 할 모든 것이며
[09:40]
특히 왜 작동하는지를 보여줍니다. 우리는
[09:44]
엔지니어링 원칙으로 돌아가서
[09:46]
간단한 설계가
[09:48]
더 나은 설계라는 점을 강조합니다.
[09:52]
이것은 데이터베이스 스키마를 구축할 때도 마찬가지이지만
[09:56]
이것은 또한
[09:58]
이런 자율 코딩 에이전트를 구축할 때도
[10:01]
마찬가지입니다. 이제 저는
[10:05]
이 코딩 에이전트의 모든 특정 부분들을
[10:07]
분석해보고 왜 흥미로운지 설명하겠습니다.
[10:11]
첫 번째는 컨스티튜션(헌법)입니다.
[10:12]
이제 우리가 당연하게 여기는 것들 중 많은 것들이
[10:14]
사실 한 달이나
[10:16]
두 달 전에 시작되었거나
[10:18]
아마 3-4개월 전에 시작되었을 겁니다.
[10:20]
이것이 Claude의 .mcp codeex나
[10:23]
다른 도구들이 사용하는 agents.md입니다.
[10:26]
흥미로운 점은 여러분 대부분이
[10:28]
이게 무엇인지 알고 있다고 가정하는데
[10:30]
다시 말하지만 이것은
[10:32]
라이브러리에 대한 지침을 넣는 곳입니다.
[10:36]
하지만 이것의 흥미로운 점은
[10:39]
기본적으로 팀이 말하는 것이 '우리는
[10:42]
모델이 먼저 저장소를 연구하는
[10:45]
시스템을 과도하게 엔지니어링할 필요가 없고
[10:49]
커서 1.0이 저장소를 이해하기 위해
[10:52]
로컬에 벡터 DB를 만들고
[10:54]
모든 연구를 하는 것처럼
[10:56]
그들은 그냥 말합니다. '마크다운 파일만 넣어라.
[10:58]
사용자가 필요할 때 바꾸게 하고
[10:59]
에이전트가 필요할 때 바꾸게 하라
[11:02]
매우 간단하고 프롬프트 엔지니어링으로
[11:05]
돌아가는 것이다'
[11:06]
저는 조금 편향되어 있는데
[11:09]
프롬프트 레이어가 프롬프트 엔지니어링
[11:10]
플랫폼이기 때문입니다만
[11:12]
결국 모든 것이 프롬프트 엔지니어링이거나
[11:14]
컨텍스트 엔지니어링입니다.
[11:17]
모든 것이 어떻게
[11:18]
이런 범용 모델들을 여러분의 용도에
[11:21]
맞게 적응시키느냐의 문제입니다.
[11:24]
그리고 가장 간단한 답이 여기서는 최고의 답이라고 생각합니다.
[11:29]
이것이 시스템의 핵심입니다.
[11:34]
간단한 마스터 루프일 뿐이고
[11:35]
이것이 사실
[11:37]
우리가 예전에 에이전트를 구축했던 방식을 고려하면
[11:39]
혁명적입니다.
[11:41]
Claude Code와 오늘날의 모든 코딩 에이전트들
[11:44]
codeex와 새로운 cursor와
[11:46]
AMP 등 모든 것들이
[11:48]
도구를 호출하는 하나의 while 루프일 뿐이고
[11:50]
마스터 while 루프를 실행하고 도구를 호출하고
[11:52]
마스터 while 루프로 돌아갑니다.
[11:55]
이것은 기본적으로 4줄로 된
[11:57]
N0라고 불리는 것입니다.
[12:00]
적어도 제 연구에 따르면 내부적으로
[12:02]
그렇게 불리는데, 도구 호출이 있는 동안
[12:05]
도구를 실행하고 도구
[12:07]
결과를 모델에 주고 도구 호출이 없을 때까지
[12:09]
다시 반복한 다음
[12:11]
사용자에게 무엇을 할지 묻습니다. 처음으로 도구를 사용했을 때
[12:15]
툴을 호출했을 때, 모델들이 언제 툴을 계속 호출할지
[12:17]
그리고 언제 실수를 고칠지를 너무 잘 안다는 게
[12:19]
정말 충격적이었어요.
[12:21]
그리고 저는 이게 언어 모델의
[12:23]
가장 흥미로운 점 중 하나라고 생각합니다.
[12:24]
언어 모델은 정말로 실수를 고치고
[12:27]
유연하게 대응하는 데 뛰어나거든요.
[12:30]
그리고 다시 돌아가서 말하자면,
[12:32]
모델에게 탐색하고 스스로 해결하도록 맡길수록
[12:36]
더 나은 모델이 나왔을 때
[12:39]
시스템이 더 좋아지고
[12:41]
더 견고해질 거예요.
[12:45]
자, 그럼
[12:48]
이것들이 현재 Claude Code에 있는
[12:50]
핵심 툴들입니다. 솔직히 말하자면
[12:53]
이것들은 매일 바뀌어요.
[12:55]
며칠마다 새로운 릴리스를 하고 있거든요.
[12:56]
하지만 이것들이 제가 가장 흥미롭게 생각하는
[12:59]
핵심적인 것들입니다.
[13:02]
내일은 15개가 될 수도 있고
[13:04]
내일은 5개로 줄어들 수도 있지만
[13:07]
이게 제가 흥미롭게 생각하는 부분이에요.
[13:08]
먼저 read 기능부터 살펴보죠.
[13:12]
그냥 cat 명령어를 쓸 수도 있겠지만
[13:15]
흥미로운 점은 read 기능에서
[13:17]
토큰 제한이 있다는 거예요.
[13:19]
Claude Code를 많이 사용해보신 분들은
[13:21]
가끔 '이 파일이 너무 크다'라는
[13:23]
메시지를 보셨을 거예요. 그래서 이런
[13:26]
read 툴을 만드는 게 가치가 있는 거죠.
[13:28]
Grep, glob 기능도요.
[13:30]
이것도 매우 흥미로운데
[13:32]
RAG나 벡터를 사용하는 기존의
[13:34]
많은 지혜에 반하는 접근이거든요.
[13:36]
물론 RAG가 전혀 쓸모없다는 건 아니에요.
[13:38]
하지만 이런 범용 에이전트에서는
[13:41]
grep이 좋고, 그리고 grep은
[13:44]
사용자들이 실제로 하는 방식이죠.
[13:46]
그리고 저는 이게 정말 중요한 포인트라고 생각해요.
[13:48]
제가 이런 툴들에 대해 설명할 때
[13:51]
기억해주세요. 이것들은 모두
[13:53]
인간의 작업이에요. 우리는
[13:55]
모델이 사용할 완전히 새로운 툴을
[13:57]
만들어내는 게 아니라
[13:59]
인간의 행동과 여러분과 제가
[14:01]
터미널에서 문제를 해결하려 할 때
[14:05]
하는 행동을 그냥 따라하는 거예요.
[14:06]
Edit 기능도 말이 되죠.
[14:08]
edit에서 흥미로운 점은 diff를 사용하고
[14:12]
대부분의 경우 파일을 다시 쓰지 않는다는 거예요.
[14:15]
훨씬 빠르고, 훨씬 적은 컨텍스트를 사용하며
[14:18]
문제도 훨씬 적어요.
[14:21]
만약 제가 여러분에게
[14:23]
이 슬라이드를 주고 검토해달라고 하고
[14:25]
읽어보신 후에 수정된 내용으로
[14:28]
모든 슬라이드를 다시 써달라고 하는 것과
[14:30]
종이에서 그냥 부분만
[14:31]
지워달라고 하는 것 중에서
[14:33]
지우는 게 훨씬 쉽죠.
[14:35]
diff는 실수를 방지하는
[14:37]
자연스러운 방법이에요.
[14:40]
Bash는 핵심 중의 핵심이에요.
[14:43]
아마 이 모든 툴들을 없애고
[14:45]
bash만 가지고도 될 거라고 생각해요.
[14:48]
처음에 이걸 봤을 때, Claude Code에서
[14:51]
뭔가를 실행할 때 Claude Code가
[14:53]
Python 파일을 만들고
[14:55]
그 Python 파일을 실행한 다음
[14:58]
Python 파일을 삭제하는 걸 보고
[15:00]
이게 바로 이 시스템이 작동하는
[15:02]
아름다운 이유라고 생각했어요.
[15:05]
그래서 bash가 가장 중요해요.
[15:06]
웹 검색, 웹 fetch 기능들도 있는데
[15:08]
이것들의 흥미로운 점은
[15:11]
더 저렴하고 빠른 모델로 이동한다는 거예요.
[15:13]
예를 들어, 여러분의 플랫폼에서
[15:14]
일부 엔드포인트나 엔드포인트 목록에 연결해야 한다면
[15:16]
마스터 while 루프와 분리해서 하위 계층으로 가져오는 것이 좋을 수 있습니다.
[15:18]
바로 이런 이유로 이것이 별도 도구가 된 겁니다.
[15:23]
투두 리스트에 대해서는 우리 모두 익숙하죠.
[15:25]
나중에 더 자세히 이야기하겠지만, 모델을 올바른 방향으로 유지하는 것
[15:28]
조향 가능성, 그리고 태스크 관리입니다.
[15:30]
태스크 관리는 정말 흥미로운 기능입니다.
[15:32]
이는 컨텍스트 관리에 관한 것입니다.
[15:34]
긴 프로세스를 실행하고 전체 파일을 읽으면서도
[15:36]
컨텍스트를 어지럽히지 않는 방법에 관한 것이죠.
[15:40]
컨텍스트가 가득 차면
[15:41]
모델이 어리석어지거든요.
[15:43]
더 좋은 표현이 없어서 그렇게 말하는 건데요.
[15:46]
바로 이것이 가장 큰 적입니다.
[15:49]
기본적으로 bash가 전부입니다.
[15:51]
제가 강조하고 싶은 한 가지가 있습니다.
[15:53]
코딩 에이전트에서 bash의 놀라운 점이 두 가지 있습니다.
[15:56]
첫 번째는 간단하다는 것이고
[15:57]
모든 것을 할 수 있습니다. 매우 견고하죠.
[15:59]
두 번째로 똑같이 중요한 점은
[16:04]
bash에 대한 훈련 데이터가 엄청나게 많다는 것입니다.
[16:06]
왜냐하면 우리가 실제로 사용하는 것이거든요.
[16:07]
모델들이 Rust나
[16:09]
덜 일반적인 프로그래밍 언어에서
[16:11]
성능이 떨어지는 이유도
[16:13]
그것을 사용하는 사람이 적기 때문입니다.
[16:16]
정말로 범용 어댑터라고 할 수 있죠.
[16:18]
수천 개의 도구를 사용할 수 있고 무엇이든 할 수 있습니다.
[16:22]
이것이 제가 앞서 든 Python 예시입니다.
[16:24]
모델이 Python 스크립트를 작성할 때
[16:26]
정말 멋있다고 생각해요.
[16:29]
테스트를 만들 때도 그렇고요.
[16:31]
항상 하지 말라고 해야 하지만요.
[16:32]
하지만 이 모든 셸 도구들이
[16:34]
그 안에 들어있습니다.
[16:37]
저는 Claude 코드를 사용해서
[16:40]
로컬 환경을 구축하곤 하는데
[16:42]
보통은 어딘가 파일에 적어둔
[16:44]
다섯 개 명령어가 있었을 텐데
[16:46]
그것들이 시간이 지나면 구식이 되거든요.
[16:48]
Claude 코드는 이런 것들을 알아내는 데 정말 뛰어나고
[16:50]
여러분이 하고 싶어하는 작업들을 실행해줍니다.
[16:51]
특히 모델이 직접 시도해볼 수 있게 해줍니다.
[16:56]
네, 여기 다른 제안들과
[16:58]
도구 사용법에 대해서
[17:02]
시스템 프롬프트에 어떤 도구를 언제 사용할지
[17:06]
알려주는 부분이 좀 있는 것 같고
[17:08]
어떤 도구를 다른 도구보다 우선 사용할지
[17:11]
자주 변경되지만
[17:13]
이런 것들은 일종의 엣지 케이스이고
[17:14]
모델이 막히는 구석들입니다.
[17:16]
편집하기 전에 읽기
[17:18]
실제로 bash 대신
[17:20]
GP 도구를 사용하도록 강제합니다.
[17:23]
여기 도구 목록을 보시면 특별한 GP 도구가 있습니다.
[17:27]
여러 이유가 있을 수 있어요.
[17:29]
보안이 큰 이유 중 하나라고 생각하고
[17:32]
샌드박싱도 그렇지만
[17:34]
토큰 제한 문제도 있죠.
[17:37]
독립적인 작업을 병렬로 실행하는 것
[17:39]
모델이 더 그렇게 하도록 유도하는 것이죠.
[17:41]
그리고 공백이 있는 경로를 인용하는 것 같은
[17:43]
사소한 것들도 있습니다.
[17:45]
그냥 일반적인 문제들이에요.
[17:47]
Anthropic에서 많은 도그푸딩을 하고 있고
[17:49]
문제를 발견하면
[17:51]
"좋아, 시스템 프롬프트에 넣자"라고
[17:52]
하는 것 같아요.
[17:53]
자, 이제 투두 리스트에 대해 이야기해봅시다.
[17:55]
다시 말하지만, 매우 일반적인 기능이지만
[17:57]
예전에는 일반적이지 않았던 기능입니다.
[18:01]
실제로 투두 리스트라고 생각해요.
[18:04]
이는 실제로 투두 리스트입니다.
[18:06]
제가 이 슬라이드 덱을 위한 연구에서
[18:08]
얻은 내용입니다. 하지만
[18:11]
투두 리스트에서 정말 흥미로운 점은
[18:14]
구조화되어 있지만
[18:17]
구조적으로 강제되지는 않는다는 것입니다. 규칙들을 보면
[18:21]
한 번에 하나의 작업만 하고, 완료되면 표시하라는
[18:24]
예상할 만한 내용들이죠.
[18:26]
진행 중인 작업에 계속 집중하고, 차단이나
[18:29]
오류가 있으면
[18:31]
작업을 다른 지시사항들로 나누라는 것들입니다.
[18:34]
하지만 가장 흥미로운 점은
[18:37]
이것이 결정론적으로 강제되지 않는다는 것입니다.
[18:39]
순전히 프롬프트 기반이에요.
[18:42]
순전히 시스템 프롬프트에 있고,
[18:44]
순전히 우리 모델들이
[18:47]
이제 지시 따르기를 잘하기 때문입니다.
[18:49]
이건 1년 전에는 작동하지 않았을 것이고,
[18:51]
2년 전에도 작동하지 않았을 겁니다.
[18:52]
시스템 프롬프트 상단에 도구 설명이 있고,
[18:55]
투두를 시스템 프롬프트에
[18:57]
주입하는 방식입니다.
[19:01]
실제 코드에서 강제되지는 않지만
[19:04]
그럼에도 작동합니다.
[19:06]
다른 경로를 택하는 에이전트들도 있을 수 있지만,
[19:09]
저는 이게 꽤 흥미롭다고 생각했습니다.
[19:11]
적어도 사용자로서는 큰
[19:13]
차이를 만들어내는데,
[19:16]
심지어 보기에도
[19:18]
구현하기 매우 간단해 보였습니다.
[19:21]
거의 주말 프로젝트처럼
[19:23]
누군가가 만들어서 작동하는 것 같았어요.
[19:25]
물론 제가 틀릴 수도 있지만,
[19:27]
실제로는 단순한 함수 호출입니다.
[19:30]
처음 무언가를 요청하면,
[19:32]
추론이 이 투두 블록을 내보내고,
[19:35]
다음 슬라이드에서 그 구조를
[19:37]
보여드리겠습니다.
[19:38]
ID들이 있고, 어느 정도의
[19:42]
구조화된 스키마와 결정론이 있지만,
[19:44]
그냥 거기에 주입된 것뿐입니다.
[19:47]
여기 어떻게 보일 수 있는지의 예시입니다.
[19:51]
버전을 얻고, ID를 얻고,
[19:53]
투두의 제목을 얻고, 그리고 실제로
[19:56]
증거를 주입할 수 있습니다.
[19:58]
이것은 겉보기에는 임의의
[20:00]
데이터 덩어리들로 사용할 수 있는 것이고,
[20:03]
ID들은 그것이 참조할 수 있는
[20:06]
해시값들입니다.
[20:08]
제목은 사람이 읽을 수 있는 것이지만,
[20:11]
이것은 데이터를 구조화하는 또 다른 방법입니다.
[20:13]
그리고 여러분이 일할 때
[20:15]
책상을 정리하는 것과 같은 방식으로,
[20:17]
우리는 이렇게 모델을
[20:19]
정리하려고 시도하고 있습니다.
[20:21]
이렇게 해서 얻는 네 가지 이점이
[20:24]
있다고 생각합니다.
[20:26]
계획을 강제하고,
[20:29]
충돌 후 재개할 수 있고, 클로드 코드는 실패하죠.
[20:33]
UX가 이것의 큰 부분이라고 생각합니다.
[20:35]
사용자로서 어떻게 진행되고 있는지 알 수 있어요.
[20:38]
아무런 신호 없이 40분 동안
[20:40]
루프에서 돌기만 하는 게 아닙니다.
[20:42]
UX는 무시할 수 없는 요소입니다.
[20:45]
UX가 더 나은 코딩 에이전트로 만들지는 못해도,
[20:46]
우리 모두가 사용하기에는
[20:48]
더 나을 수 있습니다. 그리고 조종성 부분도 있습니다.
[20:52]
여기 후드 아래에 있던 두 가지 다른 부분이 있습니다.
[20:55]
비동기 버퍼인데, 그들은 이걸 H2A라고 불렀습니다.
[20:57]
이것은 IO 프로세스와 이를 추론으로부터
[21:02]
분리하는 방법, 그리고
[21:04]
터미널에서 보는 모든 것을
[21:06]
그냥 채워넣지 않는 방식으로
[21:08]
컨텍스트를 관리하는 방법에 관한 것입니다.
[21:09]
모든 것을 모델에 다시 넣지 않고 말이죠.
[21:11]
다시 말하지만, 컨텍스트가 여기서 우리의 가장 큰 적입니다.
[21:13]
이것이 모델을 더 바보로 만들 거예요.
[21:14]
그래서 압축과 요약을
[21:17]
어떻게 할지에 대해 조금 더 스마트하게 접근해야 합니다.
[21:20]
여기서 보시면 용량에 도달하면
[21:23]
중간 부분을 삭제하고
[21:24]
앞과 뒤 부분을 요약합니다.
[21:26]
그게 컨텍스트 압축기의 역할입니다.
[21:30]
제한은 92% 정도인 것 같습니다.
[21:32]
그럼 장기 저장은 어떻게 하는 걸까요?
[21:36]
실제로 이것이 제 생각에는 bash와
[21:39]
샌드박스의 또 다른 장점입니다.
[21:42]
여기서 예측을 하나 해보겠습니다.
[21:44]
모든 ChatGPT 창과
[21:46]
모든 Claude 창이 가까운 미래에
[21:48]
샌드박스를 갖게 될 것입니다.
[21:50]
장기 메모리를 저장할 수 있어서
[21:52]
훨씬 더 좋거든요.
[21:54]
저는 항상 이렇게 합니다.
[21:56]
깊이 있는 연구와 그런 것들을 위해
[21:59]
Claude 코드 스킬을 가지고 있고,
[22:01]
항상 마크다운 파일을 저장하라고
[22:03]
지시합니다.
[22:04]
컨텍스트가 짧을수록
[22:06]
더 빠르고 더 스마트하거든요.
[22:08]
이것이 제가 가장 기대하는 부분입니다.
[22:12]
우리는 이런 DAG가 필요하지 않습니다.
[22:15]
실제 예시를 하나 들어보겠습니다.
[22:18]
PromptLayer의 일부 사용자들은
[22:19]
고객 지원 에이전트 같은 다른 에이전트들을
[22:23]
기본적으로 모든 사람이 지난 2년 반 동안
[22:26]
이런 DAG를 구축해 왔습니다.
[22:28]
정말 미친 일이었어요.
[22:30]
수백 개의 노드가 있었는데,
[22:34]
이 사용자가 환불을 원하면 이 프롬프트로 라우팅하고,
[22:38]
저것을 원하면 저쪽으로 라우팅하고,
[22:40]
많은 분류 프롬프트들이 있었습니다.
[22:43]
이것의 장점은 환각이 일어나지 않는다는 것을
[22:46]
어느 정도 보장할 수 있고,
[22:47]
환불받으면 안 되는 사람들에게
[22:49]
환불이 일어나지 않는다는 것을 보장할 수 있다는 겁니다.
[22:52]
이것은 프롬프트 인젝션 문제를
[22:53]
해결하는 데 도움이 됩니다.
[22:56]
순전히 X 또는 Y로 분류하는
[22:57]
프롬프트에 있다면
[22:59]
인젝션은 별로 중요하지 않습니다.
[23:02]
특히 컨텍스트를 버린다면 말이죠.
[23:03]
지금은 그 공격 벡터를 다시 가져왔지만,
[23:06]
주요한 이점은
[23:08]
이런 엔지니어링의 복잡한 웹을
[23:10]
다룰 필요가 없다는 것입니다.
[23:13]
이런 것들을 개발하는 것이 10배 더 쉽고,
[23:16]
10배 더 유지보수하기 쉽습니다.
[23:18]
그리고 모델이 이제 좋아졌기 때문에
[23:20]
실제로 훨씬 더 잘 작동합니다.
[23:22]
이것이 핵심 포인트입니다.
[23:24]
모델을 믿으세요.
[23:27]
의심스러울 때는 모든 엣지 케이스를
[23:31]
생각하려고 하지 말고,
[23:34]
모든 if문을 생각하려고 하지 마세요.
[23:35]
그냥 모델이 탐색하고
[23:38]
알아내도록 믿으세요.
[23:40]
실제로 이틀 전인가 어제였나,
[23:42]
이번 주 어느 날에
[23:44]
저희 대시보드에서 브라우저 에이전트를
[23:48]
테스트하는 실험을 했습니다.
[23:51]
모든 버튼에 작은 제목을 추가해서
[23:52]
에이전트가 저희 웹사이트를
[23:55]
자동으로 탐색하는 데
[23:56]
도움이 되는지 보고 싶었습니다.
[23:59]
그런데 놀랍게도 더 나빠졌어요.
[24:01]
다시 실행해볼 수도 있고
[24:03]
제가 테스트에서 뭔가 잘못했을 수도 있지만,
[24:04]
에이전트가 PromptLayer를 탐색하는 것을 더 어렵게 만들었습니다.
[24:06]
오히려 더 안 좋아졌어요. 에이전트가 산만해졌거든요
[24:09]
제가 이 버튼을 클릭해야 한다고
[24:10]
그리고 저 버튼도 클릭해야 한다고
[24:11]
계속 지시했더니
[24:14]
뭘 해야 할지 몰라했어요. 그래서
[24:16]
탐색에 의존하는 게 더 나아요. 질문
[24:18]
있으신가요?
[24:19]
>> 네, 좀 반박해보겠습니다
[24:22]
>> 좋습니다. 인정하겠습니다
[24:25]
오늘 우리가 만드는 스캐폴딩이 현재 모델의
[24:29]
특성이나 한계를 해결하기 위한 것이라면
[24:33]
3-6개월 후엔 무용지물이 될 거예요
[24:36]
설사 그렇다 해도 지금은 조금이라도 도움이 되죠
[24:38]
어떻게 균형을 맞추시나요?
[24:41]
3개월짜리 문제를 해결하는 데
[24:44]
엔지니어링 리소스를 낭비하는 것과
[24:46]
>> 아주 좋은 질문입니다. 다시 정리하면
[24:48]
질문의 핵심은
[24:52]
현재 당면한 실제 문제를 해결하는 것과
[24:54]
모델이 지금은 못하지만
[24:55]
3개월 후엔 할 수 있게 될 것에
[24:57]
의존하는 것 사이의 트레이드오프죠?
[24:59]
케이스 바이 케이스입니다. 뭘 만드느냐에 따라 달라요
[25:02]
은행용 챗봇을 만든다면
[25:03]
좀 더 신중해야겠죠
[25:05]
제가 생각하는 적절한
[25:07]
절충점은 메인 루프와 툴 호출의
[25:10]
에이전트 패러다임을 사용하되
[25:14]
툴 호출을 매우 엄격하게 만드는 것입니다
[25:17]
이런 식이나
[25:19]
이것의 절반 정도 되는
[25:22]
툴 호출을 갖는 건 괜찮다고 봅니다
[25:24]
Claude Code가 읽기를
[25:26]
툴 호출로 사용하거나 GPT를
[25:29]
툴 호출로 사용하는 것과 같은 방식으로요
[25:32]
엣지 케이스의 경우
[25:34]
구조화된 툴에 넣어서
[25:36]
버전별로 평가할 수 있게 하는 거죠
[25:38]
이에 대해서는 나중에
[25:39]
더 자세히 얘기하겠지만
[25:41]
구조화된 툴에 넣으세요
[25:43]
나머지는
[25:45]
탐색 단계에서는 모델에게 맡기거나
[25:48]
시스템 프롬프트를 추가하세요
[25:54]
결국 트레이드오프이고 사용 케이스에
[25:55]
많이 의존하는데, 좋은 질문이라고
[25:57]
생각합니다. 감사합니다. 그럼 다시
[26:01]
Claude Code로 돌아가서
[26:04]
이런 것들을 다 없애고 있습니다
[26:05]
ML 기반 의도 탐지도 원하지 않고
[26:07]
ReAct도 원하지 않고
[26:08]
ReAct를 조금은 쓰지만
[26:10]
내장하고 싶지 않습니다
[26:12]
분류기도 원하지 않고요. 실제로
[26:14]
PromptLayer를 위해 오랫동안
[26:16]
제품을 개발했는데 결국 출시하지 않았어요
[26:18]
프로토타입 수준이었는데
[26:19]
LLM이 아닌 ML 기반
[26:22]
분류기를 프롬프트 파이프라인에서
[26:25]
LLM 대신 사용하는 것이었어요. 많은 사람들이
[26:27]
성공을 거뒀지만
[26:30]
비용이 엄청난 이슈가 아닌 이상
[26:33]
그리 도움이 되지 않을 것 같습니다
[26:34]
설사 그렇다 해도
[26:36]
작은 모델들의 비용은 계속 줄어들고 있어요
[26:39]
회사들 간의 금융 엔지니어링으로
[26:43]
토큰 비용을 지불하게 되죠
[26:44]
Claude는 또한 트리거 단계에서 스마트한 일을 합니다
[26:50]
think, think hard,
[26:51]
think harder, 그리고
[26:53]
ultra think가 제가 가장 좋아하는 것입니다
[26:55]
이를 통해 추론 예산, 즉
[26:58]
추론 토큰 예산을 또 다른
[27:01]
파라미터로 사용할 수 있게 됩니다
[27:03]
모델이 조정할 수 있는 매개변수입니다. 그리고
[27:05]
이것은 실제로 모델이 조정할 수 있지만
[27:07]
이것이 우리가 강제로 조정하게 하는 방법입니다.
[27:08]
반대로 하드 플래닝을 위해 도구 호출을 만들 수도 있고
[27:11]
실제로 이런 방식을 사용하는
[27:13]
코딩 에이전트들이 있습니다. 또는
[27:15]
사용자가 지정하게 하고
[27:17]
실시간으로 변경할 수도 있습니다.
[27:20]
이것이 가장 중요한 주제 중 하나입니다.
[27:23]
샌드박싱과 권한입니다.
[27:26]
솔직히 말하면, 이 부분은
[27:28]
저에게 가장 지루한 부분입니다.
[27:30]
저는 종종 YOLO 모드로
[27:32]
실행하거든요.
[27:34]
저희 팀의 일부 사람들은 실제로 로컬 데이터베이스를 전부 삭제했습니다.
[27:39]
그래서 조심해야 합니다.
[27:40]
물론 기업 고객들과는
[27:42]
YOLO 모드를 사용하지 않습니다만
[27:46]
이런 기능들은
[27:47]
해결될 것 같은 느낌이지만
[27:52]
작동 방식을 조금은 알아야 합니다.
[27:54]
인터넷에서 오는
[27:55]
프롬프트 인젝션의 큰 문제가 있습니다.
[27:58]
쉘 접근 권한을 가진 에이전트를 연결하고
[28:01]
웹 페치를 수행한다면
[28:03]
이는 꽤 큰 공격 벡터입니다.
[28:07]
그래서 컨테이너화가 필요하고
[28:10]
URL을 차단하는 기능이 있습니다.
[28:12]
Claude Code가 이 URL에서
[28:14]
가져올 수 있는지, 이 작업을 할 수 있는지
[28:17]
꽤 까다롭게 묻는 걸 볼 수 있습니다.
[28:19]
그리고 서브 에이전트로 전환합니다.
[28:21]
대부분의 복잡한 코드가
[28:24]
이 샌드박싱과 권한 설정에
[28:26]
들어있습니다.
[28:29]
bash 명령어를 게이트하는
[28:31]
전체 파이프라인이 있다고 생각합니다.
[28:33]
접두사에 따라 샌드박싱 환경을
[28:37]
거쳐가는 방식이 결정되고
[28:41]
다른 모델들은 이 부분에서
[28:43]
다르게 작동합니다.
[28:45]
하지만 이것이 Claude Code의 방식입니다.
[28:46]
마지막에 다른 방식들도 설명하겠습니다.
[28:51]
다음 주제는
[28:53]
서브 에이전트입니다. 이것은
[28:55]
컨텍스트 관리로 돌아가는 것이고
[28:57]
계속 돌아오는 문제인
[28:59]
컨텍스트가 길어질수록
[29:02]
에이전트가 더 멍청해진다는 문제입니다.
[29:04]
이것이 그에 대한 답입니다.
[29:07]
특정 작업을 위한 서브 에이전트를 사용하고
[29:09]
서브 에이전트의 핵심은 자체 컨텍스트를 가지고
[29:12]
결과만 피드백한다는 것입니다.
[29:13]
이렇게 해서 어수선하게 만들지 않습니다.
[29:15]
여기 네 가지 예시가 있습니다 - 연구자,
[29:17]
문서 리더, 테스트 러너, 코드 리뷰어
[29:20]
제가 앞서 말한 예시에서
[29:21]
웹사이트에 모든 태그를 추가해서
[29:24]
에이전트가 더 잘 작동하도록 했을 때
[29:27]
당연히 코딩 에이전트를 사용했고
[29:29]
먼저 문서를 읽고 그다음에 작업하라고 했습니다.
[29:31]
이것이 서브 에이전트에서 수행됩니다.
[29:33]
정보를 피드백하고
[29:35]
여기서 핵심은
[29:38]
에이전트의 포크와 그것을 메인 컨텍스트로
[29:40]
다시 통합하는 방법입니다.
[29:44]
여기 예시가 있습니다. 정말 흥미롭다고 생각합니다.
[29:46]
한두 가지를
[29:47]
지적하고 싶습니다. 태스크는
[29:50]
서브 에이전트입니다. 태스크에
[29:53]
두 가지를 제공합니다. 설명과 프롬프트입니다.
[29:56]
설명은 사용자가 볼 내용입니다.
[29:58]
그래서 태스크라고 말하고
[30:00]
기본 채팅 컨텍스트를 찾는다고
[30:02]
할 것입니다
[30:04]
인스턴스화 같은 것들이죠. 그리고
[30:06]
프롬프트에는 긴
[30:08]
문자열을 줄 건데, 이게 정말 흥미로운 부분은
[30:09]
이제 코딩 에이전트가
[30:11]
자체적으로 에이전트들을 프롬프팅하고 있다는 점입니다. 저도
[30:14]
실제로 이런 패러다임을 저희 제품용으로
[30:16]
구축한 에이전트에서 사용해봤습니다. 만약
[30:20]
에이전트가 이 문자열에 원하는 만큼
[30:23]
많은 정보를 넣을 수 있다면
[30:24]
그리고 다시 모델에 의존한다면
[30:26]
만약 이 작업이
[30:28]
오류를 반환하면 더 많은 정보를 넣고
[30:31]
문제를 해결하도록 하는 거죠.
[30:33]
경직되기보다는 유연한 게
[30:35]
더 좋습니다.
[30:37]
제가 이걸 구축한다면
[30:39]
문자열을 객체로 바꾸는 걸 고려해볼 텐데요
[30:41]
여기서 뭘 구축하느냐에 따라
[30:43]
실제로 더 구조화된 데이터를
[30:44]
제공하게 할 수도 있죠. 네. 이 프롬프트에
[30:48]
꽤 여러 문장이 있는 걸 보니까요.
[30:49]
이게 메인 에이전트에 있는 건가요?
[30:52]
메인 에이전트의 컨텍스트를
[30:54]
가져오는 건가요? 아니면
[30:56]
서브 에이전트가
[30:58]
메인 에이전트가 하는 일을
[31:01]
다시 읽어보고 나서 생성하는 중간 단계가 있는 건가요?
[31:06]
네, 맞습니다. 그러니까 질문은 작업이
[31:09]
여기서 프롬프트만 받는지 아니면
[31:12]
채팅 히스토리도 받는지인가요?
[31:13]
그런 질문인가요?
[31:15]
질문은 제가 메인 에이전트를 가지고 있는데
[31:18]
이 모든 것이 메인 에이전트의
[31:20]
시스템 프롬프트에 있어서
[31:22]
서브 에이전트를 어떻게 프롬프팅할지
[31:24]
알려주는 건가요? 아니오, 아니에요.
[31:27]
시스템에 있는 게 아니라
[31:29]
전체 컨텍스트에 있어요. 메인 에이전트의
[31:33]
모든 컨텍스트가 호출하는 작업에
[31:36]
들어가는 건지 아니면
[31:37]
작업의 구조를 말하는 건지요?
[31:39]
이 전체 JSON을 말하는 건가요?
[31:42]
네. 이건 툴 콜이에요. 작업이 무엇인지에 대한
[31:45]
툴 콜 구조가 메인 에이전트에 있고
[31:48]
이것들은 즉석에서 생성됩니다.
[31:50]
작업을 실행하려고 할 때
[31:52]
설명과 프롬프트를 생성하는 거죠. 작업은
[31:55]
툴 콜입니다. 병렬로 실행될 수 있고
[31:56]
그 결과를
[31:58]
반환하는 거죠. 도움이 되었으면 좋겠네요.
[32:03]
다시 시스템 프롬프트로 돌아가 볼까요.
[32:07]
클로드 코드 시스템 프롬프트의
[32:09]
일부 유출이 있었어요.
[32:10]
그래서 제가 이걸 기반으로 하고 있습니다.
[32:13]
온라인에서 찾을 수 있어요. 제가 그것에서
[32:16]
주목한 몇 가지 사항들이 있습니다. 간결한 출력.
[32:20]
당연히 너무 긴 건 주지 마세요.
[32:23]
여기 있는 건 없고 사용자가 원하는
[32:26]
작업을 그냥 하라는 겁니다.
[32:29]
텍스트 설명 대신
[32:31]
툴을 더 많이 사용하도록 유도하는 거죠.
[32:34]
분명히 우리 모두 코딩 에이전트를
[32:36]
구축해봤고 그럴 때 보통
[32:38]
"이 SQL을 실행하고 싶다"고 하죠. 아니에요,
[32:40]
툴을 사용하도록 유도하세요.
[32:44]
기존 코드와 매칭시키고,
[32:46]
주석은 추가하지 않기. 이건 저한테는
[32:48]
작동하지 않지만 명령을 병렬로
[32:51]
광범위하게 실행하고 할 일들
[32:53]
같은 것들이요. 시스템 프롬프트로
[32:55]
할 수 있는 넛지가 많이 있습니다.
[32:57]
하지만 보시다시피 정말 흥미로운 점은
[32:59]
앞서 질문하신 부분에 대해
[33:01]
DAG와의 트레이드오프가 어디에 있는지
[33:06]
루프에 대해서 말이죠.
[33:08]
이런 기능들을 보면 대부분
[33:11]
Claude Code를 사용하면서
[33:13]
"아, 이 부분만 좀 덜 하거나
[33:16]
이 부분만 좀 더 했으면 좋겠다"라고
[33:17]
말하는 사람들에게서 나온 것 같습니다.
[33:20]
그래서 프롬프팅이 중요한데,
[33:21]
반복하기가 너무 쉽고, 꼭 필수는 아니지만
[33:24]
"여기서 좀 더 설명해줬으면 좋겠다"고 하면
[33:27]
가끔씩 그렇게 해주는 정도죠.
[33:28]
좋습니다. 스킬에 대해 얘기해보죠.
[33:32]
스킬은 정말 훌륭한 기능이에요.
[33:34]
비교적 새로운 기능이고, 솔직히 저도
[33:37]
최근에야 확신을 갖게 되었어요.
[33:39]
이 슬라이드도 스킬로 만들었습니다.
[33:42]
기본적으로 아키텍처의 맥락에서
[33:44]
이 발표를 생각해보면,
[33:46]
확장 가능한 시스템 프롬프트라고
[33:49]
볼 수 있어요. 컨텍스트를
[33:52]
어지럽히고 싶지 않은 것처럼,
[33:54]
여러 다양한 유형의 작업들이 있고
[33:55]
훨씬 더 많은 컨텍스트가 필요할 때가 있죠.
[33:58]
이것이 Claude Code에게
[34:00]
더 많은 정보에 접근할 수 있는
[34:02]
몇 가지 옵션을 제공하는 방법입니다.
[34:05]
여기 몇 가지 예시가 있습니다. 저는
[34:09]
문서 업데이트용 스킬을 만들어서
[34:11]
제 글쓰기 스타일과 제품에 대해 알려주고 있어요.
[34:14]
문서 업데이트를 하고 싶을 때
[34:16]
그 스킬을 사용하라고 말하면 됩니다.
[34:18]
Microsoft Office 편집, Microsoft
[34:22]
Word와 Excel 같은 것들 말이에요.
[34:25]
저는 이걸 사용하지 않지만
[34:27]
많은 사람들이 사용하는 걸 봤어요.
[34:29]
파일을 역컴파일하는 것 같은데
[34:31]
정말 멋져요. Claude Code가
[34:34]
디자인 스타일 가이드를 처리할 수 있게 해줍니다.
[34:36]
이건 흔한 사용 사례죠. 심화 연구도 있어요.
[34:40]
얼마 전에 심화 연구에 대한
[34:42]
GitHub 레포나 기사를 넣고
[34:44]
"이걸 Claude Code 스킬로 재구축해줘"라고 했는데, 정말 잘 작동했어요. 놀라울 정도로요.
[34:49]
Unified diffing에 대해서는
[34:50]
별도 슬라이드로 다룰 만한 가치가 있다고 생각해요.
[34:53]
아마 너무 뻔해서
[34:55]
많이 설명할 필요는 없을 것 같지만
[34:57]
이 기능이 훨씬 더 좋게 만들어주고
[35:00]
토큰 제한도 줄이고, 속도도 빠르게 하며
[35:03]
제가 앞서 예시로 든
[35:05]
실수를 덜 일으키게 해줍니다.
[35:07]
에세이 전체를 다시 쓰는 것과
[35:10]
빨간 줄로 표시하는 것의 차이 같죠.
[35:12]
그냥 더 좋아요. 어떤 에이전트를 만들든
[35:15]
diffing 사용을 강력히 추천합니다.
[35:17]
Unified diff는 표준이에요.
[35:18]
이런 코딩 에이전트들을 살펴보니
[35:20]
일부는 자체적인 표준을 만들었더라고요.
[35:24]
Unified diff의 약간의 변형으로
[35:26]
항상 라인 번호가 필요하지 않기 때문이죠.
[35:27]
하지만 unified diff가 잘 작동해요.
[35:31]
질문이 있으신가요?
[35:32]
스킬로 돌아가서 말씀드리면...
[35:35]
Claude Code를 본 적이 있는지 모르겠지만
[35:38]
Claude Code가 노란색 텍스트로
[35:40]
코드가 4만 자를 넘으면
[35:42]
경고를 해주거든요. 그래서
[35:44]
"좋아, 이걸 스킬로 나눠보자"라고 했죠.
[35:46]
시간을 들여서 나눴는데
[35:48]
Claude가 제 스킬들을 다 무시했어요.
[35:51]
그래서 다시 넣었죠.
[35:53]
도대체 뭐가... 모르겠어요. 스킬이
[35:57]
전반적으로 잘못 이해되고 있는 건지
[36:00]
제가 뭔가 놓치고 있는 건지 모르겠네요.
[36:03]
이해할 수 있게 도와주세요.
[36:06]
네, 질문의 요지는...
[36:10]
Claude 코드 시스템인 Claude MD가 너무 길다고 알려줍니다. 그러면
[36:12]
스킬로 옮기는데, 그러면 이제
[36:16]
스킬을 인식하지 못하고
[36:17]
필요할 때 선택하지 않습니다.
[36:18]
필요할 때 말이죠.
[36:21]
>> 네.
[36:22]
그건 Anthropic 팀에게 문의하시면 될 것 같습니다.
[36:24]
하지만 그것도 좋은 예시입니다.
[36:27]
시스템 프롬프트의
[36:29]
>> 그게 의도였습니다. 스킬은
[36:31]
호출해야 하는 것이고, 에이전트가
[36:34]
항상 모든 스킬을 호출하면 안 되잖아요.
[36:38]
그렇죠?
[36:39]
>> 맞습니다. 각 스킬에 대한 설명을 모델에게 제공합니다.
[36:42]
또는 제공해야 하고, 각 스킬에 대한
[36:46]
한 줄 설명을 알려줍니다.
[36:48]
이론적으로는 완벽한 세상에서
[36:50]
모든 스킬을 항상 선택해야겠지만,
[36:51]
말씀하신 게 맞습니다. 저도
[36:53]
일반적으로 스킬을 직접
[36:54]
수동으로 호출해야 합니다. 하지만 이것이
[36:58]
언제 프롬프팅이 올바른 솔루션인지,
[37:01]
언제 DAG가 올바른 솔루션인지,
[37:04]
아니면 이것이 모델
[37:06]
훈련 문제인지에 대한 좋은 연결점이라고 생각합니다.
[37:08]
후훈련에서 조금 더
[37:11]
모델이 스킬을 호출하도록 훈련시켜야 할지도 모릅니다.
[37:15]
이는 거의 도구 호출과 같습니다.
[37:17]
언제 호출할지 알아야 합니다.
[37:19]
그래서 이것은 단지
[37:21]
아직 그렇게 좋지 않은 기능일 수 있지만,
[37:22]
패러다임은 매우 흥미롭습니다.
[37:24]
하지만 우리가 배우고 있듯이 완벽하지는 않습니다.
[37:28]
차이점에 대해 방금 얘기했고, 다음은 뭐가 있을까요.
[37:31]
이것은 좀 더 의견에 기반한 내용이지만,
[37:34]
제가 보는 이런 것들의 방향과
[37:35]
다음 혁신이 일어날 가능성이 있는 곳입니다.
[37:37]
그래서
[37:41]
여기에는 두 가지 사고방식이 있다고 생각합니다.
[37:43]
많은 사람들이 생각하기를
[37:45]
우리가 하나의 마스터 루프를 가지고
[37:46]
수백 개의 도구 호출을 하고,
[37:48]
단지 도구 호출이 훨씬 좋아질 거라고 합니다.
[37:50]
그럴 가능성이 높습니다. 저는
[37:53]
반대 견해를 가지고 있습니다.
[37:56]
도구 호출을 최대한
[37:58]
줄이고 그냥 bash로 돌아가서
[38:00]
스크립트를 로컬 디렉토리에
[38:03]
넣어야 한다고 생각합니다. 저는
[38:06]
많은 도구 호출 대신
[38:08]
하나의 메가 도구 호출을 지지합니다.
[38:10]
실제로는 하나가 아닐 수도 있습니다.
[38:12]
실제로 제가 전에 보여드린 슬라이드가
[38:15]
아마 좋은 리스트라고 생각하지만,
[38:17]
많은 사람들이 수백 개의
[38:18]
도구 호출이 필요하다고 생각합니다. 저는 그렇게 가지 않을 거라고 봅니다.
[38:21]
적응적 예산, 추론 조정,
[38:23]
우리가 이것을 조금 하고 있습니다.
[38:25]
thinking과 ultra think 같은 것들 말이죠.
[38:28]
하지만 추론 모델을 도구로 사용하는 것이
[38:30]
패러다임으로서 매우 합리적이라고 생각합니다.
[38:33]
우리 중 많은 사람들이
[38:35]
20배 빠른 모델과
[38:38]
약간 더 못한 결과를 트레이드오프하고
[38:40]
매우 좋은 모델을 위한 도구 호출을
[38:43]
할 수 있을 거라고 생각합니다.
[38:44]
그것은 우리가 많은 경우에
[38:46]
만들 트레이드오프라고 생각합니다.
[38:48]
아마 우리 플래너는 아닐 수도 있습니다. 아마 플래너에는
[38:51]
GPT-4o1 코덱스나 Opus로 먼저 가거나
[38:53]
새로운 Opus가 나올 때 그걸로 갈 수도 있습니다.
[38:56]
하지만
[38:58]
많은 혼합과 매칭을 할 수 있다고 생각하고
[38:59]
그것이 다음 프론티어라고 생각합니다.
[39:01]
그리고 마지막 프론티어는
[39:03]
우리가 배울 수 있는 것들이 많다고 생각합니다.
[39:04]
할 일 목록과 새로운 일급 패러다임들을
[39:07]
우리가 구축할 수 있는 스킬이 또 다른
[39:09]
일급 패러다임의 예시입니다. 우리가
[39:11]
시도해볼 수 있는 것들이죠. 완벽하게
[39:13]
작동하지 않을 수도 있지만
[39:15]
저는 새로운 발견들이
[39:16]
많이 있을 거라고 생각해요.
[39:18]
제 의견으로는 말이죠. 제가 그런 답을 가지고 있느냐? 잘 모르겠어요.
[39:21]
그래서 이제 이 발표의 후반부에서
[39:24]
다른 프런티어인 에이전트들과
[39:26]
그들이 설계한 다른 철학들에 대해
[39:28]
이야기하고 싶습니다.
[39:30]
그들이 선택한 철학들에 대해서요.
[39:34]
우리 모두는 장점이 있습니다. 조합해서 사용할 수 있죠.
[39:36]
우리가 에이전트를 구축할 때
[39:38]
원하는 대로 할 수 있고 최고의
[39:39]
것들로부터 배울 수 있습니다. 그리고
[39:41]
프런티어 랩들은 이런 면에서 정말 뛰어나죠.
[39:45]
제가 자주 돌아가는 것이 있는데
[39:47]
AI 테라피스트 문제라고 부르는 것입니다.
[39:49]
더 나은 이름이 있을지도 모르겠지만
[39:51]
많은 문제들이 있다고 생각해요.
[39:54]
가장 흥미로운 AI 문제들은
[39:55]
전역 최대값이 없다는 것입니다.
[39:58]
즉
[40:00]
여기는 뉴욕시입니다. 제가
[40:02]
치료사를 만나야 한다면, 이 블록에만
[40:04]
여섯 명이 있어요. 최고의 치료사가
[40:06]
무엇인지에 대한 전역적 답은 없습니다.
[40:09]
다양한 전략이 있죠. 명상을 하는
[40:11]
치료사나 CBT를 하는 치료사가 있고
[40:14]
아야와스카를 주는 치료사도 있을 거예요.
[40:16]
이런 것들은 모두
[40:17]
같은 목표를 위한 다른 전략들입니다.
[40:20]
AI 치료사를 구축할 때도
[40:22]
전역 최대값이 없는 것과 같은 방식으로요.
[40:24]
이것이 제 반AGI적 관점이기도 하지만
[40:27]
이런 애플리케이션을 구축할 때
[40:29]
취향이 많이 개입된다고 말하는
[40:31]
관점이기도 하고, 설계 아키텍처가
[40:33]
매우 중요하다는 것이죠.
[40:35]
모두 놀라운 다섯 개의 서로 다른
[40:37]
코딩 에이전트를 가질 수 있어요. 오늘날
[40:39]
어떤 것이 최고인지 아무도 모릅니다.
[40:41]
솔직히 어떤 것이 최고인지 아무도 모릅니다.
[40:43]
Anthropic도 모르고, OpenAI도
[40:44]
모르고, Sourcegraph도 모릅니다.
[40:46]
누가 최고인지 아무도 모르지만
[40:48]
어떤 것들은 특정 분야에서 더 뛰어납니다.
[40:50]
개인적으로는 Claude Code가 좋다고 했듯이
[40:53]
로컬 환경을 실행하거나
[40:55]
git을 사용하거나 이런 종류의
[40:57]
상호작용이 필요한 인간 활동들에서 말이죠.
[40:59]
하지만 어려운 문제들은 Codex로 가거나
[41:01]
더 빠르기 때문에 Cursor의 Composer로 갑니다.
[41:04]
기본적으로 이 모든 것이 말하는 것은
[41:07]
여기서 다른 철학을 갖는 것에 가치가 있다는 것입니다.
[41:10]
그리고 이것에 하나의 승자만
[41:11]
있을 거라고 생각하지 않습니다.
[41:13]
다른 사용 사례들을 위한
[41:14]
다른 승자들이 있을 거라고 생각해요.
[41:15]
그리고 이것은 코딩 에이전트만이 아닙니다.
[41:18]
모든 AI 제품들입니다. 이것이
[41:19]
우리 회사 전체가 도메인
[41:21]
전문가들과 PM, 그리고
[41:24]
주제 전문가를 참여시키는 데
[41:26]
집중하는 이유입니다. 그것이 바로
[41:29]
방어 가능성을 구축하는
[41:30]
방법이기 때문입니다.
[41:31]
여기 관점들이 있습니다. 제가 보기에는
[41:33]
이것이 코딩 에이전트의 완전한 목록은 아니지만
[41:35]
제가 생각하기에 가장 흥미로운 것들입니다.
[41:37]
Claude Code는 제 생각에는
[41:39]
제게는 승리한다고 생각합니다
[41:42]
사용자 친화성과 단순성에서 말이죠.
[41:45]
말씀드렸듯이 만약 제가 뭔가를 하고 있다면
[41:46]
많은 애플리케이션이 필요한 작업에서 git이
[41:49]
git이 최고의 예시죠. 만약 제가
[41:51]
PR을 만들고 싶다면 Claude 코드로 갈 거예요.
[41:54]
음, 컨텍스트 관리에 정말 뛰어나요.
[41:56]
강력하게 느껴져요. 제가
[42:00]
더 강력하다는 증거를 보여드릴 수 있나요?
[42:01]
아마도 그렇지 않을 겁니다. 하지만
[42:03]
저에게는 그렇게 느껴지고 시장도 그렇게 느끼죠.
[42:06]
여기서 완전히 다른 대화가 있습니다
[42:08]
시장이 가장 잘 안다고 말하는 것과
[42:10]
사람들이 이야기하는 것이 최고라는 것이지만
[42:12]
그들도 알고 있는지는 모르겠어요. Cursor
[42:15]
IDE는 그런 관점에서 모델
[42:18]
불가지론적이에요. 더 빠르죠. Factory에서
[42:21]
Droid를 만들어요. 훌륭한 팀이죠. 그들도 여기 있었어요.
[42:23]
그들은 여러 개를 가지고 있어요. 정말로
[42:26]
이 droid 하위 에이전트들을 전문화시켜요.
[42:28]
그들이 가지고 있는 것이죠. 그래서 그게 그들의 강점이고
[42:31]
그것도 DAG 대화일 수 있거나
[42:33]
아니면 모델 훈련일 수도 있어요. 음, cognition.
[42:36]
Devon은 이런 end-to-end
[42:38]
자율성 자기 성찰 AMP인데 이에 대해서는
[42:41]
잠시 후에 더 자세히 이야기할게요. 그들은
[42:43]
많은 흥미로운 관점을 가지고 있고
[42:44]
실제로 저는 그들이 매우 흥미롭다고 생각해요
[42:46]
요즘에는 free는 모델 불가지론적이고
[42:50]
사용자를 위한 많은 UX 기능이 있어요. 그리고
[42:52]
실제로 저는 그들의 디자인을 사랑해요.
[42:54]
이 컨퍼런스에서의 그들의 발표들
[42:56]
그들은 매우 매우 독특한
[42:58]
관점을 가지고 있어요. 그러면 codeex부터 시작해봅시다
[43:00]
인기 있는 툴이니까요.
[43:03]
Claude 코드와 꽤 비슷해요.
[43:06]
같은 마스터 while 루프죠. 대부분이 그렇게 하는데
[43:09]
그게 바로 승리하는
[43:10]
아키텍처니까요. 흥미롭게도 rust
[43:13]
코어죠. 멋진 점은 오픈
[43:15]
소스라는 것이에요. 실제로 codeex를 사용해서
[43:18]
codeex가 어떻게 작동하는지 이해할 수 있어요
[43:19]
제가 한 일이 그런 거예요. 조금 더
[43:22]
이벤트 기반적이고 조금 더
[43:25]
동시 스레딩 작업이 들어갔어요.
[43:27]
제출 큐, 이벤트 출력 같은
[43:30]
제가 이야기했던 것들
[43:32]
Claude 코드의 IO 버퍼에 대해서요.
[43:36]
그들은 조금 다르게
[43:38]
한다고 생각해요. 샌드박싱은 매우
[43:40]
다릅니다. 그들의 것은 더... 제 말은
[43:44]
여기서 보실 수 있듯이 Mac OS seat belt와
[43:46]
Linux land로 그들의 것은 더 커널 기반이고
[43:48]
그리고 상태는 이런... 모든 것이
[43:52]
스레딩과 권한 하에 있고
[43:55]
제가 말하고 싶은 것은 대부분 다르다는 것이고
[43:56]
그리고 진짜 차이점은 정직히 말해서
[44:00]
모델이에요. 이것은
[44:04]
실제로 제가 Claude 코드를 사용해서
[44:06]
codeex가 어떻게 작동하는지 이해한 것입니다.
[44:09]
보시면 몇 개의 explore가 있어요. explore에 대해서는 이야기하지 않았지만
[44:11]
그것은 또 다른 하위 에이전트 유형입니다
[44:14]
제가 언급했듯이 이것들은 들어가고 나가요. 하지만
[44:17]
네, 이것은 codeex를
[44:18]
Claude 코드로 연구하는 것입니다.
[44:20]
항상 재미있는 일이에요.
[44:22]
그럼 AMP에 대해 이야기해봅시다.
[44:25]
이것은 소스그래프의 코딩 에이전트예요.
[44:28]
무료 티어가 있어요. 제 생각에는 멋진
[44:31]
관점입니다. 그들은
[44:33]
이런 여분의 토큰들을 활용해요
[44:36]
제공업체들로부터 말이죠. 그리고 광고를 보여줍니다. 그래서
[44:37]
실제로 저희가 그들에게 광고를 내고 있어요. 저는
[44:39]
그게 멋지다고 생각해요. 저는 광고 찬성파예요. 많은 사람들이
[44:41]
광고 반대파에요. 이게 제 특이한 견해 중 하나인데
[44:43]
저는 좋아해요. 모델 선택 옵션이 없어요.
[44:45]
이것도 아주 흥미롭고
[44:47]
독특한 관점이에요.
[44:49]
실제로 이게 그들의 개발 속도를 높여줘요.
[44:50]
결과물에 대한 정확한 기대치가 줄어들기 때문이죠.
[44:54]
왜냐하면 그들이 모델을 계속
[44:56]
바꾸고 있을 수 있거든요.
[44:58]
그래서 이것이 그들의 개발 방식을 바꿔놓죠.
[45:00]
그리고 그들의 비전도 상당히 흥미로워요.
[45:03]
음
[45:05]
그들의 비전은 단순히 최고의 에이전트를 만드는 것이 아니라
[45:12]
가장 많은 에이전트 친화적 환경에서
[45:14]
작동하는 에이전트를 만드는 것이에요.
[45:16]
실제로 Factory에서도 이와 비슷한
[45:18]
발표를 했었는데
[45:20]
밀폐된 코딩 리포지토리를 어떻게 구축하느냐
[45:22]
에이전트가 테스트를 실행할 수 있는
[45:26]
피드백 루프를 어떻게 구축하느냐
[45:28]
이게 성배 같은 것이고
[45:29]
자율 에이전트를 만드는 방법이며
[45:31]
프론트엔드 버전도 보고 싶어요.
[45:33]
자기 디자인을 보고 개선하게 하고
[45:35]
계속 반복하게 하는 것
[45:37]
이것이 그들의 핵심 철학이고
[45:39]
제가 에이전트 관점이라고 부르는
[45:41]
것으로 요약할 수 있어요.
[45:43]
그들이 컨텍스트로
[45:46]
하는 것도 흥미로워요.
[45:47]
우리 모두 compact에 익숙하잖아요.
[45:49]
정말 최악이에요. 10초나 기다려야 해요.
[45:52]
왜 이렇게 오래 걸리는지 모르겠어요.
[45:54]
모르시는 분들을 위해 설명하면
[45:55]
컨텍스트가 너무 커지면 채팅창을 요약하고
[45:58]
요약본을 제공하는 기능이에요.
[45:59]
그들에게는 handoff라는 게 있는데
[46:01]
이전에 콜 오브 듀티 해본 분이라면
[46:03]
기억하실 거예요. 무기 교체가
[46:05]
재장전보다 빠르다는 걸.
[46:07]
그게 바로 handoff예요.
[46:10]
새로운 스레드를 시작하고
[46:12]
거기에 필요한 정보만 주는 거죠.
[46:14]
새 스레드에 말이에요.
[46:15]
제게는 이게 승리 전략 같아요.
[46:16]
틀릴 수도 있지만, 아마 둘 다 필요할 수도 있고
[46:19]
그게 그들이 추진하는 방향이에요.
[46:21]
저는 그게 좋아요.
[46:23]
정말 신선한 관점을 제공해요.
[46:25]
두 번째는 모델 선택이에요.
[46:27]
이것은 추론 조절 기능이고
[46:29]
그들의 관점이에요.
[46:32]
빠름, 스마트, 오라클이 있어요.
[46:34]
다른 모델들을 사용한다는 점에 더 집중하고
[46:38]
오라클이 뭔지는 알려주지 않아요.
[46:41]
사실은 알려주긴 하지만
[46:42]
오라클이 무엇인지 바꿀 용의가 있고
[46:44]
아주 어려운 문제가 있을 때
[46:46]
오라클을 사용할 거라는 거죠.
[46:48]
네, 그게 AMP예요. 이제 Cursor의 에이전트로 넘어가죠.
[46:54]
Cursor의 에이전트는 정말 흥미로운 관점을 가지고 있어요.
[46:56]
첫째로, 당연히 UI 우선이에요.
[46:58]
CLI가 아니라요. CLI도 있을 수 있지만
[47:01]
확실하지는 않아요. 하지만 UI가
[47:03]
흥미로운 부분이에요.
[47:05]
정말 빨라요. 새로운 모델 컴포저는
[47:07]
distilled되어 있어요.
[47:09]
그들은 데이터를 가지고 있어요.
[47:11]
제 생각에는 사람들이 파인튜닝에
[47:13]
다시 관심을 갖게 만들었어요.
[47:15]
파인튜닝은 거의 우리가 고객들에게
[47:18]
추천하지 않던 것이었는데
[47:20]
컴포저는 실제로 가능하다는 걸 보여줘요.
[47:22]
데이터 기반의 방어력을 구축할 수 있다는 걸 보여주는데
[47:24]
이건 정말 놀라운 일이죠. 하지만
[47:28]
커서의 에이전트 컴포저는
[47:30]
너무 빨라서 거의 완전히 갈아탔어요
[47:33]
정말 빠르거든요
[47:34]
너무 빨라서 문제인 게
[47:36]
실수로 개인 프로젝트 마스터에 푸시까지 해버렸어요
[47:38]
그런 건 원하지 않았는데 말이죠
[47:40]
커서는 정말 모두의 사랑을 받고 있고
[47:42]
팀에게 박수를 보내고 싶어요
[47:45]
정말 점진적으로 개발했거든요
[47:48]
커서의 첫 번째 버전은 정말 형편없었어요
[47:50]
그래도 VS 코드 포크라서 써봤는데
[47:53]
잃을 게 없잖아요
[47:55]
그런데 지금은 정말 좋아졌어요
[47:57]
정말 훌륭한 소프트웨어고
[47:58]
팀도 훌륭하죠
[48:01]
하지만 OpenAI의 코덱스 모델들도
[48:03]
마찬가지라고 생각해요
[48:05]
속도는 조금 느리지만
[48:08]
코딩 에이전트에 최적화되어 있고
[48:10]
디스틸된 모델이거든요
[48:12]
OpenAI에서도 정말 빠른 모델을
[48:14]
내놓을 수 있다고 봐요
[48:16]
그들도 데이터를 가지고 있으니까요
[48:18]
여기 사진이 하나 있는데
[48:20]
블로그에 올린 사진이에요
[48:23]
코딩 에이전트에 대한 그들의 관점을
[48:25]
여기서 볼 수 있어요
[48:27]
세 개의 모델을 보여주는 걸로
[48:28]
알 수 있죠
[48:30]
컴포저를 제공하지만
[48:32]
최첨단 모델도
[48:32]
사용할 수 있게 해줘요
[48:34]
GPT-5.1이 계획 수립에 더 나을 수도 있다는 걸
[48:38]
알고 있거든요. 여기선 5라고 했지만 지금은 5.1이 있죠
[48:42]
그래서 큰 질문은
[48:45]
우리가 어떤 걸 써야 하냐는 거예요
[48:46]
어떤 아키텍처가 최고일까요?
[48:49]
뭘 해야 할까요? 제 의견으로는
[48:53]
벤치마크는 거의 쓸모없어요
[48:55]
벤치마크는 이제 모델 제공업체들의
[48:57]
마케팅이 되어버렸어요
[48:58]
모든 모델이 벤치마크를 이긴다고 해요
[49:01]
어떻게 그런 일이 일어나는지 모르겠지만
[49:04]
평가가 중요한 세상이 있다고 생각해요
[49:06]
그리고
[49:08]
문제는 뭘 평가할 수 있느냐예요
[49:10]
제가 계속 추진해온 이 단순한 while 루프 아키텍처가
[49:14]
실제로는 평가를 더 어렵게 만든다는
[49:16]
점이 문제예요. 모델의 유연성에
[49:18]
더 의존하게 되면
[49:20]
어떻게 테스트하나요?
[49:22]
통합 테스트나 엔드투엔드 테스트를 실행해서
[49:25]
문제를 해결하는지만 확인할 수 있어요
[49:27]
그게 한 가지 방법이죠
[49:29]
나누어서 할 수도 있고
[49:31]
특정 시점의 스냅샷을 찍어서
[49:33]
반쯤 끝난 대화에서
[49:34]
특정 도구 호출을 해야 하는 상황의
[49:37]
컨텍스트를 챗봇에 주고
[49:39]
테스트를 실행할 수 있어요
[49:41]
아니면 백테스트를 실행해서
[49:42]
얼마나 자주 도구를 바꾸는지
[49:46]
확인할 수도 있어요
[49:47]
여기서 또 다른 개념이 개발되고 있는데
[49:49]
에이전트 냄새라고 부르거나
[49:52]
적어도 제가 그렇게 부르고 있어요
[49:53]
에이전트를 실행해서
[49:56]
몇 번이나 도구를 호출하는지 확인하는 거죠
[49:58]
몇 번이나 재시도하는지
[50:00]
얼마나 시간이 걸리는지
[50:01]
이런 건 다 표면적인 지표지만
[50:03]
정상성 확인에는 정말 좋아요
[50:05]
그리고
[50:07]
이런 것들은 평가하기가 어렵습니다. 여기에는
[50:09]
많은 것들이 관여하죠. 제가 한 예시를
[50:11]
보여드리겠습니다. 좀 더 자세히 알아보기 위해서요.
[50:14]
하지만 이 주제에 대해
[50:17]
한 가지 더 말씀드리고 싶은 게 있습니다.
[50:20]
제 사고 모델로 정리하면
[50:22]
엔드투엔드 테스트를 할 수도 있고,
[50:24]
특정 시점 테스트를 할 수도 있습니다. 제가
[50:27]
가장 자주 추천하는 것은 백테스트입니다.
[50:30]
백테스트부터 시작하세요.
[50:32]
기록 데이터를 수집하기 시작하고
[50:34]
그냥 재실행하면 됩니다. 자, 이 예시를
[50:37]
보여드리겠습니다. 기본적으로 여기 있는 것은
[50:40]
PromptLayer의 스크린샷입니다.
[50:42]
이것이 저희 평가 제품이고
[50:44]
배치 러너이기도 합니다. 여러
[50:45]
컬럼들을 프롬프트를 통해
[50:47]
실행할 수 있습니다. 하지만 이 경우에는
[50:49]
프롬프트가 아닌 Claude Code를 통해
[50:51]
실행하고 있습니다. 헤드리스 Claude Code가 있고
[50:53]
이 모든 제공업체들을 가져와서 제 헤드리스
[50:56]
Claude Code가 다음과 같이 말합니다. 다음
[50:58]
슬라이드에 있을 것 같은데요. 모델
[50:59]
제공업체를 웹에서 검색하라고 합니다.
[51:02]
파일 변수로 주어집니다.
[51:04]
가장 최근에 출시되고 가장 큰 모델을 찾아서
[51:06]
이름을 반환하라고 합니다.
[51:08]
무엇을 하고 있는지 모르겠습니다.
[51:09]
웹 검색을 하고 있습니다. 저는
[51:11]
그것에 대해 신경쓰지도 않습니다.
[51:12]
이것이 엔드투엔드 테스트입니다. 이렇게 Claude Code를
[51:16]
시도해보는 방법입니다. 실제로
[51:17]
Claude Code를 워크플로우에
[51:19]
통합하는 것과 이런 유형의 헤드리스 SDK에 대해
[51:22]
할 말이 많습니다. 다음 슬라이드에서
[51:24]
이야기할 것 같습니다. 하지만
[51:27]
여기서 핵심은 엔드투엔드 테스트를
[51:30]
시작할 수 있다는 것입니다. 높은 수준에서
[51:32]
살펴보고 모델 스멜을 수행한 다음
[51:34]
각 행의 통계를 살펴보고
[51:36]
도구를 몇 번 호출했는지 확인할 수 있습니다.
[51:38]
그리고 돌아가서, 이 강연에서
[51:41]
이에 대해 많이 이야기했죠. 엄격한 도구들.
[51:43]
도구들은 엄격하게 테스트될 수 있습니다.
[51:47]
이것이 결정론을 오프로드하는 방법입니다.
[51:49]
이것이 결정론을 모델의
[51:51]
다른 부분으로 오프로드하는 방법입니다.
[51:53]
도구를 테스트합니다. 도구의
[51:56]
결과를 테스트합니다. 함수처럼
[51:58]
보세요. 입력과
[51:59]
출력이 있습니다. 만약 도구가
[52:01]
실행되는 하위 에이전트라면,
[52:03]
여기서 재귀가 발생합니다. 그러면 다시 돌아가서
[52:06]
엔드투엔드를 테스트해야 합니다.
[52:07]
하지만 도구의 경우, 이 예시를
[52:09]
들어드리겠습니다. 제 코딩 에이전트나
[52:12]
일반적인 에이전트, 자율적인 에이전트에서
[52:18]
매우 구체적으로 출력하고 싶은 것이 있다면
[52:20]
예를 들어, 매우 구체적인 유형의
[52:22]
이메일 형식이나
[52:24]
작성하고 싶은 블로그 포스트 유형이 있고
[52:26]
정말로 제 목소리를 제대로 구현하고 싶다면,
[52:29]
모델 탐색에 의존하고 싶지 않습니다.
[52:31]
실제로 엄격하게 테스트할 수 있는
[52:33]
도구를 구축하고 싶습니다.
[52:35]
이 경우, 이것도 PromptLayer
[52:38]
스크린샷이지만, 제가 구축한
[52:40]
워크플로우입니다. 이메일이 제 기준에
[52:43]
맞는지 확인하는 LM 어설션이 있습니다.
[52:45]
좋다면 수정하고, 좋지 않다면
[52:47]
누락된 부분을 추가합니다.
[52:49]
헤더와 같은 부분들을 말이죠.
[52:52]
놓친 부분을 수정하고 같은 단계로 다시 작업합니다.
[52:54]
이것은 매우 간단한 예시입니다만,
[52:57]
저희는 SEO 블로그 포스트를 위한
[53:02]
다른 버전도 가지고 있습니다.
[53:04]
20개의 노드를 갖춘 버전으로,
[53:07]
심층 연구로부터 개요를 작성하고
[53:09]
결론을 수정하고 링크를 추가합니다.
[53:12]
[53:13]
명확한 비전이 있는 작업의 경우,
[53:15]
테스트하기가 훨씬 쉬워집니다.
[53:18]
보시다시피
[53:20]
이런 워크플로를 테스트하는 것은
[53:23]
단계가 적고 유연성도 낮습니다.
[53:25]
제가 만든 평가 방법이 있는데,
[53:28]
샘플 이메일들로 시작해서
[53:30]
실제로 프롬프트를 실행하고
[53:33]
에이전트 워크플로를 실행한 후
[53:36]
여러 휴리스틱을 추가합니다.
[53:38]
매우 간단한 LLM 판단기로
[53:40]
3개 부분이 포함되어 있는지 확인합니다.
[53:41]
'안녕 재러드', 이메일 본문,
[53:44]
서명을 테스트했습니다.
[53:46]
훨씬 복잡하게 만들 수도 있고
[53:48]
코드 실행도 가능하지만
[53:51]
LLM 판단기가 보통 가장 쉽습니다.
[53:53]
이제 보시다시피
[53:55]
모든 케이스가 맞을 때까지 계속 실행하고
[53:56]
시간에 따른 평가 결과를 볼 수 있습니다.
[53:59]
이 예시에서는
[54:01]
100점을 달성했습니다. 재미있었어요.
[54:03]
[54:04]
미래 지향적인 내용을 하나 더 추가하고 싶습니다.
[54:07]
헤드리스 클로드 코드 SDK를 주목해 보세요.
[54:09]
오늘 아침에도 관련 발표가 있었죠.
[54:13]
그래서
[54:14]
너무 많은 시간을 할애하지는 않겠지만
[54:16]
정말 놀랍습니다.
[54:19]
간단한 프롬프트만 주면
[54:21]
파이프라인의 또 다른 부분이 됩니다.
[54:23]
제가 사용하는 용도는... 다음 슬라이드에 있는데
[54:26]
매일 문서를 업데이트하는
[54:28]
GitHub 액션이 있습니다.
[54:31]
다른 저장소에 푸시한
[54:33]
모든 커밋을 읽고, 많은 커밋이 있는데
[54:35]
클로드 코드를 실행합니다.
[54:37]
클로드 코드가 모든 저장소를 가져와서
[54:39]
업데이트된 내용을 확인하고
[54:42]
클로드 MD를 읽어서 문서를 업데이트해야 하는지 확인한 후
[54:44]
PR을 생성합니다.
[54:47]
이것이 많은 가능성을 열어준다고 생각하고
[54:50]
우리가 더 높은 추상화 수준에서
[54:51]
에이전트를 구축하기 시작할 가능성이 있습니다.
[54:53]
클로드 코드와 다른 에이전트들에 의존하여
[54:54]
많은 하드니스와 오케스트레이션을 처리하도록 하죠.
[54:56]
[55:00]
[55:01]
>> 그것들을 검토하시나요?
[55:03]
네,
[55:06]
PR을 생성하긴 하지만
[55:09]
PR을 병합하지는 않습니다.
[55:12]
자, 제가 얻은 교훈들입니다.
[55:15]
첫 번째, 모델을 신뢰하세요. 확신이 서지 않을 때는
[55:18]
에이전트를 구축할 때 모델에 의존하세요.
[55:19]
두 번째, 간단한 설계가 승리합니다.
[55:23]
첫 번째와 두 번째는
[55:25]
어느 정도 연결되어 있습니다. 세 번째, bash면 충분합니다.
[55:28]
[55:29]
도구는 간단하게 하세요. 40개 도구 말고
[55:32]
10개나 5개 도구를 사용하세요.
[55:36]
컨텍스트 관리가 중요합니다. 이것은
[55:38]
현재 에이전트에서 우리가 계속 피하려는
[55:41]
골칫덩어리입니다. 미래에는
[55:43]
컨텍스트를 훨씬 잘 다루는
[55:45]
새로운 모델들이 나올 수도 있습니다.
[55:47]
하지만 항상 한계가 있을 것입니다.
[55:49]
결국 인간과 대화하는 것이니까요.
[55:52]
하루에 너무 많은 사람을 만나면 이름을 잊어버려요.
[55:53]
그건 컨텍스트 관리 문제일 수도 있고
[55:56]
아니면 제 무능함일 수도 있어요. 잘 모르겠어요.
[55:58]
다섯 번째, 에이전트에서는 다양한 관점이 중요합니다.
[56:01]
저는 엔지니어링적 사고방식이
[56:04]
이 부분을 충분히 이해하지 못하는 경우가 많다고 생각해요.
[56:07]
특히, 저도 엔지니어이기 때문에
[56:10]
저 자신에 대한 이야기이기도 하지만
[56:11]
다양한 관점이 중요한 이유는
[56:14]
문제를 해결하는 여러 가지 방법이 있고
[56:18]
어느 한 방법이 다른 방법보다 나은 것이 아니라
[56:20]
아마도 여러 전문가들의 조합을
[56:22]
원할 것이기 때문입니다.
[56:24]
저는 제 에이전트가 Claude Code와 CodeX를 실행해서
[56:26]
결과를 제공하고 팀으로 간주되어
[56:28]
Slack 기반 메시지 채널에서
[56:30]
서로 대화할 수 있게 하는 것을 원해요.
[56:32]
누군가 그런 걸 만들어주기를 기다리고 있어요.
[56:34]
정말 좋을 것 같아요.
[56:36]
이것들이 제 주요 교훈입니다.
[56:38]
보너스로 제가 이 슬라이드 덱을
[56:40]
Claude Code를 사용해서 어떻게 만들었는지 보여드릴게요.
[56:42]
슬라이드 개발 스킬을 만들었어요.
[56:46]
기본적으로 Claude Code에게
[56:48]
슬라이드 개발이 어떻게 작동하는지 연구하라고 했어요.
[56:50]
그리고 그건 제가 이걸로 만든 라이브러리 같은 거예요.
[56:52]
이 모든 에이전트들과 작동 방식을 연구하기 위해
[56:54]
심층 연구 스킬을 만들었어요.
[56:57]
디자인 스킬도 만들었는데
[56:58]
뭔가가 끔찍해 보이는지 좋아 보이는지는 알지만
[57:01]
제가 좋은 디자이너가 아니라서
[57:03]
어떻게 해결해야 할지 모르거든요.
[57:05]
그래서 이런 박스들도 그냥
[57:07]
'오, 박스를 좀 더 예쁘게 만들어줘.
[57:09]
강조 색상을 넣어줘'라고 했어요.
[57:12]
네, 이렇게 만들었습니다.
[57:14]
다시 한번 들어주셔서 감사합니다.
[57:16]
질문이 있으시면 기꺼이 답변해드리겠습니다.
[57:18]
저는 Prompt Layer의 창립자 Jared입니다. 거기서 찾아주세요.
[57:24]
네.
[57:25]
감사합니다. 훌륭한 발표였어요.
[57:27]
DAG에 관해서 언급하셨는데
[57:30]
기본적으로 DAG를 없애자고 하셨잖아요
[57:32]
하지만 DAG는 순차적인 실행을 강제하잖아요.
[57:36]
예를 들어 고객 서비스에서
[57:39]
에이전트가 이름과 이메일을 물어보는 것처럼
[57:41]
어떤 순서로 실행되어야 하잖아요.
[57:46]
그래서 이걸 그냥 써야 한다는 말씀인가요?
[57:50]
이제 이것이 에이전트가 실행할 계획으로
[57:54]
그냥 작성되어야 하고
[57:57]
모델이 그 순서대로 도구를 호출할 것이라고
[58:00]
그냥 믿어야 한다는 건가요?
[58:02]
어떻게 순서를 강제할 수 있나요?
[58:04]
맞습니다. 질문은 제가 왜 계속
[58:07]
DAG를 없애자고 말하는지,
[58:11]
문제를 해결하기 위한 특정 순서를
[58:13]
어떻게 강제할 수 있는지에 대한 것이었습니다.
[58:16]
다양한 유형의 문제가 있다고 생각해요.
[58:18]
우리 모두가 사용할 수 있는
[58:21]
범용 코딩 에이전트를 만드는 문제는
[58:25]
비기술적인 사람들도 사용할 수 있도록 하는
[58:27]
문제를 해결하는 특정한 단계가 없기 때문에
[58:30]
모델에 의존하는 것이 더 낫습니다.
[58:31]
만약 여러분의 문제가
[58:33]
여행 일정을 만드는 것이라면
[58:40]
예를 들어 여행 일정을 만드는 것이라면
[58:42]
항상 동일한 결과물이 있기 때문에
[58:46]
좀 더 구체적인 단계가 됩니다.
[58:48]
따라서 중요할 수 있는 DAG가 조금 더 있지만
[58:50]
여행의 연구 단계에서는
[58:52]
아마도 DAG를 원하지 않을 것입니다.
[58:54]
왜냐하면 모든 도시가
[58:56]
다르기 때문입니다.
[58:58]
정말 다를 거예요. 그래서 정말로
[58:59]
해결하려는 문제에 따라 달라집니다. 만약
[59:01]
여행 일정을 위한 에이전트를 만들고 싶다면
[59:03]
아마 제 툴 호출 중 하나는
[59:05]
출력 파일을 만드는 DAG가 될 것입니다
[59:08]
왜냐하면 출력이
[59:10]
동일하게 보이길 원하거나 계획을 만들고 싶기 때문입니다. 그리고
[59:11]
시스템 프롬프트에서 예를 들어
[59:14]
항상 출력으로 끝내라고 말할 수 있습니다. 하지만
[59:15]
혼합하고 매치해야 합니다. 모든 사용 사례는
[59:19]
다르지만, 만약
[59:21]
범용적인 것을 만들고 싶다면
[59:22]
제 의견은 모델에 더 의존하고
[59:24]
간단한 루프에 의존하고 DAG에는 덜 의존하는 것입니다.
[59:28]
>> 좋네요. 다른 질문 있나요?
[59:31]
네.
[59:34]
>> 네.
[59:34]
그 점을 바탕으로, 우리가
[59:37]
실제로 코드를 통해 API를 호출하지 않고
[59:38]
대부분의
[59:39]
LM 호출이 클라우드 코드를 트리거하고
[59:41]
그냥 파일만 작성하는 세상으로 향하고 있다고 생각하시나요?
[59:44]
그냥 파일만
[59:46]
작성하는 대신에 말이죠?
[59:50]
그래서 질문은 우리가 모델을 직접 호출하는 것에서
[59:52]
벗어나서 헤드리스 클라우드 코드 같은 것을
[59:54]
호출하게 될 것인가, 맞나요?
[59:57]
>> 네. 만약 제가
[59:58]
문서당 하나의 LM 호출을 하는
[01:00:01]
파이프라인을 가지고 있다면, 마지막에 요약하죠. 당신은
[01:00:03]
매번 파일을 저장하는 while 루프 클라우드 코드를 만들 수 있습니다. API를
[01:00:06]
전혀 호출하지 않고
[01:00:08]
클라우드 코드만 사용해서
[01:00:11]
while 루프에서
[01:00:13]
>> 가능할 수 있습니다. 음, 거기에 장단점을
[01:00:16]
설명드리겠습니다.
[01:00:19]
>> 네,
[01:00:20]
>> 장점은 개발하기 더 쉽고 우리가
[01:00:21]
최첨단 기술에 의존할 수 있다는 것입니다.
[01:00:24]
생각해보면, 추론
[01:00:26]
모델이 바로 그런 것입니다. 추론 모델들은
[01:00:28]
항상 존재했던 것은 아닙니다. 우리에게는 그냥 일반적인
[01:00:31]
LM 모델이 있었고 그런 다음 오, 이제 우리에게 01과
[01:00:32]
추론 모델이 있습니다. 그것이 바로
[01:00:34]
제 말은, 이것보다 조금 더 복잡하지만
[01:00:37]
기본적으로는 그냥
[01:00:38]
OpenAI 서버에서 계속
[01:00:39]
컨텍스트를 실행하다가 결국
[01:00:42]
출력을 제공하는 while 루프입니다. 마찬가지로
[01:00:43]
클라우드 코드 SDK는
[01:00:45]
더 많은 것들이 있는 while 루프입니다. 그래서
[01:00:48]
많은 빌더들이 오직
[01:00:51]
이런 에이전틱 엔드포인트만 다루게 될 것을 충분히 볼 수 있습니다. 심지어
[01:00:54]
모델 제공자가 모델을
[01:00:57]
에이전틱 엔드포인트로 릴리스하는 것도 볼 수 있습니다. 하지만
[01:00:59]
많은 작업들에 대해서는
[01:01:02]
조금 더 많은 제어를 원할 것입니다. 그리고
[01:01:04]
아마도 여전히 가능한 한 메탈에 가깝게 가고 싶을 것입니다. 그렇긴 하지만
[01:01:07]
아직도 컴플리션 모델을 원하는 많은 사람들이
[01:01:10]
있었는데 그건 결코 일어나지 않았고 아무도
[01:01:12]
더 이상 그것에 대해 이야기하지 않습니다. 그래서
[01:01:14]
모든 것이 그냥 이 SDK가 될 가능성이 매우 높지만
[01:01:17]
저는 수정구슬을 가지고 있지 않습니다
[01:01:19]
하지만 그것들이 제가
[01:01:21]
생각하는 방식입니다.
[01:01:23]
>> 네,
[01:01:24]
>> 강연 감사합니다. 음, 단순할수록 좋다고 말씀하셨는데
[01:01:26]
음, AI에서의 테스트 주도
[01:01:29]
>> 네,
[01:01:30]
개발, 스펙 주도 개발에 대해 어떻게 생각하시나요?
[01:01:32]
시도해보셨나요? 그것에 대해 어떻게
[01:01:35]
>> 에이전트를 구축하는 것에 대해서인가요 아니면 작업을
[01:01:37]
완료하는 것에 대해서인가요?
[01:01:39]
>> 코딩을 위해서요.
[01:01:42]
>> 코딩을 위해서요.
[01:01:44]
>> 코딩에 대해서요.
[01:01:46]
스펙 기반 개발에 대한 질문이네요.
[01:01:49]
에이전트와 함께하는 코딩을 위한 테스트 기반 개발 말이죠.
[01:01:51]
에이전트와 함께 코딩할 때요.
[01:01:54]
확신이 서지 않을 때는
[01:01:58]
좋은 엔지니어링 관행으로 돌아가라고 말하고 싶습니다.
[01:02:00]
그래서 만약 여러분이 그리고 전체 엔지니어링
[01:02:04]
테스트 기반 개발이
[01:02:06]
올바른 방법인지에 대한 논쟁이 있습니다.
[01:02:08]
어떤 사람들은 맹신하고
[01:02:10]
어떤 사람들은 그렇지 않아요.
[01:02:12]
그래서 정답은 없다고 생각합니다.
[01:02:14]
코딩 에이전트에게는 분명히
[01:02:16]
테스트 기반 개발이 더 쉽게 만들어줍니다.
[01:02:18]
제가 보여드린 것처럼 AMP의 소스 그래프의
[01:02:20]
전체 철학이 좋은 테스트를 구축할 수 있다면
[01:02:22]
팩토리도 그렇게 생각한다고 봅니다.
[01:02:24]
좋은 테스트를 구축할 수 있다면
[01:02:26]
코딩 에이전트가 훨씬 더 잘 작동할 수 있습니다.
[01:02:29]
그래서 제가 개인적으로 작업할 때는
[01:02:31]
계획 단계와
[01:02:34]
스펙 개발 단계에 꽤 많이 의존합니다.
[01:02:36]
그리고 더 간단한 작업들은
[01:02:38]
모델이 꽤 쉽게 처리할 수 있다고 생각합니다.
[01:02:40]
하지만 매우 간단한 수정을 한다면
[01:02:42]
그 단계를 건너뛸 것입니다.
[01:02:44]
만능 해결책은 없지만
[01:02:47]
여러분이 믿는 엔지니어링 원칙으로 돌아가세요.
[01:02:49]
확신이 서지 않을 때는 그렇다고 말하겠습니다.
[01:02:53]
앞서 시스템에 대해 이야기하셨는데
[01:02:57]
록 누수가 그냥
[01:03:00]
UI를 보는 것만으로도 가능한가요?
[01:03:02]
다운로드 번들을 보거나
[01:03:05]
프롬프트가 숨겨진 특별한 엔드포인트가 있나요?
[01:03:07]
엔드포인트 뒤에요.
[01:03:08]
네, 숨겨져 있다고 생각합니다.
[01:03:11]
숨겨져 있다고 생각해요.
[01:03:13]
실제로 흥미로운 기사가 있었는데
[01:03:14]
누군가가
[01:03:16]
코드엑스가 오픈 소스이기 때문에
[01:03:19]
OpenAI가 코드엑스 모델을 출시하기 전에
[01:03:22]
그것이 사용하고 있던 것을
[01:03:24]
오픈 소스 코드엑스를 해킹해서
[01:03:27]
모델에 커스텀 프롬프트를 주고
[01:03:29]
그것 없이도 모델을 사용할 수 있었어요.
[01:03:31]
네, 파고들 수는 있지만 일반적으로는
[01:03:34]
숨겨지려고 하고 또한 누군가가 게시한 게으름도 있죠.
[01:03:36]
그래서 거기 있어요.
[01:03:38]
그게 그 작업이지만 누군가는 찾았어야 했겠죠.
[01:03:40]
이게 문제인가요?
[01:03:43]
여러분 컴퓨터 어딘가에 있나요?
[01:03:46]
사실 그 답은 모르겠습니다.
[01:03:49]
그 답을 아세요?
[01:03:50]
네.
[01:03:50]
네.
[01:03:52]
여러분 컴퓨터에 있어요.
[01:03:54]
니코가 여러분 컴퓨터에 있다고 해요.
[01:03:56]
그래서 거기 있네요.
[01:03:57]
그럼 제가 보고 있던 프롬프트가
[01:04:00]
조금 오래된 것 같고 업데이트해야 할 것 같습니다.
[01:04:04]
하지만 질문은
[01:04:07]
프롬프트가 그들의 서버에 숨겨져 있는지
[01:04:09]
아니면 충분히 결심이 서 있다면 찾을 수 있는지였어요.
[01:04:13]
그리고 답은 그렇다인 것 같아요.
[01:04:15]
다른 질문 있나요?
[01:04:16]
네.
[01:04:18]
이게 마지막인가요?
[01:04:19]
이게 마지막 질문인가요?
[01:04:21]
그럴 수 있어요.
[01:04:23]
프롬프트 레이어에 대해 이야기해주시고
[01:04:24]
사람들이 어떻게 도움을 줄 수 있는지 말씀해 주세요.
[01:04:26]
네, 좋은 질문이네요.
[01:04:29]
잊고 있었어요. 감사합니다.
[01:04:34]
음, 네, 첫 번째로 저희는 채용 중입니다.
[01:04:38]
뉴욕의 매우 재미있고 빠르게 움직이는 팀에서
[01:04:41]
코딩 직업을 찾고 계신다면
[01:04:43]
X나 이메일로 jaredprompter.com으로 연락주세요.
[01:04:45]
저희는 뉴욕에 기반을 두고 있습니다.
[01:04:48]
저희는 AI 제품 구축 및 테스트를 위한 플랫폼이에요.
[01:04:51]
프롬프트 관리, 감사 가능성,
[01:04:52]
거버넌스, 이런 재미있는 것들을 위한 플랫폼이지만
[01:04:54]
로깅과 평가도 해요.
[01:04:56]
그리고 제가 보여드린 그 스크린샷들은
[01:04:58]
프롬프트 레이어에서 나온 것입니다.
[01:05:00]
AI 애플리케이션을 구축하고 있고
[01:05:02]
팀과 함께 구축하고 있다면
[01:05:03]
아마 프롬프트 레이어를 시도해봐야 할 것입니다.
[01:05:05]
여러분의 삶을 더 쉽게 만들어줄 거예요.
[01:05:07]
특히 팀이 클수록
[01:05:08]
더 협업하고 싶을수록
[01:05:10]
PM과 비기술직 사용자들과 더 협업하고 싶을수록
[01:05:12]
또는 그냥 기술 사용자들이라면
[01:05:14]
훌륭한 도구입니다.
[01:05:15]
여러분의 삶을 더 좋게 만들어줄 거예요.
[01:05:17]
적극 추천합니다. prompt layer.com이고
[01:05:20]
사용하기 쉽습니다.
[01:05:22]
그리고 이것이 제 쇼였습니다. 들어주셔서 감사합니다.
[01:05:41]
끝.