Skip to main content

ember

Библиотека для простой интеграции с LLM-провайдерами и создания собственных агентов. Предоставляет простой и единообразный интерфейс для работы с языковыми моделями, чтобы вы могли сосредоточиться на логике своих агентов, а не на деталях API.

Возможности

  • Единый интерфейс для различных LLM-провайдеров
  • Простой способ создавать и конфигурировать собственных агентов
  • Инструменты/функции для модели (tool calling)
  • Минимальное количество кода для старта

⚠️ Проект на ранней стадии разработки. API активно меняется.

Установка

На PyPI пакет публикуется под именем emberio-labs-ember (импорт в коде — ember):

pip install "emberio-labs-ember[openai]"   # с поддержкой OpenAI
pip install emberio-labs-ember             # ядро (без провайдеров)

Для разработки (из репозитория) проект управляется через Poetry:

poetry install

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

Без ключей: MockProvider

Работает без сети и API-ключей — удобно для экспериментов:

from ember import Agent, MockProvider

agent = Agent(provider=MockProvider(response_text="Привет! Я мок-провайдер."))
print(agent.run("Привет!"))
# Привет! Я мок-провайдер.

С OpenAI: OpenAIProvider

API-ключ передаётся явно (провайдер сам не читает окружение):

import os

from ember import Agent, OpenAIProvider

agent = Agent(
    provider=OpenAIProvider(api_key=os.environ["OPENAI_API_KEY"]),
    model="gpt-4o-mini",
)
print(agent.run("Расскажи о себе в одном предложении."))

Полный исполняемый пример — в examples/quickstart.py.

История диалога

Agent сам накапливает историю: сообщения пользователя и ответы модели добавляются в agent.messages. Сбросить диалог можно через agent.reset(). Системный промпт задаётся в конструкторе:

agent = Agent(
    provider=MockProvider(),
    system_prompt="Ты краткий и полезный помощник.",
)

Инструменты (tool calling)

Модель можно научить вызывать функции. Опишите инструмент через Tool и передайте список в запрос:

from ember import ChatRequest, Message, Tool

tools = [
    Tool(
        name="get_weather",
        description="Погода в городе",
        parameters={
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    )
]

# provider — любой Provider, например OpenAIProvider(api_key=...)
response = provider.complete(
    ChatRequest(
        messages=[Message(role="user", content="Какая погода в Москве?")],
        model="gpt-4o-mini",
        tools=tools,
    )
)
# Если модель решила вызвать инструмент, вызовы будут в response.message.tool_calls
if response.message.tool_calls:
    for call in response.message.tool_calls:
        print(call.name, call.arguments)

Результат выполнения возвращается модели сообщением с ролью tool и идентификатором вызова:

Message(role="tool", content="+15C", tool_call_id=call.id)

Разработка

# Установка зависимостей (включая dev)
poetry install --with dev

# Запуск тестов
poetry run pytest

# Линтинг
poetry run ruff check .
poetry run ruff format --check .

# Проверка типов
poetry run mypy ember

CI (GitHub Actions) автоматически прогоняет линтинг, проверку типов и тесты на Python 3.10–3.12 для каждого pull request.

Релиз

Публикация новой версии на PyPI автоматизирована через GitHub Actions (workflow .github/workflows/publish.yml):

  1. Поднимите версию в pyproject.toml (version = "0.1.0") и закоммитьте изменение, например: chore: bump version to 0.1.0

  2. Создайте и запушьте git-тег, совпадающий с версией:

    git tag v0.1.0
    git push origin v0.1.0
    
  3. Workflow соберёт wheel и sdist (poetry build) и опубликует их на PyPI. Ветка main при этом не нужна — достаточно тега.

Публикация использует Trusted Publishing (OIDC): секреты в GitHub не хранятся. Для этого владельцу нужно один раз настроить publisher на PyPI (и, опционально, на TestPyPI для проверок):

Поля формы одинаковы для PyPI и TestPyPI:

Поле Значение
Project name emberio-labs-ember
GitHub owner emberio-labs
GitHub repository ember
Workflow name publish.yml
Environment (пусто)

После настройки публикацию можно проверить вручную на TestPyPI: GitHub → Actions → Publish → Run workflow. На боевой PyPI пакет уходит только по git-тегу v*.

Лицензия

Проект распространяется под лицензией MIT.

© 2026 Emberio Labs

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emberio_labs_ember-0.1.0.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emberio_labs_ember-0.1.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file emberio_labs_ember-0.1.0.tar.gz.

File metadata

  • Download URL: emberio_labs_ember-0.1.0.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for emberio_labs_ember-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ad0d658ab9e303bf2601c0df7b9a927108ecc917bc7b0a93bf88b9dac13a5fae
MD5 13c118180337c641108e9c20ad190db2
BLAKE2b-256 3bc4e9d33f985fe7975214eefaf17b7dea93451b11587a57bb76beca08ab752a

See more details on using hashes here.

Provenance

The following attestation bundles were made for emberio_labs_ember-0.1.0.tar.gz:

Publisher: publish.yml on emberio-labs/ember

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file emberio_labs_ember-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for emberio_labs_ember-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3fececebf8c996d350fe2de3dcd9939309d3bf9e4f7c3a75e1f95b65ca7d404a
MD5 e6a49a8e0ba37b0d6997d4347754feb2
BLAKE2b-256 e45761b3b693fe8e4d81190e94aea1538852f49f8dc022b2aa18a2f72707357b

See more details on using hashes here.

Provenance

The following attestation bundles were made for emberio_labs_ember-0.1.0-py3-none-any.whl:

Publisher: publish.yml on emberio-labs/ember

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page