Skip to main content

Graphon

Graphon — движок исполнения графов на Python для агентных AI-воркфлоу.

Репозиторий всё ещё развивается, но уже содержит рабочий движок исполнения, встроенные узлы воркфлоу, абстракции рантайма моделей, протоколы интеграции и рабочий end-to-end пример.

Основное

  • Оркестрация GraphEngine на очередях, событийное исполнение
  • Парсинг графа, валидация, fluent-построение графа
  • Общее состояние рантайма, пул переменных, доменные модели исполнения воркфлоу
  • Встроенные реализации узлов для типовых паттернов воркфлоу
  • Поддержка импорта DSL с LLM-узлами на Slim
  • Протоколы интеграции HTTP, файлов, инструментов, human-input
  • Расширяемые слои движка и внешние командные каналы

Модули репозитория сейчас покрывают такие типы узлов: start, end, answer, llm, if-else, code, template-transform, question-classifier, http-request, tool, variable-aggregator, variable-assigner, loop, iteration, parameter-extractor, document-extractor, list-operator и human-input.

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

Проще всего оценить Graphon из исходников (source checkout).

Требования

Python 3.14 пока не поддерживается — unstructured, часть стека извлечения документов, сейчас объявляет Requires-Python: <3.14.

Настройка репозитория

just dev
source .venv/bin/activate
just test

just dev устанавливает проект, синхронизирует dev-зависимости и настраивает Git-хуки prek. just test — точка входа последовательной локальной проверки: форматирует, применяет автофиксы линта, запускает ty check, затем pytest.

Запуск примеров воркфлоу

В репозитории есть минимальные рабочие примеры Slim LLM в examples/slim_llm.

Обе версии выполняют такой воркфлоу:

start -> llm -> answer

Запуск:

just dev
source .venv/bin/activate
cd examples/slim_llm
cp credentials.example.json credentials.json
python3 dsl.py "Reply with only the word Graphon."
python3 code.py "Reply with only the word Graphon."

Перед запуском заполните нужные значения в credentials.json.

Пример сейчас ожидает:

  • OpenAI-совместимые credentials модели в model_credentials
  • slim.modelocal или remote
  • arkady-plugin-daemon-slim в PATH, SLIM_BINARY_PATH, либо локальный бинарник slim в директории примера
  • для remote-режима — daemon_addr и daemon_key

Точный формат credentials и заметки по рантайму — в examples/slim_llm/README.md.

Как устроен Graphon

На высоком уровне прямое использование Graphon выглядит так:

  1. Построить или загрузить граф, инстанцировать узлы в Graph.
  2. Подготовить GraphRuntimeState и заполнить VariablePool.
  3. Настроить адаптеры модели, файлов, HTTP, инструментов или human-input по необходимости.
  4. Запустить GraphEngine и обрабатывать события графа.
  5. Прочитать финальные выходные данные из состояния рантайма.

Для DSL-документов Arkady используйте arkady_graphon.dsl.loads(), чтобы построить движок из YAML-воркфлоу и credentials. Получившийся движок использует DSL Slim-адаптер для LLM-узлов:

engine = loads(
    dsl,
    credentials=credentials,
    workflow_id="example-dsl-openai-slim",
    start_inputs={"query": query},
)

events = list(engine.run())

См. examples/slim_llm/dsl.py для версии с импортом DSL и examples/slim_llm/code.py для версии с построением графа на Python.

Импорт DSL по умолчанию сейчас поддерживает start, end, answer, if-else, template-transform, code, llm, tool, http-request, variable-aggregator, assigner, list-operator, question-classifier и parameter-extractor. Импорт HTTP-запросов покрывает текстовые тела запросов и текстовые ответы; тела запросов с файлами всё ещё требуют файловых адаптеров на уровне приложения.

Для прямого построения графа на Python используйте arkady_graphon.dsl.slim.SlimLLM как стандартный Slim-рантайм для LLM. Интеграциям, которым нужно заменить исполнение модели, роутинг, инъекцию credentials или подсчёт токенов, стоит реализовать arkady_graphon.protocols.LLMProtocol. Более высокоуровневый слой фабрики/резолвера моделей запланирован отдельным доработкой.

Структура проекта

  • src/arkady_graphon/graph: структуры графа, парсинг, валидация, построители
  • src/arkady_graphon/graph_engine: оркестрация, воркеры, командные каналы и слои
  • src/arkady_graphon/runtime: состояние рантайма, read-only обёртки, пул переменных
  • src/arkady_graphon/nodes: встроенные реализации узлов воркфлоу
  • src/arkady_graphon/model_runtime: абстракции провайдера/модели и общие сущности моделей
  • src/arkady_graphon/dsl: поддержка импорта DSL, включая Slim-адаптеры рантайма
  • src/arkady_graphon/graph_events: модели событий, испускаемых при исполнении
  • src/arkady_graphon/http: абстракции HTTP-клиента и реализация по умолчанию
  • src/arkady_graphon/file: модели файлов воркфлоу и хелперы файлового рантайма
  • src/arkady_graphon/protocols: публичные ре-экспорты протоколов для интеграций
  • examples/: рабочие примеры
  • tests/: unit- и integration-тесты

Внутренняя документация

Разработка

Настройка для контрибьюторов, детали инструментов, заметки по CLA и конвенции commit/PR — в CONTRIBUTING.md.

CI сейчас проверяет заголовки pull request'ов, запускает just check (включая проверку актуальности uv.lock) и uv run pytest на Python 3.12 и 3.13. Python 3.14 пока исключён — unstructured его ещё не поддерживает.

Лицензия

Apache-2.0. См. LICENSE.


English version: README.en.md

Download files

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

Source Distribution

arkady_graphon-0.7.0.tar.gz (266.4 kB view details)

Uploaded Source

Built Distribution

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

arkady_graphon-0.7.0-py3-none-any.whl (382.7 kB view details)

Uploaded Python 3

File details

Details for the file arkady_graphon-0.7.0.tar.gz.

File metadata

  • Download URL: arkady_graphon-0.7.0.tar.gz
  • Upload date:
  • Size: 266.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for arkady_graphon-0.7.0.tar.gz
Algorithm Hash digest
SHA256 781239ed940239283675163059f9e6e25938a1b9b58a6154f68bcd610e131328
MD5 035c050ce623c4bc9362bd667f3c6be2
BLAKE2b-256 9080e7a690909984b959b852680e72aea921fa1b1d7bdc8a68aab72c9b28f3ee

See more details on using hashes here.

File details

Details for the file arkady_graphon-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: arkady_graphon-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 382.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for arkady_graphon-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d193e25508a8e8369e8d1ac39b186487b5085a6320d6a3285ff74db9eeea81a9
MD5 61edfb7785ae48f03e2ab3f5071186e5
BLAKE2b-256 5c283c8af2b616c075adf56a01c55af5892cb03146362e60376fb050b6f22284

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page