llm-chat/module.yaml
flemming-it b5ceaa3dfe
Some checks failed
CI / Linux x86_64 (Forgejo) (push) Failing after 2s
sign-bundle / sign (push) Failing after 1m53s
feat: api accepts 'vllm' as a first-class value
'openai' reads as the cloud company — an operator running
self-hosted vLLM should be able to write what they mean. The new
value speaks the identical OpenAI wire (a guard test asserts the
emitted request stays byte-identical to api: openai, so the alias
can never drift into a dialect) but yields vLLM-specific error
hints (vllm serve, port 8000) instead of generic OpenAI prose.
Manifest + docs name the value in DE and EN.

Signed-off-by: flemming-it <sf@flemming.it>
2026-08-20 17:13:44 +02:00

124 lines
4.4 KiB
YAML

schema_version: 3
provider: chain
name: llm-chat
version: 0.2.0
# Capability provided by this module.
provides:
- capability: llm.chat
version: 0.2.0
# Declared inputs in verbose v3 form. Studio renders the
# description in the active locale as a tooltip on each
# port; the editor falls back to the English description
# when no peer is configured.
inputs:
prompt:
type: text
description:
en: The user-facing prompt text the model should respond to.
de: Der vom Modell zu beantwortende Prompt-Text.
endpoint:
type: text
description:
en: |
Chat endpoint URL matching the selected api:
ollama "http://localhost:11434/api/chat",
openai "https://.../v1/chat/completions" (vLLM etc.),
anthropic "https://api.anthropic.com/v1/messages".
de: |
Chat-Endpunkt-URL passend zur gewählten api:
ollama "http://localhost:11434/api/chat",
openai "https://.../v1/chat/completions" (vLLM u. a.),
anthropic "https://api.anthropic.com/v1/messages".
api:
type: text
description:
en: |
Optional wire format: "ollama" (default), "vllm"
(self-hosted vLLM), "openai" (OpenAI or other
OpenAI-compatible servers such as LM Studio), or
"anthropic" (Messages API). vllm and openai speak the
same wire; the separate value exists so you can write
what you mean and get vLLM-specific hints. Empty = ollama.
de: |
Optionales Wire-Format: "ollama" (Default), "vllm"
(selbst gehostetes vLLM), "openai" (OpenAI oder andere
OpenAI-kompatible Server wie LM Studio) oder "anthropic"
(Messages API). vllm und openai sprechen dieselbe Wire;
der eigene Wert existiert, damit Du schreibst, was Du
meinst, und vLLM-spezifische Hinweise bekommst.
Leer = ollama.
model:
type: text
description:
en: Model identifier as registered with the endpoint, e.g. "qwen2.5:14b" or "llama3.1:8b".
de: Modell-Identifier wie beim Endpunkt registriert, z. B. "qwen2.5:14b" oder "llama3.1:8b".
api_key:
type: text
description:
en: |
Optional API key. Sent as "Authorization: Bearer" for
ollama/openai and as "x-api-key" for anthropic. Empty
string means no auth header is sent. Never appears in
outputs, logs, or audit events.
de: |
Optionaler API-Key. Bei ollama/openai als
"Authorization: Bearer", bei anthropic als "x-api-key"
gesendet. Leer = kein Auth-Header. Erscheint nie in
Ausgaben, Logs oder Audit-Events.
system_prompt:
type: text
description:
en: |
Optional system prompt. Empty string omits the system
message and lets the model use its built-in default.
de: |
Optionaler System-Prompt. Leer = das Modell verwendet
seinen eingebauten Default.
# Outputs produced.
outputs:
response:
type: text
description:
en: The assistant's plain-text reply.
de: Die Klartext-Antwort des Modells.
model_endpoint:
type: text
description:
en: The endpoint the response was generated against. Used for audit correlation.
de: Der Endpunkt, gegen den die Antwort erzeugt wurde — für Audit-Korrelation.
model_name:
type: text
description:
en: The model identifier as supplied to the LLM API.
de: Der an die LLM-API übergebene Modell-Identifier.
model_digest:
type: text
description:
en: |
SHA-256 digest of the served Ollama model, when reachable.
Empty for non-Ollama endpoints (OpenAI / Anthropic do not
expose a digest API). Together with model_endpoint and
model_name this answers the audit question "which exact
model produced this response?"
de: |
SHA-256-Digest des bedienten Ollama-Modells, wenn erreichbar.
Leer für Nicht-Ollama-Endpunkte (OpenAI / Anthropic stellen
keine Digest-API bereit). Zusammen mit model_endpoint und
model_name beantwortet das die Audit-Frage "welches genaue
Modell hat diese Antwort erzeugt?"
# Permissions required.
#
# The module makes outbound HTTP to the configured endpoint.
# Default declarations cover loopback (Ollama) and the common
# cloud providers. Operators with different endpoints fork
# module.yaml in Phase 0.5; operator-config-driven permission
# overrides arrive in Phase 1+.
permissions:
- "net: localhost"
- "net: 127.0.0.1"
- "net: api.openai.com"
- "net: api.anthropic.com"