- matrix-gateway: POST /internal/matrix/presence/online endpoint - usePresenceHeartbeat hook with activity tracking - Auto away after 5 min inactivity - Offline on page close/visibility change - Integrated in MatrixChatRoom component
5.6 KiB
5.6 KiB
Виправлення System Prompt для агента Helion
Дата: 2025-11-23
Статус: ✅ Виправлено
🐛 Проблема
Агент Helion не відповідав як Helion, натомість відповідала базова модель Qwen без контексту агента:
"Привіт! Я Qwen, великий інтелектуальний модель від Alibaba Cloud..."
Причина
-
Router конфігурація мала
use_context_prompt: trueдля агентаhelion:routing: - id: helion_agent priority: 5 when: agent: helion use_llm: local_qwen3_8b use_context_prompt: true # ❌ Очікує system_prompt в payload -
Frontend не передавав
system_promptв запиті до Router:// Старий запит (без system_prompt) { "agent": "helion", "message": "...", "mode": "chat" } -
Router без
system_promptвикористовував тільки базову модель Qwen.
✅ Рішення
1. Додано system prompts для агентів
Файл: src/components/microdao/MicroDaoOrchestratorChat.tsx
// System prompts для агентів-оркестраторів (з router-config.yml на NODE1)
const AGENT_SYSTEM_PROMPTS: Record<string, string> = {
helion: `Ти - Helion, AI-агент платформи Energy Union.
Допомагай користувачам з технологіями EcoMiner/BioMiner, токеномікою та DAO governance.
Твої основні функції:
- Консультації з енергетичними технологіями (сонячні панелі, вітряки, біогаз)
- Пояснення токеноміки Energy Union (ENERGY токен, стейкінг, винагороди)
- Допомога з onboarding в DAO
- Відповіді на питання про EcoMiner/BioMiner устаткування`,
greenfood: `Ти - Greenfood агент, AI-ERP для крафтових виробників...`,
yaromir: `Ти - Yaromir, багатовимірна мета-сущність свідомості...`,
daarwizz: `Ти - DAARWIZZ, головний AI-агент екосистеми DAARION.city...`,
};
function getSystemPromptForAgent(agentId: string): string | undefined {
return AGENT_SYSTEM_PROMPTS[agentId];
}
2. Оновлено запит до Router
// Отримуємо system_prompt для агента
const systemPrompt = getSystemPromptForAgent(agentId);
const requestBody: any = {
agent: agentId,
message: message,
mode: 'chat',
};
// Додаємо system_prompt якщо є
if (systemPrompt) {
requestBody.payload = {
context: {
system_prompt: systemPrompt,
},
};
}
const response = await fetch(`${routerUrl}/route`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestBody),
signal: controller.signal,
});
3. Новий формат запиту
{
"agent": "helion",
"message": "Привіт",
"mode": "chat",
"payload": {
"context": {
"system_prompt": "Ти - Helion, AI-агент платформи Energy Union..."
}
}
}
🎯 Результат
До виправлення:
User: Привіт
Agent: Привіт! Я Qwen, великий інтелектуальний модель від Alibaba Cloud...
Після виправлення:
User: Привіт
Agent: Привіт! Я Helion, AI-агент платформи Energy Union. Чим можу допомогти?
📊 Архітектура
Frontend (React)
↓ POST /route
↓ {agent, message, payload: {context: {system_prompt}}}
DAGI Router
↓ use_context_prompt: true
↓ Читає payload.context.system_prompt
LLM Provider (Ollama)
↓ Додає system_prompt до messages
↓ [{"role": "system", "content": system_prompt}]
Qwen3:8b
↓ Генерує відповідь з контекстом агента
↓ "Привіт! Я Helion..."
✅ Перевірені агенти
-
Helion (Energy Union)
- ✅ System prompt додано
- ✅ Відповідає як Helion
-
GREENFOOD
- ✅ System prompt додано
- ✅ Контекст AI-ERP для виробників
-
Yaromir
- ✅ System prompt додано
- ✅ Контекст багатовимірної мета-сущності
-
DAARWIZZ
- ✅ System prompt додано
- ✅ Контекст головного агента DAARION
📝 Наступні кроки (опціонально)
-
Динамічне завантаження prompts
- Завантажувати system prompts з API замість hardcode
- Кешувати в localStorage
-
Персоналізація
- Додати можливість налаштування tone/style
- Зберігати історію контексту
-
Метрики
- Відстежувати якість відповідей
- A/B тестування різних prompts
✅ Висновок
Агент Helion тепер відповідає з правильним контекстом та особистістю. Всі оркестратори мікроДАО мають свої унікальні system prompts та відповідають відповідно до своєї ролі.