Zum Hauptinhalt springen

Anwendungsfälle

Mit der Function Calling-Funktion kann das Modell mit externen Tools interagieren, Echtzeitinformationen abrufen oder bestimmte Aktionen ausführen. Diese Funktion verbessert die Datenpräzision und erweitert gleichzeitig die Fähigkeiten des Modells, sodass es nicht nur einfachen Text generiert, sondern dynamischere und praktischere Anwendungsszenarien unterstützt. Beispiele für Anwendungsfälle von Function Calling:
  • Dynamische Informationsabfragen: Durch den Aufruf von APIs werden dynamische Daten wie Wetter, Nachrichten oder Aktienkurse in Echtzeit aus externen Systemen abgerufen. Beispielsweise kann eine Wetter-API aufgerufen werden, um aktuelle Wetterinformationen zu erhalten. Wenn ein Nutzer nach dem aktuellen Wetter fragt, kann das Modell die Wetterlage in diesem Moment mitteilen, statt eine veraltete Wettervorhersage bereitzustellen.
  • Automatisierung von Aufgaben: Durch Funktionsaufrufe können bestimmte Aktionen ausgeführt werden, sodass Nutzer über eine Konversation automatisierte Vorgänge im Hintergrund auslösen können. Beispielsweise kann die API einer Ticketplattform aufgerufen werden, um Eintrittskarten zu buchen. Wenn ein Nutzer fragt, wie er Tickets für eine Sehenswürdigkeit kaufen kann, erklärt das Modell nicht nur den Buchungsprozess, sondern kann den Kauf direkt für den Nutzer abschließen.

Unterstützte Modelle

Die folgenden Modelle unterstützen Function Calling:

Verwendung

  1. Definieren Sie die Tool-Funktionen, die das Modell aufrufen soll.
  2. Fügen Sie in der Anfrage den Parameter tools hinzu, um die Funktionen zu definieren, die das Modell verwenden soll.

Beispiel

Im Folgenden finden Sie ein vollständiges Python-Codebeispiel, das anhand der Abfrage des aktuellen Wetters an einem bestimmten Ort zeigt, wie Function Calling verwendet wird. Das genaue API-Format für Function Calling finden Sie in der API zum Erstellen einer Chat-Konversation.

1. Client initialisieren

Sie müssen den Client mit Ihrem JieKou AI API-Schlüssel initialisieren.
from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.highwayapi.ai/openai",
    api_key="<Your API Key>",
)

model = "deepseek/deepseek-v3"

2. Aufzurufende Funktion definieren

Definieren Sie die Funktion, die das Modell aufrufen soll. Das folgende Python-Beispiel demonstriert eine Funktion zum Abrufen von Wetterinformationen.
# Beispielfunktion zum Simulieren des Abrufs von Wetterdaten.
def get_weather(location):
    """Aktuelles Wetter für den angegebenen Ort abrufen"""
    print("Funktion get_weather wird aufgerufen, Ort: ", location)
    # In einer realen Anwendung müssen Sie hier eine externe Wetter-API aufrufen.
    # Dies ist ein vereinfachtes Beispiel, das fest codierte Daten zurückgibt.
    return json.dumps({"位置": location, "温度": "20 Grad Celsius"})

3. API-Anfrage mit Tools und Nutzernachricht erstellen

Erstellen Sie die API-Aufrufanfrage. Diese Anfrage enthält den Parameter tools, der die vom Modell zu verwendende Funktion definiert, sowie die Nachricht des Nutzers.
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Das Wetter für einen Ort abrufen; der Nutzer muss zuerst den Ort angeben",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "Stadtinformation, z. B.: Shanghai",
                    }
                },
                "required": ["location"]
            },
        }
    },
]
messages = [
    {
        "role": "user",
        "content": "Wie ist das Wetter in Shanghai?"
    }
]
# Anfrage senden und Antwort ausgeben
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
)
# Prüfen Sie in Produktionsumgebungen, ob die Antwort einen Tool-Aufruf enthält
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
Ausgabe:
{'id': '0', 'function': {'arguments': '{"location": "Shanghai"}', 'name': 'get_weather'}, 'type': 'function'}

