committtttt
This commit is contained in:
288
README.md
Normal file
288
README.md
Normal file
@@ -0,0 +1,288 @@
|
||||
# AI-Powered Support System
|
||||
|
||||
A hybrid AI-powered customer support system that combines OpenAI's GPT-4 for complex queries with local LLM (Ollama) for simple queries. The system includes sentiment analysis, real-time chat, and a knowledge base for efficient customer support.
|
||||
|
||||
## Features
|
||||
|
||||
- **Hybrid AI System**: Combines OpenAI's GPT-4 for complex queries with local LLM (Ollama) for simple queries
|
||||
- **Intelligent Routing**: Automatically routes queries to the appropriate AI model based on complexity
|
||||
- **Sentiment Analysis**: Analyzes customer sentiment and escalates to human agents when needed
|
||||
- **Real-time Chat**: WebSocket-based real-time communication with typing indicators and read receipts
|
||||
- **Knowledge Base**: FAQ system with automatic suggestions based on conversation context
|
||||
- **User Authentication**: JWT-based authentication with role-based access control
|
||||
- **Admin Dashboard**: Analytics and management interface for administrators
|
||||
- **Conversation History**: Search and review past conversations
|
||||
- **Scalable Architecture**: Built with Go, PostgreSQL, and Redis for high performance
|
||||
|
||||
## Technology Stack
|
||||
|
||||
### Backend
|
||||
- **Go**: Programming language
|
||||
- **Gin**: Web framework
|
||||
- **PostgreSQL**: Primary database
|
||||
- **Redis**: Caching and session management
|
||||
- **JWT**: Authentication
|
||||
- **GORM**: ORM for database operations
|
||||
- **Logrus**: Structured logging
|
||||
- **Viper**: Configuration management
|
||||
|
||||
### AI Integration
|
||||
- **OpenAI API**: For complex queries
|
||||
- **Ollama**: For local LLM integration
|
||||
- **Sentiment Analysis**: For analyzing customer sentiment
|
||||
|
||||
### Frontend (To be implemented)
|
||||
- **React/Vue.js**: Frontend framework
|
||||
- **WebSocket**: Real-time communication
|
||||
- **Material-UI/Ant Design**: UI components
|
||||
|
||||
### Deployment
|
||||
- **Docker**: Containerization
|
||||
- **Docker Compose**: Local development
|
||||
- **Kubernetes**: Production deployment
|
||||
- **CI/CD**: Automated testing and deployment
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
support/
|
||||
├── backend/ # Backend Go application
|
||||
│ ├── cmd/ # Application entry point
|
||||
│ │ └── main.go # Main application file
|
||||
│ ├── internal/ # Internal application packages
|
||||
│ │ ├── ai/ # AI service
|
||||
│ │ ├── auth/ # Authentication service
|
||||
│ │ ├── conversation/ # Conversation service
|
||||
│ │ ├── database/ # Database connection and migrations
|
||||
│ │ ├── handlers/ # HTTP handlers
|
||||
│ │ ├── knowledge/ # Knowledge base service
|
||||
│ │ ├── models/ # Data models
|
||||
│ │ └── routes/ # Route definitions
|
||||
│ ├── pkg/ # Public library packages
|
||||
│ │ ├── config/ # Configuration management
|
||||
│ │ └── logger/ # Logging utilities
|
||||
│ ├── go.mod # Go module file
|
||||
│ ├── go.sum # Go module checksums
|
||||
│ └── Dockerfile # Docker configuration for backend
|
||||
├── frontend/ # Frontend React/Vue.js application (to be implemented)
|
||||
├── docs/ # Documentation
|
||||
├── deployment/ # Kubernetes deployment configurations (to be implemented)
|
||||
├── docker-compose.yml # Docker Compose configuration
|
||||
├── .gitignore # Git ignore file
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Go 1.21 or higher
|
||||
- Docker and Docker Compose
|
||||
- PostgreSQL (if not using Docker)
|
||||
- Redis (if not using Docker)
|
||||
- OpenAI API key (for GPT-4 integration)
|
||||
|
||||
### Installation
|
||||
|
||||
1. Clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/yourusername/support.git
|
||||
cd support
|
||||
```
|
||||
|
||||
2. Set up environment variables:
|
||||
```bash
|
||||
cp backend/.env.example backend/.env
|
||||
```
|
||||
Edit the `.env` file with your configuration, including your OpenAI API key.
|
||||
|
||||
3. Start the services using Docker Compose:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
4. Wait for all services to start up. You can check the logs with:
|
||||
```bash
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### Development
|
||||
|
||||
#### Backend Development
|
||||
|
||||
1. Navigate to the backend directory:
|
||||
```bash
|
||||
cd backend
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
go mod download
|
||||
```
|
||||
|
||||
3. Run the application:
|
||||
```bash
|
||||
go run cmd/main.go
|
||||
```
|
||||
|
||||
The backend API will be available at `http://localhost:8080`.
|
||||
|
||||
#### Frontend Development (To be implemented)
|
||||
|
||||
1. Navigate to the frontend directory:
|
||||
```bash
|
||||
cd frontend
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
3. Run the development server:
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
The frontend will be available at `http://localhost:3000`.
|
||||
|
||||
## API Documentation
|
||||
|
||||
### Authentication Endpoints
|
||||
|
||||
- `POST /api/v1/public/login` - User login
|
||||
- `POST /api/v1/public/register` - User registration
|
||||
|
||||
### User Endpoints
|
||||
|
||||
- `GET /api/v1/user/profile` - Get user profile
|
||||
- `PUT /api/v1/user/profile` - Update user profile
|
||||
- `PUT /api/v1/user/change-password` - Change password
|
||||
|
||||
### Admin Endpoints
|
||||
|
||||
- `GET /api/v1/admin/users` - List all users
|
||||
- `GET /api/v1/admin/users/:id` - Get user by ID
|
||||
- `PUT /api/v1/admin/users/:id` - Update user
|
||||
- `DELETE /api/v1/admin/users/:id` - Delete user
|
||||
|
||||
### Conversation Endpoints
|
||||
|
||||
- `GET /api/v1/conversations` - List conversations
|
||||
- `POST /api/v1/conversations` - Create new conversation
|
||||
- `GET /api/v1/conversations/:id` - Get conversation by ID
|
||||
- `PUT /api/v1/conversations/:id` - Update conversation
|
||||
- `DELETE /api/v1/conversations/:id` - Delete conversation
|
||||
- `GET /api/v1/conversations/:id/stats` - Get conversation statistics
|
||||
|
||||
### Message Endpoints
|
||||
|
||||
- `GET /api/v1/conversations/:id/messages` - Get messages in a conversation
|
||||
- `POST /api/v1/conversations/:id/messages` - Send a message
|
||||
- `PUT /api/v1/conversations/:id/messages/:messageId` - Update a message
|
||||
- `DELETE /api/v1/conversations/:id/messages/:messageId` - Delete a message
|
||||
- `POST /api/v1/conversations/:id/ai` - Send message with AI response
|
||||
|
||||
### Knowledge Base Endpoints
|
||||
|
||||
- `GET /api/v1/knowledge` - Get knowledge base entries
|
||||
- `GET /api/v1/knowledge/search` - Search knowledge base
|
||||
- `GET /api/v1/knowledge/categories` - Get knowledge categories
|
||||
- `GET /api/v1/knowledge/tags` - Get knowledge tags
|
||||
- `GET /api/v1/knowledge/popular` - Get popular knowledge entries
|
||||
- `GET /api/v1/knowledge/recent` - Get recent knowledge entries
|
||||
- `GET /api/v1/knowledge/best-match` - Find best match for a query
|
||||
- `GET /api/v1/knowledge/stats` - Get knowledge base statistics
|
||||
- `GET /api/v1/knowledge/:id` - Get knowledge base entry by ID
|
||||
- `POST /api/v1/knowledge/:id/rate` - Rate knowledge base entry
|
||||
|
||||
#### Admin Knowledge Base Endpoints
|
||||
|
||||
- `POST /api/v1/admin/knowledge` - Create knowledge base entry
|
||||
- `PUT /api/v1/admin/knowledge/:id` - Update knowledge base entry
|
||||
- `DELETE /api/v1/admin/knowledge/:id` - Delete knowledge base entry
|
||||
|
||||
### AI Endpoints
|
||||
|
||||
- `POST /api/v1/ai/query` - Query AI service
|
||||
- `POST /api/v1/ai/analyze-complexity` - Analyze complexity of a prompt
|
||||
- `GET /api/v1/ai/models` - Get available AI models
|
||||
- `POST /api/v1/ai/openai` - Query OpenAI directly
|
||||
- `POST /api/v1/ai/ollama` - Query Ollama directly
|
||||
|
||||
## Testing
|
||||
|
||||
### Backend Testing
|
||||
|
||||
1. Navigate to the backend directory:
|
||||
```bash
|
||||
cd backend
|
||||
```
|
||||
|
||||
2. Run tests:
|
||||
```bash
|
||||
go test ./...
|
||||
```
|
||||
|
||||
### Frontend Testing (To be implemented)
|
||||
|
||||
1. Navigate to the frontend directory:
|
||||
```bash
|
||||
cd frontend
|
||||
```
|
||||
|
||||
2. Run tests:
|
||||
```bash
|
||||
npm test
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
### Docker Deployment
|
||||
|
||||
1. Build the Docker image:
|
||||
```bash
|
||||
docker build -t support-backend ./backend
|
||||
```
|
||||
|
||||
2. Run the container:
|
||||
```bash
|
||||
docker run -p 8080:8080 support-backend
|
||||
```
|
||||
|
||||
### Docker Compose Deployment
|
||||
|
||||
1. Start all services:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
2. Stop all services:
|
||||
```bash
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### Kubernetes Deployment (To be implemented)
|
||||
|
||||
1. Apply the Kubernetes configurations:
|
||||
```bash
|
||||
kubectl apply -f deployment/
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
||||
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
||||
4. Push to the branch (`git push origin feature/amazing-feature`)
|
||||
5. Open a Pull Request
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
||||
|
||||
## Contact
|
||||
|
||||
Your Name - [@yourusername](https://twitter.com/yourusername) - email@example.com
|
||||
|
||||
Project Link: [https://github.com/yourusername/support](https://github.com/yourusername/support)
|
Reference in New Issue
Block a user