Skip to content

Commit 6ae7a4a

Browse files
authored
Framework docs (#122)
* init * docs locale * videos fix * Update models.py * Update __init__.py * Expand and update framework documentation * Clarify Function Calling and Structured Output relationship * agents added * expand agent docs * translate sgr-api
1 parent 7c959d8 commit 6ae7a4a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+4684
-37
lines changed

.github/workflows/ghpages.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: ghpages.yml
2+
on:
3+
push:
4+
branches:
5+
- main
6+
- framework-docs
7+
permissions:
8+
contents: write
9+
jobs:
10+
deploy:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- name: Configure Git Credentials
15+
run: |
16+
git config user.name github-actions[bot]
17+
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
18+
- uses: actions/setup-python@v5
19+
with:
20+
python-version: 3.x
21+
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
22+
- uses: actions/cache@v4
23+
with:
24+
key: mkdocs-material-${{ env.cache_id }}
25+
path: ~/.cache
26+
restore-keys: |
27+
mkdocs-material-
28+
- run: pip install \
29+
mkdocs-material \
30+
mkdocs-dracula-theme \
31+
mkdocs-material-extensions \
32+
mkdocs-get-deps \
33+
mkdocs-static-i18n
34+
- run: mkdocs gh-deploy --force

.pre-commit-config.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ repos:
1313
- id: end-of-file-fixer
1414
- id: trailing-whitespace
1515
- id: check-yaml
16+
args: [--unsafe]
1617
- id: check-toml
1718
- id: check-docstring-first
1819
- id: check-executables-have-shebangs
@@ -31,6 +32,7 @@ repos:
3132
hooks:
3233
- id: mdformat
3334
args: ["--number"]
35+
exclude: ^docs/
3436
additional_dependencies:
3537
- mdformat-gfm
3638
- mdformat-black
File renamed without changes.
Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
# Configuration Guide
2+
3+
Это руководство описывает систему конфигурации SGR Agent Core и способы настройки агентов для вашего проекта.
4+
5+
## Иерархия
6+
7+
Система конфигурации построена по принципу дополнения:
8+
Общие настройки из основного конфига переопределяют defaults,
9+
а специфичные из `agents` переопределяют необходимые параметры для каждого конкретного агента на уровне `AgentDefinition`.
10+
11+
```mermaid
12+
graph TD
13+
FD[Framework Defaults]
14+
B[.env]
15+
C[config.yaml]
16+
A[any other definitions yaml]
17+
D[agents.yaml]
18+
E[GlobalConfig]
19+
G[Agent Config]
20+
I[AgentDefinition]
21+
J[Agent]
22+
23+
FD ----> E
24+
B ---> E
25+
C --> E
26+
D --> G
27+
A --> G
28+
E --> I
29+
G --> I
30+
I --> J
31+
32+
style E fill:#10B981
33+
style G fill:#10B981
34+
style I fill:#8B5CF6
35+
style J fill:#8B5CF6
36+
```
37+
38+
## GlobalConfig
39+
40+
!!! Important "Важно: Единый инстанс GlobalConfig"
41+
Все вызовы `GlobalConfig()` возвращают один и тот же экземпляр. Это означает, что при создании нескольких объектов `GlobalConfig` вы получите ссылку на один и тот же объект в памяти.
42+
43+
Единожды применённые изменения и загруженные конфигурации распространятся на всю программу.
44+
45+
### Загрузка из переменных окружения (.env)
46+
47+
`GlobalConfig` использует `pydantic-settings` для автоматической загрузки настроек из переменных окружения. Все переменные должны иметь префикс `SGR__` и использовать двойное подчёркивание `__` для вложенных параметров.
48+
49+
```python
50+
from sgr_agent_core import GlobalConfig
51+
52+
config = GlobalConfig()
53+
```
54+
Пример можно найти в [`.env.example`](https://github.com/vamplabAI/sgr-agent-core/blob/main/.env.example).
55+
56+
### Загрузка из YAML файла
57+
58+
Для более структурированной конфигурации можно использовать YAML файлы:
59+
60+
```python
61+
from sgr_agent_core import GlobalConfig
62+
63+
# Загрузка из config.yaml
64+
config = GlobalConfig.from_yaml("config.yaml")
65+
```
66+
67+
68+
Пример можно найти в [`config.yaml.example`](https://github.com/vamplabAI/sgr-agent-core/blob/main/config.yaml.example).
69+
70+
71+
72+
### Переопределение параметров
73+
74+
**Ключевая особенность:** `AgentDefinition` наследует все параметры из `GlobalConfig` и переопределяет только те, которые указаны явно. Это позволяет создавать минималистичные конфигурации, указывая только необходимые изменения.
75+
76+
### Примеры конфигурации агентов
77+
78+
Агенты определяются в файле `agents.yaml` или могут быть загружены программно:
79+
80+
```python
81+
from sgr_agent_core import GlobalConfig
82+
83+
config = GlobalConfig.from_yaml("config.yaml")
84+
config.definitions_from_yaml("agents.yaml")
85+
config.definitions_from_yaml("more_agents.yaml")
86+
```
87+
!!!warning
88+
Метод `definitions_from_yaml` объединяет новые определения с существующими, перезаписывая агентов с одинаковыми именами
89+
90+
#### Пример 1: Минимальная конфигурация
91+
92+
Агент, который переопределяет только модель LLM и набор инструментов:
93+
94+
```yaml
95+
agents:
96+
simple_agent:
97+
base_class: "SGRToolCallingAgent"
98+
99+
# Переопределяем только модель
100+
llm:
101+
model: "gpt-4o-mini"
102+
103+
# Указываем минимальный набор инструментов
104+
tools:
105+
- "WebSearchTool"
106+
- "FinalAnswerTool"
107+
```
108+
109+
В этом примере агент `simple_agent` использует:
110+
- Все настройки LLM из `GlobalConfig`, кроме `model`
111+
- Все настройки поиска из `GlobalConfig`
112+
- Все настройки выполнения из `GlobalConfig`
113+
- Только два указанных инструмента
114+
115+
#### Пример 2: Полная кастомизация
116+
117+
Агент с полным переопределением параметров:
118+
119+
```yaml
120+
agents:
121+
custom_research_agent:
122+
base_class: "sgr_agent_core.agents.sgr_agent.ResearchSGRAgent"
123+
124+
# Переопределяем LLM настройки
125+
llm:
126+
model: "gpt-4o"
127+
temperature: 0.3
128+
max_tokens: 16000
129+
# api_key и base_url наследуются из GlobalConfig
130+
131+
# Переопределяем настройки поиска
132+
search:
133+
max_results: 15
134+
max_searches: 6
135+
content_limit: 2000
136+
137+
# Переопределяем настройки выполнения
138+
execution:
139+
max_iterations: 15
140+
max_clarifications: 5
141+
max_searches: 6
142+
logs_dir: "logs/custom_agent"
143+
reports_dir: "reports/custom_agent"
144+
145+
# Полный набор инструментов
146+
tools:
147+
- "WebSearchTool"
148+
- "ExtractPageContentTool"
149+
- "CreateReportTool"
150+
- "ClarificationTool"
151+
- "GeneratePlanTool"
152+
- "AdaptPlanTool"
153+
- "FinalAnswerTool"
154+
```
155+
156+
#### Пример 3: Оптимизированный для скорости
157+
158+
Агент с настройками для быстрого выполнения:
159+
160+
```yaml
161+
agents:
162+
fast_research_agent:
163+
base_class: "SGRToolCallingAgent"
164+
165+
llm:
166+
model: "gpt-4o-mini"
167+
temperature: 0.1 # Более детерминированные ответы
168+
max_tokens: 4000 # Меньше токенов для быстрого ответа
169+
170+
execution:
171+
max_iterations: 8 # Меньше итераций
172+
max_clarifications: 2
173+
max_searches: 3
174+
175+
tools:
176+
- "WebSearchTool"
177+
- "CreateReportTool"
178+
- "FinalAnswerTool"
179+
- "ReasoningTool"
180+
```
181+
182+
#### Пример 4: С кастомными промптами
183+
184+
Агент с переопределением системных промптов:
185+
186+
```yaml
187+
agents:
188+
technical_analyst:
189+
base_class: "SGRAgent"
190+
191+
llm:
192+
model: "gpt-4o"
193+
temperature: 0.2
194+
195+
# Переопределяем промпты
196+
prompts:
197+
system_prompt_str: |
198+
You are a highly specialized technical analyst.
199+
Your expertise includes deep technical analysis and
200+
detailed research documentation.
201+
202+
execution:
203+
max_iterations: 20
204+
max_searches: 8
205+
206+
tools:
207+
- "WebSearchTool"
208+
- "ExtractPageContentTool"
209+
- "CreateReportTool"
210+
- "ClarificationTool"
211+
- "FinalAnswerTool"
212+
```
213+
214+
215+
## Рекомендации
216+
217+
- **Храните секреты в .env** - не коммитьте чувствительные ключи в репозиторий =)
218+
219+
В production окружении рекомендуется использовать ENV переменные вместо хардкода ключей в YAML
220+
221+
- **Используйте минимальные переопределения** - указывайте только то, что отличается от GlobalConfig
222+
- **Храните Definitions, a не Agents** - Агенты создаются под непосредственное выполнение задачи,
223+
их definitions можно добавлять/удалять/изменять в любое время
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Основные концепции
2+
3+
Этот документ описывает ключевые сущности SGR Deep Research Framework.
4+
5+
![SGR Agent Core Concept](../sgr_concept.png)
6+
7+
## Агент
8+
9+
**BaseAgent** — базовый класс для всех агентов. Определяет трёхфазный цикл выполнения: Reasoning Phase → Select Action Phase → Action Phase. Управляет состоянием через `ResearchContext`, обеспечивает стриминг ответов и обработку уточнений.
10+
11+
## Тул
12+
13+
**BaseTool** — базовый класс для всех инструментов. Определяет единый интерфейс через метод `__call__()`. Все инструменты автоматически регистрируются через `ToolRegistryMixin` и возвращают результат как строку или JSON.
14+
15+
## Конфиг
16+
17+
**AgentConfig** — централизованная конфигурация агента, объединяющая настройки:
18+
19+
- **LLMConfig** — параметры языковой модели (API ключ, модель, температура, токены)
20+
- **SearchConfig** — настройки поиска (Tavily API, лимиты поисков и результатов)
21+
- **ExecutionConfig** — параметры выполнения (максимальные итерации, уточнения, директории)
22+
- **PromptsConfig** — настройки промптов (системный промпт, шаблоны запросов)
23+
- **MCPConfig** — настройки интеграции с MCP серверами
24+
25+
## Дефинишн
26+
27+
**AgentDefinition** — определение агента как шаблона для создания экземпляров. Включает имя агента, базовый класс, набор инструментов и все настройки из `AgentConfig`. Поддерживает загрузку из YAML файлов и автоматическое наследование настроек из `GlobalConfig`.
28+
29+
## Регистри
30+
31+
**Registry** — централизованные реестры (`AgentRegistry`, `ToolRegistry`) для автоматической регистрации и поиска классов. Обеспечивают динамический поиск по имени и типобезопасность через дженерики.
32+
33+
## Stream
34+
35+
**Streaming** — стриминг ответов для передачи данных в реальном времени. Реализует асинхронную очередь и совместим с форматом OpenAI streaming API.

0 commit comments

Comments
 (0)