0 / 0
Zurück zur englischen Version der Dokumentation
Aufbau von agentengesteuerten Arbeitsabläufen mit der Chat-API
Letzte Aktualisierung: 09. Dez. 2024
Aufbau von agentengesteuerten Arbeitsabläufen mit der Chat-API

Verwenden Sie die watsonx.ai mit Foundation-Modellen, die Tool-Calling unterstützen, um agentengesteuerte Anwendungen zu erstellen.

Agentische Anwendungen ermöglichen es einem foundation model, als Agent zu fungieren, der den Fluss der Interaktion mit dem Benutzer steuert. Sie legen die Parameter der Interaktion fest, einschließlich der Werkzeuge, die das foundation model verwenden kann, aber Sie überlassen es dem foundation model, den nächsten besten Schritt auf der Grundlage des aktuellen Stands der Interaktion zu entscheiden. Der Werkzeugaufruf wird manchmal auch als Funktionsaufruf bezeichnet.

In einem realen Arbeitsablauf möchten Sie vielleicht immer ein Werkzeug zu Beginn jeder Interaktion aufrufen. Im weiteren Verlauf des Austauschs möchten Sie vielleicht verschiedene Aufforderungen verwenden, je nachdem, wie der Benutzer Folgefragen zu einer Aufgabe beantwortet. Oder Sie möchten verschiedene Tools von Drittanbietern aufrufen, die zur Vervollständigung des Arbeitsablaufs erforderlich sind. Sie können diese Optionen festlegen und dann das foundation model entscheiden lassen, welche Eingabeaufforderung zurückgegeben oder welches Werkzeug verwendet werden soll, wenn der richtige Zeitpunkt gekommen ist.

Eine App für die Reservierung eines Restaurants muss beispielsweise die folgenden Informationen erfassen und dann eine Reservierung erstellen:

  • Standort
  • Anzahl der Gäste
  • Datum und Uhrzeit

Die Reihenfolge, in der die Informationen gesammelt werden, spielt nur in einigen Lokalen eine Rolle, in denen die Anzahl der Gäste pro Tisch begrenzt ist oder in denen bei schönem Wetter mehr Sitzplätze im Freien zur Verfügung stehen. Sie können diese Bedingungen im Code berücksichtigen und das foundation model bestimmen lassen, wann zusätzliche Tools, wie z. B. eine Wetter-App eines Drittanbieters, aufgerufen werden sollen, bevor der Agent eine Reservierungsanfrage abschließt.

Unterstützte Stiftungsmodelle

Wenn Sie einen agentenbasierten Workflow aufbauen, wählen Sie ein foundation model, das die folgenden Anforderungen erfüllt:

  • Erledigt Chat-Aufgaben
  • Unterstützt Werkzeugaufrufe
  • Kann die nächste Aktion wählen

Foundation-Modelle mit den folgenden Modell-IDs können verwendet werden, um verschiedene Tools im Rahmen eines Konversations-Workflows mit der Chat-API aufzurufen:

  • ibm/granite-3-2b-instruct
  • ibm/granite-3-8b-instruct
  • meta-llama/llama-3-1-70b-instruct
  • meta-llama/llama-3-1-8b-instruct
  • meta-llama/llama-3-2-11b-vision-instruct
  • meta-llama/llama-3-2-1b-instruct
  • meta-llama/llama-3-2-90b-vision-instruct
  • meta-llama/llama-3-3-70b-instruct
  • meta-llama/llama-3-405b-instruct
  • mistral-large

Um programmgesteuert eine Liste der Foundation-Modelle zu erhalten, die Tool-Aufrufe aus der Chat-API unterstützen, geben Sie den Parameter filters=task_function_calling an, wenn Sie eine Anforderung zur Methode „Liste der verfügbaren Foundation-Modelle“ senden.

Siehe die API-Referenz.

Beispiel:

curl -X GET \
  'https://{region}.ml.cloud.ibm.com/ml/v1/foundation_model_specs?version=2024-10-10&filters=task_function_calling'

