In diesem Artikel stellen wir Ihnen Folgendes vor.
Teil 1: Vier neue Klassen von Snaps für LLM -Funktionsaufrufe: Funktionsgenerator, Toolaufruf, Funktionsergebnisgenerator und Message Appender, die speziell für Toolaufrufe entwickelt wurden.
Teil 2: Die Funktionsaufruf-Pipeline, um zu demonstrieren, wie die neuen Funktionsaufruf-Snaps zusammenarbeiten, um LLM -Funktionsaufrufe auszuführen.
Teil 3: Verwendung von PipeLoop Snap zur Orchestrierung von Agent-Pipelines: Rufen Sie die Function Calling-Pipeline iterativ auf, bis das Modell ein Endergebnis generiert oder andere Beendigungsbedingungen erfüllt, um agentenbasierte Workflows auszuführen.
Teil 1: Vorstellung von 4 neuen Snap-Klassen für den Aufruf von Tools
Funktionsgenerator-Snap: Erstellen Sie eine Funktionsdefinition.
Tool Calling Snap: Sendet eine Tool-Aufrufanforderung an das Modell, um die Antwort des LLM -Modells abzurufen.
Funktion „Ergebnis-Snap“: Formatiert das Ergebnis der Tool-Ausführung, das an das LLM zurückgesendet werden soll.
Message Appender Snap: Fügt die Tool-Ergebnisse an das Payload-Array der Nachrichten an.
Funktionsgenerator-Snap
Der Funktionsgenerator-Snap erleichtert die Erstellung einer Werkzeugdefinition, sodass das Modell die verfügbaren Werkzeuge verstehen und nutzen kann.

Beispielausgabe:
[
{
"tools": [
{
"sl_type": "function",
"name": "get_current_weather",
"description": "Get the curent weather in a given location",
"parameters": [
{
"name": "location",
"type": "STRING",
"description": "The city and state, e.g. San Francisco, CA",
"required": true
},
{
"name": "unit",
"type": "STRING",
"enum": [
"celcius",
"fahrenheit"
],
"required": false
}
]
}
]
}
]
Werkzeugaufruf-Snap
Das Tool Calling Snap leitet Benutzereingaben und Werkzeugspezifikationen an das Modell weiter. APIund erhält im Gegenzug die vom Modell generierte Ausgabe.

Dieser Snap hat zwei Ausgabeansichten:
Die erste Ansicht gibt aus
die vollständige Antwort des Modells
die vollständige Nutzlast der Nachricht, einschließlich der aktuellen Antwort des Modells
Die zweite Ansicht gibt aus
die Liste der aufzurufenden Tools
Im OpenAI und Azure OpenAI Tool Calling Snap, einem JSON Argumentfeld hinzugefügt, dessen Wert ein JSON- Objekt ist, das aus der Konvertierung des stringformatierten Arguments des Antwort-Toolaufrufs des Modells abgeleitet wird.

