Zum Hauptinhalt springen
Diese Anleitung erklärt, wie man Agenten (Assistenten) von einem Langdock Workspace in einen anderen migriert, indem man die Agents API verwendet. Dies ist nützlich, wenn du Agenten-Konfigurationen über verschiedene Workspaces hinweg replizieren, Agenten während einer organisatorischen Umstrukturierung verschieben oder Backup-Kopien deiner Agenten erstellen möchtest.

Überblick

Der Migrationsprozess umfasst zwei Hauptschritte:
  1. Export: Abrufen der Agenten-Konfiguration aus dem Quell-Workspace mit der Agent Get API
  2. Import: Erstellen eines neuen Agenten im Ziel-Workspace mit der Agent Create API

Voraussetzungen

Bevor du beginnst, stelle sicher, dass du folgendes hast:
  1. Zwei API-Schlüssel mit AGENT_API Berechtigung:
    • Einen API-Schlüssel für den Quell-Workspace (wo der Agent aktuell existiert)
    • Einen API-Schlüssel für den Ziel-Workspace (wohin du den Agenten migrieren möchtest)
  2. Zugriff auf den Agenten: Dein Quell-Workspace API-Schlüssel muss Zugriff auf den Agenten haben, den du migrieren möchtest
  3. Übereinstimmende Ressourcen im Ziel-Workspace (falls zutreffend):
    • Das Modell muss nach der Migration manuell in der Langdock-Oberfläche angepasst werden
    • Wenn der Agent benutzerdefinierte Aktionen verwendet, müssen diese Integrationen im Ziel-Workspace aktiviert sein
    • Anhänge müssen separat hochgeladen werden (sie werden nicht automatisch übertragen)

Schritt 1: Agent aus dem Quell-Workspace exportieren

Verwende die Agent Get API, um die vollständige Konfiguration deines Agenten abzurufen:
const axios = require("axios");

async function getAgentFromSource(assistantId, sourceApiKey) {
  const response = await axios.get(
    "https://api.langdock.com/assistant/v1/get",
    {
      params: {
        assistantId: assistantId
      },
      headers: {
        Authorization: `Bearer ${sourceApiKey}`
      }
    }
  );

  return response.data.assistant;
}

Die Antwort verstehen

Die Get API gibt die vollständige Agenten-Konfiguration zurück, einschließlich:
  • name, description, instruction - Die Identität und der System-Prompt des Agenten
  • emojiIcon - Das Emoji-Icon, das für den Agenten angezeigt wird
  • temperature - Kreativitätseinstellung (0-1)
  • conversationStarters - Vorgeschlagene Prompts für Benutzer
  • inputType - Entweder “PROMPT” oder “STRUCTURED”
  • inputFields - Formularfeld-Definitionen (für STRUCTURED Eingabetyp)
  • webSearchEnabled, imageGenerationEnabled, codeInterpreterEnabled, canvasEnabled - Fähigkeits-Flags
  • actions - Benutzerdefinierte Integrations-Aktionen
  • attachments - UUIDs der angehängten Dateien

Schritt 2: Konfiguration transformieren

Die Get API-Antwort verwendet etwas andere Feldnamen als die Create API erwartet. Du musst die Felder mappen:
function transformForCreate(sourceAgent) {
  return {
    // Grundinformationen
    name: sourceAgent.name,
    description: sourceAgent.description || undefined,
    emoji: sourceAgent.emojiIcon || undefined,
    instruction: sourceAgent.instruction || undefined,
    
    // Einstellungen
    creativity: sourceAgent.temperature,
    inputType: sourceAgent.inputType,
    conversationStarters: sourceAgent.conversationStarters || [],
    
    // Fähigkeiten
    webSearch: sourceAgent.webSearchEnabled,
    imageGeneration: sourceAgent.imageGenerationEnabled,
    dataAnalyst: sourceAgent.codeInterpreterEnabled,
    canvas: sourceAgent.canvasEnabled,
    
    // Eingabefelder (für STRUCTURED Eingabetyp)
    inputFields: sourceAgent.inputFields || [],
    
    // Hinweis: actions und attachments erfordern spezielle Behandlung (siehe unten)
  };
}