Sie können diese Basismodelle von watsonx.ai oder von Tools von Drittanbietern, wie CrewAI, ableiten. CrewAI ist ein Python für die Entwicklung agentenbasierter Anwendungen. Weitere Informationen finden Sie in der CrewAI.

Beispielnotebooks

Die folgenden Beispiel-Notizbücher sind verfügbar:

API-Details

Einzelheiten zu API-Methoden finden Sie in der API-Referenzdokumentation .

Beispiel für eine Anfrage zum Aufrufen von Werkzeugen

Das folgende Beispiel definiert zwei Werkzeuge, eine Funktion für Addition und eine Funktion für Multiplikation. Das Beispiel übermittelt Benutzereingaben an das foundation model und lässt das Modell auswählen, welches Werkzeug zur Beantwortung der Frage verwendet werden soll.

Im folgenden Beispiel ersetzen Sie die Variable " {url} durch den richtigen Wert für Ihren Fall, z. B. " us-south.ml.cloud.ibm.com. Fügen Sie Ihr eigenes Inhaber-Token und Ihre Projekt-ID hinzu.

curl -X POST \
  'https://{url}/ml/v1/text/chat?version=2024-10-08' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer eyJraWQiOi...'
  --data '{
      "model_id": "mistralai/mistral-large",
      "project_id": "4947c695-a374-428c-acca-332c1a1dc9e9",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": "What is 2 plus 4?"
            }
          ]
        }
      ],
      "tools": [
        {
          "type": "function",
          "function": {
            "name": "add",
            "description": "Adds the values a and b to get a sum.",
            "parameters": {
              "type": "object",
              "properties": {
                "a": {
                  "description": "A number value",
                  "type": "float"
                },
                "b": {
                  "description": "A number value",
                  "type": "float"
                }
              },
              "required": [
                "a",
                "b"
              ]
            }
          }
        },
        {
          "type": "function",
          "function": {
          "name": "multiply",
            "description": "Multiplies the values a and b.",
            "parameters": {
              "type": "object",
              "properties": {
                "a": {
                  "description": "A number value",
                  "type": "float"
                },
                "b": {
                  "description": "A number value",
                  "type": "float"
                }
              },
              "required": [
                "a",
                "b"
              ]
            }
          }
        }
      ],
      "tool_choice_option": "auto",
      "max_tokens": 300,
      "time_limit": 1000
      }'

Die Beispielausgabe zeigt, dass das Modell, in diesem Fall mistral-large, in der Lage ist, das richtige Werkzeug für die Aufgabe zu wählen, nämlich die Funktion ' add.

