Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- W tym artykule przyjmujemy, że masz już istniejący klaster AKS. Jeśli nie masz klastra, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Klaster usługi AKS jest uruchomiony w wersji Kubernetes
1.33lub nowszej. Aby uaktualnić klaster, zobacz Uaktualnianie klastra usługi AKS. - Zainstaluj i skonfiguruj wersję Azure CLI
2.77.0lub nowszą. Aby znaleźć swoją wersję, uruchom polecenieaz --version. Aby zainstalować lub zaktualizować, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Dodatek operatora łańcucha narzędzi AI włączony na twoim klastrze.
- Wdrożony obszar roboczy wnioskowania KAITO, który obsługuje wywoływanie narzędzi. Zapoznaj się z oficjalną dokumentacją dotyczącą wywoływania narzędzia KAITO, aby poznać modele obsługiwane przez vLLM.
- Wdrożono
workspace‑phi‑4-mini-toolcallobszar roboczy KAITO z konfiguracją domyślną.
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 -wW danych wyjściowych chcesz sprawdzić, czy zasób (
ResourceReady) i wnioskowanie (InferenceReady) są gotowe, a obszar roboczy zakończył się pomyślnie (WorkspaceSucceededjest totrue).
Upewnij się, że interfejs API wnioskowania jest gotowy do obsługi
Gdy obszar roboczy będzie gotowy, znajdź punkt końcowy usługi przy użyciu
kubectl getpolecenia .kubectl get svc workspace‑phi‑4-mini-toolcallUwaga / Notatka
Dane wyjściowe mogą być adresem
ClusterIPlub wewnętrznym. Sprawdź, na których portach nasłuchuje usługa. Domyślny interfejs API wnioskowania KAITO jest na porcie80protokołu HTTP. Jeśli dotyczy to tylko sieci wewnętrznej, możesz przekierować port lokalnie.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:80Sprawdź
/v1/modelskomponent końcowy, aby potwierdzić, że LLM jest dostępny przy użyciucurl.curl http://localhost:8000/v1/modelsAby 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/v1i 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-minizobaczy 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_weathernarzę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-miniLLM 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.- Inicjuje klienta zgodnego z interfejsem OpenAI, aby komunikować się z lokalnym serwerem wnioskowania. Zakłada się, że serwer jest uruchomiony pod
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
- Skonfiguruj monitorowanie oprogramowania vLLM w dodatku operatora łańcucha narzędzi sztucznej inteligencji przy użyciu rozwiązania Prometheus i narzędzia Grafana w usłudze AKS.
- Dowiedz się więcej o obsłudze serwera MCP za pomocą interfejsu KAITO i przetestowaniu standardowych przykładów wywoływania narzędzi w klastrze usługi AKS.