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 połączysz zgodny z MCP serwer narzędzi z obszarem roboczym wnioskowania operatora łańcucha narzędzi AI (KAITO) w usłudze Azure Kubernetes Service (AKS), umożliwiając bezpieczne i modułowe wywoływanie narzędzi dla aplikacji LLM. Dowiesz się również, jak zweryfikować wywołanie kompleksowego narzędzia, integrując model z serwerem MCP i monitorując wykonywanie funkcji w czasie rzeczywistym za pomocą odpowiedzi ustrukturyzowanych.
Protokół MCP (Model Context Protocol)
Jako rozszerzenie wnioskowania KAITO za pomocą wywoływania narzędzi, protokół MCP (Model Context Protocol) zapewnia ustandaryzowany sposób definiowania i uwidaczniania narzędzi do wywoływania modeli językowych.
Wywoływanie narzędzi za pomocą programu MCP ułatwia łączenie modeli językowych z rzeczywistymi usługami i akcjami bez ścisłego sprzęgania logiki z samym modelem. Zamiast osadzać każde wywołanie funkcji lub interfejsu API do kodu aplikacji, mcP umożliwia uruchomienie autonomicznego serwera narzędzi, który uwidacznia standardowe narzędzia lub interfejsy API, których może używać dowolny zgodny moduł LLM. Ta czysta separacja oznacza, że można niezależnie aktualizować narzędzia, udostępniać je między modelami i zarządzać nimi jak każda inna mikrousługa.
Możesz bezproblemowo podłączyć własne (BYO) wewnętrzne serwery MCP lub połączyć zewnętrzne serwery MCP z obszarem roboczym wnioskowania KAITO w usłudze AKS.
McP z operatorem łańcucha narzędzi AI (KAITO) w usłudze AKS
Zewnętrzny serwer MCP można zarejestrować w jednolitym, opartym na schemacie formacie i udostępnić w dowolnym zgodnym końcowym punkcie inferencyjnym, w tym w przypadku tych wdrożonych z obszarem roboczym KAITO. Takie podejście umożliwia zewnętrzną logikę biznesową, oddzielenie zachowania modelu od wykonywania narzędzi i ponowne używanie narzędzi między agentami, modelami i środowiskami.
W tym przewodniku zarejestrujesz wstępnie zdefiniowany serwer MCP, przetestujesz rzeczywiste wywołania wystawione przez usługę LLM uruchomioną w obszarze roboczym wnioskowania KAITO i potwierdzisz, że cała ścieżka wykonywania narzędzia (z monitu modelu do wywołania funkcji MCP) działa zgodnie z oczekiwaniami. Masz elastyczność skalowania lub zamiany narzędzi niezależnie od modelu.
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. - Masz włączony dodatek operatora łańcucha narzędzi AI w klastrze i obszar roboczy KAITO z obsługą wywołania narzędzi wdrożony w klastrze.
- Zewnętrzny serwer MCP dostępny pod dostępnym adresem URL (np.
https://mcp.example.com/mcp), który zwraca prawidłowy/list_toolsi mastreamtransport.
Nawiązywanie połączenia z serwerem MCP odniesienia
W tym przykładzie użyjemy odwołania Time MCP Server, który zapewnia możliwości konwersji strefy czasowej i umożliwia LLMs uzyskiwanie bieżących informacji o czasie i wykonywanie konwersji przy użyciu standardowych nazw.
Przekazywanie dalej usługi wnioskowania KAITO
Upewnij się, że obszar roboczy KAITO jest gotowy i przy użyciu polecenia
kubectl getpobierz punkt końcowy usługi wnioskowania.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/modelsendpoint, aby upewnić się, żePhi-4-mini-instructusługa LLM jest dostępna przy użyciucurl.curl http://localhost:8000/v1/modelsTwój
Phi-4-mini-instructinterfejs API zgodny z OpenAI do wnioskowania będzie dostępny pod adresem:http://localhost:8000/v1/chat/completions
Upewnij się, że serwer wzorcowy MCP jest prawidłowy
W tym przykładzie przyjęto założenie, że serwer Time MCP jest hostowany w witrynie https://mcp.example.com.
Upewnij się, że serwer zwraca narzędzia przy użyciu polecenia
curl.curl https://mcp.example.com/mcp/list_toolsOczekiwane dane wyjściowe:
{ "tools": [ { "name": "get_current_time", "description": "Get the current time in a specific timezone", "arguments": { "timezone": "string" } }, { "name": "convert_time", "description": "Convert time between two timezones", "arguments": { "source_timezone": "string", "time": "string", "target_timezone": "string" } } ] }
Łączenie serwera MCP z obszarem roboczym KAITO przy użyciu żądania interfejsu API
Funkcja KAITO automatycznie pobiera definicje narzędzi z narzędzi zadeklarowanych w żądaniach interfejsu API lub zarejestrowanych dynamicznie w środowisku uruchomieniowym wnioskowania (vLLM + moduł ładujący narzędzi MCP).
W tym przewodniku utworzymy środowisko wirtualne języka Python, aby wysłać żądanie wywoływania narzędzi do Phi-4-mini-instruct punktu końcowego wnioskowania przy użyciu definicji MCP i wskazać serwer.
Zdefiniuj nowy katalog roboczy dla tego projektu testowego.
mkdir kaito-mcp cd kaito-mcpUtwórz środowisko wirtualne języka Python i aktywuj je tak, aby wszystkie pakiety są lokalne dla projektu testowego.
uv venv source .venv/bin/activateUżyj open-source'owego frameworka Autogen, aby przetestować funkcjonalność wywoływania narzędzia i zainstalować jego zależności:
uv pip install "autogen-ext[openai]" "autogen-agentchat" "autogen-ext[mcp]"Utwórz plik testowy o nazwie
test.py, który:- Nawiązuje połączenie z serwerem Time MCP i ładuje narzędzie
get_current_time. - Nawiązuje połączenie z usługą wnioskowania KAITO uruchomioną pod adresem
localhost:8000. - Wysyła przykładowe zapytanie, takie jak "Jaki jest czas w Europie/Paryżu?"
- Umożliwia automatyczne wybieranie i wywoływanie
get_current_timenarzędzia.
import asyncio from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.ui import Console from autogen_core import CancellationToken from autogen_core.models import ModelFamily, ModelInfo from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.tools.mcp import (StreamableHttpMcpToolAdapter, StreamableHttpServerParams) from openai import OpenAI async def main() -> None: # Create server params for the Time MCP service server_params = StreamableHttpServerParams( url="https://mcp.example.com/mcp", timeout=30.0, terminate_on_close=True, ) # Load the get_current_time tool from the server adapter = await StreamableHttpMcpToolAdapter.from_server_params(server_params, "get_current_time") # Fetch model name from KAITO's local OpenAI-compatible API model = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy").models.list().data[0].id model_info: ModelInfo = { "vision": False, "function_calling": True, "json_output": True, "family": ModelFamily.UNKNOWN, "structured_output": True, "multiple_system_messages": True, } # Connect to the KAITO inference workspace model_client = OpenAIChatCompletionClient( base_url="http://localhost:8000/v1", api_key="dummy", model=model, model_info=model_info ) # Define the assistant agent agent = AssistantAgent( name="time-assistant", model_client=model_client, tools=[adapter], system_message="You are a helpful assistant that can provide time information." ) # Run a test task that invokes the tool await Console( agent.run_stream( task="What time is it in Europe/Paris?", cancellation_token=CancellationToken() ) ) if __name__ == "__main__": asyncio.run(main())- Nawiązuje połączenie z serwerem Time MCP i ładuje narzędzie
Uruchom skrypt testowy w środowisku wirtualnym.
uv run test.pyW danych wyjściowych tego testu należy oczekiwać następujących elementów:
- Model prawidłowo generuje wywołanie narzędzia przy użyciu nazwy MCP i oczekiwanych argumentów.
- Autogen wysyła wywołanie narzędzia do serwera MCP, serwer MCP uruchamia logikę i zwraca wynik.
- Funkcja
Phi-4-mini-instructLLM interpretuje nieprzetworzone dane wyjściowe narzędzia i zapewnia odpowiedź w języku naturalnym.
---------- TextMessage (user) ---------- What time is it in Europe/Paris? ---------- ToolCallRequestEvent (time-assistant) ---------- [FunctionCall(id='chatcmpl-tool-xxxx', arguments='{"timezone": "Europe/Paris"}', name='get_current_time')] ---------- ToolCallExecutionEvent (time-assistant) ---------- [FunctionExecutionResult(content='{"timezone":"Europe/Paris","datetime":"2025-09-17T17:43:05+02:00","is_dst":true}', name='get_current_time', call_id='chatcmpl-tool-xxxx', is_error=False)] ---------- ToolCallSummaryMessage (time-assistant) ---------- The current time in Europe/Paris is 5:43 PM (CEST).
Eksperymentowanie z większą ilością narzędzi MCP
Możesz przetestować różne narzędzia dostępne dla tego serwera MCP, takie jak convert_time.
test.pyW pliku z poprzedniego kroku zaktualizujadapterdefinicję do następującej:adapter = await StreamableHttpMcpToolAdapter.from_server_params(server_params, "convert_time")Zaktualizuj definicję
task, aby wywołać nowe narzędzie. Przykład:task="Convert 9:30 AM New York time to Tokyo time."Zapisz i uruchom skrypt języka Python.
uv run test.pyOczekiwane dane wyjściowe:
9:30 AM in New York is 10:30 PM in Tokyo.
Rozwiązywanie problemów
W poniższej tabeli przedstawiono typowe błędy podczas testowania wnioskowania KAITO za pomocą zewnętrznego serwera MCP i sposoby ich rozwiązywania:
| Error | Jak rozwiązać problem |
|---|---|
Tool not found |
Upewnij się, że nazwa narzędzia jest zgodna z nazwą zadeklarowaną w pliku /mcp/list_tools. |
401 Unauthorized |
Upewnij się, że zaktualizujesz server_params, aby uwzględnić nagłówki z tokenem uwierzytelniania, jeśli twój serwer MCP go wymaga. |
connection refused |
Upewnij się, że usługa wnioskowania KAITO jest prawidłowo przekierowana przez port (np. do localhost:8000). |
tool call ignored |
Zapoznaj się z dokumentacją wywoływania narzędzia KAITO , aby znaleźć modele VLLM, które obsługują wywoływanie narzędzi. |
Dalsze kroki
W tym artykule nauczyłeś się, jak połączyć obszar roboczy KAITO z zewnętrznym serwerem referencyjnym MCP, korzystając z Autogen, aby umożliwić wywoływanie narzędzi za pośrednictwem interfejsu API zgodnego z OpenAI. Potwierdzono również, że LLM może odnajdywać, wywoływać i integrować wyniki z narzędzi zgodnych z MCP działających w środowisku AKS. Aby dowiedzieć się więcej, zobacz następujące zasoby:
- Wdrażanie i testowanie wywołań narzędzi za pomocą dodatku łańcucha narzędzi sztucznej inteligencji w usłudze AKS.
- Uruchamianie narzędzi KAITO i oficjalna dokumentacja MCP.