Parlant 소개
Parlant는 대규모 언어 모델(LLM) 기반의 에이전트가 비즈니스 로직과 가이드라인을 엄격하게 준수하도록 보장하는 오픈소스 행동 제어(Behavior Guidance) 프레임워크입니다. 현재 LLM 에이전트 개발의 가장 큰 난제는 모델의 확률적(Probabilistic) 특성으로 인해 발생하는 '예측 불가능성'입니다. 수많은 프롬프트를 통해 지시사항을 전달하더라도, 컨텍스트가 길어지거나 복잡한 상황이 닥치면 에이전트는 지시를 무시하거나, 환각(Hallucination)을 일으키거나, 예상치 못한 방식으로 도구를 호출하곤 합니다.
Parlant는 이러한 문제를 해결하기 위해 프롬프트 엔지니어링에서 행동 엔지니어링(Behavior Engineering)으로의 전환을 제안합니다. 단순히 LLM에게 "친절하게 대답해"라고 말하는 대신, 에이전트가 따라야 할 규칙을 구조화된 데이터로 관리하고, 상황에 맞는 규칙만을 동적으로 인출하여 적용하는 Coherence Engine을 탑재했습니다. 이를 통해 개발자는 에이전트가 '무엇을 알고 있는지(Knowledge)'뿐만 아니라 '어떻게 행동해야 하는지(Behavior)'를 세밀하게 통제할 수 있습니다.
Parlant 프레임워크는 고객 지원 챗봇, 사내 규정 준수 에이전트, 복잡한 워크플로를 수행하는 자율 에이전트 등 결정론적(Deterministic) 결과와 높은 신뢰성이 요구되는 엔터프라이즈 환경에 최적화되어 있습니다. 개발자는 Parlant를 통해 에이전트의 페르소나를 유지하면서도, 비즈니스 정책 변경 시 전체 프롬프트를 수정할 필요 없이 해당 가이드라인만 업데이트하면 되는 유연성을 확보할 수 있습니다.
Parlant vs. 기존 LLM 개발 방식 비교
기존의 에이전트 개발 방식(Pure Prompting 또는 일반적인 Chain 프레임워크)과 Parlant의 접근 방식은 근본적인 아키텍처에서 차이가 있습니다. 기존 방식 (Monolithic Prompting) 은 시스템 프롬프트(System Prompt)에 모든 규칙, 예외 사항, 도구 설명, 페르소나를 텍스트 덩어리로 밀어 넣습니다. 하지만 이러한 방식은 규칙이 수십 개로 늘어나면 중간 내용을 망각(Lost in the Middle)하는 현상이 발생합니다. 또한, 서로 상충되는 규칙이 있을 때 모델이 어떤 것을 우선해야 할지 판단하기 어렵습니다. 수정 시마다 전체 프롬프트의 사이드 이펙트를 검증해야 합니다.
이에 비해, Parlant 방식 (Dynamic Behavior Injection) 은 규칙을 개별적인 '가이드라인(Guideline)' 단위로 분리하여 데이터베이스에 저장합니다. 이를 통해 사용자의 발화가 들어오면, 검색 알고리즘이 현재 상황에 가장 적합한 소수의 규칙만을 찾아내어 모델에 주입합니다. 이를 통해 모델의 인지 부하를 줄이고, 명시된 규칙을 따를 확률을 비약적으로 높입니다. 또한, 답변 생성 후 '자체 검증(Supervision)' 과정을 거쳐 규칙 위반 여부를 확인합니다.
Parlant의 핵심 기능 및 아키텍처
Parlant는 에이전트가 단순히 말을 잘하는 것을 넘어, 비즈니스적으로 '올바른' 행동을 하도록 만드는 4가지 핵심 기둥(Pillars)과 정교한 엔진으로 구성되어 있습니다.
가이드라인 (Guidelines): 행동의 최소 단위
가이드라인은 Parlant의 가장 핵심적인 구성 요소로, 에이전트의 조건부 행동 규칙을 정의합니다. 자연어로 작성되지만, 내부적으로는 구조화된 논리로 처리됩니다.
각 가이드라인은 Condition(조건) 및 Action(행동) 의 두 부분으로 구성되며, 이는 "사용자가 A를 물어보면 B를 하라"는 식의 명시적 지침입니다.
예를 들어, "고객이 환불을 요청하는데 구매일로부터 30일이 지났을 때(Condition)"라는 상황이 발생하면, "환불 불가 사유를 정중히 설명하고 대체 보상으로 포인트를 제안한다(Action)"는 행동을 하도록 명시합니다.
이러한 가이드라인은 자연어로 작성되지만, 내부적으로는 구조화된 데이터로 처리되어 검색 및 적용이 용이합니다.
또한, Parlant는 가이드라인 등록 시, 함의 검사(Entailment Check) 기능을 통해 설정된 조건과 행동이 논리적으로 타당한지, 기존의 다른 가이드라인과 충돌하지 않는지 분석합니다. 이를 통해 개발자는 수많은 규칙이 쌓여도 전체 시스템의 정합성을 유지할 수 있습니다.
용어집 (Glossary): 정확한 어휘 통제
LLM은 일반적인 인터넷 데이터를 기반으로 학습되었기 때문에, 특정 산업이나 기업 내부에서 사용하는 전문 용어를 오해할 가능성이 높습니다.
Parlant의 용어집(Glossary) 기능은 이러한 문제를 해결하기 위해 특정 단어나 문구가 해당 비즈니스 컨텍스트 내에서 갖는 정확한 의미를 정의합니다.
예를 들어, 어떤 쇼핑몰에서 'VIP'라는 단어가 단순히 '중요한 사람'이 아니라 '연간 구매액 1,000만 원 이상 회원'을 의미한다고 정의해 두면, 에이전트는 이 정의를 바탕으로 대화를 진행합니다.
또한, 동의어(Synonyms)를 등록하여 고객이 다양한 표현을 사용하더라도 에이전트가 이를 정확히 인식하고, 일관된 용어를 사용하여 답변하도록 강제할 수 있습니다. 이는 고객과의 소통에서 혼선을 줄이고 전문성을 높이는 데 크게 기여합니다.
프래그먼트 (Fragments)와 지능형 컨텍스트 관리
긴 대화가 이어질 때 모든 대화 내용을 그대로 LLM에 입력하는 것은 비효율적이며 비용을 증가시킵니다.
Parlant는 프래그먼트(Fragment) 라는 개념을 통해 대화 속에서 중요한 정보만을 추출하여 저장하고 관리합니다.
예를 들어, 사용자가 "저는 유제품 알레르기가 있어요"라고 말하면, Parlant는 이 문장 전체를 기억하는 대신 allergy="dairy"와 같은 사실(Fact) 단위로 정보를 구조화하여 저장합니다. 이후, 대화에서 메뉴 추천 상황이 발생하면, 전체 로그를 뒤지는 대신 이 프래그먼트 정보를 즉시 조회하여 반영합니다.
또한, 이 정보들은 시간이 지나거나 조건이 바뀌면 갱신될 수 있어, 에이전트가 항상 최신의 사용자 상태를 인지하고 개인화된 경험을 제공할 수 있도록 돕습니다.
일관성 엔진(Coherence Engine) 및 감독(Supervision) 메커니즘
Parlant의 가장 강력한 기능은 답변을 생성하는 프로세스 그 자체에 있습니다. 사용자의 입력이 들어오면 Coherence Engine은 다음과 같은 다단계 과정을 거치며, 단순한 Input -> LLM -> Output 구조보다 훨씬 정교합니다:
- 인식 (Perception): 사용자의 발화 의도를 파악하고, 관련된 프래그먼트(Fragments) 정보를 불러옵니다.
- 매칭 (Matching): 현재 상황(Context)과 가장 관련성이 높은 가이드라인과 **용어(Glossary)**를 벡터 검색 등을 통해 선별합니다. 모든 규칙을 가져오는 것이 아니라, 지금 필요한 'Top-K' 규칙만 가져옵니다.
- 추론 및 도구 사용 (Reasoning & Tooling): 필요한 경우 외부 API(Service)를 호출하거나, 논리적인 단계를 계획합니다.
- 초안 생성 (Drafting): LLM이 1차 답변을 생성합니다.
이와 같은 단계를 통해 초안(Draft)이 생성되면, Parlant는 감독(Supervision) 단계를 수행합니다.
즉, 내장된 별도의 비평(Critique) 모듈이 생성된 초안을 분석하여, 앞서 검색된 가이드라인을 위반하지 않았는지, 용어집의 정의를 올바르게 사용했는지 등을 스스로 검사합니다. 이 과정에서 위반 사항이 발견되면, 답변을 자동으로 수정(Revision)하여 최종 사용자에게 전달합니다. 이 '생성 후 검증' 루프는 에이전트의 신뢰성을 획기적으로 높이는 핵심 기술입니다.
도구(Tools) 통합과 안전한 실행
LLM 에이전트가 외부 시스템과 상호작용해야 할 때, Parlant는 안전하고 표준화된 방식을 제공합니다.
개발자는 openapi.json 명세 등을 통해 외부 API를 에이전트의 도구로 등록할 수 있으며, 이 도구들은 가이드라인과 밀접하게 연동됩니다. 즉, 단순히 도구를 사용할 수 있게 열어두는 것이 아니라, "사용자 본인 인증이 완료된 상태(Condition)"에서만 "계좌 조회 API(Action)"를 호출할 수 있는 등, 엄격한 제어 로직을 설정할 수 있습니다.
이를 통해 에이전트가 맥락 없이 도구를 실행하거나, 권한이 없는 작업을 수행하는 보안 사고를 미연에 방지할 수 있습니다.
개발자 경험: Parlant Studio & Python SDK
Parlant는 개발자 경험을 위하 Python SDK 뿐만 아니라, Parlant Studio를 제공합니다.
Parlant Studio는 개발자가 에이전트의 동작을 투명하게 이해하고 디버깅할 수 있도록 하는 웹 기반 대시보드입니다. Parlant Studio를 통해 개발자는 현재 대화에서 어떤 가이드라인이 활성화되었는지, 왜 특정 답변이 수정되었는지, 에이전트가 어떤 프래그먼트를 기억하고 있는지를 실시간으로 확인할 수 있습니다. 특히, 에이전트가 왜 그런 답변을 했는지(어떤 가이드라인이 매칭되었는지) 추적할 수 있는 디버깅 기능을 제공합니다.
Python SDK로는 Python 코드로 에이전트를 통합하고 제어할 수 있습니다. 다음은 예시 Parlant Python SDK 사용 예시 코드입니다:
import parlant.sdk as p
@p.tool
async def get_weather(context: p.ToolContext, city: str) -> p.ToolResult:
# Your weather API logic here
return p.ToolResult(f"Sunny, 72°F in {city}")
@p.tool
async def get_datetime(context: p.ToolContext) -> p.ToolResult:
from datetime import datetime
return p.ToolResult(datetime.now())
async def main():
async with p.Server() as server:
agent = await server.create_agent(
name="WeatherBot",
description="Helpful weather assistant"
)
# Have the agent's context be updated on every response (though
# update interval is customizable) using a context variable.
await agent.create_variable(name="current-datetime", tool=get_datetime)
# Control and guide agent behavior with natural language
await agent.create_guideline(
condition="User asks about weather",
action="Get current weather and provide tips and suggestions",
tools=[get_weather]
)
# Add other (reliably enforced) behavioral modeling elements
# ...
# 🎉 Test playground ready at http://localhost:8800
# Integrate the official React widget into your app,
# or follow the tutorial to build your own frontend!
if __name__ == "__main__":
import asyncio
asyncio.run(main())
라이선스
Parlant 프로젝트는 Apache-2.0 라이선스로 배포되고 있습니다. 따라서 개인 및 기업 사용자가 자유롭게 사용, 수정, 배포할 수 있으며 상업적 이용이 가능합니다.
Parlant 공식 홈페이지
Parlant 공식 문서
Parlant 프로젝트 GitHub 저장소
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()


