Code-Tools

Führen Sie benutzerdefinierte JavaScript-Logik direkt auf der Infrastruktur von ElevenLabs aus.

Code-Tools ermöglichen Ihrem Agenten, benutzerdefiniertes JavaScript in einer isolierten serverseitigen Umgebung auszuführen, ohne dass Sie einen eigenen Webhook-Endpunkt bereitstellen und hosten müssen. Schreiben Sie die Logik einmal im integrierten Code-Editor, und ElevenLabs führt sie aus, sobald der Agent das Tool aufruft.

Diese Funktion ist nur für Enterprise verfügbar.

Übersicht

Ein Code-Tool ist eine JavaScript-Funktion, die ausgeführt wird, wenn der Agent sie aufruft. Sie schreiben den gesamten Funktionsrumpf, sodass das Tool je nach Aufgabe mehr oder weniger leisten kann:

  • Benutzerdefinierte Berechnungen: Wenden Sie Preisregeln, Einheitenumrechnungen, Bewertungslogik oder Datumsberechnungen ausschließlich mit den Toolaufrufparametern an. Kein Netzwerkzugriff erforderlich.
  • Externe APIs aufrufen: Nutzen Sie fetch für zugelassene Domains; Workspace-Secrets und Authentifizierungsverbindungen werden in den Kontext der Funktion eingefügt.
  • Mehrere Quellen kombinieren: Rufen Sie zwei oder drei APIs auf und führen Sie deren Ergebnisse zusammen, vergleichen oder gleichen Sie sie ab, bevor Sie eine einzelne Antwort zurückgeben.
  • Bedingte Verzweigungen: Führen Sie abhängig von den Toolaufrufparametern unterschiedliche Logik aus, ohne für jeden Zweig ein separates Tool zu benötigen.
  • Daten umformen: Geben Sie genau die Struktur zurück, die der Agent sehen soll, statt einer unverarbeiteten Upstream-Antwort.

Für einen einzelnen externen API-Aufruf ohne benutzerdefinierte Logik sind Webhook- Tools meist einfacher einzurichten. Um Aktionen im Browser oder in der App eines Nutzers auszulösen, verwenden Sie stattdessen Client- Tools.

Funktionsweise

Ihr Code ist ein JavaScript-Modul, das eine einzelne asynchrone Standardfunktion exportiert. Die Funktion erhält ein ctx-Objekt und gibt das Ergebnis des Tools zurück:

export default async (ctx) => {
// ctx.args.<paramName> — the parameters the agent passed to this tool call
const { city } = ctx.args;
return { message: `Hello from ${city}!` };
};

Der zurückgegebene Wert wird zum Ergebnis des Tools. Er wird an den Agenten zurückgegeben, im Gesprächstranskript angezeigt und kann für die Zuweisung dynamischer Variablen verwendet werden.

Das ctx-Objekt

ctx ist Ihr Einstiegspunkt zu allem, worauf das Tool zum Zeitpunkt des Aufrufs zugreifen kann. Die vom Agenten bereitgestellten Parameter kommen immer in ctx.args an; Secrets, Konfigurationswerte und Authentifizierungsverbindungen sind optional und erscheinen nur, wenn Sie sie im Bereich Kontextobjekt des Tools zuordnen.

EigenschaftBeschreibung
ctx.argsDie Toolaufrufparameter, die der Agent bereitgestellt hat.
ctx.configEinfache String-Variablen, die Sie dem Kontext dieses Tools zugeordnet haben.
ctx.secretsWorkspace-Secrets, die Sie dem Kontext dieses Tools zur Verwendung in Anfrageheadern zugeordnet haben. Das Roh-Secret wird Ihrem Code nie offengelegt; die Einfügung erfolgt beim ausgehenden Aufruf und ausschließlich in den Headern.
ctx.auth_connectionsVerweise auf konfigurierte Authentifizierungsverbindungen, die Sie dem Kontext dieses Tools zugeordnet haben, zur Verwendung im Anfrageheader X-With-Auth-Connection. Die zugrunde liegende Berechtigung wird Ihrem Code nie offengelegt; die Einfügung erfolgt beim ausgehenden Aufruf und ausschließlich in den Headern.

