mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-14 13:19:01 +03:00
Знания: плоская сущность Knowledge (заголовок, описание, MD) + файловые вложения с оригинальными именами (retrieval из md/txt/pdf/docx, публичная ссылка для клиента). Агент: без релизов, инструкции из трёх частей (персонализация/тон/инструкции) + выбор знаний из библиотеки; лимит диалогов упразднён (остался dailyCostUsd). channel.system_prompt/model удалены — AI-поведение только на агенте. Продукт — техническая запись без summary/sales_description. Data-миграция переносит опубликованные документы и активные релизы в новую модель. Internal-UI: раздел Знания, новая карточка агента, упрощённые продукты, release-страницы удалены. ADR-0005/0007/0017 → superseded; SPEC-HUB-0012 переписан. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
16 lines
881 B
Python
16 lines
881 B
Python
from hub_platform.ai.provider.base import ChatResult, ProviderError
|
|
from hub_platform.ai.runtime import run_agent_turn
|
|
|
|
|
|
def run_channel_turn(*, channel, message: str, history: list[dict] | None = None) -> ChatResult:
|
|
"""One AI turn for a processing channel (ADR-HUB-0019/0023).
|
|
|
|
AI-поведение канала целиком определяет его агент. Без активного агента
|
|
AI-ответа нет: вызывающий код (ingest/support) обрабатывает ProviderError
|
|
как «AI недоступен» и передаёт диалог оператору.
|
|
"""
|
|
agent = getattr(channel, "ai_agent", None)
|
|
if agent is None or not agent.is_active:
|
|
raise ProviderError("Channel has no active AI agent")
|
|
return run_agent_turn(agent=agent, message=message, history=history, style_guard=True).result
|