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
PoetryPaketierungs- und Abhängigkeitsmanagement-Tool muss in der lokalen Umgebung installiert sein. UmPoetryzu 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.
- Einige Vorlagen erfordern eine korrekt vorbereitete Konfigurationsdatei (
config.toml). Wenn eine heruntergeladene Vorlageconfig.tomlmit 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.tomlzu 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-cliwird 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.envzu verwenden. Die Datei.envmuss 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 vonibm-watsonx-ai-cliwird 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:
Erstellen Sie die Vorlage in Ihrer IDE:
watsonx-ai template newAuf 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.
Navigieren Sie zum Vorlagenverzeichnis:
cd <template directory> cp config.toml.example config.tomlPassen 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.Testen Sie den Vorlagencode:
watsonx-ai template invoke "<your query>"Erstellen Sie einen Dienst:
watsonx-ai service newWenn der Dienst bereitgestellt wird, gibt
ibm-watsonx-ai-clidie 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 alsdeployment_idin die Dateiconfig.tomlein. Wenn Sie dies nicht tun, müssen Sie die Bereitstellungs-ID jedes Mal angeben, wenn Sie Ihren bereitgestellten Dienst aufrufen.Testen Sie den Dienst
watsonx-ai service invoke "<your query>"
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:
Erstellen Sie eine Anwendung in Ihrer IDE:
watsonx-ai app newAuf 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.
Wechseln Sie in das App-Verzeichnis und kopieren Sie Ihre Umgebungsvariablendatei:
cd <created folder with the app> cp template.env .envBearbeiten 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 dieWATSONX_BASE_DEPLOYMENT_URLverwenden Sie die URL für den Endpunkt eines bereitgestellten Dienstes.Starten Sie die App:
watsonx-ai app runWenn 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 --devWenn 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