4. Auf Grundlage des Funktionsaufrufergebnisses antworten und die endgültige Antwort abrufen

Verarbeiten Sie als Nächstes den Funktionsaufruf, führen Sie die Funktion get_weather aus und senden Sie das Ergebnis zurück an das Modell, damit es die endgültige Antwort für den Nutzer generiert.
# Sicherstellen, dass der Tool-Aufruf im vorherigen Schritt definiert wurde
if tool_call:
    # Konversationsverlauf erweitern und die Assistant-Tool-Aufrufnachricht hinzufügen
    messages.append(response.choices[0].message)

    function_name = tool_call.function.name
    if function_name == "get_weather":
        function_args = json.loads(tool_call.function.arguments)
        # Funktion ausführen und Antwort abrufen
        function_response = get_weather(
            location=function_args.get("location"))
        # Funktionsantwort zu den Nachrichten hinzufügen
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "content": function_response,
            }
        )

    # Endgültige Antwort vom Modell abrufen, einschließlich Funktionsergebnis
    answer_response = client.chat.completions.create(
        model=model,
        messages=messages,
        # Hinweis: Fügen Sie hier nicht den Parameter tools ein
    )
    print(answer_response.choices[0].message)
Ausgabe:
ChatCompletionMessage(content="Die aktuelle Temperatur in Shanghai beträgt 20 Grad Celsius. Bitte beachten Sie, dass sich die Wetterlage jederzeit ändern kann. Es wird empfohlen, die neueste Wettervorhersage zu prüfen, um genauere Informationen zu erhalten.", refusal=None, role='assistant', function_call=None, tool_calls=None)

Vollständiger Code

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.highwayapi.ai/openai",
    api_key="<Your API Key>",
)

model = "deepseek/deepseek-v3"

# Beispielfunktion zum Simulieren des Abrufs von Wetterdaten.
def get_weather(location):
    """Aktuelles Wetter für den angegebenen Ort abrufen"""
    print("Funktion get_weather wird aufgerufen, Ort: ", location)
    # In einer realen Anwendung müssen Sie hier eine externe Wetter-API aufrufen.
    # Dies ist ein vereinfachtes Beispiel, das fest codierte Daten zurückgibt.
    return json.dumps({"位置": location, "温度": "20 Grad Celsius"})

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Das Wetter für einen Ort abrufen; der Nutzer muss zuerst den Ort angeben",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "Stadtinformation, z. B.: Shanghai",
                    }
                },
                "required": ["location"]
            },
        }
    },
]

messages = [
    {
        "role": "user",
        "content": "Wie ist das Wetter in Shanghai?"
    }
]

# Anfrage senden und Antwort ausgeben
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
)

# Prüfen Sie in Produktionsumgebungen, ob die Antwort einen Tool-Aufruf enthält
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())

# Sicherstellen, dass der Tool-Aufruf im vorherigen Schritt definiert wurde
if tool_call:
    # Konversationsverlauf erweitern und die Assistant-Tool-Aufrufnachricht hinzufügen
    messages.append(response.choices[0].message)

    function_name = tool_call.function.name
    if function_name == "get_weather":
        function_args = json.loads(tool_call.function.arguments)
        # Funktion ausführen und Antwort abrufen
        function_response = get_weather(
            location=function_args.get("location"))
        # Funktionsantwort zu den Nachrichten hinzufügen
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "content": function_response,
            }
        )

    # Endgültige Antwort vom Modell abrufen, einschließlich Funktionsergebnis
    answer_response = client.chat.completions.create(
        model=model,
        messages=messages,
        # Hinweis: Fügen Sie hier nicht den Parameter tools ein
    )
    print(answer_response.choices[0].message)