Metadata-Version: 2.4
Name: uvai-tools
Version: 0.1.1
Summary: Тег-команды (<calculate>, <date>, <search>, <fix_tags>...) и универсальная обвязка connect/system/system_stream для подключения любой генеративной модели
Author-email: uvme01 <maksimu964@gmail.com>
License: MIT
Keywords: ai,llm,tools,tool-calling,agent
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: python-dateutil>=2.8
Provides-Extra: search
Requires-Dist: ddgs>=9.0; extra == "search"
Requires-Dist: beautifulsoup4>=4.12; extra == "search"
Dynamic: license-file

# uvai-tools

Набор тег-команд для ИИ-ассистентов (`<calculate>`, `<date>`, `<time>`,
`<search>`, `<fix_tags>`, `<layout>`) плюс универсальная обвязка
`connect` / `system` / `system_stream` для подключения **любой**
генеративной модели — независимо от формата истории сообщений и
сигнатуры вашей функции генерации.

## Установка

```bash
pip install uvai-tools

# если нужен тег <search> (веб-поиск + парсинг страниц)
pip install "uvai-tools[search]"
```

## Быстрый старт

```python
from tools import connect

def my_generate(history):
    # ваш вызов модели, например:
    # response = client.messages.create(messages=history, ...)
    # return response.content[0].text
    ...

result = connect("Посчитай <calculate 2+2>", my_generate)
```

## Поддерживаемые теги

| Тег | Что делает |
|---|---|
| `<calculate 2+2>` | Вычисляет выражение |
| `<date>`, `<date +1y>` | Текущая/сдвинутая дата |
| `<time>`, `<time +30m>` | Текущее/сдвинутое время |
| `<search запрос>` | Веб-поиск + краткая выжимка со страниц (нужен extra `search`) |
| `<fix_tags>` | Автоматически закрывает/выравнивает незакрытые HTML-теги в тексте до этого места |
| `<layout текст>` | Переключает раскладку текста RU⇄EN |

## Кастомизация под свой ИИ

`connect` / `system` / `system_stream` работают из коробки со стандартным
форматом `{"role": ..., "content": ...}`, но принимают параметры для
любого другого формата сообщений, нестандартной сигнатуры функции
генерации или async-моделей. Подробности — в докстрингах функций.

## Лицензия

MIT
