Udostępnij przez


Integrowanie wywoływania narzędzi z wnioskowaniem LLM za pomocą dodatku operatora łańcucha narzędzi AI w usłudze Azure Kubernetes Service (AKS)

W tym artykule skonfigurujesz i wdrożysz środowisko wnioskowania operatora łańcucha narzędzi AI (KAITO) w usłudze Azure Kubernetes Service (AKS) z obsługą wywołań narzędzi w stylu OpenAI. Dowiesz się również, jak sprawdzać funkcjonalność wywoływania narzędzi za pomocą metryk vLLM i lokalnych mocków funkcji.

Co to jest wywoływanie narzędzi?

Wywoływanie narzędzi umożliwia korzystanie z dużych modeli językowych (LLM) do interfejsu z funkcjami zewnętrznymi, interfejsami API lub usługami. Zamiast generować tylko tekst, LLM może zdecydować:

  • Muszę zadzwonić do API pogodowego.
  • "Muszę użyć kalkulatora".
  • "Powinienem przeszukać bazę danych".

Robi to, wywołując zdefiniowane "narzędzie" z wybranymi parametrami na podstawie żądania użytkownika. Wywoływanie narzędzi jest przydatne w następujących celach:

  • Czatboty, które rezerwują, podsumowują lub obliczają.
  • Aplikacje LLM dla przedsiębiorstw, w których należy zminimalizować halucynację.
  • Struktury agentów (AutoGen, LangGraph, LangChain, AgentOps itp.).

W środowiskach produkcyjnych aplikacje obsługujące sztuczną inteligencję często wymagają więcej niż generowania języka naturalnego; wymagają możliwości podjęcia działań na podstawie intencji użytkownika. Wywoływanie narzędzi umożliwia programom LLM rozszerzanie poza odpowiedzi tekstowe przez wywoływanie zewnętrznych narzędzi, interfejsów API lub logiki niestandardowej w czasie rzeczywistym. Most umożliwia zamknięcie luki między rozumieniem języka a jego wykonaniem, pozwalając deweloperom budować interaktywnych asystentów AI, agentów oraz przepływy prac automatyzacji, które są jednocześnie dokładne i użyteczne. Zamiast polegać na odpowiedziach statycznych, llMs mogą teraz uzyskiwać dostęp do danych na żywo, wyzwalać usługi i wykonywać zadania w imieniu użytkowników, zarówno bezpiecznie, jak i niezawodnie.

Po wdrożeniu w usłudze AKS wywoływanie narzędzi staje się skalowalne, bezpieczne i gotowe do wdrożenia produkcyjnego. Platforma Kubernetes zapewnia elastyczność w orkiestracji obciążeń inferencyjnych przy użyciu środowisk uruchomieniowych o wysokiej wydajności, takich jak vLLM, jednocześnie zapewniając monitorowanie i zarządzanie wykorzystaniem narzędzi. Dzięki temu wzorcu operatorzy usługi AKS i deweloperzy aplikacji mogą bezproblemowo aktualizować modele lub narzędzia niezależnie i wdrażać zaawansowane funkcje sztucznej inteligencji bez naruszania niezawodności.

W związku z tym narzędzie wywołujące usługę AKS jest teraz podstawowym wzorcem tworzenia nowoczesnych aplikacji sztucznej inteligencji, które są kontekstowe, zdolne do działania i gotowe do użycia w przedsiębiorstwie.

Wywoływanie narzędzia za pomocą narzędzia KAITO

Aby usprawnić ten model wdrażania, dodatek operator łańcucha narzędzi AI (KAITO) dla platformy AKS udostępnia zarządzane rozwiązanie do uruchamiania usług wnioskowania z obsługą wywołań narzędzi. Korzystając z obszarów roboczych wnioskowania KAITO, można szybko uruchomić skalowalne, przyspieszone przez GPU końcówki modelu z wbudowaną obsługą wywoływania narzędzi i interfejsów API zgodnych z interfejsami OpenAI. Eliminuje to obciążenie operacyjne konfigurowania środowisk uruchomieniowych, zarządzania zależnościami lub ręcznego skalowania infrastruktury.

Wymagania wstępne

Upewnij się, że obszar roboczy wnioskowania KAITO jest uruchomiony.

  • Monitoruj wdrożenie obszaru roboczego za pomocą polecenia kubectl get.

    kubectl get workspace workspace‑phi‑4‑mini-toolcall -w
    

    W danych wyjściowych chcesz sprawdzić, czy zasób (ResourceReady) i wnioskowanie (InferenceReady) są gotowe, a obszar roboczy zakończył się pomyślnie (WorkspaceSucceeded jest to true).

Upewnij się, że interfejs API wnioskowania jest gotowy do obsługi

  1. Gdy obszar roboczy będzie gotowy, znajdź punkt końcowy usługi przy użyciu kubectl get polecenia .

    kubectl get svc workspace‑phi‑4-mini-toolcall
    

    Uwaga / Notatka

    Dane wyjściowe mogą być adresem ClusterIP lub wewnętrznym. Sprawdź, na których portach nasłuchuje usługa. Domyślny interfejs API wnioskowania KAITO jest na porcie 80 protokołu HTTP. Jeśli dotyczy to tylko sieci wewnętrznej, możesz przekierować port lokalnie.

  2. Przekieruj port dla usługi wnioskowania do testowania przy użyciu polecenia kubectl port-forward.

    kubectl port-forward svc/workspace‑phi‑4‑mini-toolcall 8000:80
    
  3. Sprawdź /v1/models komponent końcowy, aby potwierdzić, że LLM jest dostępny przy użyciu curl.

    curl http://localhost:8000/v1/models
    

    Aby upewnić się, że usługa LLM jest wdrożona, a interfejs API działa, dane wyjściowe powinny być podobne do następujących:

    ...
    {
      "object": "list",
      "data": [
        {
          "id": "phi‑4‑mini‑instruct",
          ...
          ...
        }
      ]
    }
    ...
    

