224 lines
4.7 KiB
Markdown
224 lines
4.7 KiB
Markdown
# Chat Assistant Module
|
|
|
|
## Overview
|
|
|
|
The Chat Assistant module provides a conversational AI interface for answering policy and compliance questions using Ollama.
|
|
|
|
## Architecture
|
|
|
|
### Backend (`be0/src/chat_assistant.py`)
|
|
|
|
The `ChatAssistant` class provides:
|
|
- **Chat functionality**: Conversational AI for policy questions
|
|
- **Content verification**: Verify content against compliance requirements
|
|
- **Policy Q&A**: Answer questions about policies and compliance
|
|
|
|
### Frontend (`fe0/src/features/chat/`)
|
|
|
|
The frontend chat feature includes:
|
|
- **Service layer**: API communication with backend
|
|
- **React hooks**: Easy-to-use hooks for chat functionality
|
|
- **Type definitions**: TypeScript types for type safety
|
|
|
|
## API Endpoints
|
|
|
|
### 1. Chat Endpoint
|
|
```
|
|
POST /api/v1/chat
|
|
```
|
|
|
|
**Request Body:**
|
|
```json
|
|
{
|
|
"message": "What are ISO 27001 requirements?",
|
|
"conversation_history": [
|
|
{
|
|
"role": "user",
|
|
"content": "Previous message"
|
|
},
|
|
{
|
|
"role": "assistant",
|
|
"content": "Previous response"
|
|
}
|
|
],
|
|
"context": "Optional context about policies"
|
|
}
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"message": "ISO 27001 is an information security management system...",
|
|
"model": "gemma3:27b",
|
|
"tokens_used": 150
|
|
}
|
|
```
|
|
|
|
### 2. Verify Content Endpoint
|
|
```
|
|
POST /api/v1/chat/verify
|
|
```
|
|
|
|
**Form Data:**
|
|
- `field_name`: Name of the field being verified
|
|
- `content`: Content to verify
|
|
- `verification_criteria`: (Optional) Specific criteria to check
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"message": "The content meets compliance requirements...",
|
|
"model": "gemma3:27b",
|
|
"tokens_used": 200
|
|
}
|
|
```
|
|
|
|
### 3. Policy Question Endpoint
|
|
```
|
|
POST /api/v1/chat/question
|
|
```
|
|
|
|
**Form Data:**
|
|
- `question`: The user's question
|
|
- `policy_context`: (Optional) Context about specific policies
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"message": "Answer to the policy question...",
|
|
"model": "gemma3:27b",
|
|
"tokens_used": 180
|
|
}
|
|
```
|
|
|
|
## Features
|
|
|
|
### 1. Conversational Context
|
|
- Maintains conversation history for context-aware responses
|
|
- Keeps last 10 messages for context
|
|
- System prompt guides the assistant's behavior
|
|
|
|
### 2. Policy Expertise
|
|
- Specialized in IT governance and compliance
|
|
- Knowledgeable about ISO 27001, NIST, GDPR, etc.
|
|
- Provides accurate, actionable advice
|
|
|
|
### 3. Content Verification
|
|
- Analyzes content against compliance requirements
|
|
- Provides detailed feedback
|
|
- Suggests improvements
|
|
|
|
## Usage
|
|
|
|
### Backend
|
|
|
|
```python
|
|
from src.chat_assistant import get_chat_assistant
|
|
|
|
# Get chat assistant instance
|
|
assistant = get_chat_assistant()
|
|
|
|
# Chat
|
|
request = ChatRequest(
|
|
message="What is ISO 27001?",
|
|
context="IT governance"
|
|
)
|
|
response = await assistant.chat(request)
|
|
|
|
# Verify content
|
|
response = await assistant.verify_content(
|
|
field_name="Project Description",
|
|
content="Our project implements security controls..."
|
|
)
|
|
```
|
|
|
|
### Frontend
|
|
|
|
```typescript
|
|
import { useChat } from '@/features/chat/hooks/useChat';
|
|
|
|
const { sendMessage, verifyContent, isLoading } = useChat();
|
|
|
|
// Send a message
|
|
const response = await sendMessage(
|
|
"What are compliance requirements?",
|
|
conversationHistory, // Optional
|
|
"ISO 27001 context" // Optional
|
|
);
|
|
|
|
// Verify content
|
|
const verification = await verifyContent(
|
|
"Project Name",
|
|
"Project content to verify"
|
|
);
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Model Selection
|
|
|
|
The default model is `gemma3:27b`. To change it:
|
|
|
|
```python
|
|
# In chat_assistant.py
|
|
assistant = ChatAssistant(model_name="your-model-name")
|
|
```
|
|
|
|
### System Prompt
|
|
|
|
The system prompt can be customized in the `ChatAssistant.__init__` method to change the assistant's behavior and expertise.
|
|
|
|
## Logging
|
|
|
|
All chat interactions are logged to:
|
|
- `be0/logs/ChatAssistant.log`
|
|
|
|
This helps with debugging and monitoring.
|
|
|
|
## Error Handling
|
|
|
|
The module includes comprehensive error handling:
|
|
- Catches and logs all exceptions
|
|
- Returns user-friendly error messages
|
|
- Raises HTTPException for API errors
|
|
|
|
## Testing
|
|
|
|
To test the chat assistant:
|
|
|
|
1. **Start the backend:**
|
|
```bash
|
|
cd be0
|
|
docker-compose up be0
|
|
```
|
|
|
|
2. **Test via API:**
|
|
```bash
|
|
curl -X POST http://localhost:4402/api/v1/chat \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"message": "What is ISO 27001?"}'
|
|
```
|
|
|
|
3. **Test via Frontend:**
|
|
- Open the Dashboard
|
|
- Use the ChatAssistant component
|
|
- Ask questions or verify content
|
|
|
|
## Integration
|
|
|
|
The ChatAssistant is integrated with:
|
|
- **ChatAssistant.tsx**: React component in the Dashboard
|
|
- **useChat hook**: React hook for chat functionality
|
|
- **chatService**: API service layer
|
|
|
|
## Future Enhancements
|
|
|
|
Potential improvements:
|
|
1. Streaming responses for real-time text generation
|
|
2. Multi-turn conversation management
|
|
3. Document context injection
|
|
4. Voice input/output
|
|
5. Response rating and feedback
|
|
6. Conversation export
|
|
7. Custom model fine-tuning
|