ember-agent
Готовый к запуску агент на базе ember:
настройка в TOML — запуск одной командой.
- CLI-команда:
ember-agent(короткая, удобная в терминале) - На PyPI пакет публикуется как:
emberio-labs-ember-agent
$ ember-agent --version
ember-agent 0.2.0
Возможности
- Конфигурация в одном TOML-файле: системный промпт, провайдер LLM (ключ, модель, base_url), MCP-инструменты.
- Интерактивный диалог в терминале или разовый запрос (
--message) для скриптов. - Красивый вывод в интерактиве: баннер приветствия в рамке (версия, провайдер,
модель, инструменты), диалог в виде чата (подпись
🤖 ember-agent, приглашение «Ваш ответ: »), markdown-рендер ответов, потоковая печать (где доступна), команды сессии/helpи/reset, показ процесса вызова инструментов (🔧/✔/✖), Ctrl+C отменяет ответ. - Провайдеры:
mock(без сети и ключей, для экспериментов и тестов) иopenai(OpenAI и любые OpenAI-совместимые API: OpenRouter, Groq, vLLM, LM Studio и т.п.). - Модель задаётся провайдеру (
[provider] model) — как часть «подключения к LLM». - Инструменты по MCP:
stdio-процессы и streamable HTTP-серверы. - Работает на Python 3.12+.
Установка
Из PyPI:
pip install emberio-labs-ember-agent
Из исходников (Poetry):
git clone https://github.com/emberio-labs/ember-agent.git
cd ember-agent
poetry install
Настройка
Скопируйте пример конфигурации и отредактируйте под себя:
cp config.example.toml config.toml
Все секции конфигурации опциональны: пустой файл создаст агента на MockProvider,
который работает без сети и API-ключей.
[agent]
system_prompt = "Ты полезный и краткий помощник." # как агент себя ведёт
[provider]
type = "mock" # "mock" | "openai"
model = "gpt-4o-mini" # модель подключения LLM (для type = "openai")
api_key_env = "OPENAI_API_KEY" # откуда брать ключ (для type = "openai")
[[mcp.servers]] # внешние инструменты (опционально)
transport = "stdio" # "stdio" | "http"
command = "python"
args = ["path/to/server.py"]
Полный пример с комментариями — в config.example.toml.
Для реального провайдера задайте переменную окружения с ключом, например OPENAI_API_KEY.
Если модель не указана, провайдер берёт свою по умолчанию (gpt-4o-mini у OpenAI).
Запуск
Интерактивный диалог:
ember-agent run
В начале сессии печатается баннер в рамке: версия, провайдер, модель
и подключённые инструменты. Дальше идёт диалог в виде чата: ответы агента
помечены подписью 🤖 ember-agent, свой ввод начинается по приглашению
«Ваш ответ: ». Внутри диалога доступны команды:
/help— справка по командам;/reset— начать новый диалог (сбросить историю);- выход:
exit,quit,выход, Ctrl+D, или Ctrl+C дважды.
Ответы рендерятся как markdown (заголовки, списки, код-блоки); там, где потоковая
печать доступна (агент без инструментов), текст появляется по мере генерации.
При вызове инструментов виден процесс: 🔧 имя(аргументы) и результат ✔ / ошибка ✖.
Ctrl+C прерывает текущий ответ, не завершая сессию.
Разовый запрос — без диалога, удобно для скриптов:
ember-agent run -m "Привет! Коротко: кто ты?"
Явно указать файл конфигурации:
ember-agent run -c path/to/config.toml
Альтернативный запуск через Python (без установки в окружение):
python -m ember_agent run -m "Привет"
Разработка
poetry install # установка зависимостей (включая dev)
poetry run pytest # тесты
poetry run ruff check ember_agent tests # линтер
poetry run mypy # статическая типизация
Код в ember_agent/, тесты — в tests/. Формат конфигурации описан в
config.example.toml.
Релиз
Публикация новой версии на PyPI автоматизирована через GitHub Actions
(workflow .github/workflows/publish.yml):
-
Поднимите версию в
pyproject.toml(version = "0.2.0") и закоммитьте изменение, например:chore: bump version to 0.2.0. -
Создайте и запушьте git-тег, совпадающий с версией:
git tag v0.2.0 git push origin v0.2.0
-
Workflow соберёт wheel и sdist (
poetry build) и опубликует их на PyPI. Веткаmainпри этом не нужна — достаточно тега.
Публикация использует Trusted Publishing (OIDC): секреты в GitHub не хранятся. Для этого владельцу нужно один раз настроить publisher на PyPI (и, опционально, на TestPyPI для проверок):
- PyPI: https://pypi.org/manage/account/publishing/
- TestPyPI: https://test.pypi.org/manage/account/publishing/
Поля формы одинаковы для PyPI и TestPyPI:
| Поле | Значение |
|---|---|
| Project name | emberio-labs-ember-agent |
| GitHub owner | emberio-labs |
| GitHub repository | ember-agent |
| Workflow name | publish.yml |
| Environment | (пусто) |
После настройки публикацию можно проверить вручную на TestPyPI:
GitHub → Actions → Publish → Run workflow. На боевой PyPI пакет уходит
только по git-тегу v*.
Лицензия
MIT — см. LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file emberio_labs_ember_agent-0.2.0.tar.gz.
File metadata
- Download URL: emberio_labs_ember_agent-0.2.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcc31696655f377d35d6e188bc7c0bb3b36e1e2ada18a3a741a510d6e5a99035
|
|
| MD5 |
9e33c452446542a835b7fd9cbea742c4
|
|
| BLAKE2b-256 |
1150072916e05de430073c554cb56529a801b9889fcbfa5dd67d27df2591248d
|
Provenance
The following attestation bundles were made for emberio_labs_ember_agent-0.2.0.tar.gz:
Publisher:
publish.yml on emberio-labs/ember-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emberio_labs_ember_agent-0.2.0.tar.gz -
Subject digest:
dcc31696655f377d35d6e188bc7c0bb3b36e1e2ada18a3a741a510d6e5a99035 - Sigstore transparency entry: 2728615775
- Sigstore integration time:
-
Permalink:
emberio-labs/ember-agent@7c377982f523b1dcb9b58fa60ff7fa1d98dfb839 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/emberio-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7c377982f523b1dcb9b58fa60ff7fa1d98dfb839 -
Trigger Event:
push
-
Statement type:
File details
Details for the file emberio_labs_ember_agent-0.2.0-py3-none-any.whl.
File metadata
- Download URL: emberio_labs_ember_agent-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65b50734cfb3b7acf439175fbff294cbb09aa7ae584cd1c257db1436e1bce3e7
|
|
| MD5 |
0ac296ff982e2b870302ebc7508ed319
|
|
| BLAKE2b-256 |
68ae6b4846b8fac7bba168ab2d35d8d25dd0a1c35a149a87dc29ada5dfae45da
|
Provenance
The following attestation bundles were made for emberio_labs_ember_agent-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on emberio-labs/ember-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emberio_labs_ember_agent-0.2.0-py3-none-any.whl -
Subject digest:
65b50734cfb3b7acf439175fbff294cbb09aa7ae584cd1c257db1436e1bce3e7 - Sigstore transparency entry: 2728616307
- Sigstore integration time:
-
Permalink:
emberio-labs/ember-agent@7c377982f523b1dcb9b58fa60ff7fa1d98dfb839 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/emberio-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7c377982f523b1dcb9b58fa60ff7fa1d98dfb839 -
Trigger Event:
push
-
Statement type: