Semantic Kernel + Ollama 기반의 완전 무료 MES 전용 챗봇 시스템입니다.
이 프로젝트는 제조실행시스템(MES)을 위한 AI 챗봇으로, 자연어를 통해 생산실적, 품질관리, 재고현황 등을 조회할 수 있습니다.
- 완전 무료: Ollama 로컬 LLM 사용으로 API 비용 없음
- 멀티테넌트: 여러 업체 데이터베이스 지원
- 한국어 최적화: 자연스러운 한국어 대화 지원
- 토스 스타일 UI: 직관적이고 현대적인 사용자 인터페이스
- DevExpress 통합: 기존 MES 시스템과 완벽 호환
MESChatBot/
├── MESChatBot.Core/ # 핵심 AI 및 비즈니스 로직
│ ├── Services/ # 챗봇, 데이터베이스, Ollama 서비스
│ ├── Functions/ # Semantic Kernel 함수들
│ ├── Models/ # 데이터 모델
│ └── Configuration/ # 설정 클래스
├── MESChatBot.UI/ # DevExpress 기반 UI 컴포넌트
│ ├── Controls/ # 챗봇 컨트롤
│ └── Forms/ # 설정 및 이력 폼
└── MESChatBot.Demo/ # 독립 실행 테스트 앱
└── Forms/ # 메인 폼
- .NET 8.0: 최신 .NET 플랫폼
- Semantic Kernel: Microsoft AI 오케스트레이션 프레임워크
- Ollama: 로컬 LLM 서버
- DevExpress WinForms: 프로페셔널 UI 컴포넌트
- SQL Server: 데이터베이스
- Serilog: 구조화된 로깅
# Windows에서 Ollama 설치
# https://ollama.ai/download에서 다운로드 후 설치
# 모델 다운로드
ollama pull llama3.1:8b- .NET 8.0 SDK 다운로드 및 설치
# 저장소 클론
git clone <repository-url>
cd MESChatBot
# 패키지 복원 및 빌드
dotnet restore
dotnet buildMESChatBot.Demo/appsettings.json 파일을 환경에 맞게 수정:
{
"ChatbotConfig": {
"OllamaEndpoint": "http://localhost:11434",
"ModelName": "llama3.1:8b",
"MaxTokens": 2048,
"Temperature": 0.7,
"TimeoutSeconds": 30
},
"DatabaseConfig": {
"ServerUrl": "your-sql-server,port",
"UserId": "your-username",
"Password": "your-password",
"Companies": [
{
"Name": "COMPANY_DB_NAME",
"DisplayName": "회사 표시명",
"IsActive": true
}
]
}
}# 데모 애플리케이션 실행
cd MESChatBot.Demo
dotnet run사용자: "오늘 생산실적 알려줘"
챗봇: 📊 2024년 08월 22일 생산실적
🔹 제품A: 150개 (작업지시 3건)
🔹 제품B: 200개 (작업지시 2건)
사용자: "품질 현황은?"
챗봇: 🔍 2024년 08월 22일 품질 검사 결과
✅ 제품A: 합격률 98.5%
⚠️ 제품B: 합격률 95.2%
사용자: "재고 부족한 제품 있어?"
챗봇: 🚨 재고 부족 제품 (2건)
🔥 제품C: 현재고 0개 / 안전재고 50개
⚠️ 제품D: 현재고 10개 / 안전재고 30개
- 일별/기간별 생산실적 조회
- 생산 계획 대비 실적 분석
- 진행 중인 작업지시 현황
- 품질 검사 결과 조회
- 불량 유형별 분석
- 품질 목표 대비 성과
- 재고 현황 조회
- 재고 부족 제품 알림
- 입출고 내역 조회
- 업체별 데이터베이스 연결
- 실시간 업체 변경
- 업체별 설정 관리
[KernelFunction, Description("새로운 기능 설명")]
public async Task<string> NewFunction(
[Description("매개변수 설명")] string parameter)
{
// 구현
return result;
}appsettings.json의 Companies 배열에 새 업체 추가:
{
"Name": "NEW_COMPANY_DB",
"DisplayName": "새 업체명",
"IsActive": true
}ChatbotControl.cs: 메인 채팅 인터페이스ApplyTossStyle()메서드에서 스타일 수정- 토스 컬러 팔레트 사용 권장
- 콘솔 로그: 실시간 출력
- 파일 로그:
logs/chatbot-yyyy-MM-dd.log - 보관 정책: 7일간 보관
- Information: 일반 정보
- Warning: 경고 (연결 실패 등)
- Error: 오류 (쿼리 실패 등)
- Fatal: 치명적 오류
- 읽기 전용 쿼리만 허용
- 매개변수화된 쿼리 사용
- SQL Injection 방지
- 신뢰할 수 있는 서버 연결만 허용
- 암호화된 연결 사용 권장
- 접근 권한 최소화
# Ollama 서비스 상태 확인
curl http://localhost:11434/api/tags
# Ollama 재시작
ollama serve- 서버 URL 및 포트 확인
- 인증 정보 확인
- 방화벽 설정 확인
- DevExpress 라이선스 유효성 확인
- DLL 경로 확인
- 버전 호환성 확인
# 최신 로그 확인
tail -f logs/chatbot-$(date +%Y-%m-%d).log
# 오류 로그만 필터링
grep "ERROR\|FATAL" logs/chatbot-*.log- Visual Studio 2022 또는 VS Code 설치
- .NET 8.0 SDK 설치
- DevExpress 라이선스 설정
- Ollama 설치 및 모델 다운로드
- C# 코딩 컨벤션 준수
- XML 문서 주석 작성
- 단위 테스트 작성 권장
이 프로젝트는 MIT 라이선스 하에 배포됩니다.
기술 지원이나 문의사항이 있으시면:
- 이슈 트래커: GitHub Issues
- 이메일: support@snexis.com
- 문서: 이 README 파일
Made with ❤️ by SNexis MES Team