> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Freiformverfahren

## Überblick

Ein Freiformverfahren beschreibt eine Aufgabe in einfacher, natürlicher Sprache. Der Agent interpretiert die Anweisungen und passt Formulierung und Reihenfolge an die Situation an. Ein Freiformverfahren kann Tools aufrufen, einschließlich Systemtools wie zum Beenden eines Anrufs, Wissensdatenbankdokumente durchsuchen und mit anderen Verfahren verkettet werden.

## Wann ein Freiformverfahren verwendet werden sollte

Verwenden Sie ein Freiformverfahren, wenn der Agent Formulierung und Reihenfolge an die Situation anpassen kann und Sie es schnell in einfacher Sprache erstellen möchten. Einen Vergleich mit strukturierten Verfahren, Workflows und dem System Prompt finden Sie unter [Wann Verfahren verwendet werden sollten](/docs/de/eleven-agents/customization/procedures#when-to-use-procedures).

## Aufbau eines Verfahrens

Hier sehen Sie ein Erstattungsverfahren im Editor:

![Beispiel für ein
Erstattungsverfahren](/docs/_fern-img/e1264b7a4f94403453087d30ef0894e72d412ba69378e6b8cb1b675e53e887b7.webp)

Ein Verfahren besteht aus zwei Hauptteilen: einem Auslöser und Inhalt. Beide können Inline-Referenzen auf andere Ressourcen enthalten, die im Screenshot oben als Tags mit Schraubenschlüssel-Symbolen angezeigt werden. Jedes Verfahren hat außerdem einen Namen, der im Dashboard angezeigt wird.

### Name

Eine kurze Bezeichnung, die das Verfahren im Dashboard identifiziert. Der Name wird nie an das LLM gesendet und beeinflusst daher nicht das Verhalten des Agenten.

### Auslöser

Eine Beschreibung, wann der Agent dieses Verfahren verwenden soll, zum Beispiel *Wenn der Nutzer die Erstattung einer Bestellung anfordert*.

Lassen Sie den Auslöser nur leer, wenn Sie ein [Unterverfahren](#sub-procedures) erstellen.

### Inhalt

Der Hauptteil des Verfahrens, geschrieben in Markdown. Der Inhalt beschreibt, was der Agent tun soll: eine Frage stellen, eine Bestellung nachschlagen, ein Tool aufrufen oder den Anruf beenden. Er kann eine nummerierte Abfolge von Schritten oder allgemeine Hinweise für die Situation enthalten. Jeder Schritt oder jede Richtlinie kann aus einem einzelnen Satz bestehen (*Fragen Sie den Nutzer nach seiner Bestell-ID*) oder aus einem kurzen Absatz, der erklärt, was zu tun ist und warum.

Verwenden Sie nummerierte Schritte für aufeinanderfolgende Aktionen und Aufzählungspunkte für Anforderungen oder Unterpunkte innerhalb eines Schritts.

### Inline-Referenzen

Verfahren können inline auf verschiedene Arten von Ressourcen verweisen:

* Tools (z. B. eine Bestellung nachschlagen, eine Karte belasten, den Anruf beenden oder an einen Mitarbeiter weiterleiten)
* Wissensdatenbankdokumente
* Andere Verfahren

Verwenden Sie Inline-Referenzen immer dann, wenn ein Schritt erfordert, dass der Agent ein Tool, ein Wissensdatenbankdokument oder ein anderes Verfahren nutzt. Referenzen hängen die Ressource automatisch an das Verfahren an, damit der Agent sie verwenden kann. Erwähnungen im Fließtext (wie *verwenden Sie hier das Rechner-Tool*) funktionieren ebenfalls, aber nur wenn die Ressource bereits an den Agenten angehängt ist.

Fügen Sie eine Referenz ein, indem Sie im Auslöser oder Inhalt `/` eingeben und die Ressource im Slash-Menü auswählen. Referenzen werden im Editor als anklickbare Tags angezeigt. Klicken Sie auf ein Tag, um die zugrunde liegende Ressource zu öffnen und ihre Konfiguration zu prüfen.

Wenn Sie Freiforminhalte über die API schreiben, fügen Sie Referenzen mit folgender Syntax ein:

```text focus={1-5}
[tool id="tool_abc123"]
[kb id="kb_abc123"]
[procedure id="agtprc_abc123"]
[system_tool id="end_call"]
{{customer_id}}
```

Eine Inline-Verfahrensreferenz muss ein Verfahren desselben Agenten verwenden. Informationen zum Agentenbereich und zum Duplizierungsverhalten finden Sie unter [Einschränkungen](/docs/de/eleven-agents/customization/procedures#limitations).

Eine Referenz im Auslöser ermöglicht es, das Verfahren anhand der Ausgabe einer Ressource auszulösen, zum Beispiel \_Wenn `get_user` den Tarif „gold“ zurückgibt \_. Eine Referenz im Inhalt weist den Agenten an, die Ressource bei diesem Schritt aufzurufen oder zu konsultieren.

![Slash-Menü im Verfahrenseditor](/docs/_fern-img/8625ffec0f5584619e6ccb97720fd86f2e8d3cd0061308ad87b57f176e5535e3.webp)

Wenn eine referenzierte Ressource später gelöscht wird oder Ihr Konto den Zugriff darauf verliert, wird das Tag als fehlerhaft angezeigt. Das Abzeichen **Errors** oben im Editor listet diese Referenzen auf: *invalid*, wenn die Ressource nicht mehr existiert, oder *unavailable*, wenn sie existiert, Ihr Konto aber keinen Zugriff hat. Öffnen Sie das Abzeichen, um zu sehen, welcher Schritt betroffen ist, und korrigieren oder entfernen Sie die Referenz.

![Fehlerdialog mit ungültigen
Referenzen](/docs/_fern-img/e9ec6b19be2992da80a726883baf53265a5d5b38621373cd7e60375c944674cd.webp)

## Unterverfahren

Ein Unterverfahren hat einen leeren Auslöser. Der Agent kann es nur über ein anderes Verfahren ausführen, das darauf verweist.

Verwenden Sie Unterverfahren, um [Schritte zu teilen](#composing-procedures) innerhalb eines Agenten und die Anzahl gleichzeitig verfügbarer Verfahren zu reduzieren. Geben Sie dem Einstiegsverfahren einen Auslöser, referenzieren Sie zugehörige Unterverfahren in dessen Inhalt und lassen Sie ihre Auslöser leer.

Ein Eskalations-Unterverfahren kann die Schritte für die Übergabe des Gesprächs an einen Mitarbeiter enthalten. Referenzieren Sie es aus den Erstattungs- und Stornierungsverfahren und lassen Sie seinen Auslöser leer. Der Agent kann als Schritt eines der beiden Verfahren eskalieren, doch außerhalb davon bleibt das Unterverfahren nicht verfügbar.

## Aus einem Dokument importieren

Sie können mit einer bestehenden Standardarbeitsanweisung (SOP) starten. Wählen Sie im **+**-Menü der Verfahrensliste **From SOP** und laden Sie dann eine Datei hoch.

Unterstützte Formate: `PDF`, `DOCX`, `TXT`, `MD`, `HTML`, `EPUB`. Dateien dürfen höchstens 20 MB groß sein.

Der Importer analysiert das Dokument, erkennt bis zu 10 unterschiedliche Verfahren und erstellt für jedes einen Entwurf mit generiertem Namen, Auslöser und Inhalt. Öffnen Sie jeden Entwurf, um ihn zu überarbeiten. Wenn Ihr Dokument mehr als 10 SOPs enthält, teilen Sie es vor dem Hochladen in kleinere Dateien auf.

![SOP hochladen-Dialog](/docs/_fern-img/716601fc90dea757e23971e5aabe063e6a66fc0f75878247dc9f1fc3011f5197.webp)

## Ein Freiformverfahren verwalten

#### Über das Dashboard erstellen

Öffnen Sie Ihren Agenten im [Dashboard](https://elevenlabs.io/app/agents) und wählen Sie dann **Procedures**.
Verwenden Sie **+**, um ein Freiformverfahren zu erstellen. Fügen Sie einen Auslöser hinzu und schreiben Sie die Anweisungen im
Inhaltseditor. Veröffentlichen Sie anschließend die Agentenänderungen.

#### Über die API verwalten

Freiformverfahren speichern Markdown in `content`.

### Voraussetzungen

* Ein ElevenLabs-API-Schlüssel in der Umgebungsvariable `ELEVENLABS_API_KEY`.
* Die Zielwerte `agent_id` und `branch_id`. Informationen zu Branch-Vorgängen finden Sie unter [Agent-Versionierung](/docs/de/eleven-agents/operate/versioning).
* Version `2.60.0` oder neuer des Python-Pakets `elevenlabs` oder des JavaScript-Pakets `@elevenlabs/elevenlabs-js`.

Verfahrensentwürfe sind [pro Nutzer und pro Branch](/docs/de/eleven-agents/operate/versioning#drafts). Bei der Veröffentlichung werden Ihre Verfahrensänderungen
in einer neuen Agentenversion dieses Branches gespeichert. Die Entwürfe anderer Nutzer bleiben unverändert.

### Einen Entwurf erstellen

```python focus={1,5-15}
from elevenlabs import CreateProcedureRequestModel, ElevenLabs

elevenlabs = ElevenLabs()

procedure = elevenlabs.conversational_ai.agents.procedures.create(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    branch_id="agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
    request=CreateProcedureRequestModel(
        name="Refund request",
        type="free_form",
        trigger="When the user asks to refund, return, or get money back for an order",
        content="Ask for the order ID, then look it up with [tool id=\"tool_abc123\"].",
    ),
)

print(procedure.procedure_id)
```

```typescript focus={5-15}
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

const procedure = await elevenlabs.conversationalAi.agents.procedures.create(
  "agent_7101k5zvyjhmfg983brhmhkd98n6",
  "agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
  {
    name: "Refund request",
    type: "free_form",
    trigger: "When the user asks to refund, return, or get money back for an order",
    content: "Ask for the order ID, then look it up with [tool id=\"tool_abc123\"].",
  }
);

console.log(procedure.procedureId);
```

```bash focus={1-8}
curl -X POST "https://api.elevenlabs.io/v1/convai/agents/agent_7101k5zvyjhmfg983brhmhkd98n6/branches/agtbranch_0901k4aafjxxfxt93gd841r7tv5t/procedures" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Refund request",
    "type": "free_form",
    "trigger": "When the user asks to refund, return, or get money back for an order",
    "content": "Ask for the order ID, then look it up with [tool id=\"tool_abc123\"]."
  }'
```

Die Antwort enthält die neue `procedure_id`. Um den Entwurf zu aktualisieren, rufen Sie
`PATCH /procedures/{procedure_id}/draft` mit `name`, `content`, `type` und einem expliziten
`trigger` auf.

Verwenden Sie einen nicht leeren `trigger` für ein Einstiegsverfahren. Verwenden Sie für ein
[Unterverfahren](#sub-procedures) eine leere Zeichenfolge.

### Änderungen veröffentlichen

Aktualisieren Sie den Agenten im Branch, um Ihre Freiformverfahrensentwürfe in einer neuen Version zu veröffentlichen.
Die Anfrage benötigt keine Body-Felder; bei der Veröffentlichung werden die Entwürfe unverändert übernommen.

```python focus={5-8}
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.agents.update(
    agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
    branch_id="agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
)
```

```typescript focus={5-7}
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.agents.update("agent_7101k5zvyjhmfg983brhmhkd98n6", {
  branchId: "agtbranch_0901k4aafjxxfxt93gd841r7tv5t",
});
```

```bash focus={1-5}
curl -X PATCH \
  "https://api.elevenlabs.io/v1/convai/agents/agent_7101k5zvyjhmfg983brhmhkd98n6?branch_id=agtbranch_0901k4aafjxxfxt93gd841r7tv5t" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

Informationen zum Entfernen und Verwerfen von Entwürfen finden Sie unter
[Verfahren verwalten](/docs/de/eleven-agents/customization/procedures#manage-procedures) oder in der
[API-Referenz für Verfahren](/docs/de/api-reference/agents/procedures/) mit vollständigen Endpoint-
Schemas.

## Best Practices

> **Tip**
>
> Der Agent muss anhand seines Auslösers das richtige Verfahren auswählen und dessen Inhalt befolgen. Leistungsfähigere
> Modelle tun dies bei wachsender Anzahl von Verfahren zuverlässiger. Optionen finden Sie unter
> [Modelle](/docs/de/eleven-agents/customization/llm).

Gute Verfahren bestehen aus zwei guten Teilen: einem Auslöser, der das Verfahren startet, wenn er soll, und Inhalt, dem der Agent folgen kann.

### Ein Verfahren iterativ verbessern

Wir empfehlen, klein anzufangen und mit [Agententests](/docs/de/eleven-agents/customization/agent-testing) jede Änderung zu prüfen, bevor Sie die nächste vornehmen:

1. Schreiben Sie einen Auslöser und kurzen Inhalt.
2. Erstellen Sie Simulationstests für Anfragen, die das Verfahren starten sollen, sowie für ähnliche Anfragen, die es nicht starten sollen.
3. Erstellen Sie einen Simulationstest, der das gesamte Verfahren ausführt.
4. Führen Sie die Tests aus. Wenn einer fehlschlägt, korrigieren Sie den Auslöser oder den Inhalt.
5. Führen Sie die Tests nach jeder Änderung erneut aus.

Wenn ein Test oder ein Live-Gespräch fehlschlägt, durchsuchen Sie vergangene Gespräche nach ähnlichen Fehlern, bevor Sie das Verfahren ändern. Schreiben Sie dann eine Anweisung, die alle abdeckt. Die Ursache kann auch in der Wissensdatenbank oder Agentenkonfiguration liegen. [Architect](/docs/de/eleven-agents/operate/architect) kann diese Suche übernehmen: Öffnen Sie das fehlgeschlagene Gespräch, wählen Sie **Architect** und bitten Sie ihn, ähnliche Fehler zu finden und eine Korrektur vorzuschlagen. Architect kann das Gespräch auch in einen Test umwandeln.

> **Tip**
>
> Um einen Auslöser schnell zu iterieren, testen Sie ihn mit einem Simulationstest, bei dem **Maximum conversation
> turns** auf `1` gesetzt ist. Die Simulation endet nach dem ersten Austausch. Das reicht aus, um zu sehen, ob
> die erste Anfrage das richtige Verfahren startet, und hält jeden Durchlauf kurz.

### Auslöser schreiben

#### Auslöser konkret und trennscharf halten

Überlappende oder vage Auslöser führen dazu, dass das falsche Verfahren ausgeführt wird. Bevorzugen Sie *Wenn der Nutzer sein
Abonnement kündigen möchte* gegenüber \_Wenn der Nutzer eine Frage zu seinem Konto hat \_.

#### Aus Sicht des Nutzers schreiben

Beschreiben Sie, worum der Nutzer bittet, nicht was der Agent tun soll. Als Agentenaktionen formulierte
Auslöser sind weniger zuverlässig. Bevorzugen Sie *Wenn der Nutzer sein Abonnement kündigen möchte* gegenüber \_Kündigen Sie
das Abonnement des Nutzers \_.

#### Die tatsächliche Ausdrucksweise der Nutzer abdecken

Ein enger Auslöser kann echte Anfragen übersehen, wenn Nutzer sie anders formulieren. Schließen Sie die
Varianten ein, die Nutzer sagen könnten. *Wenn der Nutzer eine Bestellung erstatten, zurückgeben oder sein Geld zurückerhalten möchte*
funktioniert zuverlässiger als *Wenn der Nutzer eine Erstattung anfordert*. [Durchsuchen Sie vergangene Gespräche](/docs/de/eleven-agents/customization/agent-analysis/smart-search), um herauszufinden, wie Nutzer
die Anfrage formulieren.

#### Zwischen verwandten Verfahren übergeben

Nutzer ändern ihre Anfrage manchmal mitten in einem Verfahren, und der Auslöser allein startet möglicherweise
nicht das richtige. Fügen Sie bei einem Wechsel, den Sie häufig in vergangenen Gesprächen sehen, eine Inline-Referenz
auf das andere Verfahren im Inhalt des ersten Verfahrens hinzu. Schreiben Sie zum Beispiel *Wenn der Nutzer statt eines Umtauschs eine
Erstattung möchte, führen Sie* und fügen Sie anschließend eine Inline-Referenz auf das Erstattungsverfahren ein. Wenn
die meisten Verfahren eine Übergabe benötigen, gestalten Sie die Auslöser stattdessen eindeutiger.

### Inhalt schreiben

#### Imperativ verwenden

Schreiben Sie Schritte als Anweisungen an den Agenten: *Suchen Sie die letzte Bestellung des Kunden heraus* statt \_Sie
sollten die letzte Bestellung des Kunden heraussuchen \_. Direkte Anweisungen lassen sich leichter befolgen als
Vorschläge.

#### Erklären, warum ein Schritt wichtig ist

Begründungen lassen sich auf Grenzfälle übertragen, die das Verfahren nicht aufführt. Ein kurzes *weil wir
die Bestell-ID benötigen, um eine Erstattung auszustellen* hilft dem Agenten, Situationen zu bewältigen, die die Schritte nicht vorhergesehen haben.
Vermeiden Sie MUST in Großbuchstaben und starre Skripte, wenn eine einzeilige Erklärung dieselbe Aufgabe erfüllt.

#### Beschreiben, was zu tun ist, statt was vermieden werden soll

Beschreiben Sie das gewünschte Verhalten. *Wenn Sie die Bestellung nicht finden können, bitten Sie den Nutzer, die Bestell-
ID zu bestätigen* funktioniert besser als \_Erfinden Sie keine Bestelldetails \_. Bei Fehlern mit hohen Kosten fügen Sie zusätzlich
eine [Schutzmaßnahme](/docs/de/eleven-agents/best-practices/guardrails) hinzu.

#### Fakten in der Wissensdatenbank halten

Ein Verfahren beschreibt, was der Agent in einer Situation tun soll. Konkrete Informationen wie
Preise, Tarifdetails oder Öffnungszeiten gehören in die [Wissensdatenbank](/docs/de/eleven-agents/customization/knowledge-base).
Referenzieren Sie das Dokument aus dem Verfahren, das es benötigt. Statt beispielsweise jeden Tarifpreis im Verfahren aufzulisten,
schreiben Sie *Nennen Sie den Preis aus* und fügen Sie anschließend eine Inline-Referenz auf ein Preisdokument ein.

### Verfahren kombinieren

#### Ein Verfahren pro Situation schreiben

Wenn eine Situation auf mehrere enge Verfahren aufgeteilt ist, hat der Agent mehr Auslöser zur
Auswahl und startet häufiger das falsche Verfahren. Wenn zwei Verfahren bei derselben
Anfrage starten würden, führen Sie sie zusammen. Inhalte mit mehr als etwa 3.000 Zeichen decken meist mehr als eine
Situation ab.

#### Gemeinsame Schritte in ein Unterverfahren auslagern

Wenn dieselben Schritte in mehreren Verfahren vorkommen, etwa die Identitätsprüfung eines Kunden, das Nachschlagen
einer Bestellung oder die Eskalation an einen Mitarbeiter, lagern Sie sie in ein [Unterverfahren](#sub-procedures) aus und
referenzieren Sie es über das Slash-Menü aus jedem Verfahren, das es benötigt. Wenn Sie die gemeinsamen Schritte an einer
Stelle pflegen, bleiben alle Verfahren, die sie verwenden, konsistent.

#### Unterverfahren für reaktive Aktionen verwenden

Verwenden Sie ein Unterverfahren für eine Aktion, die der Agent nur ausführen soll, wenn ein anderes Verfahren sie anfordert,
etwa eine Identitätsprüfung oder Eskalation. Ohne Auslöser konkurriert es beim Gesprächsstart nicht mit Einstiegs-
verfahren. Weniger Auslöseroptionen halten die Weiterleitung fokussiert.

#### Tools aus dem Verfahren referenzieren, das sie verwendet

Referenzieren Sie ein Tool aus dem Verfahren, das es verwendet, statt es an den gesamten Agenten anzuhängen. Das
Tool bleibt dadurch aus nicht verwandten Gesprächen heraus. In einem Freiformverfahren ist das Tool
nur verfügbar, solange das Verfahren zu den fünf zuletzt gestarteten gehört. Siehe
[Einschränkungen](/docs/de/eleven-agents/customization/procedures#limitations).

#### Den System Prompt für globales Verhalten verwenden

Tonalität, Identität, Ablehnungsrichtlinien und Schutzmaßnahmen gehören in den [System Prompt](/docs/de/eleven-agents/best-practices/prompting-guide). Aufgabenspezifische Schritte gehören in
Verfahren.

#### Verfahren werden mit dem Agenten versioniert

Verfahren sind Teil der Agentenkonfiguration und werden daher gemeinsam als Snapshot gespeichert, wenn Sie eine
neue Agentenversion veröffentlichen. Um zu einer früheren Gruppe von Verfahren zurückzukehren, stellen Sie eine frühere Agenten-
version wieder her. Siehe [Agent-Versionierung](/docs/de/eleven-agents/operate/versioning).

#### Mit vorhandener Dokumentation starten

Wenn Ihr Team bereits SOPs hat, verwenden Sie den Importer, um daraus Entwürfe zu erstellen, und verfeinern Sie diese anschließend.