클라우드플레어 API 2,600개 엔드포인트를 다 노출하면 첫 호출에서만 120만 토큰이 드는데, 검색·실행 두 개 툴로 그걸 1,000토큰까지 줄인 99.9% 절감 사례와 켄턴이 캔버스에 그린 틱택토 판을 모델이 획(stroke) 배열만 보고 알아채 원을 그려 넣은 창발 행동을 담음. 아무 능력도 없이 시작해 API를 하나씩 명시적으로 열어주는 캐퍼빌리티 기반 보안(capability-based security) 샌드박스 구조까지 구체적으로 짚음.
한줄 코멘트. 도구를 JSON으로 하나씩 주고받는 대신 모델에게 코드를 쓰게 하고 그것을 API 바로 옆에서 돌린다. 발표가 든 예에서 첫 호출에 120만 토큰이 들던 것이 1,000 토큰으로 줄고 왕복 여덟 번이 한 번이 된다. 다만 그 수치는 특정 API 표면 하나를 놓고 든 값이고, 무대에서 돌린 라이브 데모는 자바스크립트 오류를 내며 흔들렸다.
클라우드플레어에서 에이전트 SDK를 만드는 사람이 발표한다. 주장은 한 줄이다. 코드가 시스템과 주고받는 방식이 되어야 한다는 것이다.
출발점은 규모다. 클라우드플레어의 API 표면은 엔드포인트가 약 2,600개다. 이것을 도구로 다 노출하면 *툴 콜링을 시작하기도 전에 컨텍스트가 터진다.
왕복 여덟 번과 한 번
같은 일을 시키는 두 방식
보통은 모델이 도구를 하나 부르고, JSON으로 결과를 받고, 다시 말하고, 또 부른다. 발표자는 이 방식이면 그 API 호출들을 하는 데 왕복이 약 여덟 번 든다고 말한다.
대신 모델에게 코드를 쓰게 한다. 주로 자바스크립트다. 그 코드를 API 바로 옆에서 즉시 돌리면 한 번에 끝난다.
동료 한 사람이 이것을 처음 적용했다고 한다. 그가 낸 방법은 도구를 딱 두 개만 노출하는 것이다.
노출한 도구 둘
| 도구 | 무엇을 받나 |
|---|---|
| 검색 | *OpenAPI 스펙 전체를 넘겨 필요한 것을 찾게 한다 |
| 실행 | 찾아낸 것들을 부르는 코드를 받아 돌린다 |
둘 다 입력이 코드 문자열이라는 점이 같다.
여기서 이 발표의 수치가 나온다. 2,600개를 다 노출하면 첫 호출에만 약 120만 토큰이 들었다. 두 도구 방식으로 바꾸자 1,000 토큰으로 줄었다. 발표자는 약 99.9% 줄었다고 말한다.
샌드박스가 능력을 얻는 순서
모델이 쓴 코드를 돌린다는 말은 곧 안전 문제다. 여기서 막는 순서가 거꾸로다.
*샌드박스는 아무 능력도 없이 시작한다. 코드를 돌리는 것 말고는 아무것도 못 한다. 요청을 보낼 수도 없고 열린 API도 없다. 거기에 필요한 능력을 하나씩 명시적으로 준다.
바깥으로 나가는 요청과 네트워크 연결도 같은 자리에서 통제한다고 말한다.
발표에서 가장 눈에 띄는 장면은 동료가 만든 틱택토 데모다.
시스템의 상태를 모델에게 통째로 넘긴다. 여기서 상태는 캔버스에 그은 획의 배열이다. 사람이 X를 그리자 모델이 그 상태를 자기 컨텍스트로 읽어 들이고, 그것이 무슨 판인지 알아보고, 한가운데에 원을 그려 넣었다.
무엇을 하라고 시킨 것이 아니라 상태를 넘겼더니 나온 행동이라는 것이 이 대목의 요점이다.
발표자는 라이브 데모가 있다며 무대에서는 데모가 잘 안 된다고 미리 말한다. 그리고 실제로 그렇게 됐다.
돌리자 자바스크립트 오류가 이어졌고, 발표자는 성공할지 지켜보자고 말한다. 모델이 페이지를 나눠 가며 훑으려 드는 것 같다고 덧붙인다. 무대에 오르기 전 열 번 시험했다는 말도 한다.
이 장면이 앞의 주장과 맞닿는다. 모델에게 코드를 쓰게 하는 방식은 그 코드가 틀렸을 때 어떻게 되는지가 그대로 드러난다.
99.9%는 특정 API 표면 하나를 놓고 든 값이다. 엔드포인트가 2,600개인 자사 API에서 잰 것이라, 표면이 작거나 성격이 다른 API에서도 같은 폭으로 줄어드는지는 나오지 않는다.
왕복 여덟 번도 그 예의 값이다. 무엇을 기준으로 센 여덟인지, 다른 일에서는 몇 번인지가 없다.
모델이 쓴 코드가 틀릴 확률이 없다. 라이브 데모에서 바로 그 일이 벌어졌는데도, 얼마나 자주 그러는지와 틀렸을 때 무엇으로 되돌리는지가 나오지 않는다. 이 방식의 급소가 거기다.
언제까지 유효한 이야기인지 밝히지 않는다.
용어