Kodierung und Bereitstellung von KI-Diensten mit ibm- watsonx -ai-cli

Verwenden Sie das Paket ibm-watsonx-ai-cli Python, um AI-Dienste aus Ihrer lokalen Umgebung herunterzuladen, zu bearbeiten, zu testen und bereitzustellen.

Durch die Verwendung von ibm-watsonx-ai-cli können Sie je nach Ihren Bedürfnissen:

  • Testen Sie einen KI-Dienst lokal, ohne ihn zu implementieren, indem Sie Argumente an eine Vorlage übergeben, die in Ihre lokale Umgebung heruntergeladen wurde.
  • Stellen Sie einen KI-Dienst in watsonx.ai bereit und testen Sie ihn dann lokal, indem Sie dem bereitgestellten Dienst Argumente übergeben.
  • Laden Sie eine App, die auf einem KI-Dienst basiert, herunter, stellen Sie sie bereit und testen Sie sie.

Voraussetzungen:

  • Python 3.11
  • Das Poetry Paketierungs- und Abhängigkeitsmanagement-Tool muss in der lokalen Umgebung installiert sein. Um Poetry zu installieren, folgen Sie den Anweisungen auf der Seite zur Installation von Poetry.

Um mit KI-Servicevorlagen in Ihrer lokalen Umgebung arbeiten zu können, müssen Sie zunächst ibm-watsonx-ai-cli installieren. Um ibm-watsonx-ai-cli zu installieren, geben Sie diesen Befehl auf Ihrem lokalen Rechner ein: pip install -U ibm-watsonx-ai-cli.

Wichtig:
  • Einige Vorlagen erfordern eine korrekt vorbereitete Konfigurationsdatei (config.toml). Wenn eine heruntergeladene Vorlage config.toml mit Platzhaltern enthält, lesen Sie ihre Beschreibung sorgfältig durch und füllen Sie die erforderlichen Felder aus.
  • Aus Sicherheitsgründen wird empfohlen, Ihren API-Schlüssel oder andere Geheimnisse nicht direkt in Ihren Skripten oder in der Datei config.toml zu verschlüsseln. Richten Sie sie stattdessen als Umgebungsvariablen ein und greifen Sie dann über Ihren Code auf die Variablen zu. Beispiel: WATSONX_APIKEY = os.environ.get("WATSONX_APIKEY", "").
  • Seit der Version 0.2.0 von ibm-watsonx-ai-cli wird empfohlen, für die Übergabe des API-Schlüssels oder anderer Geheimnisse, die für die Authentifizierung in IBM watsonx.ai erforderlich sind, die Datei .env zu verwenden. Die Datei .env muss sich in dem Pfad befinden, von dem aus die cli-Befehle aufgerufen werden.
  • Der Ordner dist , der die Quellcode-Verteilung der Vorlage enthält, wird lokal erstellt, wenn das Asset der Paketerweiterung vorbereitet wird. Ab der Version 0.3.0 von ibm-watsonx-ai-cli wird dieser Ordner automatisch gelöscht, nachdem der KI-Dienstinhalt erfolgreich bereitgestellt wurde.

Beispielablauf für die Bereitstellung eines KI-Dienstes

Wie Sie KI-Dienstvorlagen mithilfe von ibm-watsonx-ai-cli bereitstellen, erfahren Sie in diesem Beispielablauf:

  1. Erstellen Sie die Vorlage in Ihrer IDE:

    watsonx-ai template new
    

    Auf Ihrem Bildschirm wird eine Liste der verfügbaren Vorlagen angezeigt. Geben Sie die Nummer ein, die mit der Vorlage verbunden ist, mit der Sie arbeiten möchten. Geben Sie dann den Namen des zu erstellenden Ordners ein.

  2. Navigieren Sie zum Vorlagenverzeichnis:

    cd <template directory>
    cp config.toml.example config.toml
    
  3. Passen Sie den Code der Vorlage an und bearbeiten Sie die Datei config.toml , um die Platzhalter zu aktualisieren valuesFor Einfacher Zugriff auf einige der erforderlichen Variablen, siehe die Seite Zugang für Entwickler.

  4. Testen Sie den Vorlagencode:

    watsonx-ai template invoke "<your query>"
    
  5. Erstellen Sie einen Dienst:

    watsonx-ai service new
    

    Wenn der Dienst bereitgestellt wird, gibt ibm-watsonx-ai-cli die ID der Bereitstellung zurück. Wenn Sie möchten, dass diese ID beim Aufrufen des bereitgestellten Dienstes als Standardeinsatz-ID verwendet wird, fügen Sie sie als deployment_id in die Datei config.toml ein. Wenn Sie dies nicht tun, müssen Sie die Bereitstellungs-ID jedes Mal angeben, wenn Sie Ihren bereitgestellten Dienst aufrufen.

  6. Testen Sie den Dienst

    watsonx-ai service invoke "<your query>"
    
