Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется только к:Портал Foundry (классический). Эта статья недоступна для нового портала Foundry.
Дополнительные сведения о новом портале.
Примечание
Содержание в новой документации Microsoft Foundry может открываться по ссылкам в этой статье вместо документации Foundry (классической версии), которую вы просматриваете сейчас.
В этой статье вы узнаете, как использовать Semantic Kernel с моделями, развернутыми из каталога моделей Foundry Microsoft на портале Foundry.
Важно
Azure бета SDK для вывода ИИ устарел и будет прекращён 26 августа 2026 года. Перейдите на общедоступный API OpenAI/v1 с стабильным пакетом SDK OpenAI. Следуйте инструкциям по миграции , чтобы перейти на OpenAI/v1, используя пакет SDK для предпочитаемого языка программирования.
Необходимые условия
-
Учетная запись Azure с активной подпиской. Если у вас нет, создайте учетную запись free Azure, которая включает бесплатную пробную подписку.
Создание проекта в Foundry, как описано в сайте "Создание проекта в портале Foundry".
Развернутая модель, поддерживающая API вывода моделей Azure ИИ. В данной статье используется развертывание
Mistral-Large. Вы можете использовать любую модель. Чтобы использовать возможности внедрения в LlamaIndex, вам потребуется модель внедрения, напримерcohere-embed-v3-multilingual.- Следуйте инструкциям в статье "Развертывание моделей в качестве бессерверных развертываний API".
Python 3.10 или более поздней версии, включая pip.
Semantic Kernel установлен. Вы можете использовать следующую команду:
pip install semantic-kernelВ этой статье используется API вывода моделей, поэтому установите соответствующие Azure зависимости. Вы можете использовать следующую команду:
pip install semantic-kernel[azure]
Настройка среды
Чтобы использовать языковые модели, развернутые на портале Foundry, вам потребуется конечная точка и учетные данные для подключения к проекту. Выполните следующие действия, чтобы получить необходимые сведения из модели:
Совет
Так как вы можете настроить левую панель на портале Microsoft Foundry, вы можете увидеть элементы, которые могут отличаться от тех, что показаны в этих шагах. Если вы не видите, что вы ищете, выберите ... Подробнее в нижней части левой панели.
Войдите в Microsoft Foundry.
Откройте проект, в котором развернута модель, если она еще не открыта.
Перейдите к Модели + конечные точки и выберите модель, которую вы развернули, как указано в предварительных требованиях.
Скопируйте URL-адрес конечной точки и ключ.
Совет
Если вы развернули модель с поддержкой Microsoft Entra ID, вам не нужен ключ.
В этом примере используются переменные среды для URL-адреса конечной точки и ключа:
export AZURE_AI_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_AI_INFERENCE_API_KEY="<your-key-goes-here>"
После настройки конечной точки и ключа создайте клиент для подключения к конечной точке:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="<deployment-name>")
Совет
Клиент автоматически считывает переменные среды AZURE_AI_INFERENCE_ENDPOINT, затем подключается к модели AZURE_AI_INFERENCE_API_KEY. Вместо этого можно передать конечную точку и ключ непосредственно клиенту, используя параметры endpoint и api_key в конструкторе.
Кроме того, если конечная точка поддерживает Microsoft Entra ID, можно использовать следующий код для создания клиента:
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>")
Примечание
Если вы используете Microsoft Entra ID, убедитесь, что конечная точка была развернута с помощью этого метода проверки подлинности и у вас есть необходимые разрешения для вызова.
Azure OpenAI модели
Если вы используете модель OpenAI Azure, используйте следующий код для создания клиента:
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"],
),
)
Параметры инференции
Вы можете настроить способ вывода с помощью AzureAIInferenceChatPromptExecutionSettings класса:
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
)
Вызов службы
Сначала вызовите службу завершения чата с простым журналом чата:
Совет
Semantic Kernel — это асинхронная библиотека, поэтому для выполнения кода необходимо использовать асинхронную библиотеку.
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)
Кроме того, можно передавать ответ от службы:
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])
Создание длительной беседы
Вы можете создать длительный диалог с помощью цикла:
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:> "))
Если вы выполняете потоковую передачу ответа, можно использовать следующий код:
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:> "))
Использование моделей встраивания
Настройте среду аналогично предыдущим шагам, но используйте AzureAIInferenceEmbeddings класс:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceTextEmbedding
embedding_generation_service = AzureAIInferenceTextEmbedding(ai_model_id="<deployment-name>")
В следующем коде показано, как получить эмбеддинги из службы.
embeddings = await embedding_generation_service.generate_embeddings(
texts=["My favorite color is blue.", "I love to eat pizza."],
)
for embedding in embeddings:
print(embedding)