Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Este documento refere-se ao portal Microsoft Foundry (clássico).
🔍 Consulte a documentação (nova) da Microsoft Foundry para saber mais sobre o novo portal.
Neste artigo, aprende a usar o Semantic Kernel com modelos implementados a partir do catálogo de modelos Foundry no portal Microsoft Foundry.
Importante
Se está atualmente a usar um SDK beta Azure AI Inference com Microsoft Foundry Models ou o serviço Azure OpenAI, recomendamos vivamente que faça a transição para a API OpenAI/v1 geralmente disponível, que utiliza um SDK estável da OpenAI.
Para obter mais informações sobre como migrar para a API OpenAI/v1 usando um SDK na linguagem de programação de sua escolha, consulte Migrar do SDK de inferência do Azure AI para o SDK do OpenAI.
Pré-requisitos
-
Uma conta do Azure com uma assinatura ativa. Se você não tiver uma, crie uma conta gratuita do Azure, que inclui uma assinatura de avaliação gratuita.
Um projeto da Foundry conforme explicado no portal Criar um projeto na Foundry.
Um modelo que dá suporte à API de Inferência de Modelo de IA do Azure implantada. Este artigo usa uma
Mistral-Largeimplementação. Você pode usar qualquer modelo. Para usar recursos de incorporação no LlamaIndex, você precisa de um modelo de incorporação comocohere-embed-v3-multilingualo .- Você pode seguir as instruções em Implantar modelos como implantações de API sem servidor.
Python 3.10 ou posterior instalado, incluindo pip.
Kernel semântico instalado. Você pode usar o seguinte comando:
pip install semantic-kernelEste artigo usa a API de Inferência de Modelo, portanto, instale as dependências relevantes do Azure. Você pode usar o seguinte comando:
pip install semantic-kernel[azure]
Configurar o ambiente
Para usar modelos de linguagem implementados no portal Foundry, precisa do endpoint e das credenciais para se ligar ao seu projeto. Siga estas etapas para obter as informações necessárias do modelo:
Sugestão
Como pode personalizar o painel esquerdo no portal Microsoft Foundry, pode ver itens diferentes dos mostrados nestes passos. Se não encontrar o que procura, selecione ... Mais informações na parte inferior do painel esquerdo.
Inicie sessão no Microsoft Foundry.
Abra o projeto onde o modelo está implantado, se ainda não estiver aberto.
Vá para Modelos + pontos de extremidade e selecione o modelo implantado conforme indicado nos pré-requisitos.
Copie o URL do ponto de extremidade e a chave.
Sugestão
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>")
Sugestão
O cliente lê automaticamente as variáveis AZURE_AI_INFERENCE_ENDPOINT de ambiente e AZURE_AI_INFERENCE_API_KEY se conecta ao modelo. Em vez disso, você pode passar diretamente o ponto de extremidade e a chave para o cliente, utilizando os parâmetros endpoint e api_key no construtor.
Como alternativa, se o seu ponto de extremidade suportar o Microsoft Entra ID, você pode 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 utilizar o Entra ID da Microsoft, verifique se o ponto de extremidade foi implantado com esse método de autenticação e se possui as permissões necessárias para aceder a ele.
Modelos do Azure OpenAI
Se você estiver usando um modelo do Azure OpenAI, 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
)
Chamar o serviço
Primeiro, ligue para o serviço de conclusão de bate-papo com um histórico de bate-papo simples:
Sugestão
O Kernel Semântico é uma biblioteca assíncrona, então você precisa usar a biblioteca asyncio 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 AzureAIInferenceEmbeddings classe:
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 incorporaçõ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)