Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este documento hace referencia al portal de Microsoft Foundry (clásico).
🔍 Consulte la documentación de Microsoft Foundry (nuevo) para obtener información sobre el nuevo portal.
En este artículo, aprenderá a usar Semantic Kernel con modelos implementados desde el catálogo de modelos de Foundry en el portal de Microsoft Foundry.
Importante
Si actualmente usa un SDK beta de inferencia de Azure AI con los modelos de Microsoft Foundry o el servicio Azure OpenAI, se recomienda encarecidamente realizar la transición a la API openAI/v1 disponible con carácter general, que usa un SDK estable de OpenAI.
Para más información sobre cómo migrar a la API de OpenAI/v1 mediante un SDK en el lenguaje de programación que prefiera, consulte Migración del SDK de inferencia de Azure AI a OpenAI SDK.
Prerrequisitos
-
Una cuenta de Azure con una suscripción activa. Si no tiene una, cree una cuenta gratuita de Azure, que incluye una suscripción de evaluación gratuita.
Un proyecto de Foundry como se explica en Creación de un proyecto en el portal de Foundry.
Modelo que admite la API de inferencia de modelos de Azure AI implementada. En este artículo se usa una implementación
Mistral-Large. Puede usar cualquier modelo. Para usar funcionalidades de inserción en LlamaIndex, necesita un modelo de inserción comocohere-embed-v3-multilingual.- Puede seguir las instrucciones de Implementación de modelos como implementaciones de API sin servidor.
Python 3.10 o una versión posterior instalado, incluido pip.
Kernel semántico instalado. Puede usar el comando siguiente:
pip install semantic-kernelEn este artículo se usa model Inference API, por lo que se instalan las dependencias de Azure pertinentes. Puede usar el comando siguiente:
pip install semantic-kernel[azure]
Configuración del entorno
Para usar modelos de lenguaje implementados en el portal de Foundry, necesita el punto de conexión y las credenciales para conectarse al proyecto. Siga estos pasos para obtener la información que necesita del modelo:
Sugerencia
Dado que puede personalizar el panel izquierdo en el portal de Microsoft Foundry, es posible que vea elementos diferentes de los que se muestran en estos pasos. Si no ve lo que busca, seleccione ... Más en la parte inferior del panel izquierdo.
Inicie sesión en Microsoft Foundry.
Abra el proyecto donde está implementado el modelo, si aún no está abierto.
Vaya a Modelos y puntos de conexión y seleccione el modelo implementado como se indica en los requisitos previos.
Copie la dirección URL del punto de conexión y la clave.
Sugerencia
Si el modelo se implementó con compatibilidad con Microsoft Entra ID, no necesita una clave.
En este ejemplo se usan variables de entorno para la dirección URL del punto de conexión y la clave:
export AZURE_AI_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_AI_INFERENCE_API_KEY="<your-key-goes-here>"
Después de configurar el punto de conexión y la clave, cree un cliente para conectarse al punto de conexión:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="<deployment-name>")
Sugerencia
El cliente lee automáticamente las variables de entorno AZURE_AI_INFERENCE_ENDPOINT y AZURE_AI_INFERENCE_API_KEY para conectarse al modelo. En su lugar, podría pasar el punto de conexión y la clave directamente al cliente mediante los parámetros endpoint y api_key en el constructor.
Como alternativa, si el punto de conexión es compatible con Microsoft Entra ID, puede usar el siguiente código para crear el 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>")
Nota:
Si usa el identificador de Entra de Microsoft, asegúrese de que el punto de conexión se implementó con ese método de autenticación y de que tiene los permisos necesarios para invocarlo.
Modelos de Azure OpenAI
Si usa un modelo de Azure OpenAI, puede utilizar el código siguiente para crear el 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 inferencia
Puede configurar cómo realizar la inferencia mediante la AzureAIInferenceChatPromptExecutionSettings clase :
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
)
Llamada al servicio
En primer lugar, llame al servicio de finalización del chat con un historial de chat simple:
Sugerencia
Kernel semántico es una biblioteca asincrónica, por lo que debe usar la biblioteca asyncio para ejecutar el 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, puede transmitir la respuesta desde el servicio:
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])
Creación de una conversación de larga duración
Puede crear una conversación de larga duración mediante un bucle :
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:> "))
Si transmite la respuesta, puede usar el código siguiente:
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:> "))
Uso de modelos de inserción
Configure el entorno de forma similar a los pasos anteriores, pero use la clase AzureAIInferenceEmbeddings:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceTextEmbedding
embedding_generation_service = AzureAIInferenceTextEmbedding(ai_model_id="<deployment-name>")
En el código siguiente se muestra cómo obtener inserciones desde el servicio:
embeddings = await embedding_generation_service.generate_embeddings(
texts=["My favorite color is blue.", "I love to eat pizza."],
)
for embedding in embeddings:
print(embedding)