Nur ctx.args ist für den Agenten sichtbar, wenn er das Tool aufruft. Secrets, Konfigurationswerte und Authentifizierungsverbindungen werden dem Agenten nie offengelegt.

Parameter konfigurieren

Parameter sind die Werte, die der Agent beim Aufruf des Tools bereitstellt, und sie kommen in ctx.args an. Definieren Sie sie im Bereich Parameter des Tool-Konfigurationsformulars oder im Code-Editor auf dem Tab Params im Untertab Define Params. Jeder Parameter benötigt einen Datentyp, eine Kennung und eine Beschreibung, anhand derer der Agent den richtigen Wert aus dem Gespräch bestimmt. Ihr Code liest diesen Wert über die Kennung, beispielsweise ctx.args.appointment_datetime unten.

Parameter eines Code-Tools definieren

Kontextobjekt konfigurieren

Fügen Sie Secrets, Konfigurationswerte und Authentifizierungsverbindungen im Bereich Kontextobjekt des Tools hinzu. Jeder Eintrag benötigt einen Typ und einen Namen. Das Panel zeigt für jeden Eintrag den genauen Accessor, beispielsweise ctx.secrets.DEMO_KEY unten.

Ein Workspace-Secret dem Kontextobjekt eines Code-Tools zuordnen

Netzwerkzugriff

Code, der in der Sandbox ausgeführt wird, kann nur Domains erreichen, die Ihr Workspace ausdrücklich zugelassen hat. Fügen Sie die Domains, die Ihr Code aufrufen muss, in den Allgemeinen Einstellungen Ihres Workspace unter Zugelassene Domains für Code-Tools hinzu. Eine Anfrage an jede andere Domain schlägt fehl.

Zum Bearbeiten der Liste Zugelassene Domains für Code-Tools sind Workspace-Administratorberechtigungen erforderlich.

Ausführungslimits

  • Timeout: Jeder Durchlauf muss innerhalb des konfigurierten Antwort-Timeouts des Tools abgeschlossen sein, zwischen 1 und 30 Sekunden.
  • Keine externen Pakete: Code-Tools werden derzeit ohne npm-Abhängigkeiten ausgeführt.

Code testen

Verwenden Sie vor dem Speichern im Code-Editor Run, um Ihren Code mit Beispielparameterwerten auszuführen:

  • Params — Legen Sie Testwerte für jeden Parameter fest, den Ihr Tool definiert.
  • Output — Sehen Sie das zurückgegebene Ergebnis oder den Fehler, falls die Ausführung fehlgeschlagen ist.
  • Logs — Sehen Sie alles, was mit console.log, console.warn oder console.error geschrieben wurde, sowie Build- und Ausführungszeiten.

Anleitung

In dieser Anleitung erstellen wir ein Code-Tool, das eine Temperatur umrechnet und einen formatierten, verständlichen String zurückgibt:

1

Neues Code-Tool erstellen

Wählen Sie im Bereich Agent auf der Einstellungsseite Ihres Agenten Add Tool. Wählen Sie Code als Tool-Typ und legen Sie dann einen Namen und eine Beschreibung fest:

FeldWert
Nameconvert_temperature
BeschreibungRechnet eine Temperatur zwischen Celsius und Fahrenheit um
2

Parameter definieren

Fügen Sie zwei Parameter hinzu, damit das LLM weiß, welche Werte es bereitstellen muss:

DatentypKennungErforderlichBeschreibung
numbervaluetrueDer umzurechnende Temperaturwert
stringfrom_unittrueDie Ausgangseinheit: "C" oder "F"
3

Code schreiben

Öffnen Sie den Code-Editor und ersetzen Sie den Standardquellcode durch:

export default async (ctx) => {
const { value, from_unit } = ctx.args;
if (from_unit === "C") {
const fahrenheit = (value * 9) / 5 + 32;
return { result: `${value}°C is ${fahrenheit.toFixed(1)}°F` };
}
const celsius = ((value - 32) * 5) / 9;
return { result: `${value}°F is ${celsius.toFixed(1)}°C` };
};

Verwenden Sie Run mit einigen Beispielwerten (z. B. value: 100, from_unit: "C"), um die Ausgabe vor dem Speichern zu bestätigen.

4

Orchestrierung

