Wie man Function Calling von DeepSeek V3 verwendet?

Wie man Function Calling von DeepSeek V3 verwendet?

Wichtige Highlights

Was es tut: Function Calling ermöglicht es KI-Modellen, mit externen Tools und APIs zu interagieren, bestimmte Aufgaben auszuführen und Echtzeitdaten für Systemoperationen und automatisierte Workflows abzurufen.

Unterstützte Modelle: DeepSeek V3-Serie, GPT-Serie, Gemma 2 und Mistral Nemo.

Wie implementieren? Sie können die API über Novita AI installieren und in den Docs lernen.

Function Calling verbessert große Sprachmodelle (LLMs), indem es die Interaktion mit der Außenwelt ermöglicht. Über die Textgenerierung hinaus können LLMs Aufgaben ausführen, auf Echtzeitdaten zugreifen und komplexe Operationen durchführen. Als Brücke zwischen KI-Wissen und umsetzbaren Aufgaben befähigt Function Calling KI-Agenten oder Chatbots, mit externen Tools und Diensten zu interagieren. DeepSeek V3, ein leistungsstarkes Open-Source-Modell, zeichnet sich durch seine starke Leistung und Effizienz aus.

Was ist Function Calling

Function Calling verbessert große Sprachmodelle (LLMs), indem es die Interaktion mit der Außenwelt ermöglicht. Über die Textgenerierung hinaus können LLMs Aufgaben ausführen, auf Echtzeitdaten zugreifen und komplexe Operationen durchführen. Als Brücke zwischen KI-Wissen und umsetzbaren Aufgaben befähigt Function Calling KI-Agenten oder Chatbots, mit externen Tools und Diensten zu interagieren. DeepSeek V3, ein leistungsstarkes Open-Source-Modell, zeichnet sich durch seine starke Leistung und Effizienz aus.

Wie funktioniert Function Calling?

von Google Cloud

  1. Funktionsdeklaration: Definieren Sie wiederverwendbare Codeblöcke (Funktionen) mit klaren Beschreibungen ihrer Fähigkeiten, Eingaben und Ausgaben.
  2. Prompt-Einreichung: Geben Sie dem LLM einen Prompt und eine Reihe von Funktionsdeklarationen, um es über die verfügbaren Tools zu informieren.
  3. Modellanalyse: Das LLM wertet den Prompt aus und bestimmt, ob eine der bereitgestellten Funktionen aufgerufen werden muss, um die Anfrage zu erfüllen.
  4. Strukturierte Ausgabe: Wenn ein Funktionsaufruf erforderlich ist, generiert das LLM eine strukturierte Ausgabe im JSON-Format, die den Funktionsnamen und die Parameterwerte angibt.
  5. Funktionsaufruf: Die Anwendung oder das System verwendet die strukturierte Ausgabe, um die angegebene Funktion aufzurufen und die erforderlichen Parameter zu übergeben.
  6. Funktionsausführung: Der externe Dienst oder die API führt die Funktion basierend auf den bereitgestellten Parametern aus.
  7. Ausgabeantwort: Der externe Dienst gibt das Ergebnis oder die Bestätigung an die KI zurück.
  8. Modellantwort: Das LLM verwendet die empfangene Ausgabe, um eine natürliche Sprachantwort für den Benutzer oder zur weiteren Verarbeitung zu erstellen.

Welche Probleme kann Function Calling lösen?

Echtzeit-Informationszugriff

  • Aktienkursaktualisierungen
  • Aktuelle Wetterdaten abrufen
  • Zugriff auf aktuelle Nachrichten

Systeminteraktionen

  • E-Mails senden
  • Social-Media-Beiträge veröffentlichen
  • Datenbankabfragen und -schreibvorgänge

Workflow-Automatisierung

  • Datenscraping und -verarbeitung
  • Mehrschrittige Aufgabenausführung
  • Automatisierung komplexer Analysen

Datengenauigkeit

  • Sicherstellung aktueller Informationen
  • Bereitstellung präziser Abfrageergebnisse
  • Reduzierung von Fehlern durch veraltete Daten

Erweiterte KI-Fähigkeiten

  • Dynamische API-Integration
  • Kontextbezogene Aufgabenausführung
  • Durchführung realer Aktionen

Verbesserung der Benutzererfahrung

  • Personalisierte Antworten
  • Aufgabenerledigung ohne Verlassen des Gesprächs
  • Nahtlose Integration externer Dienste

Wie man DeepSeek V3 Function Calling über Novita AI verwendet

Diese Anleitung zeigt, wie Sie Function Calling verwenden, um aktuelle Wetterinformationen für einen benutzerdefinierten Standort abzurufen. Wir gehen ein vollständiges Python-Codebeispiel durch. Das spezifische API-Format für Function Calling finden Sie in der API-Referenz Create Chat Completion.

referral

Holen Sie sich jetzt 20 $ Guthaben bei Novita AI!

  • Initialisieren des Clients

Zuerst müssen Sie den Client mit Ihrem Novita-API-Schlüssel initialisieren.

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://api.novita.ai/v3/openai",
    # Holen Sie sich den Novita AI API Key von: https://novita.ai/settings/key-management.
    api_key="<Ihr Novita AI API Key>",
)

model = "deepseek/deepseek_v3"
  • Definieren der aufzurufenden Funktion

Als nächstes definieren Sie die Python-Funktion, die das Modell aufrufen kann. In diesem Beispiel ist es eine Funktion zum Abrufen von Wetterinformationen.

# Beispiel-Funktion zur Simulation des Abrufs von Wetterdaten.
def get_weather(location):
    """Ruft das aktuelle Wetter für einen bestimmten Ort ab."""
    print("Rufe get_weather-Funktion auf mit Standort: ", location)
    # In einer echten Anwendung würden Sie hier eine externe Wetter-API aufrufen.
    # Dies ist ein vereinfachtes Beispiel, das hartcodierte Daten zurückgibt.
    return json.dumps({"location": location, "temperature": "60 Grad Fahrenheit"})
  • Erstellen der API-Anfrage mit Tools und Benutzernachricht

Erstellen Sie nun die API-Anfrage an den Novita-Endpunkt. Diese Anfrage enthält den Parameter tools, der die Funktionen definiert, die das Modell verwenden kann, sowie die Nachricht des Benutzers.

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Wetter eines Ortes abrufen, der Benutzer sollte zuerst einen Ort angeben",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "Die Stadt und der Bundesstaat, z.B. San Francisco, CA",
                    }
                },
                "required": ["location"]
            },
        }
    },
]

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

# Senden wir die Anfrage und geben die Antwort aus.
response = client.chat.completions.create(
    model=model,
    messages=messages,
    tools=tools,
)

# Bitte überprüfen Sie in der Produktion, ob die Antwort Tool-Aufrufe enthält.
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.model_dump())
  • Ausgabe
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}
  • Antwort mit dem Funktionsaufrufergebnis geben und die endgültige Antwort erhalten

Der nächste Schritt ist die Verarbeitung des Funktionsaufrufs, die Ausführung der get_weather-Funktion und das Zurücksenden des Ergebnisses an das Modell, um die endgültige Antwort für den Benutzer zu generieren.

# Stellen Sie sicher, dass tool_call aus dem vorherigen Schritt definiert ist
if tool_call:
    # Erweitern Sie den Gesprächsverlauf um die Tool-Call-Nachricht des Assistenten
    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)
        # Führen Sie die Funktion aus und erhalten Sie die Antwort
        function_response = get_weather(
            location=function_args.get("location"))
        # Hängen Sie die Funktionsantwort an die Nachrichten an
        messages.append(
            {
                "tool_call_id": tool_call.id,
                "role": "tool",
                "content": function_response,
            }
        )

    # Holen Sie sich die endgültige Antwort vom Modell, jetzt mit dem Funktionsergebnis
    answer_response = client.chat.completions.create(
        model=model,
        messages=messages,
        # Hinweis: Fügen Sie hier keinen Tools-Parameter hinzu.
    )
    print(answer_response.choices[0].message)
  • Ausgabe
{'id': '0', 'function': {'arguments': '{"location": "San Francisco, CA"}', 'name': 'get_weather'}, 'type': 'function'}

Häufige Probleme und Best Practices für Function Calling

Function Calling in KI-Modellen bietet sowohl Herausforderungen als auch Chancen. Hier ist ein Vergleich häufiger Probleme und entsprechender Best Practices:

  • Ungenaue Interpretation und klare Prompts

Problem: Modelle können Benutzerabsichten ungenau interpretieren, was zu unnötigen oder falschen Funktionsaufrufen führt.

Best Practice: Geben Sie klare und präzise System-Prompts an, die den Zweck des Chatbots und die verfügbaren Funktionen beschreiben. Verwenden Sie Multi-Shot-Turns, um sowohl direkte Antworten als auch geeignete Funktionsaufrufe zu demonstrieren.

  • Komplexes Workflow-Management

Problem: Schwierigkeiten bei der Verwaltung komplexer Workflows mit mehreren voneinander abhängigen Schritten.

Best Practice: Beginnen Sie mit Prompt Engineering, bevor Sie zu komplexeren Methoden übergehen. Konzentrieren Sie sich beim Fine-Tuning auf Qualität statt Quantität, indem Sie mit einer kleinen Menge hochwertiger Beispiele beginnen.

  • Nuancenreiche Entscheidungsfindung

Problem: Herausforderungen bei der Interpretation von Funktionsausgaben und externen Daten für eine nuancenreiche Entscheidungsfindung.

Best Practice: Verwenden Sie Retrieval-Augmented Generation (RAG), um bei Bedarf Kontext einzufügen. Kombinieren Sie Techniken wie Fine-Tuning und RAG, um ihre jeweiligen Stärken und Schwächen auszugleichen.

  • Komplexität von Datenstrukturen

Problem: Einschränkungen beim Umgang mit sich entwickelnden, komplexen Datenstrukturen wie Graphen und verschachtelten Objekten.

Best Practice: Wählen Sie die richtige Abstraktionsebene, um sauberen Code mit Leistung in Einklang zu bringen. Halten Sie Funktionen schlank und fokussiert, um Effizienz und Lesbarkeit zu verbessern.

  • Integration von Legacy-Systemen

Problem: Schwierigkeiten bei der Integration mit unübersichtlichen, mehrdeutigen Legacy-Systemen.

Best Practice: Optimieren Sie die am häufigsten aufgerufenen Funktionen oder Hotspots, die durch Profiling identifiziert wurden. Erwägen Sie die Bündelung von Operationen, um den Overhead bei der Arbeit mit Legacy-Systemen zu reduzieren.

  • Sicherheitsbedenken

Problem: Sicherheitsbedenken bei der Ausführung privilegierter Funktionen ohne ausgefeiltes Urteilsvermögen.

Best Practice: Implementieren Sie robuste Fehlerbehandlungsmechanismen, um unerwartete API-Antworten zu bewältigen. Stellen Sie starke Datenschutzmaßnahmen und die Einhaltung von Vorschriften sicher, um das Vertrauen der Benutzer und sensible Informationen zu schützen.

  • Skalierbarkeit und Leistung

Problem: Unzureichende Zuverlässigkeit bei der Erfüllung strenger Skalierbarkeits-, Verfügbarkeits- und Leistungsanforderungen für geschäftskritische Systeme.

Best Practice: Nutzen Sie Compiler-Optimierungen und verwenden Sie niedrige Temperatureinstellungen für fokussiertere und deterministischere Ausgaben. Profilen und optimieren Sie Hotspots, um die größten Leistungssteigerungen zu erzielen.

  • Übermäßige Abhängigkeit von Funktionsaufrufen

Problem: Modelle können Funktionen unnötig oder unangemessen aufrufen, auch wenn sie nicht benötigt werden.

Best Practice: Verwalten Sie sorgfältig, wie Funktionsaufrufe implementiert werden. Stellen Sie sicher, dass geeignete Fehlerbehandlungs- und Fallback-Mechanismen vorhanden sind, um die Systemzuverlässigkeit auch bei nicht verfügbaren externen Diensten zu gewährleisten.

  • Datenschutz- und Transparenzbedenken

Problem: Ethische Bedenken hinsichtlich Transparenz und Benutzereinwilligung, wenn LLMs Entscheidungen treffen oder Aktionen im Namen von Benutzern durchführen.

Best Practice: Implementieren Sie klare Dokumentations- und Benutzereinwilligungsmechanismen. Stellen Sie sicher, dass die Datenverarbeitung verantwortungsvoll und konform mit Datenschutzbestimmungen wie GDPR oder HIPAA ist.

Zusammenfassend stellt Function Calling einen großen Fortschritt für LLMs dar, der eine nahtlose Interaktion mit Unternehmensdaten und -systemen ermöglicht und Entwickler befähigt, dynamischere und funktionalere Anwendungen zu erstellen. Durch die mühelose Integration mit externen Anwendungen, Systemen und APIs werden LLMs äußerst vielseitig und in der Lage, eine breite Palette von Aufgaben effizient zu bewältigen. Modelle wie DeepSeek V3 sind führend und bieten einen optimierten Zugang zu dieser transformativen Technologie und eröffnen endlose Möglichkeiten für KI-Innovationen.

Häufig gestellte Fragen

Was ist Function Calling im Kontext von LLMs?

Function Calling ist eine Technik, die es großen Sprachmodellen ermöglicht, zu erkennen, wann eine bestimmte Aufgabe eine externe Funktion oder ein Tool erfordert, und strukturierte Daten zu generieren, um diese Funktion auszuführen.

Was sind die Hauptvorteile der Verwendung von Function Calling?

Zu den wichtigsten Vorteilen gehören eine erhöhte Effizienz bei der Verarbeitung von Aufgaben, eine verbesserte Flexibilität für Entwickler, Funktionen einfach zu aktualisieren, Skalierbarkeit für das Hinzufügen neuer Funktionen ohne umfangreiche Änderungen und personalisierte Benutzerinteraktionen.

Novita AI ist die All-in-One-Cloud-Plattform, die Ihre KI-Ambitionen unterstützt. Integrierte APIs, serverlos, GPU-Instanz – die kosteneffizienten Tools, die Sie benötigen. Infrastruktur eliminieren, kostenlos starten und Ihre KI-Vision Wirklichkeit werden lassen.

Empfohlene Lektüre