Hinweis:

Wenn Sie Ihren Dienst lokal mit einer grafischen Benutzeroberfläche testen möchten, installieren Sie die React UI App. Weitere Informationen finden Sie unter watsonx.ai AI Service UI app

Beispielablauf für die Erstellung einer App, die auf einer KI-Dienstvorlage basiert

Um Anwendungen zu erstellen, die auf KI-Dienstvorlagen basieren, verwenden Sie ibm-watsonx-ai-cli. Sehen Sie sich diesen Beispielablauf an:

  1. Erstellen Sie eine Anwendung in Ihrer IDE:

    watsonx-ai app new
    

    Auf Ihrem Bildschirm wird eine Liste der verfügbaren Anwendungen angezeigt. Geben Sie die Nummer ein, die mit der App verbunden ist, mit der Sie arbeiten möchten. Geben Sie dann den Namen des zu erstellenden Ordners ein.

  2. Wechseln Sie in das App-Verzeichnis und kopieren Sie Ihre Umgebungsvariablendatei:

    cd <created folder with the app>
    cp template.env .env
    
  3. Bearbeiten Sie die Datei .env , um die Platzhalterwerte zu aktualisieren. Einen einfachen Zugang zu einigen der erforderlichen Variablen finden Sie auf der Seite Zugang für Entwickler. Für die WATSONX_BASE_DEPLOYMENT_URL verwenden Sie die URL für den Endpunkt eines bereitgestellten Dienstes.

  4. Starten Sie die App:

    watsonx-ai app run
    

    Wenn Sie Änderungen am Quellcode der Anwendung vornehmen möchten, während die Anwendung läuft, können Sie die Anwendung auch im Entwicklungsmodus starten:

    watsonx-ai app run --dev
    

    Wenn eine Anwendung im Entwicklungsmodus ausgeführt wird, wird die Anwendung jedes Mal neu geladen, wenn Sie Ihre Änderungen speichern.

Beispielablauf für die Ausführung des Befehls eval

Verwenden Sie den Befehl eval , um zu prüfen, wie ein Agent auf einem bestimmten Datensatz arbeitet. Sie können mehrere Benchmarking-Dateien in einen einzigen eval Befehl einbinden. Die Ergebnisse werden für jede Datei separat berechnet.

Der Befehl eval bietet mehrere Metriken, die gleichzeitig verwendet werden können, um die Leistung des Agenten zu bewerten. Um weitere Informationen über die verfügbaren Metriken zu erhalten, führen Sie aus:

watsonx-ai template eval --help

Für die Metriken answer_similarity und answer_relevance können Sie einen LLM als Richter einsetzen. Sie können entweder die ID des Modells angeben (das Modell muss in Ihrer Cloud-Umgebung verfügbar sein) oder das Schlüsselwort llm_as_judge verwenden (in diesem Fall wird eines von zwei vordefinierten Modellen verwendet).

Hier ist ein Beispiel für die Verwendung des Befehls eval :

watsonx-ai template eval --tests test1.jsonl,test2.jsonl --metrics answer_similarity,answer_relevance --evaluator llm_as_judge

Hier ist ein einzelnes Ergebnis für eine Metrik:

{
  "name": "answer_similarity",
  "method": "llm_as_judge",
  "provider": "unitxt",
  "value": 0.6333333333333333,
  "errors": null,
  "additional_info": null,
  "group": "answer_quality",
  "thresholds": [
    {
      "type": "lower_limit",
      "value": 0.7
    }
  ],
  "min": 0.0,
  "max": 1.0,
  "mean": 0.6333333333333333,
  "total_records": 3,
  "record_level_metrics": [
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 1.0,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "c6ffedaa-b2b1-4ece-bbe6-0d680a470a12",
      "record_timestamp": null
    },
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 0.9,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "f5c15bfc-80a8-4095-a2c3-54ae1c21dc23",
      "record_timestamp": null
    },
    {
      "name": "answer_similarity",
      "method": "llm_as_judge",
      "provider": "unitxt",
      "value": 0.0,
      "errors": null,
      "additional_info": null,
      "group": "answer_quality",
      "thresholds": [
        {
          "type": "lower_limit",
          "value": 0.7
        }
      ],
      "record_id": "f7dda69a-fd54-4b80-a966-2198c44109d8",
      "record_timestamp": null
    }
  ]
}

Weitere Informationen

Für weitere Einzelheiten siehe