Freigeben über


Entwickeln von Anwendungen mit semantischem Kernel und Microsoft Foundry

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

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.

  1. Melden Sie sich bei Microsoft Foundry an.

  2. Öffnen Sie das Projekt, in dem das Modell bereitgestellt wird, falls es noch nicht geöffnet ist.

  3. Wechseln Sie zu Modelle + Endpunkte, und wählen Sie das Modell aus, das Sie gemäß den Voraussetzungen bereitgestellt haben.

  4. 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)