Connery 소개: OpenGPTs 및 LLM 앱을 위한 오픈 소스 플러그인 인프라
요약
Connery는 OpenGPTs 및 다양한 LLM 앱을 위한 오픈 소스 플러그인 인프라를 제공합니다. 이 프레임워크는 외부 서비스와의 쉬운 통합과 커스터마이징을 가능하게 하며, 런타임 관리와 연결 관리를 지원합니다. 이를 통해 개발자는 복잡한 LLM 기반 에이전트를 실제 세계의 작업에 효과적으로 통합할 수 있습니다.
핵심 포인트
- Connery는 LLM 앱용 오픈 소스 플러그인 인프라를 제공합니다.
- 외부 서비스와의 쉬운 연결 및 커스터마이징을 가능하게 합니다.
- 사용자 인증, 권한 부여 등 보안 기능이 중요합니다.
- LLM의 실제 세계 통합은 여전히 복잡하고 안전 조치가 필요합니다.
에디터 노트: 이 블로그는 Connery의 공동 창업자인 Michael Liebmann과 Volodymyr Machula가 작성했습니다. Connery는 다양한 플랫폼에서 사용 가능한 통합 기능을 플러그인 형태로 생성하기 위한 오픈 소스 프레임워크이며, LLM 기반 에이전트의 도구로도 활용될 수 있습니다!
지난 10년 동안 저와 Volodymyr는 온갖 종류의 통합 기능을 만들어 왔습니다. 여기에는 전통적인 시스템 통합 및 커스터마이징부터 LLM 애플리케이션, CI/CD 워크플로우, Slack, 노코드 도구용 플러그인 생성까지 모든 것이 포함됩니다.
항상 같은 문제점들이 있었습니다. 그래서 저희는 변화를 주기로 결정하고, 우리의 경험을 Connery라는 오픈 소스 프로젝트로 묶어 모두가 그 혜택을 누릴 수 있도록 했습니다!
Connery는 LLM 애플리케이션에 맞춰진 플러그인 인프라를 제공하여 외부 서비스와의 쉬운 통합 및 커스터마이징을 가능하게 합니다. 이는 런타임을 관리하고 OpenGPTs와 원활하게 통합되며, 연결 관리, 개인화 및 안전을 위한 사용자 인터페이스를 제공합니다.
게다가 Connery는 오픈 소스 플러그인 생태계를 위한 도구링과 개발자 경험을 구축하고 있습니다. 목표는 커뮤니티가 서로의 플러그인을 생성, 공유 및 커스터마이징하는 것에서 혜택을 누릴 수 있도록 하는 것입니다.
문제점: LLM을 실제 애플리케이션에 통합하기
챗봇이나 비서와 같은 LLM 기반 앱은 추론 또는 생성 작업에 점점 더 유용해지고 있습니다. 하지만 LLM 앱이 실제 세계의 작업을 직접 실행할 수 있도록 하는 것이 훨씬 더 큰 기회입니다. 이것이 아직 어려움인 것은 분명하지만, 이것이 주요 트렌드가 되고 있다는 것에는 의심의 여지가 없습니다.
비즈니스 또는 개인 비서와 같은 일반 사용 애플리케이션(Tony Stark의 J.A.R.V.I.S와 유사한 것을 상상해 보세요)은 외부 시스템과의 수많은 통합이 필요할 수 있습니다. 마찬가지로, DevOps, HR, 금융 또는 쇼핑과 같이 특정 분야에 초점을 맞춘 에이전트는 실제 세계 작업을 수행할 수 있을 때 더욱 효과적이 됩니다.
하지만 기존 애플리케이션과 비교했을 때, LLM 기반 앱은 잠재적인 환각(hallucinations)이나 잘못된 결정으로 인해 다소 예측하기 어렵습니다. 결과적으로, LLM을 실제 시나리오에 통합하려면 추가적인 안전 조치와 고려 사항이 필요합니다.
게다가, 통합 기능을 구축하고 실행하는 것은 일반적으로 복잡합니다. 특히 전문화된 인프라가 필요한 LLM 기반 앱으로의 통합은 더욱 그렇습니다.
아래에서는 개발자가 LLM 기반 앱을 실제 세계에 통합할 때 고려해야 할 몇 가지 중요한 과제들을 나열합니다.
개인화 및 보안(Personalization and security)
LLM 앱의 개인화는 2024년 AI 개발의 중요한 동력입니다. 이는 LLM이 사용자에게 더 많은 개별적인 가치를 제공할 수 있게 합니다. 또한, LLM 앱이 이메일 전송이나 캘린더 접근 등 사용자의 개별 서비스와 직접 상호 작용할 수 있음을 의미합니다. 이를 위해서는 필수적인 통합 및 개인화 기능이 필요합니다:
사용자 인증(User authentication), 권한 부여(authorization), 그리고 연결 관리 및 개인화를 위한 사용자 인터페이스(user interface).
연결 관리 (Connection management): 사용자는 OAuth를 사용하여 Gmail과 같은 서비스에 AI 기반 앱이 접근할 수 있도록 승인하는 안전한 방법을 필요로 합니다. AWS처럼 OAuth를 지원하지 않는 서비스의 경우, **시크릿 관리(Secrets Management)**를 통해 액세스 키를 안전하게 저장하는 것이 필수적입니다.
개인화 (Personalization): 사용자는 통합 기능을 구성하고 개인화할 수 있습니다. 예를 들어, 모든 이메일에 대한 사용자 지정 서명을 지정할 수 있습니다. 또는 LLM이 개인적인 사용 사례를 더 잘 이해하도록 작업에 대한 메타데이터를 개인화할 수 있습니다. 또한 이름이나 이메일과 같은 개인 정보를 제공하여 LLM이 작업을 호출할 때 추가적인 컨텍스트로 사용할 수 있게 할 수도 있습니다.
AI 안전 및 제어 (AI safety and control)
전통적인 애플리케이션은 예측하고 테스트할 수 있는 잘 정의된 기능을 가지고 있어 일관된 작동을 보장합니다. 반면, LLM 기반 앱은 자연어 처리 기능 때문에 예측하기 어려우며, 명령 오해석과 같은 잠재적 위험을 초래할 수 있습니다. 이를 완화하려면 추가적인 조치가 필요합니다.
**메타데이터(Metadata)**는 LLM이 사용 가능한 액션을 더 잘 이해하도록 돕고, 결과적으로 해당 액션을 선택하고 실행할 때의 오류율을 줄여줍니다. 여기에는 명확한 목적을 가진 액션 설명, 사용 가능한 매개변수와 유효성 검사 규칙을 기술하는 입력 스키마(input schema), 그리고 액션 결과를 포함합니다.휴먼-인-더-루프(Human-in-the-loop) 기능은 중요한 워크플로우에서 액션을 실행할 때 사용자에게 최종 결정권을 부여합니다. 또한, 이는 액션을 실행하기 전에 제안된 입력 매개변수를 편집할 수 있도록 해야 합니다. 예를 들어, 이메일을 보내기 전에 검토하는 것과 같습니다.**감사 로그(Audit logs)**는 일관성, 규정 준수(compliance), 그리고 투명성을 위해 필요합니다.
통합을 위한 인프라(Infrastructure for integrations)
LangChain은 LLM 애플리케이션을 구축하기 위한 훌륭한 프레임워크를 제공합니다. 반면에 이러한 LLM 앱에 *통합(integrations)*을 추가하는 것은 상당히 다르고 자체적인 복잡성을 수반합니다.
현재 개발자들은 실제 세계와 통합하려면 앱 내부에 자신만의 맞춤형 통합 인프라를 구축해야 합니다. 여기에는 다음이 포함됩니다:
- OAuth, API 키 등을 사용한 타사 서비스에 대한 통합 권한 부여(Authorization for integrations)
- CRUD 작업, 비동기 작업(async operations), 이벤트 기반 작업 등 다양한 통합 유형 및 패턴 지원
- 통합 코드와 그 런타임 지원
이러한 항목들 대부분은 통합 기능을 갖춘 LLM 기반 앱을 구축할 때 번거로움이며, 개발자들이 주요 목표에서 벗어나게 만듭니다.
제안된 솔루션: 오픈 소스 플러그인 인프라 및 생태계(open-source plugin infrastructure and ecosystem)
위에 언급된 문제들을 해결하기 위해, 우리는 다음과 같은 특성을 가진 LLM 앱과 GPTs를 위한 플러그인 인프라를 구축하는 것이 가장 좋은 접근 방식이라고 생각합니다:
- 첫째, 반드시 오픈 소스여야 합니다.
- 둘째, 협업 모델을 갖추어야 합니다.
우리는 이것이 폐쇄형(closed-source) 접근 방식의 많음과 달리, 열린 플러그인 커뮤니티로 성장하여 속도와 혁신을 촉진하기를 바랍니다. 이것이 우리가 Connery를 구축하는 이유이자 방법의 주요 동력입니다.