Testowanie wywoływania narzędzia o nazwie funkcji

W tym przykładzie workspace‑phi‑4‑mini-toolcall obszar roboczy obsługuje domyślnie wywoływanie narzędzi funkcji o nazwie, więc możemy potwierdzić, że funkcja LLM akceptuje specyfikację "tool" w żądaniach typu OpenAI i zwraca strukturę "wywołania funkcji".

Fragment kodu języka Python używany w tej sekcji pochodzi z dokumentacji interfejsu KAITO i korzysta z klienta zgodnego z interfejsem OpenAI.

  • Upewnij się, że usługa LLM akceptuje specyfikację "tool" w żądaniach typu OpenAI i zwraca strukturę "wywołania funkcji". Ten przykład:

    • Inicjuje klienta zgodnego z interfejsem OpenAI, aby komunikować się z lokalnym serwerem wnioskowania. Zakłada się, że serwer jest uruchomiony pod http://localhost:8000/v1 i akceptuje wywołania interfejsu API w stylu OpenAI.
    • Symuluje logikę zaplecza dla narzędzia o nazwie get_weather. (W rzeczywistym scenariuszu wywołałoby to interfejs API pogody).
    • Opisuje interfejs narzędzia; LLM Phi-4-mini zobaczy to narzędzie i zdecyduje, czy używać go na podstawie wprowadzonych danych użytkownika.
    • Wysyła przykładową wiadomość czatu do modelu i udostępnia specyfikację narzędzia. Ustawienie tool_choice="auto" umożliwia usłudze LLM podjęcie decyzji, czy powinno wywołać narzędzie na podstawie monitu.
    • W takim przypadku żądanie użytkownika było istotne dla get_weather narzędzia, więc symulujemy wykonanie narzędzia, wywołując funkcję lokalną z wybranymi argumentami modelu.
    from openai import OpenAI
    import json
    
    # local server
    client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")
    
    def get_weather(location: str, unit: str) -> str:
        return f"Getting the weather for {location} in {unit}..."
    
    tool_functions = {"get_weather": get_weather}
    
    tools = [{
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                },
                "required": ["location", "unit"]
            }
        }
    }]
    
    response = client.chat.completions.create(
        model="phi‑4‑mini‑instruct",   # or client.models.list().data[0].id
        messages=[{"role": "user", "content": "What's the weather like in San Francisco?"}],
        tools=tools,
        tool_choice="auto"
    )
    
    # Inspect response
    tool_call = response.choices[0].message.tool_calls[0].function
    args = json.loads(tool_call.arguments)
    print("Function called:", tool_call.name)
    print("Arguments:", args)
    print("Result:", tool_functions[tool_call.name](**args))
    

    Dane wyjściowe powinny wyglądać podobnie do następujących:

    Function called: get_weather  
    Arguments: {"location": "San Francisco, CA", "unit": "fahrenheit"}  
    Result: Getting the weather for San Francisco, CA in fahrenheit...
    

    Wraca pole "tool_calls", co oznacza, że Phi-4-mini LLM postanowił wywołać funkcję. Teraz przykładowe wywołanie narzędzia zostało pomyślnie przeanalizowane i wykonane w oparciu o decyzję modelu o potwierdzeniu zachowania wywołania kompleksowego narzędzia przy użyciu wdrożenia wnioskowania KAITO.

Rozwiązywanie problemów

Ustawienie wstępne modelu nie obsługuje wywoływania narzędzi

Jeśli wybierzesz model, który nie znajduje się na liście obsługiwanych, wywołanie narzędzi może nie działać. Upewnij się, że zapoznałeś się z dokumentacją KAITO, która wyraźnie wymienia ustawienia wstępne obsługujące wywoływanie narzędzi.

Niewyrównane środowisko uruchomieniowe

Wnioskowanie KAITO musi używać środowiska uruchomieniowego vLLM do wywoływania narzędzi (środowisko uruchomieniowe HuggingFace Transformers zwykle nie obsługuje wywoływania narzędzi w usłudze KAITO).

Problemy z siecią/punktem końcowym

Jeśli korzystasz z przekierowywania portów, upewnij się, że porty usług są prawidłowo przekazywane. Jeśli zewnętrzny serwer MCP jest niedostępny, wystąpi błąd.

Przerwy czasowe

Wywołania zewnętrznego serwera MCP mogą zająć trochę czasu. Upewnij się, że limit czasu dla adaptera lub klienta jest wystarczająco wysoki.

Authentication

Jeśli zewnętrzny serwer MCP wymaga autoryzacji (klucz interfejsu API, nagłówek itp.), upewnij się, że podajesz poprawne dane uwierzytelniające.

Dalsze kroki