Configuration Reference
Konfigurationsreferenz
Open Ticket AI lädt seine YAML-Konfiguration in das OpenTicketAIConfig Modell. Das Schema basiert auf einem einzelnen
open_ticket_ai Objekt, das API-/Version-Metadaten, Infrastruktureinstellungen, Dependency-Injected Services und die
Definition des Pipeline-Orchestrators enthält. 【F:src/open_ticket_ai/core/config/config_models.py†L17-L37】
Grundstruktur der Konfiguration
| Feld | Typ | Beschreibung |
|---|---|---|
api_version | str | Optionaler Versionsstring, der standardmäßig "1" ist. 【F:src/open_ticket_ai/core/config/config_models.py†L18-L21】 |
plugins | list[str] | Python-Module, die Plugin-Entry-Points bereitstellen. Jedes Plugin fügt zusätzliche Injectables zum Registry hinzu. 【F:src/open_ticket_ai/core/config/config_models.py†L22-L25】 |
infrastructure | InfrastructureConfig | Logging und andere Host-Level-Anforderungen. 【F:src/open_ticket_ai/core/config/config_models.py†L26-L29】 |
services | dict[str, InjectableConfigBase] | Map von Injectable-Service-Definitionen, die durch den Identifier gekennzeichnet sind, den Sie in Pipelines referenzieren. 【F:src/open_ticket_ai/core/config/config_models.py†L30-L33】 |
orchestrator | PipeConfig | Top-Level Pipe (typisch ein Orchestrator), der von der Runtime ausgeführt wird. 【F:src/open_ticket_ai/core/config/config_models.py†L34-L36】 |
Infrastrukturkonfiguration
InfrastructureConfig stellt aktuell Logging-Konfiguration bereit und verwendet standardmäßig das integrierte Logging-Schema. 【F:
src/open_ticket_ai/core/config/config_models.py†L10-L14】
Services-Dictionary (open_ticket_ai.services)
Alle Services teilen das gleiche Basisschema, weil sie Instanzen von InjectableConfigBase sind. Jeder Eintrag befindet sich unter dem
services Dictionary und verwendet den Dictionary-Key als seinen Identifier. 【F:
src/open_ticket_ai/core/config/config_models.py†L30-L43】
| Feld | Typ | Beschreibung |
|---|---|---|
use | str | Registry-Identifier der Injectable-Implementierung, die instanziiert werden soll. Standardwert ist "otai_base:CompositePipe". 【F:src/open_ticket_ai/core/injectables/injectable_models.py†L9-L15】 |
injects | dict[str, str] | Optionales Mapping von Constructor-Parameternamen zu anderen Service-Identifiers. So verbinden Sie ein Injectable mit einem anderen. 【F:src/open_ticket_ai/core/injectables/injectable_models.py†L16-L20】 |
params | dict[str, Any] | Beliebiges Konfigurationsobjekt, das als Keyword-Argumente zum Parameter-Model des Injectables übergeben wird. 【F:src/open_ticket_ai/core/injectables/injectable_models.py†L21-L25】 |
Wenn die Runtime Services materialisiert, wird der Dictionary-Key in das Model integriert, wodurch der Identifier für Dependency-Injection-Konsumenten verfügbar wird. 【F:src/open_ticket_ai/core/config/config_models.py†L39-L43】
Wie Registry-Identifiers gebaut werden
Plugins leiten Registry-Identifiers von ihrem Modulnamen ab. Jedes Plugin beginnt mit dem Prefix otai-; die Runtime entfernt diesen Prefix und konkateniert den Rest mit dem Injectable-Klassennamen mit :. Beispielsweise, das otai_base Plugin liefert Identifier wie base:CompositePipe. 【F:src/open_ticket_ai/core/config/app_config.py†L16-L21】【F:
src/open_ticket_ai/core/plugins/plugin.py†L18-L46】
Orchestrator und PipeConfig
Pipelines werden mit PipeConfig beschrieben, welches das gleiche Basis-Injectable-Schema mit einem id Feld erweitert, zusätzliche Keys verbietet und alle Werte immutable für konsistentes Hashing behält. 【F:
src/open_ticket_ai/core/pipes/pipe_models.py†L9-L15】 Jede Pipe liefert ein PipeResult, das Erfolg, Skip, Fehler und jegliche strukturierte Daten für downstream Steps anzeigt. 【F:src/open_ticket_ai/core/pipes/pipe_models.py†L17-L68】
Aktualisiertes Konfigurationsbeispiel
Das folgende Snippet spiegelt die aktuelle OpenTicketAIConfig Struktur: Services sind durch Identifier gekennzeichnet, und der Orchestrator ist ein PipeConfig, das verschachtelte Pipes und Triggers rendert.
open_ticket_ai:
api_version: '1'
plugins:
- otai_base
- otai_hf_local
- otai_otobo_znuny
infrastructure:
logging:
version: 1
root:
level: INFO
services:
ticketing:
use: 'otobo-znuny:OTOBOZnunyTicketSystemService'
params:
base_url: '${OTOBO_BASE_URL}'
username: '${OTOBO_USERNAME}'
password: '${OTOBO_PASSWORD}'
classifier:
use: 'hf-local:HFClassificationService'
params:
api_token: '${HF_TOKEN}'
renderer:
use: 'base:JinjaRenderer'
orchestrator:
id: support-orchestrator
use: 'base:SimpleSequentialOrchestrator'
params:
orchestrator_sleep: '0:00:05'
exception_sleep: '0:01:00'
steps:
- id: ticket-runner
use: 'base:SimpleSequentialRunner'
params:
on:
id: every-minute
use: 'base:IntervalTrigger'
params:
interval: '0:01:00'
run:
id: ticket-flow
use: 'base:CompositePipe'
params:
steps:
- id: fetch
use: 'base:FetchTicketsPipe'
injects:
ticket_system: ticketing
params:
ticket_search_criteria:
queue:
id: Raw
name: Raw
limit: 1
- id: classify
use: 'base:ClassificationPipe'
injects:
classification_service: classifier
params:
text: "{{ get_pipe_result('fetch').data.fetched_tickets[0].body }}"
model_name: 'distilbert-base-uncased'
- id: respond
use: 'base:AddNotePipe'
injects:
ticket_system: ticketing
params:
ticket_id: "{{ get_pipe_result('fetch').data.fetched_tickets[0].id }}"
note:
subject: 'Classification result'
body: "{{ get_pipe_result('classify').data.label }}"
Kern-Injectables
Die Tabelle fasst die Kern-Injectables zusammen, die mit den Standard-Plugins geliefert werden. Folgen Sie den Links für Parameter- und Output-Details.
| Identifier | Plugin | Art | Zusammenfassung |
|---|---|---|---|
base:JinjaRenderer | otai_base | Template-Renderer | Async Jinja-Renderer mit Helfern für Zugriff auf Pipe-Output. Details |
base:SimpleSequentialOrchestrator | otai_base | Orchestrator Pipe | Durchläuft Child-Pipes nach einem Schedule, retry bei Fehler. Details |
base:SimpleSequentialRunner | otai_base | Runner Pipe | Führt eine run Pipe aus, wenn der on Trigger erfolgreich ist. Details |
base:CompositePipe | otai_base | Composite Pipe | Evaluiert verschachtelte Pipes in Sequenz und mergt ihre Ergebnisse. Details |
base:ExpressionPipe | otai_base | Utility Pipe | Liefert Literalwerte oder fails, wenn ein FailMarker produziert wird. Details |
base:ClassificationPipe | otai_base | AI Pipe | Delegiert zu einem ClassificationService und liefert den Model-Output. Details |
base:IntervalTrigger | otai_base | Trigger Pipe | Emittiert Erfolg, wenn das konfigurierte Interval abgelaufen ist. Details |
base:FetchTicketsPipe | otai_base | Ticket Pipe | Lädt Tickets via einem injected TicketSystemService. Details |
base:UpdateTicketPipe | otai_base | Ticket Pipe | Wendet Updates auf ein Ticket durch den injected Ticket-Service an. Details |
base:AddNotePipe | otai_base | Ticket Pipe | Fügt eine Note zu einem Ticket mit dem Ticket-Service hinzu. Details |
hf-local:HFClassificationService | otai_hf_local | Service | Hugging Face Text-Klassifikations-Client mit optionalem Auth-Token. Details |
otobo-znuny:OTOBOZnunyTicketSystemService | otai_otobo_znuny | Service | Async Ticket-Service basierend auf der OTOBO/Znuny API. Details |
base:JinjaRenderer
- Use:
base:JinjaRenderer - Params: none (defaults to an empty
StrictBaseModel). 【F: packages/otai_base/src/otai_base/template_renderers/jinja_renderer.py†L21-L38】 - Behaviour: Rendert Strings, Listen und Dicts async mit Helper-Globals wie
get_pipe_resultundfail. 【F:packages/otai_base/src/otai_base/template_renderers/jinja_renderer.py†L29-L38】
base:SimpleSequentialOrchestrator
- Use:
base:SimpleSequentialOrchestrator - Params:
orchestrator_sleep(timedelta) – Wartezeit zwischen Cycles. 【F: packages/otai_base/src/otai_base/pipes/orchestrators/simple_sequential_orchestrator.py†L14-L18】exception_sleep(timedelta) – Delay vor Retry nach einem Error. 【F: packages/otai_base/src/otai_base/pipes/orchestrators/simple_sequential_orchestrator.py†L14-L18】always_retry(bool) – rethrow bei Fehler, wennfalse. 【F: packages/otai_base/src/otai_base/pipes/orchestrators/simple_sequential_orchestrator.py†L14-L18】steps(list[PipeConfig]) – verschachtelte Steps, die mit voller Template-Support gerendert werden. 【F: packages/otai_base/src/otai_base/pipes/orchestrators/simple_sequential_orchestrator.py†L14-L27】
- Output: Läuft unendlich, liefert das aggregierte
PipeResultaller Steps pro Cycle. Fehler respektierenalways_retry. 【F:packages/otai_base/src/otai_base/pipes/orchestrators/simple_sequential_orchestrator.py†L24-L40】【F: src/open_ticket_ai/core/pipes/pipe_models.py†L36-L52】
base:SimpleSequentialRunner
- Use:
base:SimpleSequentialRunner - Params:
on(PipeConfig) – Trigger Pipe; der Runner überspringt Execution, wenn sie fails. 【F: packages/otai_base/src/otai_base/pipes/pipe_runners/simple_sequential_runner.py†L12-L36】run(PipeConfig) – Pipe, die ausgeführt wird, wenn der Trigger erfolgreich ist. 【F: packages/otai_base/src/otai_base/pipes/pipe_runners/simple_sequential_runner.py†L12-L36】
- Output: Liefert das downstream Pipe-Result oder ein skipped
PipeResultmit einer diagnostischen Message. 【F: packages/otai_base/src/otai_base/pipes/pipe_runners/simple_sequential_runner.py†L26-L36】【F: src/open_ticket_ai/core/pipes/pipe_models.py†L17-L64】
base:CompositePipe
- Use:
base:CompositePipe - Params:
steps– geordnete Liste vonPipeConfigDefinitionen. Extra Keys sind allowed, um custom Composite Implementations zu unterstützen. 【F:packages/otai_base/src/otai_base/pipes/composite_pipe.py†L11-L33】 - Output: Führt jeden Step in Reihenfolge aus, stoppt beim ersten Fehler und mergt Daten von allen erfolgreichen Steps mit
PipeResult.union. 【F:packages/otai_base/src/otai_base/pipes/composite_pipe.py†L29-L47】【F: src/open_ticket_ai/core/pipes/pipe_models.py†L36-L52】
base:ExpressionPipe
- Use:
base:ExpressionPipe - Params:
expression– Literalwert oder gerendertes Expression-Result. 【F: packages/otai_base/src/otai_base/pipes/expression_pipe.py†L13-L18】 - Output: Liefert
PipeResult.successmit{"value": expression}außer wenn die Expression zu einemFailMarkerevaluiert, dann fails. 【F:packages/otai_base/src/otai_base/pipes/expression_pipe†L21-L38】【F: src/open_ticket_ai/core/pipes/pipe_models.py†L59-L68】
base:ClassificationPipe
- Use:
base:ClassificationPipe - Injects:
classification_servicemuss auf eineClassificationServiceImplementation pointen. - Params:
text(str) – Content zu klassifizieren.model_name(str) – Identifier, der zum Service forwarded wird.api_token(str | None) – optionaler Token, der den Service-Default überschreibt. 【F: packages/otai_base/src/otai_base/pipes/classification_pipe.py†L19-L52】
- Output: Erfolgreiche Results enthalten das vollständige
ClassificationResultPayload (label, confidence, optional scores). 【F:packages/otai_base/src/otai_base/pipes/classification_pipe.py†L54-L63】
base:IntervalTrigger
- Use:
base:IntervalTrigger - Params:
interval(timedelta) – erforderliche elapsed Zeit zwischen Erfolgen. 【F: packages/otai_base/src/otai_base/pipes/interval_trigger_pipe.py†L11-L28】 - Output: Liefert Erfolg, wenn das Interval seit dem letzten Run elapsed ist; sonst liefert ein Failure-Result so downstream Runner Arbeit überspringen können. 【F:packages/otai_base/src/otai_base/pipes/interval_trigger_pipe.py†L21-L30】【F: src/open_ticket_ai/core/pipes/pipe_models.py†L17-L64】
base:FetchTicketsPipe
- Use:
base:FetchTicketsPipe - Injects:
ticket_systemmuss zu einerTicketSystemServiceImplementation resolve. 【F: packages/otai_base/src/otai_base/ticket_system_integration/ticket_system_service.py†L1-L27】 - Params:
ticket_search_criteriabeschreibt Queue, Limit und andere Filters. 【F: packages/otai_base/src/otai_base/pipes/ticket_system_pipes/fetch_tickets_pipe.py†L11-L26】 - Output: Erfolg-Result mit
data.fetched_ticketsset to a list ofUnifiedTicketrecords. 【F: packages/otai_base/src/otai_base/pipes/ticket_system_pipes/fetch_tickets_pipe.py†L20-L26】
base:UpdateTicketPipe
- Use:
base:UpdateTicketPipe - Injects:
ticket_system(same as above). - Params:
ticket_id(str | int) – Ziel-Ticket-Identifier.updated_ticket(UnifiedTicket) – Felder zu update. 【F: packages/otai_base/src/otai_base/pipes/ticket_system_pipes/update_ticket_pipe.py†L11-L28】
- Output: Liefert Erfolg, wenn der Ticket-Service den Update bestätigt. 【F: packages/otai_base/src/otai_base/pipes/ticket_system_pipes/update_ticket_pipe.py†L21-L31】
base:AddNotePipe
- Use:
base:AddNotePipe - Injects:
ticket_system. - Params:
ticket_id(str | int) – Ticket, das die Note empfängt.note(UnifiedNote) – Subject/Body-Payload. 【F: packages/otai_base/src/otai_base/pipes/ticket_system_pipes/add_note_pipe.py†L13-L40】
- Output: Liefert Erfolg nach Delegation zum Ticket-Service, um die Note anzuhängen. 【F: packages/otai_base/src/otai_base/pipes/ticket_system_pipes/add_note_pipe.py†L27-L40】
hf-local:HFClassificationService
- Use:
hf-local:HFClassificationService - Params:
api_token(str | None) – Default Hugging Face Token, verwendet wenn Requests einen Token omit. 【F: packages/otai_hf_local/src/otai_hf_local/hf_classification_service.py†L105-L158】 - Behaviour: Lädt lazy und cachet ein Hugging Face transformers pipeline, loggt in wenn ein Token provided ist, und stellt synchronous/asynchronous classification helpers bereit. 【F: packages/otai_hf_local/src/otai_hf_local/hf_classification_service.py†L34-L163】
otobo-znuny:OTOBOZnunyTicketSystemService
- Use:
otobo-znuny:OTOBOZnunyTicketSystemService - Params (
RenderedOTOBOZnunyTSServiceParams):base_url– OTOBO/Znuny Endpoint Base URL.username/password– Credentials für den konfigurierten Web-Service.webservice_name– optionaler Service-Name-Override (defaults toOpenTicketAI).operation_urls– Mapping von Ticket-Operations zu relativen API-Paths. 【F: packages/otai_otobo_znuny/src/otai_otobo_znuny/models.py†L44-L76】
- Behaviour: Erstellt und loggt in einen
OTOBOZnunyClient, dann implementiert dasTicketSystemServiceInterface für Searching, Retrieving, Updating und Annotating Tickets. 【F: packages/otai_otobo_znuny/src/otai_otobo_znuny/oto_znuny_ts_service.py†L21-L135】