Feld-Mapping Referenz

Get API AntwortfeldCreate API Anforderungsfeld
namename
descriptiondescription
emojiIconemoji
instructioninstruction
temperaturecreativity
inputTypeinputType
conversationStartersconversationStarters
webSearchEnabledwebSearch
imageGenerationEnabledimageGeneration
codeInterpreterEnableddataAnalyst
canvasEnabledcanvas
inputFieldsinputFields
actionsactions
attachmentsattachments

Schritt 3: Agent im Ziel-Workspace erstellen

Verwende die Agent Create API, um den Agenten im Ziel-Workspace zu erstellen:
async function createAgentInTarget(agentConfig, targetApiKey) {
  const response = await axios.post(
    "https://api.langdock.com/assistant/v1/create",
    agentConfig,
    {
      headers: {
        Authorization: `Bearer ${targetApiKey}`,
        "Content-Type": "application/json"
      }
    }
  );

  return response.data.assistant;
}

Vollständiges Migrations-Skript

Hier ist ein vollständiges Skript, das alle Schritte kombiniert:
const axios = require("axios");

// Konfiguration
const SOURCE_API_KEY = "dein-quell-workspace-api-schluessel";
const TARGET_API_KEY = "dein-ziel-workspace-api-schluessel";
const AGENT_ID_TO_MIGRATE = "550e8400-e29b-41d4-a716-446655440000";

async function migrateAgent() {
  try {
    // Schritt 1: Agent aus Quell-Workspace abrufen
    console.log("Agent aus Quell-Workspace abrufen...");
    const getResponse = await axios.get(
      "https://api.langdock.com/assistant/v1/get",
      {
        params: { assistantId: AGENT_ID_TO_MIGRATE },
        headers: { Authorization: `Bearer ${SOURCE_API_KEY}` }
      }
    );
    
    const sourceAgent = getResponse.data.assistant;
    console.log(`Agent gefunden: "${sourceAgent.name}"`);

    // Schritt 2: Konfiguration für Create API transformieren
    const createConfig = {
      name: sourceAgent.name,
      description: sourceAgent.description || undefined,
      emoji: sourceAgent.emojiIcon || undefined,
      instruction: sourceAgent.instruction || undefined,
      creativity: sourceAgent.temperature,
      inputType: sourceAgent.inputType,
      conversationStarters: sourceAgent.conversationStarters || [],
      webSearch: sourceAgent.webSearchEnabled,
      imageGeneration: sourceAgent.imageGenerationEnabled,
      dataAnalyst: sourceAgent.codeInterpreterEnabled,
      canvas: sourceAgent.canvasEnabled,
      inputFields: sourceAgent.inputFields || [],
      // Hinweis: actions und attachments ausgeschlossen - siehe "Spezialfälle behandeln"
    };

    // Undefined-Werte entfernen
    Object.keys(createConfig).forEach(key => {
      if (createConfig[key] === undefined) {
        delete createConfig[key];
      }
    });

    // Schritt 3: Agent im Ziel-Workspace erstellen
    console.log("Agent im Ziel-Workspace erstellen...");
    const createResponse = await axios.post(
      "https://api.langdock.com/assistant/v1/create",
      createConfig,
      {
        headers: {
          Authorization: `Bearer ${TARGET_API_KEY}`,
          "Content-Type": "application/json"
        }
      }
    );

    const newAgent = createResponse.data.assistant;
    console.log(`Migration erfolgreich!`);
    console.log(`Neue Agenten-ID: ${newAgent.id}`);
    console.log(`Agenten-Name: ${newAgent.name}`);
    
    return newAgent;

  } catch (error) {
    if (error.response) {
      console.error(`Fehler ${error.response.status}: ${JSON.stringify(error.response.data)}`);
    } else {
      console.error("Fehler:", error.message);
    }
    throw error;
  }
}

migrateAgent();

Spezialfälle behandeln

Aktionen (Benutzerdefinierte Integrationen)

Aktionen referenzieren Integrationen, die im Ziel-Workspace aktiviert sein müssen. Aktions-UUIDs sind spezifisch für das Integrations-Setup jedes Workspaces.
Schließe Aktionen von der initialen Migration aus und konfiguriere sie manuell im Ziel-Workspace, nachdem der Agent erstellt wurde.

Anhänge

Anhangs-UUIDs referenzieren Dateien, die im Quell-Workspace gespeichert sind. Diese Dateien werden nicht automatisch übertragen. Um Anhänge zu migrieren:
  1. Lade die Dateien aus dem Quell-Workspace herunter
  2. Lade sie erneut in den Ziel-Workspace mit der Upload Attachment API hoch
  3. Aktualisiere den Agenten mit den neuen Anhangs-UUIDs

OAuth-Verbindungen

Vorausgewählte OAuth-Verbindungen werden nicht über die API unterstützt. Benutzer müssen OAuth-Verbindungen nach der Migration über die Langdock-Oberfläche konfigurieren.

Mehrere Agenten migrieren

Um mehrere Agenten zu migrieren, durchlaufe einfach eine Liste von Agenten-IDs:
const AGENT_IDS = [
  "agent-uuid-1",
  "agent-uuid-2",
  "agent-uuid-3"
];

async function migrateMultipleAgents() {
  const results = [];
  
  for (const agentId of AGENT_IDS) {
    try {
      console.log(`\nMigriere Agent: ${agentId}`);
      const newAgent = await migrateAgent(agentId);
      results.push({ 
        sourceId: agentId, 
        targetId: newAgent.id, 
        status: "erfolgreich" 
      });
    } catch (error) {
      results.push({ 
        sourceId: agentId, 
        status: "fehlgeschlagen", 
        error: error.message 
      });
    }
  }
  
  console.log("\n=== Migrations-Zusammenfassung ===");
  console.table(results);
}

Checkliste nach der Migration

Überprüfe nach der Migration eines Agenten folgendes im Ziel-Workspace:
  • Agent erscheint in der Agenten-Liste mit korrektem Namen und Emoji
  • Beschreibung und Anweisungen wurden korrekt übertragen
  • Gesprächsstarter sind vorhanden
  • Fähigkeiten (Websuche, Bildgenerierung, etc.) sind korrekt aktiviert
  • Eingabefelder sind richtig konfiguriert (für STRUCTURED Eingabetyp)
  • OAuth-Verbindungen manuell über die Oberfläche konfigurieren
  • Erforderliche Dateien erneut hochladen und anhängen
  • Benutzerdefinierte Aktionen/Integrationen bei Bedarf konfigurieren
  • Agent testen, indem eine Nachricht gesendet wird

Einschränkungen

Behalte diese Einschränkungen bei der Planung deiner Migration im Hinterkopf:
  1. Anhänge werden nicht übertragen - Dateien müssen im Ziel-Workspace erneut hochgeladen werden
  2. Aktionen müssen möglicherweise neu konfiguriert werden - Integrations-Aktions-UUIDs sind workspace-spezifisch
  3. OAuth-Verbindungen erfordern manuelle Einrichtung - Können nicht über die API konfiguriert werden
  4. Modelle erfordern manuelle Anpassung - Der Agent verwendet das Standard-Modell des Workspaces; passe es nach der Migration manuell in der Oberfläche an
  5. Gesprächsverlauf wird nicht migriert - Nur die Agenten-Konfiguration wird übertragen
Langdock blockiert bewusst Browser-basierte Anfragen, um deinen API-Schlüssel zu schützen und die Sicherheit deiner Anwendungen zu gewährleisten. Weitere Informationen findest du in unserem Guide zu Best Practices für API-Schlüssel.