Cheshire-Cat: 맞춤형 AI 구축을 위한 유연하고 확장성있는 프레임워크

:pytorch:PyTorchKR:kr:

  • 이 프로젝트의 이름인 체셔 고양이(Cheshire-Cat)는 '이상한 나라의 앨리스'에 등장하는 캐릭터 중 하나로, 웃는 얼굴만 남기고 몸은 사라지는 특징을 갖고 있다고 합니다. :thinking: 다양한 LLM과 통합하는 유연성과 확장성을 상징적으로 나타내는 이름(...)이라고 하는데 저에게는 크게 와닿지는 않네요 :sweat_smile:

  • ChatGPT에게 물어보니, 다음과 같은 이유로 이런 이름을 지었을거라고 추측해주네요: "Cheshire-Cat의 이름은 이 프레임워크가 가진 유연성과 확장 가능성을 상징적으로 나타냅니다. 마치 Cheshire-Cat이 이상한 나라에서 앨리스에게 다양한 관점을 제공하고 새로운 경로를 탐색하도록 도와주듯, 이 프레임워크는 개발자들이 어떤 언어 모델 위에도 맞춤형 AI를 구축할 수 있게 해주는 도구로서, AI 개발의 새로운 가능성을 탐색하고 확장하는 데 도움을 줍니다."

앨리스와 체셔 고양이와의 대화 - 이상한 나라의 앨리스 중

"제발, 여기서부터 어느 길로 가야 할지 말해줄 수 있을까요?"
"그건 당신이 어디로 가고 싶은지에 달렸어요," 고양이가 말했다.
"어디든 상관없어요--" 앨리스가 말했다.
"그렇다면 어느 길을 가든 상관없겠죠," 고양이가 말했다.
(루이스 캐롤의 '이상한 나라의 앨리스' 중)

"Would you tell me, please, which way I ought to go from here?"
"That depends a good deal on where you want to get to," said the Cat.
"I don't much care where--" said Alice.
"Then it doesn't matter which way you go," said the Cat.
(Alice's Adventures in Wonderland - Lewis Carroll)


Cheshire-Cat: 맞춤형 AI 구축을 위한 유연하고 확장성있는 프레임워크

소개

Cheshire-Cat 프레임워크는 개발자들이 어떤 언어 모델을 사용하여도 커스텀 AI를 구축할 수 있게 하는 도구입니다. 이 프레임워크는 AI 개발의 접근성을 높이고, 개발자가 손쉽게 대화형 AI를 구축하고 확장할 수 있게 하는 것을 목표로 합니다.

기존의 AI 플랫폼이나 프레임워크와 비교했을 때, API 중심 설계, 기억 기능, 확장성, 다양한 언어 모델 지원 등의 특징을 가지고 있습니다. 특히, 사용자가 직접 플러그인을 개발하고 적용할 수 있는 개방성과 유연성을 갖고 있는 것이 특징입니다.

주요 기능

  • API 중심 설계: 마이크로서비스 아키텍처를 채택하여 앱에 대화형 레이어를 쉽게 추가할 수 있습니다.

  • 기억 기능: 대화와 문서를 기억하고 이를 대화에 활용합니다.

  • 플러그인을 통한 확장성: 공개 플러그인 레지스트리와 개인 플러그인을 통해 기능을 확장할 수 있습니다.

  • 이벤트 콜백 및 함수 호출: 도구를 통한 이벤트 콜백과 함수 호출 기능을 지원합니다.

  • 사용하기 쉬운 관리 패널: 채팅, 메모리 및 플러그인 시각화, 설정 조정이 가능한 관리 패널을 제공합니다.

  • 언어 모델 지원: OpenAI, Google, Ollama, HuggingFace 등 다양한 언어 모델과 호환됩니다.

  • 도커를 통한 프로덕션 준비 완료: 100% 도커화되어 있어 배포가 간편합니다.

사용 방법

Cheshire-Cat은 Docker를 사용하여 설치 및 실행할 수 있으며, 관리자 페이지 또는 REST API를 통해 대화형 AI와 상호작용할 수 있습니다. 설정 페이지에서 선호하는 언어 모델을 구성할 수 있으며, 플러그인을 통해 AI의 기능을 확장할 수 있습니다.

예를 들어, 사용자가 피자를 주문할 수 있는 대화형 인터페이스를 구현하려는 경우를 가정해보겠습니다. Pydantic 라이브러리를 사용하여 데이터 구조를 정의하고, CatForm 을 확장하여 폼의 동작을 제어할 수 있습니다. 아래 코드는 사용자가 피자 주문을 할 수 있는 간단한 대화형 폼의 예시입니다:

from pydantic import BaseModel
from cat.experimental.form import form, CatForm

# data structure to fill up
class PizzaOrder(BaseModel):
    pizza_type: str
    phone: int

# forms let you control goal oriented conversations
@form
class PizzaForm(CatForm):
    description = "Pizza Order"
    model_class = PizzaOrder
    start_examples = [
        "order a pizza!",
        "I want pizza"
    ]
    stop_examples = [
        "stop pizza order",
        "not hungry anymore",
    ]
    ask_confirm = True

    def submit(self, form_data):
        
        # do the actual order here!

        # return to convo
        return {
            "output": f"Pizza order on its way: {form_data}"
        }

위 예시에서 PizzaOrder 클래스는 피자 주문에 필요한 데이터 구조를 정의하며, PizzaForm 클래스는 이 데이터 구조를 사용하여 대화형 폼을 구성합니다. 사용자가 "order a pizza!" 또는 "I want pizza"와 같은 문구로 대화를 시작하면, Cheshire-Cat은 PizzaForm에 정의된 대로 피자 종류와 전화번호를 차례대로 요청합니다. 모든 필요 정보가 수집되면, submit 메소드가 호출되어 실제 피자 주문 처리 로직을 실행할 수 있습니다. 이 과정에서 ask_confirm 옵션이 True로 설정되어 있으면, 사용자에게 최종 확인을 요청하여 실수로 인한 잘못된 주문을 방지할 수 있습니다.

더 읽어보기

홈페이지

GitHub 저장소 (GPL-3.0)

공식 문서

https://cheshire-cat-ai.github.io/docs/

영상 튜토리얼: 설치 방법

문서 튜토리얼: 체셔 고양이 프레임워크의 플러그인 만들기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: