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.
Uwaga / Notatka
Ten dokument odnosi się do portalu Microsoft Foundry (klasycznego).
🔍 Zapoznaj się z dokumentacją rozwiązania Microsoft Foundry (nową), aby dowiedzieć się więcej o nowym portalu.
Z tego artykułu dowiesz się, jak używać Semantic Kernel z modelami wdrożonych z katalogu modeli Foundry w portalu Microsoft Foundry.
Ważne
Jeśli obecnie używasz wersji beta zestawu SDK do wnioskowania Azure AI z modelami Microsoft Foundry lub usługą Azure OpenAI, zdecydowanie zalecamy przejście na ogólnie dostępny interfejs API OpenAI/v1, który korzysta ze stabilnego zestawu SDK OpenAI.
Aby uzyskać więcej informacji na temat migrowania do interfejsu API OpenAI/v1 przy użyciu zestawu SDK w wybranym języku programowania, zobacz Migrowanie z zestawu SDK do wnioskowania Azure AI do zestawu SDK OpenAI.
Wymagania wstępne
-
Konto Azure z aktywną subskrypcją. Jeśli go nie masz, utwórz bezpłatne konto platformy Azure, które obejmuje subskrypcję bezpłatnej wersji próbnej.
Projekt Foundry opisany w artykule Create a project in Foundry portal (Tworzenie projektu w portalu Foundry).
Model, który obsługuje interfejs API wnioskowania modelu AI platformy Azure, został wdrożony. W tym artykule wykorzystuje się
Mistral-Largewdrożenie. Możesz użyć dowolnego modelu. Do korzystania z funkcji osadzania w usłudze LlamaIndex potrzebny jest model osadzania, taki jakcohere-embed-v3-multilingual.- Postępuj zgodnie z instrukcjami w temacie Wdrażanie modeli jako bezserwerowych wdrożeń interfejsu API.
Zainstalowano środowisko Python w wersji 3.10 lub nowszej, w tym narzędzie.
Zainstalowane jądro semantyczne. Możesz użyć następującego polecenia:
pip install semantic-kernelW tym artykule użyto interfejsu API wnioskowania modelu, dlatego zainstaluj odpowiednie zależności platformy Azure. Możesz użyć następującego polecenia:
pip install semantic-kernel[azure]
Konfigurowanie środowiska
Aby używać modeli językowych wdrożonych w portalu Foundry, potrzebny jest punkt końcowy i poświadczenia do nawiązania połączenia z projektem. Wykonaj następujące kroki, aby uzyskać potrzebne informacje z modelu:
Wskazówka
Ponieważ możesz dostosować okienko po lewej stronie w portalu Microsoft Foundry, możesz zobaczyć inne elementy, niż pokazano w tych krokach. Jeśli nie widzisz szukanych danych, wybierz pozycję ... Więcej w dolnej części okienka po lewej stronie.
Zaloguj się do usługi Microsoft Foundry.
Otwórz projekt, w którym wdrożono model, jeśli nie jest jeszcze otwarty.
Przejdź do pozycji Modele i punkty końcowe i wybierz wdrożony model zgodnie z wymaganiami wstępnymi.
Skopiuj adres URL punktu końcowego i klucz.
Wskazówka
Jeśli model został wdrożony przy użyciu obsługi identyfikatora Entra firmy Microsoft, nie potrzebujesz klucza.
W tym przykładzie użyto zmiennych środowiskowych zarówno dla adresu URL punktu końcowego, jak i klucza:
export AZURE_AI_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_AI_INFERENCE_API_KEY="<your-key-goes-here>"
Po skonfigurowaniu punktu końcowego i klucza utwórz klienta w celu nawiązania połączenia z punktem końcowym:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="<deployment-name>")
Wskazówka
Klient automatycznie odczytuje zmienne AZURE_AI_INFERENCE_ENDPOINT środowiskowe i AZURE_AI_INFERENCE_API_KEY nawiązuje połączenie z modelem. Zamiast tego można przekazać endpoint i klucz bezpośrednio do klienta, używając parametrów endpoint i api_key w konstruktorze.
Alternatywnie, jeśli punkt końcowy obsługuje identyfikator Entra firmy Microsoft, możesz użyć następującego kodu, aby utworzyć klienta:
export AZURE_AI_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="<deployment-name>")
Uwaga / Notatka
Jeśli używasz identyfikatora Entra firmy Microsoft, upewnij się, że punkt końcowy został wdrożony przy użyciu tej metody uwierzytelniania i że masz wymagane uprawnienia do jego wywołania.
Modele usługi Azure OpenAI
Jeśli używasz modelu usługi Azure OpenAI, możesz użyć następującego kodu, aby utworzyć klienta:
from azure.ai.inference.aio import ChatCompletionsClient
from azure.identity.aio import DefaultAzureCredential
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(
ai_model_id="<deployment-name>",
client=ChatCompletionsClient(
endpoint=f"{str(<your-azure-open-ai-endpoint>).strip('/')}/openai/deployments/{<deployment_name>}",
credential=DefaultAzureCredential(),
credential_scopes=["https://cognitiveservices.azure.com/.default"],
),
)
Parametry wnioskowania
Możesz skonfigurować sposób wnioskowania przy użyciu AzureAIInferenceChatPromptExecutionSettings klasy :
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatPromptExecutionSettings
execution_settings = AzureAIInferenceChatPromptExecutionSettings(
max_tokens=100,
temperature=0.5,
top_p=0.9,
# extra_parameters={...}, # model-specific parameters
)
Wywoływanie usługi
Najpierw wywołaj usługę uzupełniania czatu z prostą historią czatu:
Wskazówka
Semantyczne jądro jest biblioteką asynchroniczną, więc musisz użyć biblioteki asyncio do uruchomienia kodu.
import asyncio
async def main():
...
if __name__ == "__main__":
asyncio.run(main())
from semantic_kernel.contents.chat_history import ChatHistory
chat_history = ChatHistory()
chat_history.add_user_message("Hello, how are you?")
response = await chat_completion_service.get_chat_message_content(
chat_history=chat_history,
settings=execution_settings,
)
print(response)
Alternatywnie możesz przesłać strumieniowo odpowiedź z usługi:
chat_history = ChatHistory()
chat_history.add_user_message("Hello, how are you?")
response = chat_completion_service.get_streaming_chat_message_content(
chat_history=chat_history,
settings=execution_settings,
)
chunks = []
async for chunk in response:
chunks.append(chunk)
print(chunk, end="")
full_response = sum(chunks[1:], chunks[0])
Tworzenie długotrwałej konwersacji
Możesz utworzyć długotrwałą konwersację przy użyciu pętli:
while True:
response = await chat_completion_service.get_chat_message_content(
chat_history=chat_history,
settings=execution_settings,
)
print(response)
chat_history.add_message(response)
chat_history.add_user_message(user_input = input("User:> "))
Jeśli przesyłasz strumieniowo odpowiedź, możesz użyć następującego kodu:
while True:
response = chat_completion_service.get_streaming_chat_message_content(
chat_history=chat_history,
settings=execution_settings,
)
chunks = []
async for chunk in response:
chunks.append(chunk)
print(chunk, end="")
full_response = sum(chunks[1:], chunks[0])
chat_history.add_message(full_response)
chat_history.add_user_message(user_input = input("User:> "))
Korzystanie z modeli osadzania
Skonfiguruj środowisko podobnie do poprzednich kroków, ale użyj AzureAIInferenceEmbeddings klasy :
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceTextEmbedding
embedding_generation_service = AzureAIInferenceTextEmbedding(ai_model_id="<deployment-name>")
Poniższy kod pokazuje, jak pobrać osadzanie z usługi:
embeddings = await embedding_generation_service.generate_embeddings(
texts=["My favorite color is blue.", "I love to eat pizza."],
)
for embedding in embeddings:
print(embedding)