Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
-
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 do Foundry, conforme explicado em Criar um projeto no portal do Foundry.
Um modelo que dá suporte à API de Inferência de Modelo de IA do Azure implantada. Este artigo usa uma
Mistral-Largeimplantaçã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-multilingual.- 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. 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. Pode usar o seguinte comando:
pip install semantic-kernel[azure]
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.
Entre na Fábrica da Microsoft.
Abra o projeto em que o modelo está implantado, se ainda não estiver aberto.
Vá para Modelos + pontos de extremidade e selecione o modelo que você implantou conforme indicado nos pré-requisitos.
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)