Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# Управление промптами агентов
|
||||
|
||||
## Принцип
|
||||
|
||||
Промпты — это код. Они версионируются, хранятся в репозитории и проходят code review. Никаких hardcoded промптов в Python-коде.
|
||||
|
||||
## Где хранить
|
||||
|
||||
В VoIdea используется **два формата** с fallback:
|
||||
|
||||
| Формат | Расположение | Назначение |
|
||||
|--------|-------------|------------|
|
||||
| YAML | `docs/agent_prompts.yaml` | Настройки провайдера, температуры, токенов |
|
||||
| Markdown | `docs/specs/agents/<role>.md` | Детальные промпты с примерами |
|
||||
|
||||
`PromptLoader` пробует YAML первым, если не нашёл — падает на MD-спецификацию.
|
||||
|
||||
## Структура YAML
|
||||
|
||||
```yaml
|
||||
coordinator:
|
||||
provider: yandex_gpt # yandex_gpt | gigachat
|
||||
temperature: 0.7 # 0.0-1.0
|
||||
max_tokens: 2000 # макс. длина ответа
|
||||
```
|
||||
|
||||
## Структура MD
|
||||
|
||||
```markdown
|
||||
# Роль
|
||||
|
||||
**Провайдер:** Yandex GPT
|
||||
**Температура:** 0.7
|
||||
**Макс. токенов:** 2000
|
||||
|
||||
## Prompt Template
|
||||
```
|
||||
Ты — {role}. Описание.
|
||||
```
|
||||
```
|
||||
@@ -0,0 +1,50 @@
|
||||
# Паттерны промптов
|
||||
|
||||
## 1. System + User разделение
|
||||
|
||||
```python
|
||||
system_prompt = "Ты — бизнес-аналитик. Анализируй идеи."
|
||||
user_prompt = f"Название: {idea.title}\nОписание: {idea.content}"
|
||||
full_prompt = f"{system_prompt}\n\n{user_prompt}"
|
||||
```
|
||||
|
||||
Используется: `AIProvider.format_prompt()`
|
||||
|
||||
## 2. Structured output
|
||||
|
||||
```python
|
||||
system_prompt = """
|
||||
Ты — финансовый консультант.
|
||||
Ответ верни ТОЛЬКО в формате JSON:
|
||||
{
|
||||
"roi": число,
|
||||
"risk_level": "low|medium|high",
|
||||
"recommendations": [строка, ...]
|
||||
}
|
||||
"""
|
||||
```
|
||||
|
||||
## 3. Few-shot (примеры)
|
||||
|
||||
```python
|
||||
system_prompt = """
|
||||
Ты — UI-дизайнер. Анализируй интерфейс.
|
||||
|
||||
Пример хорошего анализа:
|
||||
Интерфейс: Экран входа
|
||||
Проблема: Кнопка "Забыли пароль" не видна
|
||||
Рекомендация: Высокий приоритет
|
||||
|
||||
Теперь проанализируй:
|
||||
"""
|
||||
```
|
||||
|
||||
## Параметры
|
||||
|
||||
| Параметр | Значение | Когда |
|
||||
|----------|----------|-------|
|
||||
| `temperature: 0.1-0.3` | Низкая | Юридические, финансовые |
|
||||
| `temperature: 0.5-0.7` | Средняя | Стандартный анализ |
|
||||
| `temperature: 0.8-1.0` | Высокая | Мозговой штурм |
|
||||
| `max_tokens: 500` | Короткий | Классификация |
|
||||
| `max_tokens: 4000` | Длинный | Детальный анализ |
|
||||
@@ -0,0 +1,48 @@
|
||||
# Хранение и загрузка промптов
|
||||
|
||||
## Загрузчик (PromptLoader)
|
||||
|
||||
```python
|
||||
# app/integrations/ai/prompt_loader.py
|
||||
|
||||
def get_prompt_config(role: str) -> dict | None:
|
||||
# 1. Пробуем YAML (docs/agent_prompts.yaml)
|
||||
config = load_prompt_from_yaml(role)
|
||||
if config:
|
||||
return config
|
||||
# 2. Пробуем MD (docs/specs/agents/<role>.md)
|
||||
return load_prompt_from_spec(role)
|
||||
```
|
||||
|
||||
## Порядок загрузки
|
||||
|
||||
1. `docs/agent_prompts.yaml` — если существует, ищет роль по ключу
|
||||
2. `docs/specs/agents/<role>.md` — если YAML не дал результата, парсит MD
|
||||
|
||||
## Пример YAML-файла
|
||||
|
||||
```yaml
|
||||
# docs/agent_prompts.yaml
|
||||
coordinator:
|
||||
provider: yandex_gpt
|
||||
temperature: 0.7
|
||||
max_tokens: 2000
|
||||
|
||||
business_analyst:
|
||||
provider: yandex_gpt
|
||||
temperature: 0.5
|
||||
max_tokens: 3000
|
||||
```
|
||||
|
||||
## Пример MD-файла
|
||||
|
||||
```markdown
|
||||
# docs/specs/agents/business_analyst.md
|
||||
**Провайдер:** Yandex GPT
|
||||
**Температура:** 0.5
|
||||
|
||||
## Prompt Template
|
||||
```
|
||||
Ты — бизнес-аналитик. Проанализируй идею...
|
||||
```
|
||||
```
|
||||
@@ -0,0 +1,19 @@
|
||||
# {Role Name}
|
||||
|
||||
**Провайдер:** {yandex_gpt | gigachat}
|
||||
**Температура:** {0.1-1.0}
|
||||
**Макс. токенов:** {500-4000}
|
||||
|
||||
## Описание
|
||||
|
||||
{Краткое описание роли AI-агента}
|
||||
|
||||
## Prompt Template
|
||||
|
||||
```text
|
||||
Ты — {role_name}. {описание}.
|
||||
|
||||
{инструкции}
|
||||
|
||||
{формат ответа}
|
||||
```
|
||||
@@ -0,0 +1,14 @@
|
||||
# Шаблон промпта в YAML
|
||||
# Используйте как основу для нового AI-агента
|
||||
|
||||
role_name:
|
||||
system_prompt: |
|
||||
Ты — {role_name}. {описание роли}.
|
||||
|
||||
{инструкции}
|
||||
|
||||
{формат ответа}
|
||||
provider: yandex_gpt # или gigachat
|
||||
temperature: 0.7 # 0.1-1.0
|
||||
max_tokens: 2000 # макс. длина
|
||||
model: "" # опционально: конкретная модель
|
||||
Reference in New Issue
Block a user