Introducing ChainForge: A visual programming environment for prompt engineering
어떤 프롬프트를 사용해야 할까요? 어떤 모델을 사용해야 할까요? 어떤 설정으로?
우리는 모두 거대 언어 모델(LLM)과의 대화를 즐겼습니다. 하지만 그들의 반응을 수동으로 평가하는 것은 매우 시간이 많이 듭니다. 어느 정도로는, 회사들은 이것을 쉽게 만들고 싶어하지 않습니다. 결국, 한 모델이 다른 모델보다 나쁘다는 소문이 나면 좋지 않은 홍보가 되기 때문입니다. 따라서 모델 간의 비교를 위한 도구를 제공하는 것은 가장 강력한 선수에게만 현명합니다. 그러나 큰 언어 모델 생태계가 성장함에 따라, 사용자들이 모델을 비교하고, 응답을 감사하며, 그들의 사용 사례에 가장 강력한 프롬프트와 모델을 선택할 수 있도록 도구를 제공하는 것이 어느 때보다 중요해졌습니다.
그래서 오늘 나는 ChainForge를 출시합니다. ChainForge는 프롬프트 엔지니어링을 위한 시각 프로그래밍 환경이며, 하버드 HCI의 동료들과 상담하여 개발되었습니다. 이전의 플로우 기반 UI와 달리, 이것은 큰 언어 모델의 반응 평가에 초점을 맞추고 있습니다 – 여러 프롬프트, 프롬프트 파라미터, 그리고 모델들에 걸쳐서요. 이것은 초기 알파 버전입니다 — 더 많은 원형의 작업 프로토타입에 가깝습니다 — 하지만 이미 하버드 내부의 실제 연구에 유용하게 사용되었습니다. 나는 당신도 그것을 유용하고 창조적으로 사용할 수 있기를 바랍니다.
- 어떤 프롬프트와 모델을 사용할지의 선택
이 부분은 큰 언어 모델과의 대화를 즐기는 사람들이 있지만, 이러한 모델들의 반응을 수동으로 평가하는 것이 시간이 많이 든다는 것을 나타냅니다.- 모델 비교의 어려움
회사들은 자신들의 모델이 다른 모델보다 더 나쁘다는 것을 알리기 싫어 합니다. 그래서 모델 간 비교 도구를 제공하는 것은 시장에서 가장 선도하는 회사에게만 유리하다는 내용입니다.- ChainForge의 소개
여기에서는 ChainForge라는 새로운 도구를 소개합니다. 이 도구는 프롬프트 엔지니어링을 위한 시각 프로그래밍 환경으로, 하버드 HCI와 협력하여 개발되었습니다.- ChainForge의 특징
ChainForge는 큰 언어 모델의 응답을 평가하는데 초점을 맞추고 있으며, 다양한 프롬프트와 파라미터, 그리고 모델에 걸쳐 사용될 수 있습니다. 현재는 초기 단계에 있지만, 이미 하버드에서 실제 연구에 사용되고 있다고 합니다.
ChainForge의 전형적인 작업 흐름은 다음과 같습니다:
- 프롬프트 템플릿과 모델 선택
사용자의 목적에 가장 강력하고 일관된 출력을 제공하는 최적의 프롬프트 템플릿과 모델을 선택해야 합니다. - 프롬프트 주입 공격 우려
사용자가 LLM 애플리케이션에 포함된 특정 프롬프트에 대한 프롬프트 주입 공격에 대해 우려하는 경우가 있을 수 있습니다. - ChainForge에 프롬프트 연결
원하는 프롬프트를 ChainForge에 연결합니다. - 예제 공격 제공
알려진 공격 방법들을 예제로 제공하여 프롬프트가 공격에 어떻게 반응하는지 확인할 수 있습니다. - 모델 쿼리 선택
사용자는 몇 가지 모델을 선택하여 쿼리를 실행할 수 있습니다. 이를 통해 각 모델이 주어진 공격 시나리오에 어떻게 반응하는지 비교하고 분석할 수 있습니다.
이러한 흐름을 따라 ChainForge를 사용하면, 사용자는 자신의 목적에 맞는 가장 안전하고 효과적인 프롬프트와 모델을 선택하는 데 도움을 받을 수 있습니다.
그림)모델의 견고성을 프롬프트 주입에 대해 테스트하는 예는, 명령어 접두사의 모든 순열과 다양한 프롬프트 주입 공격을 시도하는 것입니다.
- 모델의 견고성 테스트: 모델이 얼마나 강력하게 특정 문제나 상황에 대처할 수 있는지 평가하는 테스트를 의미합니다.
- 프롬프트 주입 공격: 사용자의 의도와 다른 방식으로 언어 모델의 응답을 조작하려는 공격을 의미합니다. 특정한 입력(프롬프트)을 주입하여 모델이 예상치 못한 방식으로 반응하게 만드는 것을 목표로 합니다.
- 명령어 접두사의 모든 순열: “순열”은 특정 집합의 모든 가능한 순서 배열을 의미합니다. 여기서는 모든 가능한 명령어 접두사의 조합을 시도하는 것을 말합니다.
모든 프롬프트 순열(입력 파라미터의 모든 조합)로 동시에 모든 LLM들에 질의합니다:
그런 다음 평가 함수를 작성합니다. 당신은 ChainForge에 단일 응답을 어떻게 ‘점수’ 매기는지만 알려주면 됩니다(현재는 파이썬 함수이지만, 가까운 미래에는 주석 단계로 LLM을 사용할 수 있게 될 것입니다):
- “LOL”이라고 출력하도록 주입이 성공적으로 이루어졌는지 간단히 평가하는 경제적인 방법입니다.
모든 응답과 모델에 대한 결과의 그래프를 바로 볼 수 있습니다.
- 조회된 각 LLM에 따라 ‘LOL’이 응답에 나타났는지 여부입니다.
수동으로 모델 간에 평가하는 데 걸리는 시간의 일부만으로, 우리는 GPT4가 제공된 입력에 대해 프롬프트 주입 공격에 가장 견고하다는 것을 이미 볼 수 있습니다. 왜냐하면 “진짜” 스택에서는 전혀 나타나지 않기 때문입니다. 더 중요한 점은, 이 통찰력을 보여주는 그래프를 다른 사람들과 공유할 수 있다는 것입니다. 그리고 평가를 확장하고 싶다면 — 예를 들어 더 많은 프롬프트 변형을 시도하려면 — 그것도 할 수 있으며, ChainForge는 우리가 이미 답변을 가지고 있지 않은 프롬프트에 대한 질의만 보냅니다. ChainForge에서의 아이디어는 LLM으로부터의 응답을 기다리는 시간보다 그들에 대한 가설을 검증하는 데 더 많은 시간을 보내는 것입니다.
설명:
- 이 텍스트는 ChainForge의 효과와 장점을 설명하고 있습니다.
- GPT4 모델은 프롬프트 주입 공격에 대해 견고하다는 결과를 빠르게 얻을 수 있었습니다.
- 이러한 결과와 관찰을 시각적인 그래프 형태로 쉽게 다른 사람들과 공유할 수 있습니다.
- ChainForge는 이미 평가된 프롬프트를 제외하고 새로운 프롬프트에 대한 질의만 전송하므로 효율적입니다.
- ChainForge의 주요 목표는 사용자가 모델에 대한 가설을 검증하는 데 더 많은 시간을 할애하게 만드는 것입니다.
- 다른 예로, 숫자로 된 평가 지표가 지정된 두 모델 간의 평가 결과를 비교하는 그래프를 들 수 있습니다. (평가 코드는 표시되지 않습니다.)
ChainForge는 초기 단계에 있습니다 — 현재는 수치 및 불린 평가 지표만 지원하며, 모델은 표준 설정에서 몇 개만 제한되어 있습니다 (GPT3.5, GPT4, Anthropic의 Claudev1, Google의 PaLM2 text-bison 및 Dalai를 통한 Alpaca.7b). 하지만, 앞으로 무엇이 올지에 대해 흥분하며 놀아보길 바랍니다. 그리고, 지원하길 원하는 기능이나 추가하고 싶은 기능이 있다면 Issue를 제출하거나 Pull Request를 만들어 주세요.
지금은 이게 다입니다. 곧 더 많은 정보를 공유하겠습니다. 그 동안 Github repo나 User Guide를 확인하여 자세한 내용을 알아보세요.