Go로 작성되고 YAML로 구성되는 간단한 챗봇 프레임워크입니다. 이 프로젝트의 목표는 몇 가지 구성 파일을 사용하여 매우 간단한 텍스트 기반 챗봇을 만드는 것입니다.
이 프로젝트의 영감은 원래 Flottbot과 Rasa를 사용한 나의 경험에서 나왔습니다.
설치
선적 서류 비치
첫 번째 봇
clf.yml 파일
fsm.yml 파일
봇 실행
봇과 상호작용
용법
CLI
도커 작성
쿠버네티스
수입
예
go get -u github.com/jaimeteb/chatto
도커를 통해:
docker pull jaimeteb/chatto:latest
예제 , 구성 가이드 및 참조 는 설명서를 참조하세요.
Chatto는 유한 상태 기계의 일관성과 기계 학습의 유연성을 결합합니다. 여기에는 분류기, 유한 상태 기계 및 확장이라는 세 가지 주요 구성 요소가 있습니다.
Chatto의 매우 기본적인 디렉토리 구조는 다음과 같습니다.
. └──data ├── clf.yml └── fsm.yml
먼저 data
디렉터리와 YAML 파일을 생성합니다.
mkdir 데이터터치 데이터/clf.yml 데이터/fsm.yml
clf.yml 파일은 사용자 메시지가 명령 (인텐트)으로 분류되는 방법을 정의합니다. 다음과 같은 매우 간단한 구성으로 시작하세요.
분류: - 명령: "turn_on"텍스트: - "켜다" - "켜다" - 명령: "turn_off"텍스트: - "끄기" - "끄기"
fsm.yml 파일은 상태 간의 전환, 이러한 전환을 수행하는 명령 및 전송될 응답을 정의합니다. 다음 파일 내용으로 시작하세요.
전환: - 에서: - "initial"into: "on"명령: "turn_on"답변: - 텍스트: "켜는 중입니다." - 에서: - "on"into: "initial" 명령: "turn_off"답변: - 텍스트: "끄는 중입니다." - 텍스트: ""기본값: 알 수 없음: "할 수 없습니다."
봇을 시작하려면 다음을 실행하세요.
chatto --경로 데이터/
Docker를 사용하는 경우 다음을 실행하세요.
도커 실행 -그것 -e CHATTO_DATA=./data -v $PWD/데이터:/데이터 jaimeteb/chatto:최신 chatto --경로 데이터
봇과 상호작용하려면 다음을 실행하세요.
chatto cli
그게 다야! 이제 켜 거나 켜라고 말하면 켜짐 상태로 들어가고, 끄 거나 끄면 초기 상태 로 돌아갈 수 있습니다. 그러나 on 에서 on 으로, 또는 initial 에서 initial 로 이동할 수는 없습니다.
다음은 이 간단한 유한 상태 머신에 대한 다이어그램입니다.
Telegram, Twilio, Slack 및 원하는 모든 것과 봇을 통합할 수 있습니다.
YAML 파일이 있는 디렉터리에서 chatto
실행하거나 --path
플래그를 사용하여 파일 경로를 지정합니다.
chatto --path ./your/data
Docker에서 실행하려면 다음을 사용하세요.
도커 실행 -p 4770:4770 -e CHATTO_DATA=./your/data -v $PWD/귀하의/데이터:/데이터 jaimeteb/chatto
chatto cli
도구를 다운로드하여 Chatto CLI 도구를 사용할 수 있습니다. CLI를 사용하면 봇 상호 작용을 쉽게 테스트할 수 있습니다.
chatto cli --url 'http://mybot.com' -port 4770
Docker Compose에서도 Chatto를 사용할 수 있습니다. docker-compose.yml
다음과 같습니다.
버전: "3" 서비스: chatto:이미지: jaimeteb/chatto:${CHATTO_VERSION}env_file: .envports: - "4770:4770" 볼륨: - ${CHATTO_DATA}:/datadependent_on: - 내선 - 레디스 ext:image: odise/busybox-curl # 인증서 명령이 있는 Busy box: ext/extexpose: - 8770권: - ${CHATTO_DATA}/ext:/ext redis:이미지: bitnami/redis:6.0환경: - REDIS_PASSWORD=${STORE_PASSWORD} 노출: - 6379
이를 위해서는 필요한 환경 변수를 포함하는 .env
파일이 필요합니다.
# Chatto configuration CHATTO_VERSION=latest CHATTO_DATA=./your/data # Extension configuration CHATTO_BOT_EXTENSIONS_EXTENSION_NAME_URL=http://ext:8770 # Redis CHATTO_BOT_STORE_HOST=redis CHATTO_BOT_STORE_PASSWORD=pass # Logs CHATTO_BOT_DEBUG=true
모든 파일이 포함된 디렉터리 구조는 다음과 같습니다.
. ├── data │ ├── ext │ │ ├── ext │ │ └── ext.go │ ├── bot.yml │ ├── chn.yml │ ├── clf.yml | └── fsm.yml ├── docker-compose.yml └── .env
마지막으로 다음을 실행합니다.
docker-compose up -d redis ext docker-compose up -d chatto
확장 서버는 해당 언어에 따라 실행되어야 합니다.
이docker-compose.yml
파일의 경우 먼저 Go 확장을 빌드해야 합니다.
go build -o data/ext/ext data/ext/ext.go
Chatto가 초기화되기 전에 확장 서버가 실행되고 있어야 합니다.
deploy/kubernetes
디렉터리에서 배포 예시를 찾을 수 있습니다.
친절한 | 이름 | 설명 |
---|---|---|
비밀 | chatto-config-secrets | Chatto가 인증에 사용할 토큰이 포함되어 있습니다. |
컨피그맵 | chatto-config-envs | bot.yml 파일에 대한 환경 변수를 포함합니다. |
컨피그맵 | chatto-config-files | clf.yml 및 fsm.yml 파일이 포함되어 있습니다. |
전개 | chatto | jaimeteb/chatto Docker 이미지를 기반으로 한 Chatto 배포 |
서비스 | chatto-service | chatto 배포를 위한 서비스 |
입구 | chatto-ingress | chatto-service 서비스를 위한 인그레스 |
Kubernetes에 배포하려면 다음 명령어를 실행하세요.
kubectl apply -f ./deploy/kubernetes/
자신의 애플리케이션에 삽입할 수 있도록 가져오기 가능한 봇 서버 및 클라이언트 패키지가 제공됩니다.
서버를 포함하려면:
package mainimport ( "flag""github.com/jaimeteb/chatto/bot")func main() { port := flag.Int("port", 4770, "사용할 포트를 지정하세요.") path := flag.String ("path", ".", "YAML 파일 경로.") flag.Parse() server := bot.NewServer(*path, *port) server.Run() }
클라이언트를 포함하려면:
package myserviceimport("log""github.com/jaimeteb/chatto/bot")type MyService struct { chatto bot.Client}func NewMyService(url string, port int) *MyService { return &MyService{chatto: bot.NewClient(url, 포트)} }func (s *MyService) Submit(question *query.Question) error { 답변, err := s.chatto.Submit(question) if err != nil { return err } // stdoutfor에 답변을 인쇄합니다. _, 답변 := 범위 답변 { fmt.Println(answer.Text) } 0을 반환}
예제 아래에 일부 구성 파일을 제공했습니다. 저장소를 복제하고 원하는 예제의 -path
사용하여 chatto
실행하여 테스트해 보세요(확장 기능을 사용하는 경우 해당 확장 기능을 먼저 실행하세요).
문서 의 이러한 예에 대한 자세한 내용
기분 봇(Mood Bot) - Rasa의 기분 봇(Rasa's Mood Bot)의 채팅 버전 봇에게 인사하여 대화를 시작하세요.
포켓몬 검색 - 이름이나 번호로 포켓몬을 검색합니다.
퀴즈 퀴즈 - 빠른 퀴즈 퀴즈를 풀려면 start를 입력하세요.