PyTorchKR
-
이 프로젝트의 이름인 체셔 고양이(Cheshire-Cat)는 '이상한 나라의 앨리스'에 등장하는 캐릭터 중 하나로, 웃는 얼굴만 남기고 몸은 사라지는 특징을 갖고 있다고 합니다. 다양한 LLM과 통합하는 유연성과 확장성을 상징적으로 나타내는 이름(...)이라고 하는데 저에게는 크게 와닿지는 않네요
-
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://github.com/cheshire-cat-ai/core
공식 문서
https://cheshire-cat-ai.github.io/docs/
영상 튜토리얼: 설치 방법
문서 튜토리얼: 체셔 고양이 프레임워크의 플러그인 만들기
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~