{
  "id": "chat-a00942a130e84f83bc0090c38c2f419f",
  "model_id": "mistralai/mistral-large",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "tool_calls": [
          {
            "id": "chatcmpl-tool-77cbe4e94d88489383a0c6ed1b644674",
            "type": "function",
            "function": {
              "name": "add",
              "arguments": "{\"a\": 2, \"b\": 4}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ],
  "created": 1728413314,
  "model_version": "2.0.0",
  "created_at": "2024-10-08T18:48:34.818Z",
  "usage": {
    "completion_tokens": 25,
    "prompt_tokens": 189,
    "total_tokens": 214
  },
  "system": {
    "warnings": [
      {
        "message": "This model is a Non-IBM Product governed by a third-party license that may impose use restrictions and other obligations. By using this model you agree to its terms as identified in the following URL.",
        "id": "disclaimer_warning",
        "more_info": "https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models.html?context=wx"
      }
    ]
  }
}

Beispiel für einen Werkzeugaufruf mit granite-3-2b-instruct

Die folgende Anfrage definiert zwei Werkzeuge, eine Funktion für Addition und eine Funktion für Multiplikation, und fragt das foundation model, welches Werkzeug verwendet werden soll.

Die Granite können Werkzeuge besser aufrufen, wenn Sie eine Systemaufforderung mit der Anfrage bereitstellen. Es wird die folgende Systemaufforderung verwendet:

Sie sind ein hilfsbereiter Assistent mit Zugang zu den folgenden Funktionsaufrufen. Ihre Aufgabe ist es, eine Folge von Funktionsaufrufen zu erstellen, die notwendig sind, um eine Antwort auf die Benutzeräußerung zu erzeugen. Verwenden Sie bei Bedarf die folgenden Funktionsaufrufe. Die Ausgabe des Werkzeugaufrufs MUSS das folgende JSON-Format einhalten: <|tool_call|>[{"name":func_name1", "arguments": {"argument1": "value1", "argument2": "value2"},... (weitere Werkzeugaufrufe nach Bedarf)]. Wenn kein Funktionsaufruf erforderlich ist, antworten Sie bitte direkt auf die Benutzernachricht.

Im folgenden Beispiel ersetzen Sie die Variable " {url} durch den richtigen Wert für Ihren Fall, z. B. " us-south.ml.cloud.ibm.com. Fügen Sie Ihr eigenes Inhaber-Token und Ihre Projekt-ID hinzu.

curl -X POST \
  'https://{url}/ml/v1/text/chat?version=2024-10-08' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer eyJraWQiOi...'

Der Körper der Anfrage enthält den folgenden JSON-Ausschnitt:

{
  "model_id": "ibm/granite-3-2b-instruct",
  "project_id": "4947c695-a374-428c-acca-332c1a1dc9e9",
  "messages": [
    {
      "role":"system",
      "content":[
        {
          "type":"text",
          "text":"<|start_of_role|>system<|end_of_role|>You are a helpful assistant with access to the following function calls. Your task is to produce a sequence of function calls necessary to generate response to the user utterance. Use the following function calls as required. The tool calling output MUST adhere to the following JSON format: <|tool_call|>[{\"name\": \"func_name1\", \"arguments\": {\"argument1\": \"value1\", \"argument2\": \"value2\"}},... (more tool calls as required)]. If no function call is needed, please directly reply to the user message.<|end_of_text|>"
      }
      ]
    },
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "What is 2 plus 4?"
        }
      ]
    }
  ],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "add",
        "description": "Adds the values a and b to get a sum.",
        "parameters": {
          "type": "object",
          "properties": {
            "a": {
              "description": "A number value",
              "type": "float"
            },
            "b": {
              "description": "A number value",
               "type": "float"
            }
          },
          "required": [
            "a",
            "b"
          ]
        }
      }
    },
    {
      "type": "function",
      "function": {
        "name": "multiply",
        "description": "Multiplies the values a and b.",
        "parameters": {
          "type": "object",
          "properties": {
            "a": {
              "description": "A number value",
              "type": "float"
            },
            "b": {
              "description": "A number value",
               "type": "float"
            }
          },
          "required": [
            "a",
            "b"
          ]
        }
      }
    }
  ],
  "tool_choice_option": "auto",
  "max_tokens": 300,
  "time_limit": 10000
}

Das foundation model ist in der Lage, das richtige Werkzeug zur Beantwortung der Anfrage auszuwählen.

Die Antwort sieht wie folgt aus:

{
  "id": "chat-9eb3284f12c94256a3271180bdf6b6d2",
  "model_id": "ibm/granite-3-2b-instruct",
  "model": "ibm/granite-3-2b-instruct",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "tool_calls": [
          {
            "id": "chatcmpl-tool-6cd1758c5caf4f058c63188a7c7b78fb",
            "type": "function",
            "function": {
              "name": "add",
              "arguments": "{\"a\": 2, \"b\": 4}"
            }
          }
        ]
      },
      "finish_reason": "tool_calls"
    }
  ],
  "created": 1733504510,
  "model_version": "1.0.0",
  "created_at": "2024-12-06T17:01:50.321Z",
  "usage": {
    "completion_tokens": 23,
    "prompt_tokens": 383,
    "total_tokens": 406
  }
}

Weitere Informationen

Übergeordnetes Thema: Kodierung generativer KI-Lösungen

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen