Vývoj aplikací pomocí sémantického jádra a Azure AI Foundry
V tomto článku se dozvíte, jak používat sémantické jádro s modely nasazenými z katalogu modelů Azure AI na portálu Azure AI Foundry.
Požadavky
Projekt Azure AI, jak je vysvětleno v tématu Vytvoření projektu na portálu Azure AI Foundry.
Model podporující rozhraní API pro odvozování modelů Azure AI nasazené V tomto příkladu
Mistral-Large
používáme nasazení, ale používáme libovolný model vašich preferencí. Pro použití funkcí vkládání v llamaIndex potřebujete model vložení, jako jecohere-embed-v3-multilingual
.- Můžete postupovat podle pokynů v tématu Nasazení modelů jako bezserverových rozhraní API.
Nainstalovaný Python 3.10 nebo novější, včetně pipu.
Nainstalováno sémantické jádro. Můžete to udělat pomocí:
pip install semantic-kernel
V tomto příkladu pracujeme s rozhraním API pro odvozování modelu Azure AI, proto nainstalujeme relevantní závislosti Azure. Můžete to udělat pomocí:
pip install semantic-kernel[azure]
Konfigurace prostředí
Pokud chcete používat LLM nasazené na portálu Azure AI Foundry, budete k němu potřebovat koncový bod a přihlašovací údaje. Pokud chcete získat potřebné informace z modelu, který chcete použít, postupujte takto:
Přejděte na portál Azure AI Foundry.
Otevřete projekt, ve kterém je model nasazený, pokud ještě není otevřený.
Přejděte na Modely + koncové body a vyberte model, který jste nasadili podle požadavků.
Zkopírujte adresu URL koncového bodu a klíč.
Tip
Pokud byl váš model nasazený s podporou Microsoft Entra ID, nepotřebujete klíč.
V tomto scénáři jsme umístili adresu URL koncového bodu i klíč do následujících proměnných prostředí:
export AZURE_AI_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_AI_INFERENCE_API_KEY="<your-key-goes-here>"
Po nakonfigurování vytvořte klienta pro připojení ke koncovému bodu:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="<deployment-name>")
Tip
Klient automaticky přečte proměnné AZURE_AI_INFERENCE_ENDPOINT
prostředí a AZURE_AI_INFERENCE_API_KEY
připojí se k modelu. Koncový bod a klíč ale můžete také předat přímo klientovi prostřednictvím endpoint
parametrů konstruktoru a api_key
parametrů.
Pokud váš koncový bod podporuje MICROSOFT Entra ID, můžete k vytvoření klienta použít následující kód:
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>")
Poznámka:
Při použití ID Microsoft Entra se ujistěte, že koncový bod byl nasazen pomocí této metody ověřování a že máte požadovaná oprávnění k jeho vyvolání.
Modely Azure OpenAI
Pokud používáte model Azure OpenAI, můžete k vytvoření klienta použít následující kód:
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"],
),
)
Parametry odvození
Způsob odvození můžete nakonfigurovat pomocí AzureAIInferenceChatPromptExecutionSettings
třídy:
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
)
Volání služby
Nejprve zavoláme službu dokončování chatu s jednoduchou historií chatu:
Tip
Sémantické jádro je asynchronní knihovna, takže ke spuštění kódu musíte použít knihovnu asyncio.
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)
Alternativně můžete streamovat odpověď ze služby:
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])
Vytvoření dlouhotrvající konverzace
Dlouhou konverzaci můžete vytvořit pomocí smyčky:
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:> "))
Pokud streamujete odpověď, můžete použít následující kód:
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:> "))
Použití modelů vkládání
Nakonfigurujte prostředí podobně jako v předchozích krocích, ale použijte třídu AzureAIInferenceEmbeddings
:
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceTextEmbedding
embedding_generation_service = AzureAIInferenceTextEmbedding(ai_model_id="<deployment-name>")
Následující kód ukazuje, jak získat vkládání ze služby:
embeddings = await embedding_generation_service.generate_embeddings(
texts=["My favorite color is blue.", "I love to eat pizza."],
)
for embedding in embeddings:
print(embedding)