OpenAI API (Function Calling), LangChain Agents advanced coding 90% Usefulness

Implementierung von Agentic Workflows mit Function Calling

Lerne, wie man Large Language Models (LLMs) mit externen Werkzeugen (Funktionen) ausstattet, um komplexe, mehrstufige Aufgaben autonom auszuführen. Dies erweitert die Fähigkeiten von LLMs über reines Textgenerieren hinaus und ermöglicht die Interaktion mit der realen Welt.

Originalvideo ansehen: Sara Imari Walker "AI is Life" | Simulations, the Universe ...
3 Schritte
1

Definiere die Werkzeuge (Tools), die das LLM verwenden soll.

Jedes Werkzeug ist eine Funktion, die eine spezifische Aufgabe ausführt (z.B. Wetter abfragen, Datenbank durchsuchen, E-Mail senden). Beschreibe die Funktion und ihre Parameter klar in einem Schema (z.B. JSON Schema).

```python
import json

def get_current_weather(location: str, unit: str = "celsius"):
    """Get the current weather in a given location"""
    # Hier würde die tatsächliche API-Anfrage stattfinden
    if location == "Berlin":
        return {"temperature": "20", "unit": unit, "description": "Sonnig"}
    return {"temperature": "unknown", "unit": unit, "description": "unbekannt"}

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "Ruft das aktuelle Wetter für einen bestimmten Ort ab",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string", "description": "Der Ort, z.B. Berlin"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        },
    }
]
```
Tipp: Die Beschreibungen der Funktionen sind entscheidend, da das LLM diese nutzt, um zu entscheiden, wann welches Tool aufgerufen werden soll.
2

Initialisiere das LLM mit den Werkzeugen.

Verwende ein LLM, das Function Calling unterstützt (z.B. OpenAI GPT-Modelle). Übergebe die definierten Werkzeuge an das Modell zusammen mit der Benutzeranfrage.

```python
from openai import OpenAI

client = OpenAI()

# Sende die Benutzeranfrage und die Werkzeugdefinitionen an das Modell
messages = [{"role": "user", "content": "Wie ist das Wetter in Berlin?"}]
response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=messages,
    tools=tools,
    tool_choice="auto", # Lässt das Modell entscheiden, ob es ein Tool nutzen soll
)
```
Tipp: Setze `tool_choice` auf `auto`, damit das Modell selbstständig entscheidet, ob ein Tool aufgerufen werden muss.
3

Verarbeite die Modellantwort und führe bei Bedarf die Werkzeuge aus.

Wenn das Modell einen Werkzeugaufruf vorschlägt, extrahiere den Funktionsnamen und die Argumente. Führe die entsprechende Funktion aus und sende das Ergebnis zurück an das Modell, damit es seine Antwort formulieren kann.

```python
response_message = response.choices[0].message
tool_calls = response_message.tool_calls

if tool_calls:
    # Hier würde die Logik zur Ausführung der Funktion(en) stehen
    # Für unser Beispiel:
    function_name = tool_calls[0].function.name
    function_args = json.loads(tool_calls[0].function.arguments)
    
    # Führe die Funktion basierend auf dem Namen aus
    if function_name == "get_current_weather":
        function_response = get_current_weather(
            location=function_args.get("location"),
            unit=function_args.get("unit")
        )
        # Sende das Ergebnis des Tools zurück an das Modell
        messages.append(response_message)
        messages.append(
            {
                "tool_call_id": tool_calls[0].id,
                "role": "tool",
                "name": function_name,
                "content": json.dumps(function_response),
            }
        )
        second_response = client.chat.completions.create(
            model="gpt-3.5-turbo",
            messages=messages,
        )
        print(second_response.choices[0].message.content)
```
Tipp: Für komplexere Agenten und Multi-Step-Reasoning-Fähigkeiten solltest du Frameworks wie LangChain oder LlamaIndex nutzen, die diese Orchestrierung vereinfachen und eine robustere Fehlerbehandlung bieten.
Warnung: Stelle sicher, dass die ausgeführten Funktionen sicher sind und keine unerwünschten Nebenwirkungen haben, da das LLM sie autonom aufrufen kann.
← Alle Playbooks anzeigen