sciagent code + Gitea Actions CI/CD
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user