Dropbox/AI 에이전트

3 개의 포스트

dropbox3분 읽기큐레이션 요약

DSPy를 활용해 Dash 채팅에서 AI 평가를 더 나은 응답으로 전환한 방법

Dropbox는 Dash chat 에이전트의 최종 답변만 평가하지 않고, 의도 파악·검색·도구 사용·근거 선택·다중 턴 대응까지 전체 실행 과정을 평가했습니다. 이후 사람의 평가 데이터를 활용해 LLM 평가자(judge)를 보정하고, DSPy의 GEPA·MIPROv2로 평가자와 에이전트 시스템 프롬프트를 최적화했습니다. 그 결과 불완전한 답변을 줄이고 토큰 사용량도 낮추면서 답변 품질을 유지할 수 있었습니다. ## 에이전트 평가가 어려운 이유 - 전통적인 검색 평가는 단일 결과의 관련성을 주로 측정하지만, 에이전트는 여러 단계의 의사결정을 수행합니다. - 평가 대상에는 다음 과정이 모두 포함됩니다. - 사용자의 의도 해석 - 문서·메시지·회의 기록 등 적절한 컨텍스트 수집 - 검색 및 문서 읽기 같은 도구 사용 - 여러 출처의 정보 종합 - 직접 답변, 추가 검색, 요약, 명확화 질문 중 적절한 선택 - 대화가 여러 턴에 걸쳐 진행될 수 있으므로 최종 답변뿐 아니라 피드백 반영과 재검색 과정도 평가해야 합니다. - 따라서 답변 품질, 의도 이해, 컨텍스트 선택, 도구 사용, 근거성, 지시 준수, 과업 완료 여부를 পৃথ도로 분석해야 실패 원인을 찾을 수 있습니다. ## 사람의 평가로 LLM judge 보정 - 내부 채팅 샘플과 에이전트 trace 로그를 수집하고, 사람이 다음 다섯 가지 차원을 평가했습니다. - 사용자 의도 추종 - 의미적 관련성 - 도구 호출 품질 - 지시사항 준수 - 컨텍스트 선택 - 평가자는 먼저 의도와 컨텍스트가 적절했는지 확인한 뒤 검색·검색 결과 활용·도구 행동을 검토했습니다. - 이후 최종 답변이 선택된 근거에 의해 뒷받침되는지, 관련성·근거성·완전성·지시 준수 여부를 평가했습니다. - 일부 지표는 1~5점으로 점수화하고, 함께 다음 정보를 기록했습니다. - 점수의 근거가 되는 reasoning note - 오래된 근거, 누락된 컨텍스트, 근거 없는 주장, 불완전한 답변, 개인화 실패 등의 failure code - 점수는 결과를 요약하지만, 평가 메모와 실패 코드는 문제가 발생한 위치와 원인을 보여줍니다. - 이 데이터는 judge 프롬프트 보정뿐 아니라 디버깅, 오류 분석, 개선 로드맵 수립, 우선순위 결정에도 활용됐습니다. ## DSPy를 이용한 평가자 개선 - 목표는 LLM judge의 점수가 사람의 판단과 더 일치하도록 만드는 것이었습니다. - judge는 단순히 답변에 점수를 매기는 것이 아니라 다음과 같은 정해진 절차를 따라야 했습니다. - 사용자의 의도 추론 - 대화 내용 검토 - 에이전트 trace와 지원 근거 확인 - 컨텍스트 선택과 도구 사용 분석 - 점수·실패 코드·평가 메모 작성 - DSPy를 최적화 도구로 사용하고, GEPA와 MIPROv2를 알고리즘으로 활용했습니다. - 알고리즘은 사람의 라벨이 있는 예제에서 프롬프트 변경안을 자동으로 제안하고 테스트했습니다. - 지원한 최적화 방식에는 다음이 포함됩니다. - judge 지침을 처음부터 새로 작성 - 기존 평가 행동을 유지하면서 다른 기반 모델에 맞게 조정 - 특정 실패 유형을 집중적으로 수정하는 타깃 최적화 - 이렇게 최적화된 judge는 이후 채팅 에이전트 자체의 시스템 프롬프트를 개선하는 평가 신호로 사용됐습니다. ## 평가에서 에이전트 개선으로 이어지는 피드백 루프 - 전체 과정은 다음 순환 구조로 구성됩니다. - 사람의 라벨이 judge를 보정 - 개선된 judge가 대규모 평가 신호 생성 - 평가 신호가 에이전트 프롬프트와 행동 개선에 사용 - 이 구조를 통해 사람의 평가를 모든 대화에 직접 적용하지 않고도 에이전트를 반복적으로 최적화할 수 있었습니다. - 최종적으로 불완전한 답변이 크게 줄었고, 답변 품질을 떨어뜨리지 않으면서 토큰 사용량도 절감했습니다. 실무적으로는 에이전트 개선 전에 평가자의 신뢰성을 먼저 검증해야 합니다. 최종 점수만 수집하기보다 trace, 평가 이유, 실패 유형을 함께 기록하고, 사람의 라벨과 DSPy 같은 자동 최적화 도구를 결합하면 평가를 지속적인 품질 개선 시스템으로 전환할 수 있습니다.