다음으로 위 다이어그램의 각 구성 요소별 하위 구성 요소를 살펴보겠습니다.
플러그인 생태계(Plugin ecosystem)
생태계 측면에서는 두 가지 구성 요소가 있습니다.
**액션(Actions)**은 기본 작업 단위로 생각할 수 있으며, 입력 및 출력 매개변수를 가진 함수와 유사하게 설계되어 하나의 특정 작업을 수행합니다. 예를 들어, "이메일 보내기"는 "Gmail" 플러그인 내의 액션입니다.**플러그인(Plugins)**은 관련 액션들의 모음입니다. 각 플러그인은 특정 구조를 가진 TypeScript 코드를 포함하는 오픈 소스 GitHub 저장소로 표현됩니다. 플러그인의 액션을 사용하려면 Runner에 설치되어야 합니다.
💡
본 기사에서는 '통합(integration)' 대신 '플러그인'이라는 용어를 사용할 것입니다. 그 이유는 플러그인이 단순한 통합 이상의 것이기 때문입니다. 이는 서드파티 API의 통합을 단순화하고 개선하기 위해 특정 기능 세트를 갖춘 독립적인 모듈이기 때문입니다 (자세한 내용은 아래 참조).
플러그인 인프라(Plugin infrastructure)
Runner는 Connery의 핵심입니다. 이는 GitHub에서 플러그인을 통합하는 오픈 소스 엔진입니다. 사용자 인터페이스와 연결 관리, 개인화, 안전을 위한 일련의 기능을 갖추고 있습니다. 누구나 자신만의 독립적인 Runner를 설정할 수 있으며, 여기에는 특정 플러그인 세트와 클라이언트를 위한 표준화된 API가 고유하게 구성됩니다.**클라이언트(Clients)**는 Connery의 사용자 대면 측면으로, 최종 사용자가 액션을 트리거하는 인터페이스 역할을 합니다. 예를 들어, LangChain의 OpenGPTs는 Connery 액션과 연결하여 최종 사용자가 자신들의 GPT를 깊이 있게 커스터마이징하고 개인화할 수 있도록 합니다. 또한 Connery는 다른 많은 플랫폼을 위한 클라이언트도 제공합니다.
**개발자 및 사용자 관점
개발자 및 사용자 관점
개발자는 자신만의 플러그인을 만들거나 커뮤니티의 기존 플러그인을 활용할 수 있는 유연성을 갖습니다. 플러그인은 Connery 클라이언트(예: OpenGPTs, LangChain Toolkit, API 등)를 통해 챗봇이나 어시스턴트와 같은 LLM 앱에 쉽게 통합될 수 있습니다.LLM 앱의 최종 사용자는 먼저 Gmail과 같은 개인 계정에 연결하고 기타 개인 정보를 제공하여 Runner에서 자신의 경험을 개인화합니다. 그런 다음, 사용자는 LLM 앱이 개인화된 Runner를 사용하는 것을 승인합니다. 완료되면, 사용자는 이메일 전송과 같이 자신을 대신하여 행동을 실행하도록 LLM 앱에 요청할 수 있으며, 여전히 앱의 작동 방식을 제어하고 필요할 경우 최종 결정권을 가집니다.
예시: OpenGPTs에서 Connery 액션 실행하기
LangChain의 OpenGPTs에 대한 최근 업데이트는 다양한 인지 아키텍처를 지원합니다. 새로운 '어시스턴트(assistants)' 기능은 Connery 액션과 같은 도구를 커스텀 GPT에 통합하는 쉬운 방법을 제공합니다. 간단한 예시로 살펴보겠습니다:
웹페이지 요약 후 이메일 전송하기
Paul Graham의 웹사이트에서 통찰력 있는 기사를 발견하여 동료에게 간결한 요약을 이메일로 공유하고 싶다고 상상해 보세요. 여기에는 두 가지 다른 플러그인의 두 가지 액션이 포함될 수 있습니다:
- 공개 웹페이지 요약(Summarize public webpage): Summarization 플러그인에서 제공하는 액션입니다. 이 액션은 공개 웹페이지 URL을 받아 OpenAI를 사용하여 기사의 간결한 요약을 생성합니다.
- 이메일 전송(Send email): Gmail 플러그인에서 제공하는 액션입니다. 수신자, 제목, 본문을 입력 매개변수로 받아 해당 수신자에게 이메일을 전송합니다.
데모 체험하기
여기에서는 LangChain이 호스팅하는 OpenGPTs의 데모 버전을 찾을 수 있습니다. 여기에는 사전 구성된 Connery Runner와 저희 데모에 필요한 모든 액션이 포함되어 있습니다. 원하는 기사를 요약하여 다음 비디오처럼 이메일로 보낼 수 있습니다**(참고: 데모 목적으로 컨텍스트 창은 16K 토큰 제한입니다):
배경에서 무슨 일이 일어날까요?
아래는 데모에서 배경에서 실제로 발생하는 과정을 단순화한 것입니다:
배경에서 무슨 일이 일어날까요?
아래는 데모에서 배경에서 실제로 발생하는 과정을 단순화한 것입니다:
사용자가 요청을 전송합니다: 사용자가 프롬프트를 제출하여 OpenGPT에 요청을 보냅니다.
OpenGPT가 액션을 가져옵니다: OpenGPT는 LangChain Toolkit을 통해 Connery Runner에 연결하고, 액션 이름, 설명, 입력 이름, 설명 등 메타데이터와 함께 사용 가능한 모든 액션을 요청합니다.
Runner가 액션을 준비합니다: Runner는 각 플러그인의 GitHub 저장소에서 소스 코드를 다운로드하여 나중에 사용할 수 있도록 로컬 캐시를 만듭니다. 다운로드가 완료된 후, Runner는 이 플러그인들의 사용 가능한 모든 액션을 가져와 그 정보를 OpenGPT에 다시 보냅니다.
OpenGPT가 액션을 호출합니다: OpenGPT는 사용자의 프롬프트를 기반으로 액션의 메타데이터를 사용하여 적절한 액션과 그 입력 매개변수를 식별합니다. 액션이 식별되고 OpenGPT가 이를 실행하기로 결정하면, OpenGPT는 Runner에 요청을 보냅니다.
Runner가 액션을 실행합니다: Runner는 캐시에서 플러그인의 소스 코드를 로드하고, 해당 액션을 찾아 제공된 매개변수로 실행합니다. 결과가 준비되면, Runner는 그 결과를 OpenGPT에 반환합니다.
OpenGPT가 결과를 사용합니다: OpenGPT는 이 결과들을 사용하여 작업을 완료합니다. 사용자 요청이 완료될 때까지 이 과정을 계속합니다. 데모에서 볼 수 있듯이, 여기에는 여러 액션을 호출하는 것이 포함될 수 있습니다.
Connery 액션으로 자신만의 OpenGPT 설정하기
자신만의 OpenGPT와 액션을 구성하려면 다음 단계를 수행하세요:
- Quickstart 가이드를 사용하여 Connery Runner를 설정합니다.
- 에이전트에서 사용하려는 액션과 플러그인을 설치합니다.
- OpenGPTs 저장소를 포크(fork)하고 README에 명시된 대로 구성합니다.
.env파일의 OpenGPTs에CONNERY_RUNNER_URL및CONNERY_RUNNER_API_KEY환경 변수를 지정하여 Connery Runner에 연결합니다.
💡
자신만의 앱과 에이전트에서 Connery 액션을 사용하려면 Python 및 JS용 LangChain Toolkit을 사용할 수 있습니다.
다음 단계
현재 저희는 위에 언급된 기능들을 구축하고 있습니다. 커뮤니티에 가장 중요한 기능을 우선순위화할 수 있도록 여러분의 피드백을 받고 싶습니다. GitHub 토론 게시판에서 의견을 알려주세요.
필요한 기능들을 구축하는 것 외에도, 오픈 소스로 공개된 Runner 위에 **관리형 서비스(managed service)**를 제공할 계획입니다. 저희 목표는 통합 과정을 단순화하고 액션 사용을 훨씬 빠르게 돕는 것입니다.
Connery 플러그인과 그 액션들은 개별 GitHub 저장소로 구성됩니다. 이는 공유와 재사용을 매우 쉽게 만듭니다. 이를 통해 개발자들에게 플러그인을 혁신하고 협업할 자유를 부여하는 **성장하는 분산형 오픈 소스 플러그인 생태계(decentralized open-source plugin ecosystem)**를 구상하고 있습니다. 현재 첫 번째 커뮤니티 플러그인들이 구축되고 있습니다.
프로젝트가 마음에 들거나 지속적으로 정보를 받고 싶다면, GitHub 저장소에 별을 눌러주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 LangChain Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기