Golang기반 LLM프레임워크
Python 기반인 LangChain 및 LlamaIndex와 같은 기존 오픈 소스 프레임워크에서 영감을 받아 설계되었으며, Golang 스타일에 맞춰서 개발되었기 때문에 Gloang 개발자들에게 익숙함을 선사합니다.
https://github.com/cloudwego/eino
아이노(Eino) 사이트에서 밝히는 주요 특징은 일반적인 Golang 스타일과 기존 LLM 프레임워크인 LangChain 및 LlamaIndex의 장점을 모두 수용하고 있다고 밝히고 있습니다.
조금더 상세히 살펴 볼까요?
LangChain으로 익숙한 ChatModel, Retriever, Document Loader 등의 다양한 컴포넌트를 아이노도 역시 제공하며, 이를 통해 대부분의 코드들과 프롬프트 들을 재사용하고 조합하는 기능이 포함됩니다. 그리고 각 컴포넌트는 명확한 입력/출력 타입과 스트리밍 패러다임을 정의함으로써 동작합니다.
다양한 LLM과 프롬프트, 아웃풋파서, 그 사이에서 동작하는 수 많은 함수들은 LangChain의 LECL이나 LangGraph, LlamaIndex에서 제공하는 강력한 오케스트레이션으로 통합되어 강력한 기능으로 탄생하는데, 아이노 역시 체인(Chain)과 그래프(Graph) 기반의 오케스트레이션을 통해 데이터 흐름과 실행 순서를 제어할 수 있습니다. 특히 동시성 관리 기능도 제공하므로, 다양한 일을 병렬 처리하도록 개발하고 자동화할 수 있으며, 실시간 스트리밍 입/출력하는 것도 가능합니다.
LangChain Community와 같이 확장 가능한 에코시스템인 EinoExt 프로젝트를 통해 OpenAI, Claude 등 다양한 모델과 Google Search, Elastic Search 등의 도구를 통합할 수 있습니다. evOps 도구를 통해 시각화된 디버깅 및 그래프 편집 기능도 지원하죠.
Golang의 정적 타입 체크를 활용하여 코드 안정성을 높이고 개발자의 실수를 줄이는 점, 스트림 처리와 동시성 관리로 높은 성능을 보장하는 점 등이 있다고는 하나, Python 기반 프레임워크와 큰 차이를 느끼진 못하겠네요.
마지막으로 가장 중요한 점! Apache-2.0 라이선스 하에 배포되어 상업적 사용이 가능합니다.
상업적 이용 범위에 대해서는 법률적 자문이 꼭 필요하다는 것은 다들 알고 계시죠?