원문 읽기(새 탭에서 열림)
dropbox4분 읽기큐레이션 요약

코드 생성을 넘어: AI 에이전트 시대의 엔지니어링 생산성을 다시 생각하다

Dropbox는 AI 코딩 도구가 코드 작성 속도는 높였지만, 리뷰·CI·테스트·배포·운영을 새로운 병목으로 만들었다고 설명합니다. 따라서 생산성의 핵심은 코드 생성량이 아니라 전체 개발 생명주기가 더 많은 변경을 안정적으로 흡수하고 고객 가치로 전환하는 능력입니다. Dropbox는 코딩 에이전트 플랫폼, 새로운 생산성 지표, 교육과 가드레일을 통해 AI 중심의 개발 운영 모델을 구축하고 있습니다. ## 코파일럿에서 자율형 에이전트로 - 초기 AI 코딩 도구는 코드 설명, 스니펫 생성, 질의응답 등으로 엔지니어 옆에서 작업을 보조하는 코파일럿 역할을 했습니다. - 에이전트는 범위가 정해진 작업을 받아 다음 과정을 수행할 수 있습니다. - 코드베이스 조사 - 파일 수정 - 테스트 실행 - 실패 원인 분석과 재시도 - 사람이 검토할 수 있는 결과물 생성 - 엔지니어는 여전히 요구사항, 아키텍처, 품질, 배포에 대한 최종 책임을 집니다. - 에이전트 도입으로 여러 작업을 병렬로 진행하고, 반복적인 구현 업무를 위임할 수 있게 됐습니다. - 반면 코드와 풀 리퀘스트가 빠르게 증가하면서 코드 리뷰, 테스트 인프라, 검증, 릴리스 조정, 운영 시스템에 부담이 커졌습니다. ## Nova: Dropbox의 에이전트 플랫폼 - Nova는 자연어로 작업을 설명하면 통제된 환경에서 AI 코딩 에이전트를 실행할 수 있는 Dropbox의 내부 플랫폼입니다. - Nova의 핵심 가치는 모델 자체보다 다음과 같은 주변 시스템에 있습니다. - 코드베이스와 내부 개발 관행에 대한 컨텍스트 - 안전한 실행 환경 - 기존 개발 워크플로와의 통합 - 검증 절차와 사람의 최종 리뷰 - Nova가 생성한 변경은 작업 정의, 에이전트 실행, 결과 검증, 사람의 승인이라는 구조화된 흐름을 거칩니다. - 현재 Dropbox 풀 리퀘스트의 약 12분의 1이 Nova를 통해 생성되고 있습니다. - 기능 개발뿐 아니라 다음과 같은 고수고 작업에도 활용됩니다. - 마이그레이션 - 불안정한 테스트 수정 - 버그 조사 - 의존성 업데이트 - 시스템 유지보수 작업 ## 코드량이 아닌 제품 전달 속도 측정 - AI로 PR 생성량이 늘어나면 단순한 PR 처리량은 생산성을 충분히 설명하지 못합니다. - 함께 측정해야 할 지표는 다음과 같습니다. - 코드 리뷰 대기 및 처리 시간 - CI 비용과 처리 지연 - 재작업 비율 - 결함 비율 - 테스트의 첫 실행 성공률 - 최종적으로 고객에게 전달되는 가치 - Dropbox는 생산성을 네 단계로 나눠 측정합니다. - **Fuel**: AI 도구가 실제로 사용되는 정도 - **Adoption**: 팀의 개발 워크플로가 얼마나 변화했는지 - **Output**: AI가 실제 프로덕션 작업에 기여한 정도 - **Impact**: 아이디어가 고객 가치로 전환되는 시간과 제품 전달 속도의 개선 - 생산성 향상은 속도만으로 판단할 수 없으며, 품질과 신뢰성을 유지하는지가 중요합니다. - 코드 생성이 빨라져도 결함과 재작업이 늘어난다면 실질적인 생산성 향상으로 볼 수 없습니다. ## 엔지니어링 업무 방식의 변화 - 에이전트가 구현을 더 많이 담당하면서 엔지니어의 역할은 다음 영역으로 이동합니다. - 문제와 의도 정의 - 요구사항과 코드베이스 맥락 정리 - 생성된 변경 검토 - 아키텍처 및 품질 판단 - 최종 결과에 대한 책임 - 도구만 배포한다고 에이전트 방식이 정착되지는 않습니다. - Dropbox는 실습 교육, 해커톤, 부트캠프, 워크플로 사례 공유, 동료 주도 학습 등을 활용해 팀의 적응을 지원합니다. - 팀마다 도입 속도와 필요한 안전장치가 다릅니다. - 고위험 시스템은 더 강한 검증과 명확한 가드레일이 필요합니다. - 격리되거나 위험도가 낮은 코드 영역은 더 빠르게 자동화할 수 있습니다. - 모든 작업을 에이전트로 처리하는 것이 목표가 아니라, 효과가 큰 영역에서 안전하고 반복 가능한 방식으로 사용하는 것이 목표입니다. ## AI가 옮겨 놓은 병목 - AI는 소프트웨어 개발의 병목을 제거하기보다 다른 단계로 이동시킵니다. - 코드 생성이 빨라질수록 다음 영역이 새로운 제약이 됩니다. - 리뷰 처리 용량 - 테스트와 검증 - 릴리스 조정 - 운영 및 장애 대응 - 따라서 조직은 모델이나 코드 생성 기능만 강화할 것이 아니라 다음 시스템에 투자해야 합니다. - 풍부한 코드베이스 컨텍스트 - 에이전트 오케스트레이션 - 품질 관리와 거버넌스 - 개발 워크플로 통합 - 결과와 고객 영향을 측정하는 체계 - 경쟁력은 누구나 접근할 수 있는 기반 모델보다, 그 모델을 실제 조직의 개발 과정에 연결하는 내부 시스템에서 나온다는 것이 글의 결론입니다. 실무적으로는 AI 도구 도입량보다 리뷰 지연, 테스트 성공률, 결함·재작업, 배포 리드타임, 고객 가치 전달 속도를 함께 추적하는 것이 중요합니다. 작은 범위의 반복 업무부터 에이전트를 적용하고, 사람의 승인과 명확한 안전장치를 포함한 워크플로로 확장하는 접근이 적절합니다.

