Conversation
50561f8 to
b7609a2
Compare
examples/sgr_deep_research/agents.py
Outdated
| max_searches = self.tool_configs.get(WebSearchTool.tool_name, {}).get("max_searches") or ( | ||
| self.config.search.max_searches if self.config.search else 4 | ||
| ) |
There was a problem hiding this comment.
Мудрёно выглядит. На уровне дизайна фичи я бы предложил в тулу добавить модельку конфига и доставать уже оттуда явным образом и дефолтными значениями без вот этих условностей с хардкодом и get()
Общий флоу:
- считывается конфиг
- Валидируется pydantic моделью конфига тулы
- попадает уже в виде объектной структуры, минуя неочевидные dict операции
Но с таким подходом может быть неочевидно как этот конфиг поставлять из общего, надо продумать
| tools: list[ToolItem] = Field( | ||
| default_factory=list, | ||
| description="List of tool names, classes, or dicts with 'name' and optional kwargs for the tool", | ||
| ) |
There was a problem hiding this comment.
Общая идея: tools должны стать моделями дефиниций уже здесь чтобы дальше сырые значения словарей не вспылвали
Вообще не уверен, насколько это правильнее, но как идея на подумать, собирать конфиги на уровне definition, Как это происходит с AgentDefinition в default_config_override_validator чтобы не переусложнять работу фабрики и не размазывать точки отказа невалидированных данных словаря
There was a problem hiding this comment.
Я бы предложил описывать настройки тулов только в глобальном tools, а у агентов чтобы был просто списк какие тулы ему нужны list[str], всё же вероятночть что у разных агентов будут разные настройки у тулов кажется мне сомнительной.
There was a problem hiding this comment.
могу представить такую ситуацию, но реальных кейсов нет, можно оставить на будущее
Можно попробовать в чатике поузнавать
be8ca94 to
de2a854
Compare
Closes #155