Aktualisieren Sie den System-Prompt Ihres Agenten, damit er weiß, wann er das Tool verwenden soll:

System prompt
When the user asks to convert a temperature, call convert_temperature with the
value and its unit ("C" or "F"), and read back the result naturally.
5

Testen

Starten Sie ein Gespräch und versuchen Sie Folgendes:

Wie viel sind 100 Grad Celsius in Fahrenheit?

Der Agent sollte das Tool aufrufen und den umgerechneten Wert wiedergeben.

Authentifizierungsbeispiele

Eine API mit einem Secret aufrufen

export default async (ctx) => {
const { order_id } = ctx.args;
const response = await fetch(`https://api.example.com/orders/${order_id}`, {
headers: {
Authorization: `Bearer ${ctx.secrets.EXAMPLE_API_KEY}`,
},
});
if (!response.ok) {
throw new Error(`Upstream error: ${response.status}`);
}
return await response.json();
};

Ordnen Sie EXAMPLE_API_KEY im Bereich Kontextobjekt des Tools einem Workspace-Secret zu und fügen Sie dann api.example.com unter Zugelassene Domains für Code-Tools hinzu, damit die Anfrage ausgehen darf. Der referenzierte Wert ist ein Platzhalter: Das tatsächliche Secret wird beim ausgehenden Aufruf in den Header eingefügt und ist für Ihren Code nie sichtbar.

Eine API mit einer OAuth-Authentifizierungsverbindung aufrufen

export default async (ctx) => {
const { customer_id } = ctx.args;
const response = await fetch(`https://api.example.com/customers/${customer_id}`, {
headers: {
"X-With-Auth-Connection": ctx.authConnections.EXAMPLE_CRM,
},
});
if (!response.ok) {
throw new Error(`Upstream error: ${response.status}`);
}
return await response.json();
};

Ordnen Sie EXAMPLE_CRM im Bereich Kontextobjekt des Tools einer konfigurierten Authentifizierungsverbindung zu. Der referenzierte Wert ist ein Platzhalter: Die tatsächliche Berechtigung wird beim ausgehenden Aufruf in den Header eingefügt und ist für Ihren Code nie sichtbar.

Best Practices

Tools intuitiv benennen und detailliert beschreiben

Wenn der Assistent nicht die richtigen Tools aufruft, müssen Sie möglicherweise Tool-Namen und Beschreibungen anpassen, damit der Assistent besser versteht, wann er welches Tool auswählen soll. Vermeiden Sie Abkürzungen oder Akronyme, um Namen von Tools und Argumenten zu verkürzen.

Sie können auch detailliert beschreiben, wann ein Tool aufgerufen werden soll. Bei komplexen Tools sollten Sie jedes Argument beschreiben, damit der Assistent weiß, welche Informationen er vom Nutzer abfragen muss.

Tool-Parameter intuitiv benennen und detailliert beschreiben

Verwenden Sie klare und aussagekräftige Namen für Tool-Parameter. Geben Sie gegebenenfalls in der Beschreibung das erwartete Format eines Parameters an, zum Beispiel YYYY-mm-dd oder dd/mm/yy für ein Datum.

Erwägen Sie, im System-Prompt Ihres Assistenten zusätzliche Informationen dazu bereitzustellen, wie und wann Tools aufgerufen werden sollen

Klare Anweisungen in Ihrem System-Prompt können die Genauigkeit von Tool-Aufrufen deutlich verbessern. Leiten Sie den Assistenten beispielsweise mit Anweisungen wie den folgenden an:

Use `check_order_status` when the user inquires about the status of their order, such as 'Where is my order?' or 'Has my order shipped yet?'.

Geben Sie bei komplexen Szenarien Kontext an. Zum Beispiel:

Before scheduling a meeting with `schedule_meeting`, check the user's calendar for availability using check_availability to avoid conflicts.

LLM-Auswahl

Bei der Verwendung von Tools empfehlen wir leistungsstarke Modelle wie GPT 5.2, Gemini-2.5-Flash oder Claude Sonnet 4.5 und raten von Gemini-2.0-Flash ab.

Die Wahl des LLM ist entscheidend für den Erfolg von Funktionsaufrufen. Einige LLMs haben Schwierigkeiten, die relevanten Parameter aus der Unterhaltung zu extrahieren.