Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieses Dokument bezieht sich auf das Microsoft Foundry(klassische) Portal.
🔍 Zeigen Sie die Microsoft Foundry-Dokumentation (neu) an, um mehr über das neue Portal zu erfahren.
In diesem Artikel erfahren Sie, wie Sie den semantischen Kernel mit Modellen verwenden, die aus dem Foundry-Modellkatalog im Microsoft Foundry-Portal bereitgestellt werden.
Von Bedeutung
Wenn Sie derzeit ein Azure AI Inference Beta SDK mit Microsoft Foundry Models oder Azure OpenAI-Dienst verwenden, empfehlen wir dringend, dass Sie zur allgemein verfügbaren OpenAI/v1-API wechseln, die ein openAI stable SDK verwendet.
Weitere Informationen zum Migrieren zur OpenAI/v1-API mithilfe eines SDK in Ihrer gewünschten Programmiersprache finden Sie unter Migrate from Azure AI Inference SDK to OpenAI SDK.
Voraussetzungen
-
Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie über keins verfügen, erstellen Sie ein kostenloses Azure-Konto, das ein kostenloses Testabonnement enthält.
Ein Foundry-Projekt, wie unter Erstellen eines Projekts im Foundry-Portal erläutert.
Ein Modell, das die bereitgestellte Azure AI Model Inference-API unterstützt. In diesem Artikel wird ein
Mistral-LargeDeployment verwendet. Sie können ein beliebiges Modell verwenden. Falls Sie die Einbettungsfunktionen von LlamaIndex verwenden möchten, benötigen Sie ein Einbettungsmodell wiecohere-embed-v3-multilingual.- Sie können die Anweisungen unter Bereitstellen von Modellen als serverlose API-Bereitstellungen befolgen.
Installation von Python 3.10 oder höher (einschließlich pip).
Installation des semantischen Kernels. Sie können den folgenden Befehl verwenden:
pip install semantic-kernelIn diesem Artikel wird die Modellinference-API verwendet. Installieren Sie daher die relevanten Azure-Abhängigkeiten. Sie können den folgenden Befehl verwenden:
pip install semantic-kernel[azure]
Konfigurieren der Umgebung
Um sprachmodelle zu verwenden, die im Foundry-Portal bereitgestellt werden, benötigen Sie den Endpunkt und die Anmeldeinformationen, um eine Verbindung mit Ihrem Projekt herzustellen. Führen Sie die folgenden Schritte aus, um die benötigten Informationen aus dem Modell abzurufen:
Tipp
Da Sie den linken Bereich im Microsoft Foundry-Portal anpassen können, werden möglicherweise andere Elemente als in diesen Schritten angezeigt. Wenn Sie nicht sehen, wonach Sie suchen, wählen Sie ... Mehr am unteren Rand des linken Bereichs.
Melden Sie sich bei Microsoft Foundry an.
Öffnen Sie das Projekt, in dem das Modell bereitgestellt wird, falls es noch nicht geöffnet ist.
Wechseln Sie zu Modelle + Endpunkte, und wählen Sie das Modell aus, das Sie gemäß den Voraussetzungen bereitgestellt haben.
Kopieren Sie die Endpunkt-URL und den Schlüssel.
Tipp
Wenn Ihr Modell mit Microsoft Entra ID-Unterstützung bereitgestellt wurde, benötigen Sie keinen Schlüssel.
In diesem Beispiel werden Umgebungsvariablen sowohl für die Endpunkt-URL als auch für den Schlüssel verwendet:
export AZURE_AI_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_AI_INFERENCE_API_KEY="<your-key-goes-here>"
Nachdem Sie den Endpunkt und den Schlüssel konfiguriert haben, erstellen Sie einen Client, um eine Verbindung mit dem Endpunkt herzustellen:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="<deployment-name>")
Tipp
Der Client liest automatisch die Umgebungsvariablen AZURE_AI_INFERENCE_ENDPOINT und AZURE_AI_INFERENCE_API_KEY, um eine Verbindung mit dem Modell herzustellen. Sie können stattdessen Endpunkt und Schlüssel direkt an den Client übergeben, indem Sie die Parameter endpoint und api_key im Konstruktor verwenden.
Wenn Ihr Endpunkt Microsoft Entra ID unterstützt, können Sie zum Erstellen des Clients alternativ auch den folgenden Code verwenden:
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>")
Hinweis
Wenn Sie Microsoft Entra-ID verwenden, stellen Sie sicher, dass der Endpunkt mit dieser Authentifizierungsmethode bereitgestellt wurde und dass Sie über die erforderlichen Berechtigungen zum Aufrufen des Endpunkts verfügen.
Azure OpenAI-Modelle
Wenn Sie ein Azure OpenAI-Modell verwenden, können Sie den Client mit dem folgenden Code erstellen:
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"],
),
)
Rückschlussparameter
Mit der AzureAIInferenceChatPromptExecutionSettings Klasse können Sie konfigurieren, wie Sie die Ableitung durchführen:
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
)
Aufrufen des Diensts
Rufen Sie zuerst den Chatabschlussdienst mit einem einfachen Chatverlauf an:
Tipp
Der semantische Kernel ist eine asynchrone Bibliothek. Daher müssen Sie die asyncio-Bibliothek verwenden, um den Code auszuführen.
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)
Alternativ können Sie die Antwort vom Dienst streamen:
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])
Erstellen einer Unterhaltung mit langer Dauer
Sie können eine Unterhaltung mit langer Dauer mithilfe einer Schleife erstellen:
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:> "))
Wenn Sie die Antwort streamen, können Sie den folgenden Code verwenden:
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:> "))
Verwenden von Einbettungsmodellen
Konfigurieren Sie Ihre Umgebung ähnlich wie in den vorherigen Schritten, verwenden Sie jedoch die AzureAIInferenceEmbeddings-Klasse:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceTextEmbedding
embedding_generation_service = AzureAIInferenceTextEmbedding(ai_model_id="<deployment-name>")
Der folgende Code zeigt, wie Einbettungen aus dem Dienst abgerufen werden:
embeddings = await embedding_generation_service.generate_embeddings(
texts=["My favorite color is blue.", "I love to eat pizza."],
)
for embedding in embeddings:
print(embedding)