프롬프트 체인

Apr 08 2023
대규모 언어 모델 프롬프트를 응용 프로그램으로 쉽게 연결할 수 있는 시각적 프로그래밍 도구가 등장했습니다. 대부분 대화형 UI입니다. 몇 가지 배경 많은 챗봇 개발 프레임워크에는 기능에 LLM이 포함되어 있습니다.

대규모 언어 모델 프롬프트를 응용 프로그램으로 쉽게 연결할 수 있는 시각적 프로그래밍 도구가 등장했습니다. 대부분 대화형 UI입니다.

약간의 배경

많은 챗봇 개발 프레임워크에는 기능에 LLM이 포함되어 있습니다. 이 기능은 기존 챗봇 개발 어포던스를 보완하기 위한 것입니다. 그러나 이러한 LLM의 챗봇 개발 프레임워크 구현은 본질적으로 매우 유사했습니다 .

이 초기 구현에 이어 두 번째 대화 흐름 생성 및 대화 디자인 지원이 이어졌습니다. Cognigy 가 주도한 것입니다 . 그 뒤를 옐로우 AI와 코레 AI가 뒤따랐다.

L LM은 개방형 기능으로 매우 다재다능합니다.

Voiceflow 및 Botpress는 프롬프트를 LLM에 제출할 수 있고 생성된 응답에서 값을 추출할 수 있는 범위까지 프롬프트 연결과 유사한 기능을 도입했습니다.

이 기사에서는 시각적 프로그래밍 인터페이스를 연결하는 기본 프롬프트를 설계하고 구축할 때 기본 원칙을 고려하고 싶습니다.

기본 프롬프트 연결 사용자 인터페이스

시각적 프로그래밍 UI를 통해 대규모 언어 모델 프롬프트를 연결할 때 기능의 가장 큰 부분은 저작 프로세스를 용이하게 하는 GUI입니다.

아래는 프롬프트 엔지니어링 및 프롬프트 체인 저작을 위한 GUI의 이미지입니다. 이 디자인은 워싱턴 대학과 Google이 수행한 연구에서 비롯되었습니다.

원천

인터페이스는 저작 프로세스의 여러 수준에서 세분성을 제공해야 합니다. 연결 프로세스를 고려하면 체인 간에 연결이 있음이 분명합니다.

모든 프롬프트 연결 또는 LLM 연결 도구는 연결 단계 간의 데이터 변환을 지원해야 합니다. 대부분의 경우 LLM이 구조화되지 않은 데이터를 반환한다는 점을 고려하면 구조화 및 데이터 변환 수준이 필요합니다.

두 번째 요소는 LLM의 약간 예측할 수 없는 특성입니다. LLM은 동일한 프롬프트에 대해 여러 응답을 생성할 수 있습니다. 이로 인해 프롬프트 체인에서 바람직하지 않은 응답을 계단식으로 연결하는 문제가 발생합니다 . 예상치 못한 데이터가 체인 전체에 전파되는 경우.

코드 컴파일이 없기 때문에 특정 모델 교육이 필요 없이 런타임에 프롬프트를 사용자 지정할 수 있습니다.

새 작업은 LLM Chained 응용 프로그램에서 쉽게 흡수할 수 있습니다. 단순히 프롬프트라고 하는 자연어 명령을 받아들입니다.

물론 많은 실제 응용 프로그램에는 단일 체인 인스턴스에 대한 문제를 제기하는 복잡하고 종종 병렬 다단계 작업이 포함됩니다.

아래의 기능 스택을 고려할 때 LLM(Large Language Models) 및 Generative AI를 기반으로 하는 프롬프트 연결 애플리케이션에는 세 가지 주요 구성 요소가 있어야 합니다.

⏺ LLM

⏺ 도우미

⏺ 커뮤니케이션

소스에서 적응

LLM

많은 체인/노드의 경우 LLM 출력은 LLM에서 제공하는 편집되지 않은 상태로 사용할 수 있습니다. 대부분의 경우 이 보기가 사용자에게 표시되거나 LLM 앱(일명 Gen 앱)의 다음 체인에 데이터 변환이 필요할 수 있습니다.

LLM 출력은 분기할 체인을 결정하므로 이러한 체인/노드 에지는 규칙과 조건을 포함해야 합니다.

마지막 고려 사항은 LLM을 분류자로 사용하는 것입니다 . LLM은 생성 또는 예측 용량 으로 구현될 수 있습니다 . Generative AI는 LLM에서 가장 인기 있고 접근하기 쉬운 측면입니다. 예측은 더 까다롭고 더 미세 조정하거나 적어도 정확한 프롬프트가 필요합니다.

체인 내에서 LLM을 분류자(따라서 예측) 로 활용하면 체인 응용 프로그램의 의사 결정 노드가 지능적이고 유연해집니다.

에지에 대한 의사 결정을 신속하게 코딩/스크립트 하려는 유혹이 항상 있을 것입니다 . 체인 전환점이라고도 합니다. 이것은 빠른 수정입니다. 그러나 다시 LLM 체인 응용 프로그램에 강성을 도입합니다.