Beispiel-Eingabe:
[
{
"tools": [
{
"sl_type": "function",
"name": "get_current_weather",
"description": "Get the curent weather in a given location",
"parameters": [
{
"name": "location",
"type": "STRING",
"description": "The city and state, e.g. San Francisco, CA",
"required": true
},
{
"name": "unit",
"type": "STRING",
"enum": [
"celcius",
"fahrenheit"
],
"required": false
}
]
}
],
"original": {
"messages": [
{
"content": "You are a helpful assistant.",
"sl_role": "USER"
}
],
"original": {
"prompt": "You are a helpful assistant.",
"original": {
"prompt": "What's the weather in San Francisco?"
}
}
}
}
]
Beispielausgabe – LLM-Antwortansicht:
[
{
"output": {
"message": {
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
}
},
"stopReason": "tool_use",
"usage": {
"inputTokens": 272,
"outputTokens": 90,
"totalTokens": 362
},
"metrics": {
"latencyMs": 1905
},
"messages": [
{
"role": "user",
"content": [
{
"text": "What's the weather in San Francisco?"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
}
],
"original": {
"tools": [
{
"sl_type": "function",
"name": "get_current_weather",
"description": "Get the curent weather in a given location",
"parameters": [
{
"name": "location",
"type": "STRING",
"description": "The city and state, e.g. San Francisco, CA",
"required": true
},
{
"name": "unit",
"type": "STRING",
"enum": [
"celcius",
"fahrenheit"
],
"required": false
}
]
}
],
"original": {
"messages": [
{
"content": "What's the weather in San Francisco?",
"sl_role": "USER"
}
],
"original": {
"prompt": "You are a helpful assistant.",
"original": {
"prompt": "What's the weather in San Francisco?"
}
}
}
}
}
]
Beispielausgabe – Ansicht „Toolaufrufe“:
[
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
Funktion Ergebnisgenerator Snap
Der Function Result Generator Snap formatiert die von benutzeraufgerufenen Funktionen generierten Ergebnisse in eine benutzerdefinierte Datenausgabestruktur, die innerhalb von SnapLogic definiert ist.
Verschiedene Modelle haben unterschiedliche Anforderungen an den Datentyp der Inhalt Feld. Zum Beispiel: Fundament Converse erfordert, dass Inhalt ein stringoder ein json, OpenAI erfordert, dass Inhalte stringnur. Der Snap wandelt den Inhalt des Benutzers in eine Zeichenkette um, wenn das Format im Feld nicht unterstützt wird.

Beispiel-Eingabe:
[
{
"content": [
{
"location": {
"name": "San Francisco",
"region": "California",
"country": "United States of America",
"lat": 37.775,
"lon": -122.4183,
"tz_id": "America/Los_Angeles",
"localtime_epoch": 1728429316,
"localtime": "2024-10-08 16:15"
},
"current": {
"last_updated_epoch": 1728429300,
"last_updated": "2024-10-08 16:15",
"temp_c": 17.3,
"temp_f": 63.1,
"is_day": 1,
"condition": {
"text": "Sunny",
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"code": 1000
},
"wind_mph": 9.8,
"wind_kph": 15.8,
"wind_degree": 261,
"wind_dir": "W",
"pressure_mb": 1012,
"pressure_in": 29.89,
"precip_mm": 0,
"precip_in": 0,
"humidity": 88,
"cloud": 0,
"feelslike_c": 17.3,
"feelslike_f": 63.1,
"windchill_c": 17,
"windchill_f": 62.6,
"heatindex_c": 17,
"heatindex_f": 62.6,
"dewpoint_c": 13.7,
"dewpoint_f": 56.7,
"vis_km": 13,
"vis_miles": 8,
"uv": 2.3,
"gust_mph": 17.9,
"gust_kph": 28.8
}
}
],
"original": {
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
}
]
Beispielausgabe:
[
{
"sl_role": "TOOL",
"function_id": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"is_error": false,
"content": {
"location": {
"name": "San Francisco",
"region": "California",
"country": "United States of America",
"lat": 37.775,
"lon": -122.4183,
"tz_id": "America/Los_Angeles",
"localtime_epoch": 1728429316,
"localtime": "2024-10-08 16:15"
},
"current": {
"last_updated_epoch": 1728429300,
"last_updated": "2024-10-08 16:15",
"temp_c": 17.3,
"temp_f": 63.1,
"is_day": 1,
"condition": {
"text": "Sunny",
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"code": 1000
},
"wind_mph": 9.8,
"wind_kph": 15.8,
"wind_degree": 261,
"wind_dir": "W",
"pressure_mb": 1012,
"pressure_in": 29.89,
"precip_mm": 0,
"precip_in": 0,
"humidity": 88,
"cloud": 0,
"feelslike_c": 17.3,
"feelslike_f": 63.1,
"windchill_c": 17,
"windchill_f": 62.6,
"heatindex_c": 17,
"heatindex_f": 62.6,
"dewpoint_c": 13.7,
"dewpoint_f": 56.7,
"vis_km": 13,
"vis_miles": 8,
"uv": 2.3,
"gust_mph": 17.9,
"gust_kph": 28.8
}
}
}
]
Nachrichten-Appender-Snap
Der Message Appender Snap fügt die Ergebnisse der Tool-Ausführungen zur Nachrichtenliste hinzu und dient als Eingabe für nachfolgende Tool-Aufrufe.

Beispiel-Eingabe – Erste Eingabe Ansicht – Meldungen
[
{
"output": {
"message": {
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
}
},
"stopReason": "tool_use",
"usage": {
"inputTokens": 272,
"outputTokens": 90,
"totalTokens": 362
},
"metrics": {
"latencyMs": 1905
},
"messages": [
{
"role": "user",
"content": [
{
"text": "What's the weather in San Francisco?"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
}
],
"original": {
"tools": [
{
"sl_type": "function",
"name": "get_current_weather",
"description": "Get the curent weather in a given location",
"parameters": [
{
"name": "location",
"type": "STRING",
"description": "The city and state, e.g. San Francisco, CA",
"required": true
},
{
"name": "unit",
"type": "STRING",
"enum": [
"celcius",
"fahrenheit"
],
"required": false
}
]
}
],
"original": {
"messages": [
{
"content": "What's the weather in San Francisco?",
"sl_role": "USER"
}
],
"original": {
"prompt": "You are a helpful assistant.",
"original": {
"prompt": "What's the weather in San Francisco?"
}
}
}
}
}
]
Beispiel-Eingabe – Zweite Eingabe Ansicht – Werkzeug Ergebnis
[
{
"sl_role": "TOOL",
"function_id": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"is_error": false,
"content": {
"location": {
"name": "San Francisco",
"region": "California",
"country": "United States of America",
"lat": 37.775,
"lon": -122.4183,
"tz_id": "America/Los_Angeles",
"localtime_epoch": 1728429316,
"localtime": "2024-10-08 16:15"
},
"current": {
"last_updated_epoch": 1728429300,
"last_updated": "2024-10-08 16:15",
"temp_c": 17.3,
"temp_f": 63.1,
"is_day": 1,
"condition": {
"text": "Sunny",
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"code": 1000
},
"wind_mph": 9.8,
"wind_kph": 15.8,
"wind_degree": 261,
"wind_dir": "W",
"pressure_mb": 1012,
"pressure_in": 29.89,
"precip_mm": 0,
"precip_in": 0,
"humidity": 88,
"cloud": 0,
"feelslike_c": 17.3,
"feelslike_f": 63.1,
"windchill_c": 17,
"windchill_f": 62.6,
"heatindex_c": 17,
"heatindex_f": 62.6,
"dewpoint_c": 13.7,
"dewpoint_f": 56.7,
"vis_km": 13,
"vis_miles": 8,
"uv": 2.3,
"gust_mph": 17.9,
"gust_kph": 28.8
}
}
}
]
Beispielausgabe
[
{
"output": {
"message": {
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
}
},
"stopReason": "tool_use",
"usage": {
"inputTokens": 272,
"outputTokens": 90,
"totalTokens": 362
},
"metrics": {
"latencyMs": 1905
},
"messages": [
{
"role": "user",
"content": [
{
"text": "What's the weather in San Francisco?"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
},
{
"sl_role": "TOOL",
"function_id": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"is_error": false,
"content": {
"location": {
"name": "San Francisco",
"region": "California",
"country": "United States of America",
"lat": 37.775,
"lon": -122.4183,
"tz_id": "America/Los_Angeles",
"localtime_epoch": 1728429316,
"localtime": "2024-10-08 16:15"
},
"current": {
"last_updated_epoch": 1728429300,
"last_updated": "2024-10-08 16:15",
"temp_c": 17.3,
"temp_f": 63.1,
"is_day": 1,
"condition": {
"text": "Sunny",
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"code": 1000
},
"wind_mph": 9.8,
"wind_kph": 15.8,
"wind_degree": 261,
"wind_dir": "W",
"pressure_mb": 1012,
"pressure_in": 29.89,
"precip_mm": 0,
"precip_in": 0,
"humidity": 88,
"cloud": 0,
"feelslike_c": 17.3,
"feelslike_f": 63.1,
"windchill_c": 17,
"windchill_f": 62.6,
"heatindex_c": 17,
"heatindex_f": 62.6,
"dewpoint_c": 13.7,
"dewpoint_f": 56.7,
"vis_km": 13,
"vis_miles": 8,
"uv": 2.3,
"gust_mph": 17.9,
"gust_kph": 28.8
}
}
}
],
"original": {
"tools": [
{
"sl_type": "function",
"name": "get_current_weather",
"description": "Get the curent weather in a given location",
"parameters": [
{
"name": "location",
"type": "STRING",
"description": "The city and state, e.g. San Francisco, CA",
"required": true
},
{
"name": "unit",
"type": "STRING",
"enum": [
"celcius",
"fahrenheit"
],
"required": false
}
]
}
],
"original": {
"messages": [
{
"content": "What's the weather in San Francisco?",
"sl_role": "USER"
}
],
"original": {
"prompt": "You are a helpful assistant.",
"original": {
"prompt": "What's the weather in San Francisco?"
}
}
}
}
}
]
Durch die Nutzung der vier neuen Snaps können wir Pipelines erstellen, die LLM- Funktionsaufrufe unterstützen. Diese werden wir als „Function Calling Pipelines” bezeichnen.
Teil 2: Beispiel für eine Funktionsaufruf-Pipeline
Diese Pipeline zeigt, wie die neuen Snaps zum Aufrufen von LLM- Funktionen verwendet werden können.

Einrichtung
Wir werden die folgenden vier Snaps für den Aufruf der LLM- Funktion verwenden:
Funktionsgenerator-Snap
Werkzeugaufruf-Snap
Funktion Ergebnisgenerator Snap
Nachrichten-Appender-Snap
Die Funktionsaufruf-Pipeline umfasst zwei Tools als Pipelines:
get_current_weather ( mit PipeExec)
Diese Pipeline ruft Wetterinformationen für einen bestimmten Standort ab.
Pipeline-Einrichtung

Ein HTTP Client, der eine Verbindung zum weatherapi-Endpunkt herstellt
Ein Mapper, der die JSON -Ausgabe an das Inhaltsfeld übergibt
foo_tool
Ein Spielzeug-Tool, das „foo“ als Ergebnis ausgibt und zur Demonstration der Multi-Tool-Aufrufmöglichkeiten dient.
Pipeline-Einrichtung

Ein Mapper, der „foo“ in der Inhaltsausgabe ausgibt.
Ausführungsablauf

Der Ausführungsablauf dieser Pipeline umfasst die folgenden Schritte:
Der Benutzer gibt die Eingabeaufforderung (in einer Nachrichten-Nutzlast verpackt) in einem JSON-Generator-Snap ein, erstellt mit dem Funktionsgenerator-Snap Werkzeugdefinitionen, die dann über den Werkzeugaufruf-Snap an das LLM gesendet werden.
Die Ansicht „Chat-Abschlüsse“ des Tool Calling Snap gibt die Antwort des LLM aus und fügt die aktuelle Antwort des LLM in die Nachrichten-Nutzlast ein. Sie ist zur Verarbeitung mit dem ersten Eingang des Message Appender Snap verbunden. Die Ansicht „Tool-Aufrufe“ ist mit einem Router verbunden, um Tool-Aufrufe an die einzelnen Tools weiterzuleiten.
Die Tools werden aufgerufen, dann werden die Ergebnisse vom Function Result Generator Snap formatiert.
Der Message Appender Snap sammelt alle Toolaufrufergebnisse und hängt sie an das Nachrichtenarray aus der Ansicht „Chat-Abschlüsse “ des Tool Calling Snap an. Anschließend gibt er das geänderte Nachrichtenarray aus.
Die Ausgabe des Message Appender enthält den Nachrichtenverlauf aus der Benutzeraufforderung, die Antworten des LLM-Modells und die Ausgabe des Toolaufrufs, die das Ende dieser Runde des Toolaufrufs markiert.
Teil 3: Agent-Pipelines
Um LLM -Funktionsaufruf-Pipelines oder LLM -Agent-Pipelines zu orchestrieren, führen wir zwei Muster als Pipelines ein, um diese Funktionalität zu ermöglichen.
Agent-Treiber-Pipeline
Die Agent Driver Pipeline nutzt PipeLoop Snap, um iterative Ausführungen in einer einzigen Pipeline zu ermöglichen. Die Eingabeaufforderung wird definiert und dann an die Agent Worker Pipeline (eine Function Calling Pipeline) gesendet. Die Ausgabe der Function Calling Pipeline wird dann gesammelt und erneut als zweite Iterationseingabe der Function Calling Pipeline gesendet. Die Iteration wird fortgesetzt, bis die in PipeLoop festgelegte Stoppbedingung erreicht ist oder das Iterationslimit erreicht ist.

Agent-Arbeiter-Pipeline
Die Agent Worker Pipeline ähnelt einer Function Calling Pipeline, mit dem einzigen Unterschied, dass die Nachrichten-Nutzlast von der Agent Driver Pipeline über PipeLoop Snap statt über einen JSON Generator Snap gesendet wird.

Beispiel für eine Agent-Pipeline – get_weather
Dieses Beispiel zeigt einen Assistenten zur Wetterüberprüfung. Dieser Agent ist mit einem einzigen Tool ausgestattet – get_weather, das die Wetterdaten eines bestimmten Ortes abruft.
Agent-Treiber-Pipeline
In diesem Beispiel gibt der Benutzer eine Nutzlast wie unten angegeben ein, um nach dem Wetter an einem bestimmten Ort zu fragen. (Dies wird mithilfe eines JSON -Generators namens Snap simuliert.)
{ "prompt": "What's the weather in San Francisco?" }
Die Systemaufforderung für diesen Wetterassistenten wird dann im ersten Aufforderungsgenerator definiert.
„Sie sind ein hilfsbereiter Wetterassistent, der Fragen zum Wetter eines bestimmten Ortes beantwortet. Sie erhalten ein Tool, mit dem Sie das Wetter des Ortes überprüfen können.“
Die Benutzeraufforderung für diesen Fall ist einfach die Aufforderungsnutzlast vom Benutzer, die wir über den PipeLoop Snap an die Agent Worker Pipeline weiterleiten. Wir stoppen die PipeLoop-Ausführung, wenn der Grund für die Beendigung des LLM stop oder end_turn (abhängig vom LLM-Modell)
Agent-Arbeiter-Pipeline
In der Agent Worker Pipeline umfasst der Ablauf die folgenden Schritte
Erste Iteration:
Erstellen Sie Funktionsdefinitionen für die aufzurufenden Tools. In diesem Fall die Funktion get_weather.
Übergeben Sie die Nachrichten-Nutzlast (System- und Benutzeraufforderungen) und die Tool-Nutzlast (Funktionsdefinitionen) an den Tool Calling Snap. Der Tool Calling Snap entscheidet dann, ob ein Tool aufgerufen oder ein Ergebnis generiert wird. Im ersten Fall gibt er eine Tool-Aufrufentscheidung zurück, die von der Pipeline verarbeitet wird.
[
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]- Die Worker-Pipeline teilt sich dann in zwei Zweige auf. Der erste Zweig leitet die Nachrichten-Nutzlast dieser Runde an den Message Appender Snap weiter, und der zweite Zweig leitet die Tool-Aufforderungsanfrage an das Tool weiter, um einen Aufruf auszulösen und die Wetterdaten für San Francisco abzurufen.
Das Ergebnis des Toolaufrufs wird vom Function Result Generator Snap erfasst und formatiert und anschließend an den Message Appender Snap weitergeleitet, damit das Ergebnis des Toolaufrufs in die Message Payload aufgenommen werden kann. In dieser Runde ist der Grund für den Abschluss des LLM ist
tool_use, was bedeutet, dass die Ausführung fortgesetzt werden soll und die Ausgabe des Message Appender direkt an den Eingang der Agent Worker Pipeline gesendet wird.
Ausgabe des Message Appenders
[
{
"output": {
"message": {
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
}
},
"stopReason": "tool_use",
"usage": {
"inputTokens": 272,
"outputTokens": 90,
"totalTokens": 362
},
"metrics": {
"latencyMs": 1905
},
"messages": [
{
"role": "user",
"content": [
{
"text": "What's the weather in San Francisco?"
}
]
},
{
"role": "assistant",
"content": [
{
"text": "Okay, let's get the current weather for San Francisco."
},
{
"toolUse": {
"toolUseId": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"name": "get_current_weather",
"input": {
"location": "San Francisco, CA",
"unit": "fahrenheit"
}
}
}
]
},
{
"sl_role": "TOOL",
"function_id": "tooluse_YOLmGccxRGWPmCKqxAKvgw",
"is_error": false,
"content": {
"location": {
"name": "San Francisco",
"region": "California",
"country": "United States of America",
"lat": 37.775,
"lon": -122.4183,
"tz_id": "America/Los_Angeles",
"localtime_epoch": 1728429316,
"localtime": "2024-10-08 16:15"
},
"current": {
"last_updated_epoch": 1728429300,
"last_updated": "2024-10-08 16:15",
"temp_c": 17.3,
"temp_f": 63.1,
"is_day": 1,
"condition": {
"text": "Sunny",
"icon": "//cdn.weatherapi.com/weather/64x64/day/113.png",
"code": 1000
},
"wind_mph": 9.8,
"wind_kph": 15.8,
"wind_degree": 261,
"wind_dir": "W",
"pressure_mb": 1012,
"pressure_in": 29.89,
"precip_mm": 0,
"precip_in": 0,
"humidity": 88,
"cloud": 0,
"feelslike_c": 17.3,
"feelslike_f": 63.1,
"windchill_c": 17,
"windchill_f": 62.6,
"heatindex_c": 17,
"heatindex_f": 62.6,
"dewpoint_c": 13.7,
"dewpoint_f": 56.7,
"vis_km": 13,
"vis_miles": 8,
"uv": 2.3,
"gust_mph": 17.9,
"gust_kph": 28.8
}
}
}
],
"original": {
"tools": [
{
"sl_type": "function",
"name": "get_current_weather",
"description": "Get the curent weather in a given location",
"parameters": [
{
"name": "location",
"type": "STRING",
"description": "The city and state, e.g. San Francisco, CA",
"required": true
},
{
"name": "unit",
"type": "STRING",
"enum": [
"celcius",
"fahrenheit"
],
"required": false
}
]
}
],
"original": {
"messages": [
{
"content": "What's the weather in San Francisco?",
"sl_role": "USER"
}
],
"original": {
"prompt": "You are a helpful assistant.",
"original": {
"prompt": "What's the weather in San Francisco?"
}
}
}
}
}
]
Zweite Iteration:
Die aktualisierte Nachrichtennutzlast wird dann zusammen mit den Funktionsdefinitionen erneut an den Tool Calling Snap gesendet. Der Tool Calling Snap für diese Runde generiert dann ein Ergebnis, da er die Wetterdaten für San Francisco abgerufen hat. Die Tool Call-Ausgabe des Tool Calling Snap ist für diese Runde leer, da für diese Iteration keine Tool-Aufrufe erforderlich sind.
Die Nachrichten-Nutzlast wird direkt an den Message Appender Snap gesendet, und der Grund für den Abschluss des LLM ist
end_turn, was bedeutet, dass die LLM hat die Anfrage erfolgreich ausgeführt. Die Ausführung von PipeLoop wird beendet und das Ergebnis wird an die Ausgabe des PipeLoop Snap in der Agent Driver Pipeline gesendet.
Und die Ausführung ist abgeschlossen.
Zusammenfassung
In diesem Artikel haben wir die neuen Snaps für den Tool-Aufruf vorgestellt – Funktionsgenerator, Tool-Aufruf, Funktionsergebnisgenerator und Message Appender. Wir haben auch darüber gesprochen, wie man Tool-Aufruf-Pipelines und Agent-Pipeline-Muster erstellt. Viel Spaß beim Erstellen!


