> 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.

# Procedurer i fri form

## Översikt

En fritextprocedur beskriver en uppgift på enkelt, naturligt språk. Agenten tolkar instruktionerna och anpassar formulering och ordning efter situationen. En fritextprocedur kan anropa verktyg (inklusive systemverktyg som att avsluta ett samtal), söka upp kunskapsbasdokument och kedja vidare till andra procedurer.

## När du ska använda en fritextprocedur

Använd en fritextprocedur när agenten kan anpassa formulering och ordning efter situationen och du vill skapa den snabbt med vanligt språk. Information om hur den jämförs med strukturerade procedurer, arbetsflöden och systemprompten finns i [När du ska använda procedurer](/docs/sv/eleven-agents/customization/procedures#when-to-use-procedures).

## En procedurs delar

Här är en återbetalningsprocedur i redigeraren:

![Exempel på återbetalningsprocedur](/docs/_fern-img/e1264b7a4f94403453087d30ef0894e72d412ba69378e6b8cb1b675e53e887b7.webp)

En procedur har två huvuddelar: en utlösare och innehåll. Båda kan innehålla infogade referenser till andra resurser, som visas i skärmbilden ovan som taggar med skiftnyckelikoner. Varje procedur har också ett namn som visas i dashboarden.

### Namn

En kort etikett som identifierar proceduren i dashboarden. Namnet skickas aldrig till LLM:en, så det påverkar inte agentens beteende.

### Utlösare

En beskrivning av när agenten ska använda proceduren, till exempel *När användaren ber om att få en beställning återbetald*.

Lämna utlösaren tom endast när du skapar en [underprocedur](#sub-procedures).

### Innehåll

Procedurens huvudtext, skriven i markdown. Innehållet beskriver vad agenten ska göra: ställa en fråga, slå upp en beställning, anropa ett verktyg eller avsluta samtalet. Det kan vara en numrerad följd av steg att följa eller allmän vägledning för situationen. Varje steg eller riktlinje kan vara en enda mening (*Be användaren om deras beställnings-ID*) eller ett kort stycke som förklarar vad som ska göras och varför.

Använd numrerade steg för åtgärder i följd och punktlistor för krav eller delpunkter inom ett steg.

### Infogade referenser

Procedurer kan referera till olika typer av resurser direkt i texten:

* Verktyg (t.ex. slå upp en beställning, debitera ett kort, avsluta samtalet, överföra till en människa)
* Kunskapsbasdokument
* Andra procedurer

Använd infogade referenser när ett steg kräver att agenten använder ett verktyg, ett kunskapsbasdokument eller en annan procedur. Referenser kopplar automatiskt resursen till proceduren så att agenten kan använda den. Vanliga omnämnanden i text (som *använd kalkylatorverktyget här*) fungerar också, men bara om resursen redan är kopplad till agenten.

Infoga en referens genom att skriva `/` i utlösaren eller innehållet och välja resursen från snedstrecksmenyn. Referenser visas som klickbara taggar i redigeraren. Klicka på en tagg för att öppna den underliggande resursen och bekräfta dess konfiguration.

När du skriver fritextinnehåll via API:et infogar du referenser med följande syntax:

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

En infogad procedurreferens måste använda en procedur från samma agent. Se [Begränsningar](/docs/sv/eleven-agents/customization/procedures#limitations) för information om agentomfattning och dupliceringsbeteende.

En referens i utlösaren gör att proceduren kan köras baserat på en resurs utdata, till exempel *När `get_user` returnerar nivån 'gold'*. En referens i innehållet instruerar agenten att anropa eller konsultera resursen i det steget.

![Snedstrecksmeny i procedurredigeraren](/docs/_fern-img/8625ffec0f5584619e6ccb97720fd86f2e8d3cd0061308ad87b57f176e5535e3.webp)

Om en refererad resurs senare tas bort, eller om ditt konto förlorar åtkomsten till den, visas taggen som trasig. Märket **Fel** högst upp i redigeraren listar dessa referenser: *ogiltig* om resursen inte längre finns, eller *otillgänglig* om den finns men ditt konto inte har åtkomst. Öppna märket för att se vilket steg som påverkas och åtgärda eller ta bort referensen.

![Feldialog som listar ogiltiga referenser](/docs/_fern-img/e9ec6b19be2992da80a726883baf53265a5d5b38621373cd7e60375c944674cd.webp)

## Underprocedurer

En underprocedur har en tom utlösare. Agenten kan bara köra den från en annan procedur som refererar till den.

Använd underprocedurer för att [dela steg](#composing-procedures) inom en agent och minska antalet procedurer som är tillgängliga samtidigt. Ge startproceduren en utlösare, referera till relaterade underprocedurer från dess innehåll och lämna deras utlösare tomma.

En underprocedur för eskalering kan innehålla stegen för att lämna över samtalet till en människa. Referera till den från procedurerna för återbetalning och avbokning och lämna dess utlösare tom. Agenten kan eskalera som ett steg i båda procedurerna, men utanför dem förblir underproceduren otillgänglig.

## Importera från ett dokument

Du kan börja med en befintlig standardprocedur (SOP). Välj **Från SOP** i procedurlistans **+**-meny och ladda sedan upp en fil.

Format som stöds: `PDF`, `DOCX`, `TXT`, `MD`, `HTML`, `EPUB`. Filer måste vara högst 20 MB.

Importverktyget analyserar dokumentet, identifierar upp till 10 separata procedurer och skapar ett utkast för var och en med ett genererat namn, en utlösare och innehåll. Öppna varje utkast för att förfina det. Om dokumentet innehåller fler än 10 SOP:er delar du upp det i mindre filer innan du laddar upp det.

![Dialogruta för att ladda upp SOP](/docs/_fern-img/716601fc90dea757e23971e5aabe063e6a66fc0f75878247dc9f1fc3011f5197.webp)

## Hantera en fritextprocedur

#### Skapa via dashboarden

Öppna din agent i [dashboarden](https://elevenlabs.io/app/agents) och välj sedan **Procedurer**.
Använd **+** för att skapa en fritextprocedur. Lägg till en utlösare och skriv instruktionerna i
innehållsredigeraren. Publicera sedan agentändringarna.

#### Hantera via API:et

Fritextprocedurer lagrar markdown i `content`.

### Förutsättningar

* En ElevenLabs API-nyckel i miljövariabeln `ELEVENLABS_API_KEY`.
* Mål-`agent_id` och `branch_id`. Se [Agentversionering](/docs/sv/eleven-agents/operate/versioning) för åtgärder med grenar.
* Version `2.60.0` eller senare av Python-paketet `elevenlabs` eller JavaScript-paketet `@elevenlabs/elevenlabs-js`.

Procedurutkast är [per användare, per gren](/docs/sv/eleven-agents/operate/versioning#drafts). Publicering sparar dina procedurändringar
i en ny agentversion på den grenen. Andra användares utkast påverkas inte.

### Skapa ett utkast

```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\"]."
  }'
```

Svaret innehåller det nya `procedure_id`. Uppdatera utkastet genom att anropa
`PATCH /procedures/{procedure_id}/draft` med `name`, `content`, `type` och en uttrycklig
`trigger`.

Använd en icke-tom `trigger` för en startprocedur. Använd en tom sträng för en
[underprocedur](#sub-procedures).

### Publicera ändringarna

Uppdatera agenten på grenen för att publicera dina fritextprocedurutkast i en ny version.
Begäran behöver inga fält i brödtexten; publiceringen använder utkasten som de är.

```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 '{}'
```

Se [Hantera procedurer](/docs/sv/eleven-agents/customization/procedures#manage-procedures) för
information om att ta bort och förkasta utkast, eller
[API-referensen för procedurer](/docs/sv/api-reference/agents/procedures/) för kompletta
endpointscheman.

## Bästa praxis

> **Tip**
>
> Agenten måste välja rätt procedur utifrån dess utlösare och följa innehållet. Mer kapabla
> modeller gör detta mer tillförlitligt när antalet procedurer ökar. Se
> [Modeller](/docs/sv/eleven-agents/customization/llm) för alternativ.

Att skriva bra procedurer innebär att skriva två delar väl: en utlösare som kör proceduren när den ska köras, och innehåll som agenten kan följa.

### Skriva utlösare

#### Håll utlösare konkreta och separata

Överlappande eller vaga utlösare kan göra att fel procedur körs. Föredra *När användaren ber om att
avsluta en prenumeration* framför \_När användaren har en fråga om sitt konto \_.

#### Skriv ur användarens perspektiv

Beskriv vad användaren ber om, inte vad agenten ska göra. Utlösare som formuleras som agentåtgärder
är mindre tillförlitliga.

#### Täck hur användare faktiskt frågar

En snäv utlösare kan missa verkliga förfrågningar när användaren uttrycker sig annorlunda. Inkludera
variationerna som användaren kan säga. *När användaren ber om återbetalning, vill returnera eller få tillbaka pengar för en
beställning* körs mer tillförlitligt än \_När användaren begär en återbetalning \_.

### Skriva innehåll

#### Använd imperativ

Skriv steg som instruktioner till agenten: *Slå upp kundens senaste beställning* i stället för \_Du
bör slå upp kundens senaste beställning \_. Direkta instruktioner är enklare att följa än
förslag.

#### Förklara varför ett steg är viktigt

Resonemang kan tillämpas på specialfall som proceduren inte räknar upp. Ett kort *eftersom vi behöver
beställnings-ID:t för att utfärda en återbetalning* hjälper agenten att hantera situationer som stegen inte förutsåg.
Undvik krav med enbart versaler och rigida manus när en förklaring på en rad gör samma jobb.

#### Håll varje procedur fokuserad på en uppgift

Om en procedur börjar förgrena sig till orelaterade resultat delar du upp den i mindre procedurer och
låter agenten dirigera mellan dem.

### Sätta ihop procedurer

#### Bryt ut delade steg till en egen procedur

Om samma steg förekommer i flera procedurer (verifiera en kunds identitet, slå
upp en beställning, eskalera till en människa), bryter du ut dem till en särskild procedur och refererar till den
från var och en som behöver den via snedstrecksmenyn. Att underhålla de delade stegen på ett ställe gör
alla procedurer som använder dem konsekventa.

#### Använd underprocedurer för reaktiva åtgärder

Använd en underprocedur för en åtgärd som agenten bara ska köra när en annan procedur begär den,
som identitetsverifiering eller eskalering. Utan utlösare konkurrerar den inte med startprocedurer
när samtalet börjar. Färre val av utlösare håller dirigeringen fokuserad.

#### Använd systemprompten för globalt beteende

Ton, identitet, policyer för att avböja och skyddsräcken hör hemma i [systemprompten](/docs/sv/eleven-agents/best-practices/prompting-guide). Lägg uppgiftsspecifika steg i
procedurer.

#### Procedurer versioneras med agenten

Procedurer är en del av agentens konfiguration, så de sparas tillsammans när du publicerar en
ny agentversion. Återställ en tidigare agentversion för att gå tillbaka till en tidigare uppsättning procedurer.
Se [Agentversionering](/docs/sv/eleven-agents/operate/versioning).

#### Börja med befintlig dokumentation

Om ditt team redan har SOP:er använder du importverktyget för att omvandla dem till utkast och förfinar dem sedan.