109개의 실습 프로젝트를 담은 AI 에이전트 설계 오픈소스 도서.
한국어는 runchr 제공 번역입니다. 원문 README는 English tool page.
langroid
Langroid는 LLM 앱을 구축하기 위한 경량 Python 프레임워크입니다. LLM, 벡터 스토어, 도구로 에이전트를 정의한 다음, 이들이 협업하도록 합니다.
- Install
- pip install langroid
프로젝트 README (번역)
GitHub ↗Written by the project's own authors, not by runchr. Snapshot taken 2026-10-29.
문서
·
예제 저장소
·
Discord
·
기여하기
참고
기여하기: 풀 리퀘스트는 초대에 의해서만 가능하며, 실제 애플리케이션에서 Langroid를 실제로 사용하면서 그 사용에 의해 동기가 부여된 변경에 한해서만 허용됩니다. 변경을 제안하려면, 소속 조직(또는 독립 개발자임)과 해당 변경이 필요한 애플리케이션을 명시하여 이슈를 열어 주세요. 적합하다고 판단되면 저희가 직접 구현하거나 PR 제출을 초대하겠습니다. 맞춤 작업의 경우 Prasad Chalasani(pchalasani at gmail dot com)에게 연락하여 조건을 논의하세요. 자세한 내용은 CONTRIBUTING.md를 참조하세요.
Langroid는 CMU와 UW-Madison 연구진이 만든, LLM 기반 애플리케이션을 쉽게 구축할 수 있는 직관적이고 가벼우며 확장 가능하고 원칙에 충실한 Python 프레임워크입니다.
Agent를 설정하고, 선택적 구성 요소(LLM, 벡터 저장소, 도구/함수)를 갖추게 하고, 작업을 할당하면, 메시지를 교환하며 협력적으로 문제를 해결합니다.
이 Multi-Agent 패러다임은 Actor Framework에서 영감을 받았습니다
(하지만 이에 대해 아무것도 알 필요는 없습니다!).
Langroid는 LLM 앱 개발에 대한 새로운 접근 방식으로, 개발자 경험을 단순화하는 데 상당한 고민이 담겨 있습니다;
Langchain이나 다른 LLM 프레임워크를 사용하지 않으며,
거의 모든 LLM과 함께 작동합니다.
🔥 ✨ 내장된 패턴과 모범 사례로 Langroid 개발을 가속화할 수 있는 Claude Code 플러그인이 제공됩니다.
🔥 langroid 아키텍처 개요(WIP)와 Langroid 빠른 둘러보기를 읽어보세요.
🔥 MCP 지원: 서버의 도구를 Langroid의 ToolMessage 인스턴스로 변환하는 Langroid의 간단한 MCP 도구 어댑터를 통해 모든 LLM-Agent가 MCP 서버를 활용할 수 있도록 합니다.
📢 기업들이 프로덕션에서 Langroid를 사용/적용하고 있습니다. 다음은 한 인용문입니다:
Nullify는 안전한 소프트웨어 개발을 위해 AI Agent를 사용합니다.
취약점을 찾고, 우선순위를 정하고, 수정합니다. 저희는 CrewAI, Autogen, LangChain, Langflow 등을 평가한 후 내부적으로 Langroid의 멀티 에이전트 오케스트레이션 프레임워크를 프로덕션에 적용했습니다. 저희는 설정 용이성과 유연성 측면에서 Langroid가 그러한 프레임워크들보다 훨씬 우수하다는 것을 확인했습니다. Langroid의 Agent와 Task 추상화는 직관적이고 잘 설계되어 있으며 훌륭한 개발자 경험을 제공합니다. 저희는 무언가를 프로덕션에 가장 빠르게 올리는 방법을 원했습니다. 다른 프레임워크라면 몇 주가 걸렸겠지만, Langroid로는 몇 분 만에 좋은 결과를 얻었습니다. 강력히 추천합니다!
-- Jacky Wong, Nullify AI 책임자.
🔥 ML for Healthcare(2024)에 방금 게재됨: 약물감시를 위한 Langroid 기반 Multi-Agent RAG 시스템, 블로그 포스트 참조
LLM 애플리케이션을 구축하고 계신가요, 아니면 회사를 위해 Langroid 관련 도움을 원하시나요,
혹은 회사 유스케이스에 맞춰 Langroid 기능의 우선순위를 정하고 싶으신가요?
Prasad Chalasani가 컨설팅(자문/개발)을 제공합니다: pchalasani at gmail dot com.
GitHub Sponsors를 통한 후원도 받습니다.
질문, 피드백, 아이디어가 있으신가요? Discord에서 만나요!
Langroid 코딩 미리보기
이것은 맛보기일 뿐이며, 함수 호출/도구,
Multi-Agent 협업, 구조화된 정보 추출, DocChatAgent
(RAG), SQLChatAgent, 비-OpenAI 로컬/원격 LLM 등 훨씬 더 많은 것이 있습니다. 아래로 스크롤하거나 문서에서 더 확인하세요.
OpenAI ChatCompletion API를 사용하여 2-agent 정보 추출 예제로 확장되는 Langroid Quick-Start Colab을 참조하세요.
🔥 방금 출시! 로컬 LLM
(Mistral-7b-instruct-v0.2)만을 사용하여 문서에서 구조화된 정보를 추출하기 위해
Langroid 멀티 에이전트와 도구를 사용하는 방법을 보여주는 예제
스크립트입니다.
import langroid as lr
import langroid . language_models as lm
# set up LLM
llm_cfg = lm . OpenAIGPTConfig (
# any model served via an OpenAI-compatible API
chat_model = lm . OpenAIChatModel . GPT4o , # or, e.g., "ollama/mistral"
)
# use LLM directly
mdl = lm . OpenAIGPT ( llm_cfg )
response = mdl . chat ( "What is the capital of Ontario?" , max_tokens = 10 )
# use LLM in an Agent
agent_cfg = lr . ChatAgentConfig ( llm = llm_cfg )
agent = lr . ChatAgent ( agent_cfg )
agent . llm_response ( "What is the capital of China?" )
response = agent . llm_response ( "And India?" ) # maintains conversation state
# wrap Agent in a Task to run interactive loop with user (or other agents)
task = lr . Task ( agent , name = "Bot" , system_message = "You are a helpful assistant" )
task . run ( "Hello" ) # kick off with user saying "Hello"
# 2-Agent chat loop: Teacher Agent asks questions to Student Agent
teacher_agent = lr . ChatAgent ( agent_cfg )
teacher_task = lr . Task (
teacher_agent , name = "Teacher" ,
system_message = """
Ask your student concise numbers questions, and give feedback.
Start with a question.
"""
)
student_agent = lr . ChatAgent ( agent_cfg )
student_task = lr . Task (
student_agent , name = "Student" ,
system_message = "Concisely answer the teacher's questions." ,
single_round = True ,
)
teacher_task . add_sub_task ( student_task )
teacher_task . run ()
🔥 업데이트/릴리스
펼치려면 클릭
2026년 9월:
0.68.0 : OpenAIAssistant 제거.
OpenAI는 2026-08-26에 Assistants API 베타를 종료했습니다;
이제 모든 엔드포인트가 HTTP 404를 반환하므로 해당 클래스는 작동할 수 없었습니다. 테스트와 예제와 함께
제거되었습니다. 거의 모든 Langroid 코드가 사용하는 OpenAIGPT는 영향을 받지 않습니다. threads, file_search, code_interpreter에 대한
대응 항목은 마이그레이션 노트를
참조하세요.
2026년 8월:
0.67.0 보안 강화:
벡터 저장소 구성에 대한 제공자별 env_prefix(환경 변수 명명 변경 -- 마이그레이션 노트 참조),
도구 재방출 경로 전반에 걸친 일반화된 오염 전파, 그리고 FileAttachment 페이로드가 컨텍스트 사전 점검을 부풀릴 때의 일회성 경고.
0.66.0 대규모 커뮤니티 배치(14개 PR):
Milvus 벡터 저장소(감사합니다 @zc277584121);
Markdown/HTML 문서 파싱
(감사합니다 @nuthalapativarun); 협력적 max_time
작업 예산, 다중 서버 에이전트를 위한 MCP 도구
네임스페이싱, 그리고 이식 가능한 JSON 채팅 기록 스냅샷
(감사합니다 @Whxuan0701); 비디오 첨부(감사합니다 @octo-patch); 검색 점수
임계값(감사합니다 @Koushik-Salammagari); 균등
컨텍스트 오버플로 잘림
및 여러 라우팅/파싱 수정 -- 전체 세부 사항은
릴리스 노트에서 확인하세요.
2025년 8월:
0.59.0 완전한 Pydantic V2 마이그레이션 -
5-50배 빠른 검증, 현대적인 Python 패턴, 100% 하위 호환.
2025년 7월:
0.58.0 Crawl4AI 통합 -
JavaScript가 많은 사이트를 위한 Playwright 기반 브라우저 웹 크롤링, API 키 불필요(감사합니다 @abab-dev!).
0.57.0 대화형 작업 시각화를 위한 HTML 로거 -
접을 수 있는 항목, 자동 새로고침, 지속적인 UI 상태를 갖춘 자체 포함 HTML 로그.
2025년 6월:
0.56.0 하위 에이전트에 작업을 위임하기 위한 TaskTool -
에이전트가 특정 도구와 구성을 갖춘 하위 에이전트를 생성할 수 있게 합니다.
0.55.0 done_sequences를 사용한 이벤트 기반 작업 종료 -
이벤트 패턴을 사용한 선언적 작업 완료.
0.54.0 Portkey AI Gateway 지원 - 캐싱, 재시도, 관측 가능성을 갖춘 통합 API를 통해
여러 제공자에 걸쳐 200개 이상의 모델에 접근.
2025년 3-4월:
0.53.0 MCP 도구 지원.
0.52.0 멀티모달 지원, 즉 PDF, 이미지
입력을 LLM에 허용.
0.51.0 LLMPdfParser, GeminiPdfParser를 일반화하여
LLM으로 직접 문서를 파싱.
0.50.0 섹션 헤더로 강화된 청크를 사용한
구조 인식 Markdown 청킹.
0.49.0 LiteLLM 프록시 서버로의 쉬운 전환 지원
0.48.0 Exa 크롤러, Markitdown 파서
0.47.0 Firecrawl URL 스크레이퍼/크롤러 지원 -
감사합니다 @abab-dev
0.46.0 LangDB LLM Gateway 지원 - 감사합니다 @MrunmayS.
0.45.0 Marker를 사용한 Markdown 파싱 - 감사합니다 @abab-dev
0.44.0 시작 시간을 줄이기 위한 지연 임포트. 감사합니다
@abab-dev
2025년 2월:
0.43.0 : Gemini LLM을 사용하여 PDF를 파싱하기 위한 GeminiPdfParser - 감사합니다 @abab-dev.
0.42.0 : pptx, xlsx, xls 파일을 위한 markitdown 파서
감사합니다 @abab-dev.
0.41.0 : pinecone 벡터-db(감사합니다 @coretado),
Tavily 웹 검색(감사합니다 @Sozhan308), Exa 웹 검색(감사합니다 @MuddyHope).
0.40.0 : pgvector 벡터-db. 감사합니다 @abab-dev.
0.39.0 : LLM이 도구 사용을 "잊는" 것을 처리하기 위한
ChatAgentConfig.handle_llm_no_tool.
0.38.0 : Gemini 임베딩 - 감사합니다 @abab-dev)
0.37.0 : 새로운 PDF 파서: docling, pymupdf4llm
2025년 1월:
0.36.0 : Weaviate 벡터-db 지원(감사합니다 @abab-dev).
0.35.0 : 최종 답변에 더해 추론 LLM(예: DeepSeek-R1, OpenAI o1)의
추론 콘텐츠 캡처/스트리밍.
0.34.0 : 검색 개선을 위한 DocChatAgent
청크 강화. (@dfm88과 협업).
0.33.0 Poetry에서 uv로 이동! (감사합니다 @abab-dev).
0.32.0 DeepSeek v3 지원.
2024년 12월:
0.31.0 Azure OpenAI 임베딩
0.30.0 Llama-cpp 임베딩(감사합니다 @Kwigg).
0.29.0 사용자 지정 Azure OpenAI 클라이언트(감사합니다
@johannestang).
0.28.0 ToolMessage : request 필드에서 기본 핸들러 메서드 이름을 재정의하기 위한
_handler 필드(감사합니다 @alexagr).
0.27.0 OpenRouter 지원.
0.26.0 최신 Chainlit으로 업데이트.
0.25.0 agent와 user-response를 위한 진정한 비동기 메서드(감사합니다 @alexagr).
2024년 11월:
0.24.0 :
호환되는 LLM에서 엄격한 JSON 스키마 출력 형식을 사용하는 Agent 지원 및 OpenAI 도구 API의 엄격 모드 지원.
(감사합니다 @nilspalumbo).
0.23.0 :
glhf.chat에서 호스팅되는 LLM(예: Qwen2.5-Coder-32b-Instruct) 지원
0.22.0 :
대규모 도구 결과를 잘라내기 위한 선택적 매개변수.
0.21.0 LiteLLM을 사용하는 대신 OpenAI 클라이언트를 통한 Gemini 모델 직접 지원.
0.20.0
ArangoDB 지식 그래프 지원.
2024년 10월:
[0.18.0] 비동기 + 스트림 모드에서 LLM 출력을 끄기 위한
LLMConfig.async_stream_quiet 플래그.
[0.17.0] XML 기반 도구, 문서 참조.
2024년 9월:
0.16.0 OpenAI o1-mini 및 o1-preview 모델 지원.
0.15.0 Cerebras API 지원 -- Cerebras Cloud에서 호스팅되는 llama-3.1 모델 실행(매우 빠른 추론).
0.14.0 DocChatAgent가 서로 다른 방법으로 검색된 청크의 순위를 매기기 위해 Reciprocal Rank Fusion(RRF)을 사용.
0.12.0 run_batch_task 새 옵션 -- stop_on_first_result - 어떤 작업이든 결과를 반환하는 즉시 배치를 종료할 수 있게 함.
2024년 8월:
0.11.0 다형적 Task.run(), Task.run_async.
0.10.0 도구 핸들러가 다른 도구를 포함한 임의의 결과 유형을 반환할 수 있도록 허용.
0.9.0 다양한 작업 상태를 신호하고 에이전트 간에 메시지를 전달하기 위한 Orchestration Tools.
0.7.0 멀티 도구를 포함한 OpenAI 도구 API 지원.
2024년 7월:
0.3.0 : Qdrant의 FastEmbed 임베딩 추가
2024년 6월:
0.2.0: 개선된 계보 추적, 세분화된 하위 작업 구성, 그리고 에이전트가 과거 메시지를 "되감고 다시 실행"할 수 있게 하는 새 도구 RewindTool
(계보 추적 덕분에 모든 종속 메시지가 정리됨). 노트는 여기에서 읽어보세요.
2024년 5월:
더 슬림해진 langroid : 모든 문서 파서(즉, pdf, doc, docx)와 대부분의
벡터 데이터베이스(qdrant 제외)가 이제 선택적/추가 의존성이 되어 빌드 크기, 스크립트
시작 시간, 설치 시간을 줄이는 데 도움이 됩니다. 편의를 위해 다양한 "추가" 그룹이
제공됩니다, 예: doc-chat, db(데이터베이스 관련 의존성용). 아래 및 문서의 업데이트된
설치 지침을 참조하세요.
도구를 위한 퓨샷 예제: ToolMessage를 정의할 때, 이전에는 examples라는
클래스메서드를 포함할 수 있었고, 이 목록에서 무작위 예제가 LLM을 위한 1-shot 예제를 생성하는 데
사용되었습니다. 이것이 개선되어 이제 예제 목록을 제공할 수 있으며,
각 예제는 도구 인스턴스이거나 (설명, 도구 인스턴스)의 튜플이고, 여기서 설명은 LLM이
도구를 사용하도록 이끄는 "생각"입니다(문서의 예제 참조). 일부 시나리오에서는 이것이 LLM 도구
생성 정확도를 향상시킬 수 있습니다. 또한 이제 무작위 예제 대신
모든 예제가 퓨샷 예제를 생성하는 데 사용됩니다.
사이클 길이 <= 10인 작업 루프에 대한 무한 루프 감지(TaskConfig에서 구성 가능.
엔티티가 본질적으로 유사한(정확히 같지는 않은) 것을 반복적으로 말하는 근사 루프가 아닌
정확한 루프만 감지).
"@"-주소 지정: 모든 엔티티는 이름으로 다른 엔티티를 주소 지정할 수 있으며, 이는
에이전트의 응답자("llm", "user", "agent")의 이름이거나 하위 작업 이름일 수 있습니다. 이것은
RecipientTool 메커니즘에 대한 더 간단한 대안이며, 트레이드오프는
도구가 아니기 때문에 LLM이 수신자를 명시적으로 지정하도록 강제/상기시킬 방법이 없다는 것입니다
(이것이 중요한 시나리오에서).
DocChatAgent 사용 시
훨씬 개선된 인용
생성 및 표시.
gpt-4o가 이제 th…
No comments yet.
to comment.