sciagent code + Gitea Actions CI/CD
CI/CD / backend (push) Failing after 2m8s
CI/CD / frontend (push) Failing after 1m40s
CI/CD / deploy (push) Has been skipped

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Thinh Lam
2026-06-30 09:38:30 +07:00
commit 688fac73e9
1167 changed files with 158244 additions and 0 deletions
+223
View File
@@ -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