도우미

헬퍼는 공손함, 공감 등과 같은 측면을 고려하여 LLM 결과 평가를 지원합니다. 헬퍼는 프롬프트의 순위를 재지정하거나 다시 제출할 수도 있습니다.

세분성은 모든 프로덕션 구현의 요구 사항이므로 프롬프트 체인 애플리케이션을 조정하는 것이 중요합니다. 데이터 처리 및 변환을 위해서는 일종의 스크립팅이 필요합니다.

스크립팅은 제어 조치, 데이터 변환 등을 구현하기 위해 체인 작성자에게 제공되는 개발 어포던스를 캡슐화합니다.

의사소통

의사 소통은 몇 가지 수준에서 이루어지며 구조화되지 않은 대화 데이터 형식의 사용자 데이터 입력이 있습니다.

사용자에게 최상의 응답을 선택하도록 요청하거나 몇 가지 가능성에 따라 명확하게 하는 것과 같은 기타 사용자 작업입니다.

물론 타사 시스템(API)은 모든 엔터프라이즈 또는 프로덕션 구현에 대해 조사됩니다.

PromptChainer의 디자인 고려

PromptChainer 인터페이스에는 노드 에지 또는 "체인 간"이 있는 체인 구조를 생성, 편집, 읽기 및 삭제할 수 있는 체인 뷰 비주얼라이저가 있습니다[A] .

노드 뷰어는 각 개별 노드 또는 체인 [B]의 구현, 개선 및 테스트를 지원합니다. 여기에서 각 노드에 대한 프롬프트 편집을 수행할 수 있습니다.

PromptChainer는 또한 캐시 지우기, 실행 로그 보기 등의 옵션을 사용하여 종단 간 [C] 체인 실행을 지원합니다.

원천

워싱턴 대학과 Google Research에서 수행한 정량적 연구를 기반으로 사용자가 체인을 구축하고 디버그하는 방법에 대한 발견:

[1] 사용자는 LLM 제한을 완화할 뿐만 아니라 애플리케이션을 확장 가능하고 확장할 수 있도록 체인을 구축하기를 원합니다.

[2] 일부 사용자는 한 번에 체인의 한 단계를 구축했지만 다른 사용자는 채우기 전에 모든 단계에 대한 추상 자리 표시자를 스케치했습니다.

[3] 여러 LLM 프롬프트와 체인 간의 상호 작용은 복잡할 수 있으며 프롬프트의 로컬 및 글로벌 디버깅이 모두 필요합니다.

아래 이미지를 고려하여 각 노드 또는 체인에 대한 설명은 다음과 같습니다.

[1] 체인에 대한 입력 정의

[2,3] LLM 출력을 사용하여 입력을 필터링하고 분기합니다.

[4] LLM 출력을 노드 출력으로 직접 사용합니다.

[5] 일반적인 데이터 변환을 위해 사전 구현된 JavaScript 함수.

[6] LLM 출력을 노드 출력으로 직접 사용합니다.

[7] 외부 기능을 호출하여 LLM과 전문 서비스를 연결합니다.

[8] 미리 정의된 헬퍼가 부족한 경우 사용자 정의 JS 함수.

[9] LLM 출력을 노드 출력으로 직접 사용합니다.

[10] 인간이 설계한 기준(예: 공손함)으로 LLM 출력을 필터링하거나 다시 순위를 매깁니다. 중간 데이터 포인트에 대한 외부(최종 사용자) 편집을 활성화합니다.

소스에서 적응

결론적으로

Foundation Models 및 Large Language Models에 구축된 애플리케이션에 현재 사용되는 몇 가지 용어가 있습니다. 이러한 용어는 Gen Apps, Generative Apps, LLM Apps, Prompt Chaining, LLM Chaining 등입니다.

대형 모델을 기반으로 구축하고 어떻게든 LLM의 힘을 활용할 필요가 있다고 말하면 충분합니다.

이러한 필요성은 다음 원칙에 의해 뒷받침됩니다.

  1. 프롬프트
  2. LLM 예측 및 생성 기능 활용.
  3. 프롬프트 연결; 병렬 및 직렬 방식으로.
  4. 체인/노드 및 에지, 노드/체인 간 프로그래밍을 위한 시각적 편집기입니다.
  5. LLM 응답 데이터 변환.
  6. LLM 연결 응용 프로그램은 입력과 출력 모두에 대해 대화형이거나 출력이 RPA 구성 요소를 캡슐화할 수도 있습니다.

저는 현재 수석 전도사 @ HumanFirst 입니다 . 나는 AI와 언어의 교차점에서 모든 것을 탐구하고 씁니다. LLM , 챗봇 , 보이스봇 , 개발 프레임워크, 데이터 중심 잠재 공간 등에 이르기까지 다양 합니다 .

https://www.linkedin.com/in/cobusgreyling
NLU 설계의 Cobus Quadrant™ 대화 설계 기능의 Cobus Quadrant™

PromptChainer: 시각적 프로그래밍을 통해 대형 언어 모델 프롬프트를 연결합니다.