원문 읽기(새 탭에서 열림)
dropbox원문

Dash가 더 스마트한 AI를 위해 (새 탭에서 열림)

Dropbox Dash는 단순한 검색 시스템을 넘어 사용자의 의도를 이해하고 실행하는 에이전트형 AI로 진화하면서, 모델에 제공되는 정보를 정교하게 관리하는 '컨텍스트 엔지니어링'을 핵심 전략으로 채택했습니다. 단순히 많은 정보를 제공하는 것이 아니라 모델이 추론하고 행동하는 데 꼭 필요한 정보만을 선별하여 전달함으로써, AI의 '분석 마비' 현상과 토큰 낭비를 방지했습니다. 결과적으로 이러한 전략적 컨텍스트 관리는 모델의 판단 속도와 작업 정확도를 동시에 높이는 성과를 거두었습니다. ### 도구 정의의 최소화와 통합 인터페이스 구축 * 모델에게 너무 많은 API 호출 선택지를 주면 판단 속도가 느려지고 정확도가 떨어지는 현상이 발생했습니다. 이를 해결하기 위해 개별 서비스(Confluence, Jira, Google Docs 등)의 검색 도구를 하나로 묶은 '유니버설 검색 인덱스' 기반의 단일 도구를 구축했습니다. * Model Context Protocol(MCP)을 활용하여 도구 설명을 간결하게 유지함으로써, 모델의 컨텍스트 창(Context Window)이 사용자 요청이라는 본연의 목적에 더 많이 할애되도록 설계했습니다. * 하나의 일관된 인터페이스를 통해 정보를 검색하게 함으로써 모델의 계획 수립 과정을 단순화하고 효율성을 극대화했습니다. ### 지식 그래프를 통한 맥락적 데이터 필터링 * 단순히 여러 API에서 데이터를 가져오는 것에 그치지 않고, 검색된 결과 중 가장 관련성 높은 정보만 모델에 전달되도록 필터링 시스템을 강화했습니다. * 통합 인덱스 위에 사람, 활동, 콘텐츠 간의 관계를 연결한 '지식 그래프'를 구축하여 사용자별 맞춤형 순위 산출이 가능하게 했습니다. * 모델이 런타임에 방대한 정보를 직접 분석하는 대신, 이미 관계가 정립된 고가치 정보만 수신함으로써 추론의 질을 높이고 성능 저하를 방지했습니다. ### 복잡한 작업을 위한 전담 에이전트 도입 * 검색 쿼리 생성과 같이 복잡한 지침과 예시가 필요한 작업은 메인 모델의 컨텍스트 창을 과도하게 점유하는 문제를 일으켰습니다. * 이를 해결하기 위해 메인 에이전트는 전체적인 계획만 세우고, 구체적인 쿼리 작성은 별도의 '전담 에이전트'에게 위임하는 구조를 도입했습니다. * 역할 분담을 통해 메인 모델은 복잡한 세부 사항에 매몰되지 않고 전체 작업의 흐름에 집중할 수 있으며, 각 에이전트는 자신에게 할당된 컨텍스트 내에서 최적의 결과를 도출합니다. 효과적인 에이전트형 AI를 구축하기 위해서는 무조건 많은 데이터를 입력하기보다 모델이 처리해야 할 정보의 양과 질을 전략적으로 제어해야 합니다. 도구의 통합, 지식 그래프 기반의 정교한 필터링, 그리고 전문 에이전트로의 역할 분담은 성능 향상과 비용 절감을 동시에 달성할 수 있는 실무적인 context engineering 방안이 될 것입니다.