docs: expand lint scope batch49 (2 files)

This commit is contained in:
Apple
2026-02-16 07:44:56 -08:00
parent 79d3257f14
commit 45a8bc676e
3 changed files with 109 additions and 109 deletions

View File

@@ -20,7 +20,7 @@
---
# 1. Принцип інтеграції
## 1. Принцип інтеграції
Усі виклики до LLM здійснюються **на бекенді**, не з фронтенду.
@@ -38,9 +38,9 @@
---
# 2. Високорівнева архітектура
## 2. Високорівнева архітектура
```
```text
Frontend (React SPA)
|
| POST /agents/{id}/chat
@@ -56,15 +56,15 @@ Backend
|
OpenAI API (або інша модель)
```
```text
---
# 3. Структура директорій для LLM
## 3. Структура директорій для LLM
Додайте на бекенд:
```
```text
src/
llm/
openaiClient.ts
@@ -73,7 +73,7 @@ prompts/
system_agent.txt
system_onboarding.txt
system_evolution.txt
```
```text
- `openaiClient.ts` — клієнт OpenAI / GPT.
@@ -89,7 +89,7 @@ system_evolution.txt
---
# 4. Реалізація базового клієнта OpenAI
## 4. Реалізація базового клієнта OpenAI
**Файл: `src/llm/openaiClient.ts`**
@@ -109,11 +109,11 @@ export async function callLLM(messages: any[], model = "gpt-4.1-mini") {
return res.choices[0]?.message?.content ?? "";
}
```
```text
---
# 5. Model Router
## 5. Model Router
**Файл: `src/llm/modelRouter.ts`**
@@ -130,17 +130,17 @@ export function pickModel(agentProfile: string) {
return "gpt-4.1-mini";
}
}
```
```text
У майбутньому це місце для:
* локальних моделей (Ollama, vLLM),
* кластеру DAGI,
* автоматичного підбору моделі.
- локальних моделей (Ollama, vLLM),
- кластеру DAGI,
- автоматичного підбору моделі.
---
# 6. Запит до LLM для агентського чату
## 6. Запит до LLM для агентського чату
**Файл: `src/controllers/agentsController.ts`**
@@ -173,11 +173,11 @@ export async function chatWithAgent(req, res) {
res.json({ reply });
}
```
```text
---
# 7. Інтеграція з Agent Chat у фронтенді
## 7. Інтеграція з Agent Chat у фронтенді
**Файл: `api/agents.ts`**
@@ -185,7 +185,7 @@ export async function chatWithAgent(req, res) {
export async function agentChat(agentId: string, messages: ChatMessage[]) {
return api.post(`/agents/${agentId}/chat`, { messages });
}
```
```text
**У `AgentChatWindow.tsx`:**
@@ -200,17 +200,17 @@ const onSend = async (text: string) => {
addMessage({ role: "assistant", content: response.reply });
};
```
```text
---
# 8. Agent-First Onboarding Integration
## 8. Agent-First Onboarding Integration
Використовує той самий LLM-клієнт, але з іншим системним промптом:
**`prompts/system_onboarding.txt`:**
```
```text
You are MicroDAO Guide Agent.
Your job is to ask the user questions one-by-one to configure their microDAO.
@@ -218,7 +218,7 @@ Your job is to ask the user questions one-by-one to configure their microDAO.
NEVER skip steps. NEVER jump too far.
Be friendly, minimalistic and precise.
```
```text
У онбордингу:
@@ -227,25 +227,25 @@ const reply = await callLLM([
{ role: "system", content: onboardingSystemPrompt },
...conversation
]);
```
```text
Але state-machine керує реальними діями (API), LLM — тільки текстом.
---
# 9. Integration with Evolutionary Agent (09_evolutionary_agent.md)
## 9. Integration with Evolutionary Agent (09_evolutionary_agent.md)
Meta-Agent (self-review) використовує **ще один промпт**:
`prompts/system_evolution.txt`:
```
```text
You are Meta-Agent responsible for analyzing logs of conversations.
Find mistakes, weak answers, missing rules, and propose improvements.
Always output JSON with `["type", "value", "explanation"]`.
```
```text
Self-review:
@@ -254,21 +254,21 @@ const improvements = await callLLM([
{ role: "system", content: evolutionPrompt },
{ role: "user", content: JSON.stringify(conversationLog) }
]);
```
```text
---
# 10. Як передавати пам'ять агента в LLM
## 10. Як передавати пам'ять агента в LLM
У LLM-запит можна додати:
* `short-term memory` (останні X повідомлень)
- `short-term memory` (останні X повідомлень)
* `long-term memory` (витяг з Co-Memory)
- `long-term memory` (витяг з Co-Memory)
* `agent profile`
- `agent profile`
* інструкції агента (структура з DB)
- інструкції агента (структура з DB)
Приклад у messages:
@@ -280,23 +280,23 @@ const llmMessages = [
...history,
{ role: "user", content: question }
];
```
```text
---
# 11. Безпека
## 11. Безпека
* API key зберігати у `.env` на сервері.
- API key зберігати у `.env` на сервері.
* Ніколи не відправляти ключ у фронтенд.
- Ніколи не відправляти ключ у фронтенд.
* Додавати rate limit.
- Додавати rate limit.
* Додавати аудит використання агента.
- Додавати аудит використання агента.
---
# 12. Кешування та оптимізація
## 12. Кешування та оптимізація
## 12.1. Кешування відповідей
@@ -310,7 +310,7 @@ if (cached) return cached;
const reply = await callLLM(messages);
await cache.set(cacheKey, reply, { ttl: 3600 });
return reply;
```
```text
## 12.2. Streaming відповідей
@@ -329,7 +329,7 @@ for await (const chunk of stream) {
res.write(content);
}
}
```
```text
## 12.3. Rate Limiting
@@ -343,11 +343,11 @@ const agentLimiter = rateLimit({
max: 10, // 10 запитів на хвилину
keyGenerator: (req) => req.user.id,
});
```
```text
---
# 13. Альтернативні провайдери
## 13. Альтернативні провайдери
## 13.1. Anthropic Claude
@@ -367,7 +367,7 @@ export async function callClaude(messages: any[]) {
return response.content[0].text;
}
```
```text
## 13.2. Локальні моделі (Ollama)
@@ -384,7 +384,7 @@ export async function callOllama(messages: any[], model = "llama2") {
const data = await response.json();
return data.message.content;
}
```
```text
## 13.3. Уніфікований інтерфейс
@@ -417,11 +417,11 @@ export function getLLMProvider(provider: string): LLMProvider {
return new OpenAIProvider();
}
}
```
```text
---
# 14. Обробка помилок
## 14. Обробка помилок
## 14.1. Retry Logic
@@ -441,7 +441,7 @@ async function callLLMWithRetry(
}
throw new Error("LLM call failed after retries");
}
```
```text
## 14.2. Fallback моделі
@@ -454,11 +454,11 @@ async function callLLMWithFallback(messages: any[], primaryModel: string) {
return await callLLM(messages, "gpt-3.5-turbo");
}
}
```
```text
---
# 15. Моніторинг та логування
## 15. Моніторинг та логування
## 15.1. Логування викликів
@@ -489,7 +489,7 @@ async function callLLM(messages: any[], model: string) {
throw error;
}
}
```
```text
## 15.2. Метрики
@@ -503,9 +503,9 @@ async function callLLM(messages: any[], model: string) {
---
# 16. Завдання для Cursor
## 16. Завдання для Cursor
```
```text
You are a senior backend + frontend engineer.
Integrate OpenAI LLM into the MicroDAO Agents system using:
@@ -528,11 +528,11 @@ Output:
- list of modified files
- diff
- summary
```
```text
---
# 17. Типи та інтерфейси
## 17. Типи та інтерфейси
## 17.1. ChatMessage
@@ -542,7 +542,7 @@ interface ChatMessage {
content: string;
timestamp?: string;
}
```
```text
## 17.2. LLMResponse
@@ -557,7 +557,7 @@ interface LLMResponse {
};
finishReason?: string;
}
```
```text
## 17.3. AgentChatRequest
@@ -575,11 +575,11 @@ interface AgentChatRequest {
stream?: boolean;
};
}
```
```text
---
# 18. Тестування
## 18. Тестування
## 18.1. Unit Tests
@@ -596,7 +596,7 @@ describe("openaiClient", () => {
expect(typeof response).toBe("string");
});
});
```
```text
## 18.2. Integration Tests
@@ -612,23 +612,23 @@ describe("Agent Chat Integration", () => {
expect(response.reply).toBeDefined();
});
});
```
```text
---
# 19. Результат
## 19. Результат
Після інтеграції:
* будь-який агент microDAO працює на GPT/LLM,
* онбординг веде агент-гіда,
* Team Assistant відповідає у чаті,
* Meta-Agent генерує покращення,
* вся система стає справжньою OS на базі ШІ.
- будь-який агент microDAO працює на GPT/LLM,
- онбординг веде агент-гіда,
- Team Assistant відповідає у чаті,
- Meta-Agent генерує покращення,
- вся система стає справжньою OS на базі ШІ.
---
# 20. Наступні кроки
## 20. Наступні кроки
Після базової інтеграції можна додати:
@@ -643,4 +643,3 @@ describe("Agent Chat Integration", () => {
**Готово.**
Це **повна специфікація інтеграції LLM**, готова до використання в Cursor.