개요
Langflow는 AI 에이전트 생성 및 배포를 위한 시각적 구축 인터페이스와 내장 API/MCP 서버를 제공합니다. 주요 대규모 언어 모델, 벡터 데이터베이스 및 멀티 에이전트 오케스트레이션을 지원하며, 엔터프라이즈급 보안과 관측 가능성을 갖추고 있습니다.
README 미리보기
\n\n\n \n \n\n\n[](https://github.com/langflow-ai/langflow/releases)\n[](https://opensource.org/licenses/MIT)\n[](https://pypistats.org/packages/langflow)\n[](https://twitter.com/langflow_ai)\n[](https://www.youtube.com/@Langflow)\n[](https://discord.gg/EqksyE2EX9)\n[](https://deepwiki.com/langflow-ai/langflow)\n\n[Langflow](https://langflow.org) is a powerful platform for building and deploying AI-powered agents and workflows. It provides developers with both a visual authoring experience and built-in API and MCP servers that turn every workflow into a tool that can be integrated into applications built on any framework or stack. Langflow comes with batteries included and supports all major LLMs, vector databases and a growing library of AI tools.\n\n## ✨ Highlight features\n\n- **Visual builder interface** to quickly get started and iterate.\n- **Source code access** lets you customize any component using Python.\n- **Interactive playground** to immediately test and refine your flows with step-by-step control.\n- **Multi-agent orchestration** with conversation management and retrieval.\n- **Deploy as an API** or export as JSON for Python apps.\n- **Deploy as an MCP server** and turn your flows into tools for MCP clients.\n- **Observability** with LangSmith, LangFuse and other integrations.\n- **Enterprise-ready** security and scalability.\n\n## 🖥️ Langflow Desktop\n\nLangflow Desktop is the easiest way to get started with Langflow. All dependencies are included, so you don't need to manage Python environments or install packages manually.\nAvailable for Windows and macOS.\n\n[📥 Download Langflow Desktop](https://www.langflow.org/desktop)\n\n## ⚡️ Quickstart\n\n### Install locally (recommended)\n\nRequires Python 3.10–3.14 and [uv](https://docs.astral.sh/uv/getting-started/installation/) (recommended package manager).\n\n#### Install\n\nFrom a fresh directory, run:\n```shell\nuv pip install langflow -U\n```\n\nThe latest Langflow package is installed.\nFor mor
FAQ (5)
문제 해결LFX SplitText에서 문자열이 아닌 컬럼 레이블 사용 시 발생하는 "AttributeError: 'int' object has no attribute 'lower'" 오류 수정 방법
이 문제는 LFX 1.13.0에서 Table.smart_column_order()가 Pandas 레이블이 정수, 튜플 또는 None인 경우에도 모든 컬럼 레이블에 대해 .lower()와 .startswith()를 호출하기 때문에 발생합니다.
병합된 수정 사항은 콘텐츠/시스템 컬럼 규칙을 문자열 레이블에만 적용하며, 문자열이 아닌 레이블은 일반 메타데이터 컬럼으로 유지됩니다. PR fix: handle non-string labels in smart column ordering이 포함된 LFX 릴리스로 업그레이드하세요.
업그레이드할 수 없는 경우 SplitTextComponent를 실행하기 전에 문자열이 아닌 컬럼의 이름을 문자열로 변경한 후, 작업이 끝나면 다시 원래 이름으로 되돌리세요:
# Assume `pdf` is the underlying pandas DataFrame
label_map = {
c: str(c)
for c in pdf.columns
if not isinstance(c, str)
}
pdf = pdf.rename(columns=label_map)
component.set(
data_inputs=DataFrame(pdf),
text_key="text",
separator="\n",
chunk_size=6,
chunk_overlap=0,
keep_separator="False",
clean_output=False,
)
component.split_text()
# Restore the original non-string labels if needed
result = result.rename(columns={v: k for k, v in label_map.items()})
생성된 문자열 이름이 기존 컬럼 이름과 충돌하지 않는지 확인하세요.
문제 해결취소된 Langflow Memory Base 인제스천 작업이 완료된 것으로 기록되는 문제를 어떻게 해결해야 하나요?
메모리 수집 취소 수정 사항이 포함된 릴리스로 업그레이드하거나 해당 패치를 적용하십시오. 이 문제는 ingest_memory_task가 협조적 취소 후에 일반 딕셔너리를 반환하기 때문에 발생하며, 이로 인해 execute_with_status가 작업을 성공으로 처리하고 COMPLETED를 저장하게 됩니다.
ingest_memory_task의 두 취소 경로 모두에서, 필요한 부분 쓰기 정리를 먼저 수행한 다음, 결과를 반환하는 대신 작업 래퍼가 인식하는 취소 예외를 전파하십시오:
raise CancelledError("LANGFLOW_USER_CANCELLED")
이 예외를 발생시키기 전에 메시지에 스탬프를 찍거나 수집 메타데이터/커서를 진행시키지 마십시오. execute_with_status는 이미 이 예외를 CANCELLED로 매핑하고 완료 타임스탬프를 유지합니다. 이 버그는 main의 df9711c와 release-1.13.0의 33cedec에서 재현되었으며, 회귀 테스트는 실제 SQLite 트랜잭션을 사용하여 쓰기 전 또는 쓰기 도중의 취소, 정리, 그리고 변경되지 않은 커서를 검증합니다.
문제 해결PgBouncer 뒤에서 Langflow 1.13 pgvector Knowledge Base 인제스션이 멈추거나 데드락이 발생하는 문제를 어떻게 해결하나요?
PR #15614의 수정 사항을 적용하거나 이를 포함하는 Langflow 릴리스로 업그레이드하세요. 이 패치는 각 프로세스에서 검증이 완료된 pgvector 테이블을 캐시하고, 캐시 미스 발생 시 카탈로그를 확인하며, 데이터베이스 전역 _ADVISORY_LOCK_KEY 대신 생성 중인 특정 테이블에 대해서만 advisory lock을 획득합니다. 이를 통해 지식 베이스별 _remote_lock과 결합하여 PgBouncer 연결을 고갈시키던 전역 부트스트랩 잠금 큐가 제거됩니다. 배포 후에는 기존 idle in transaction 세션을 정리하기 위해 모든 Langflow 인스턴스를 재시작하세요. 즉시 패치할 수 없는 경우에는 멈춘 인스턴스를 재시작하고, 동시 인제스천 작업 수를 줄이며, 활성 인제스천당 최대 두 개의 서버 연결(lease 연결 하나와 쓰기 연결 하나)에 헬스 체크를 위한 여유분까지 더해 PgBouncer/PostgreSQL 용량을 산정하세요. PgBouncer 연결 제한이 75인 환경에서는 패치가 적용될 때까지 활성 인제스천 동시성을 30 이하로 유지하세요. PgBouncer의 default_pool_size/reserve_pool_size를 늘리는 것은 PostgreSQL의 max_connections도 함께 늘릴 때만 효과가 있습니다. 동일한 공유 지식 베이스에 대한 동시 쓰기는 여전히 직렬화되므로, 30초 잠금 타임아웃 오류를 방지하려면 해당 지식 베이스에 쓰기를 수행하는 작업 수를 줄이세요.
문제 해결왜 lfx Table Merge가 `_right`로 끝나는 컬럼을 삭제하거나 "'Table' object has no attribute 'dtype'" 오류를 발생시키나요?
이것은 merge 접미사 처리 버그입니다: 이 연산은 원본 소스 컬럼인 경우에도 _right로 끝나는 모든 출력 컬럼을 임시 Pandas 중복 컬럼으로 취급합니다. 해결 방법으로, join 키를 제외하고 _right로 끝나는 사용자 컬럼의 이름을 merge 전에 변경한 후, 작업이 끝나면 복원하세요:
merge_keys = {"id"}
renames = {
c: f"__orig_{c}"
for c in left_dataframe.columns
if c.endswith("_right") and c not in merge_keys
}
left_dataframe = left_dataframe.rename(columns=renames)
# Run the Merge operation, then restore names:
result = result.rename(columns={v: k for k, v in renames.items()})
재현 사례에서는 merge 전에 value_right를 value_right_source와 같은 이름으로 변경하세요. 이렇게 하면 두 테이블 모두 value를 포함할 때 Pandas가 생성하는 value_right 컬럼과의 충돌도 방지할 수 있으며, 이 충돌은 AttributeError: 'Table' object has no attribute 'dtype' 크래시를 유발합니다.
영구적인 수정은 겹치는 오른쪽 비키 컬럼만 충돌 없는 임시 이름으로 변경하고, 명시적인 원본-임시 매핑을 유지하며, 해당 임시 컬럼만 coalesce/drop합니다. 이 수정은 현재 Operations merge와 저장된 플로우에서 사용하는 레거시 Table Operations 구현 모두에 적용되어야 합니다.
문제 해결startup recovery가 이를 re-enqueue하는 데 실패한 후에도 큐에 대기 중인 workflow job이 active lease 상태로 멈춰 있는 이유는 무엇인가요?
이 문제는 claim_queued_lease()와 요청 재구성은 성공하지만 _enqueue()에서 예외가 발생할 때 BackgroundExecutionService.sweep_orphans_on_startup()에서 발생합니다. 예외가 release_queued_lease() 호출 없이 억제되어, 작업이 실행기에 제출되지 않았음에도 해당 행이 새로운 소유자와 하트비트를 가진 채 QUEUED 상태로 남게 됩니다.
이 수정 사항은 인큐 실패를 기록하고, 해당 리스의 소유자와 하트비트 토큰을 사용하여 정확히 그 리스를 해제하며, compare-and-swap 소유권 검사를 유지하여 오래된 클레이먼트가 더 최신 리스를 지울 수 없도록 합니다. PR fix(background): release queued lease when startup enqueue fails가 포함된 패치된 1.13.x 릴리스로 업그레이드하세요.
기본 인프로세스 백엔드에 대한 임시 해결 방법: 리스가 만료될 때까지 기다린 후 프로세스를 재시작하여 일회성 시작 스윕이 작업을 회수할 수 있도록 하세요. 큐 저장소를 수동으로 수정하는 경우, 기록된 소유자 및 하트비트 토큰과 일치하는 리스만 해제하고 리스 열을 무조건 지우지 마세요.