Compartilhar via


Desenvolver aplicativos com Kernel Semântico e Microsoft Foundry

Observação

Este documento refere-se ao portal do Microsoft Foundry (clássico ).

🔍 Exiba a documentação do Microsoft Foundry (novo) para saber mais sobre o novo portal.

Neste artigo, você aprenderá a usar o Kernel Semântico com modelos implantados no catálogo de modelos do Foundry no portal do Microsoft Foundry.

Importante

Se você estiver usando um SDK beta de Inferência de IA do Azure com o Microsoft Foundry Models ou o serviço Azure OpenAI, é altamente recomendável fazer a transição para a API OpenAI/v1, que usa um SDK estável do OpenAI.

Para obter mais informações sobre como migrar para a API OpenAI/v1 usando um SDK em sua linguagem de programação de sua escolha, consulte Migrar do SDK de Inferência de IA do Azure para o SDK do OpenAI.

Pré-requisitos

Configure o ambiente

Para usar modelos de linguagem implantados no portal Foundry, você precisa do endpoint e das credenciais para se conectar ao seu projeto. Siga estas etapas para obter as informações necessárias no modelo:

Dica

Como você pode personalizar o painel esquerdo no portal da Fábrica da Microsoft, talvez veja itens diferentes dos mostrados nestas etapas. Se você não vir o que está procurando, selecione ... Mais na parte inferior do painel esquerdo.

  1. Entre na Fábrica da Microsoft.

  2. Abra o projeto em que o modelo está implantado, se ainda não estiver aberto.

  3. Vá para Modelos + pontos de extremidade e selecione o modelo que você implantou conforme indicado nos pré-requisitos.

  4. Copie o URL do ponto de extremidade e a chave.

    Dica

    Se o seu modelo foi implantado com suporte ao Microsoft Entra ID, você não precisa de uma chave.

Este exemplo usa variáveis de ambiente para a URL do ponto de extremidade e a chave:

export AZURE_AI_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_AI_INFERENCE_API_KEY="<your-key-goes-here>"

Depois de configurar o ponto de extremidade e a chave, crie um cliente para se conectar ao ponto de extremidade:

from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion

chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="<deployment-name>")

Dica

O cliente lê automaticamente as variáveis de ambiente AZURE_AI_INFERENCE_ENDPOINT e AZURE_AI_INFERENCE_API_KEY para se conectar ao modelo. Em vez disso, você pode passar o ponto de extremidade e a chave diretamente para o cliente utilizando os parâmetros endpoint e api_key no construtor.

Como alternativa, se o seu ponto de extremidade oferecer suporte ao Microsoft Entra ID, você poderá usar o seguinte código para criar o cliente:

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>")

Observação

Se você usar o Microsoft Entra ID, verifique se o ponto de extremidade foi implantado com o método de autenticação adequado e se você tem as permissões necessárias para acessá-lo.

Modelos do OpenAI do Azure

Se você estiver usando um modelo do OpenAI do Azure, poderá usar o seguinte código para criar o cliente:

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"],
    ),
)

Parâmetros de inferência

Você pode configurar como executar a inferência usando a AzureAIInferenceChatPromptExecutionSettings classe:

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
)

Chamando o serviço

Primeiro, acione o serviço de conclusão de chat usando um histórico de chat simples.

Dica

O Kernel Semântico é uma biblioteca assíncrona, portanto, você precisa usar a biblioteca assíncrona para executar o código.

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)

Como alternativa, você pode transmitir a resposta do serviço:

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])

Criar uma conversa de longa duração

Você pode criar uma conversa de longa duração usando um loop:

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:> "))

Se você estiver transmitindo a resposta, poderá usar o seguinte código:

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:> "))

Usar modelos de incorporação

Configure seu ambiente de forma semelhante às etapas anteriores, mas use a classe AzureAIInferenceEmbeddings:

from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceTextEmbedding

embedding_generation_service = AzureAIInferenceTextEmbedding(ai_model_id="<deployment-name>")

O código a seguir mostra como obter inserções do serviço:

embeddings = await embedding_generation_service.generate_embeddings(
    texts=["My favorite color is blue.", "I love to eat pizza."],
)

for embedding in embeddings:
    print(embedding)