Разработка приложений с помощью LlamaIndex и Microsoft Foundry (классическая модель)

Применяется только к:Портал Foundry (классический). Эта статья недоступна для нового портала Foundry. Дополнительные сведения о новом портале.

Примечание

Содержание в новой документации Microsoft Foundry может открываться по ссылкам в этой статье вместо документации Foundry (классической версии), которую вы просматриваете сейчас.

В этой статье вы узнаете, как использовать LlamaIndex с моделями, развернутыми из каталога моделей в Microsoft Foundry.

Вы можете использовать модели, развернутые в Microsoft Foundry, с LlamaIndex двумя способами:

  • Использование конкретного API поставщика модели: Некоторые модели, такие как OpenAI, Cohere или Mistral, предлагают собственный набор API и расширений для LlamaIndex. Эти расширения могут включать определенные функциональные возможности, которые поддерживают модель и поэтому подходят, если вы хотите использовать их. При работе с llama-index, установите расширение, которое предназначено для модели, которую вы хотите использовать, например llama-index-llms-openai или llama-index-llms-cohere.

  • Использование API вывода модели Azure AI: Все модели, развернутые в Foundry, поддерживают API вывода модели, который предоставляет общий набор функций, используемый большинством моделей в каталоге. Преимуществом этого API является то, что, так как это одинаково для всех моделей, переход от одного к другому так же просто, как изменение используемого развертывания модели. Дальнейшие изменения в коде не требуются. При работе с LlamaIndex установите расширения llama-index-llms-azure-inference и llama-index-embeddings-azure-inference.

В этом примере вы работаете с API вывода модели.

Важно

Azure бета SDK для вывода ИИ устарел и будет прекращён 26 августа 2026 года. Перейдите на общедоступный API OpenAI/v1 с стабильным пакетом SDK OpenAI. Следуйте инструкциям по миграции , чтобы перейти на OpenAI/v1, используя пакет SDK для предпочитаемого языка программирования.

Необходимые условия

Чтобы запустить это руководство, вам потребуется:

  • Требуемая роль:
    • Владелец или участник ресурса Foundry или Центра искусственного интеллекта для развертывания моделей
    • Пользователь Azure ИИ для использования модели в проекте Foundry
    • Azure Разработчик ИИ для использования модели в рамках проекта на основе хаба
  • Развертывание модели, поддерживающее API вывода моделей. Эта статья использует Mistral-Large-3 в примерах кода; вы можете заменить его на собственное развернутое имя модели.

  • Чтобы использовать возможности внедрения в LlamaIndex, вам потребуется модель внедрения, например cohere-embed-v3-multilingual.

  • Установлена версия Python 3.8 или выше, включая pip.

  • Установлен LlamaIndex. Ее можно установить с помощью следующей команды:

    pip install llama-index
    
  • В этом примере вы работаете с API вывода моделей, поэтому установите следующие пакеты:

    pip install -U llama-index-llms-azure-inference
    pip install -U llama-index-embeddings-azure-inference
    

    Важно

    Для использования службы Foundry Models должна быть установлена версия 0.2.4llama-index-llms-azure-inference или llama-index-embeddings-azure-inference.

Настройка среды

Чтобы использовать LLM, развернутые на портале Foundry Microsoft, вам потребуется конечная точка и учетные данные для подключения к нему. Выполните следующие действия, чтобы получить необходимые сведения из модели, которую вы хотите использовать:

  1. Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry включен. Эти действия относятся к Foundry (new).

  2. Откройте проект, в котором развернута модель, если она еще не открыта.

  3. Скопируйте URL-адрес конечной точки и ключ.

В этом сценарии задайте URL-адрес конечной точки и ключ в качестве переменных среды. (Если скопированная конечная точка содержит дополнительный текст после /models, удалите его, чтобы URL-адрес закончился /models , как показано ниже.)

export AZURE_INFERENCE_ENDPOINT="https://<resource>.services.ai.azure.com/models"
export AZURE_INFERENCE_CREDENTIAL="<your-key-goes-here>"

После настройки среды создайте клиент для подключения к конечной точке.

import os
from llama_index.llms.azure_inference import AzureAICompletionsModel

llm = AzureAICompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
)

Совет

Если развертывание модели размещено в Azure OpenAI в ресурсе Foundry Models или Foundry Tools, настройте клиент в соответствии с указаниями из сервисов Azure OpenAI Models и Foundry Models.

Если конечная точка обслуживает несколько моделей, например с службой Foundry Models или GitHub Model, необходимо указать параметр model_name:

import os
from llama_index.llms.azure_inference import AzureAICompletionsModel

llm = AzureAICompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model_name="Mistral-Large-3",
)

Что это делает: Создает клиент LLM с явной спецификацией имени модели для конечных точек с несколькими моделями. Параметр model_name сообщает службе, какую модель следует использовать для завершения чата.

Ссылки:

Кроме того, если конечная точка поддерживает Microsoft Entra ID, можно использовать следующий код для создания клиента:

import os
from azure.identity import DefaultAzureCredential
from llama_index.llms.azure_inference import AzureAICompletionsModel

llm = AzureAICompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredential(),
)

Что это делает: Создает клиента LLM, используя аутентификацию Microsoft Entra ID (Azure AD), которая более безопасна для эксплуатационных сред, чем ключи API.

Примечание

При использовании Microsoft Entra ID убедитесь, что конечная точка развернута с помощью этого метода проверки подлинности и у вас есть необходимые разрешения для вызова.

Проверка настройки

Проверьте подключение клиента с помощью простого вызова:

from llama_index.core.llms import ChatMessage

messages = [ChatMessage(role="user", content="Hello")]
response = llm.chat(messages)
print(response)

Что это делает: Вызывает модель с простым сообщением для проверки подлинности и подключения. Ожидаемые выходные данные: объект ответа, содержащий приветственное сообщение модели.

Ссылки:

Если вы планируете использовать асинхронный вызов, используйте асинхронную версию для учетных данных:

from azure.identity.aio import (
    DefaultAzureCredential as DefaultAzureCredentialAsync,
)
from llama_index.llms.azure_inference import AzureAICompletionsModel

llm = AzureAICompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=DefaultAzureCredentialAsync(),
)

Azure модели OpenAI и служба Foundry Models

Если вы используете службу Azure OpenAI или Foundry Models убедитесь, что у вас есть по крайней мере версия 0.2.4 интеграции LlamaIndex. Используйте параметр api_version, если необходимо выбрать конкретный api_version.

Для службы Foundry Models необходимо передать model_name параметр:

from llama_index.llms.azure_inference import AzureAICompletionsModel

llm = AzureAICompletionsModel(
    endpoint="https://<resource>.services.ai.azure.com/models",
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    model_name="Mistral-Large-3",
)

Для Azure OpenAI в моделях Foundry:

from llama_index.llms.azure_inference import AzureAICompletionsModel

llm = AzureAICompletionsModel(
    endpoint="https://<resource>.openai.azure.com/openai/deployments/<deployment-name>",
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    api_version="2024-05-01-preview",
)

Совет

Проверьте, какая версия API используется для развертывания. Использование неправильного api_version или не поддерживаемого моделью приводит к исключению ResourceNotFound .

Параметры инференции

Вы можете настроить способ вывода для всех операций, использующих этот клиент, задав дополнительные параметры. Этот подход позволяет избежать их указания на каждом вызове, который выполняется к модели.

llm = AzureAICompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    temperature=0.0,
    model_kwargs={"top_p": 1.0},
)

Что это делает: Задает параметры вывода по умолчанию (temperature и top_p), которые применяются ко всем вызовам чата и завершения, выполненным с этим клиентом. Более низкая температура (0,0) создает более детерминированные выходные данные; top_p управляет разнообразием выборки.

Ссылки:

Для параметров, не поддерживаемых в API вывода модели (справочник), но доступных в базовой модели, используйте model_extras аргумент. В следующем примере параметр safe_prompt, доступный только для моделей Mistral, передается.

llm = AzureAICompletionsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ["AZURE_INFERENCE_CREDENTIAL"],
    temperature=0.0,
    model_kwargs={"model_extras": {"safe_prompt": True}},
)

Использование моделей LLM

Клиент можно использовать непосредственно или настроить модели, которые ваш код использует в LlamaIndex. Чтобы использовать модель напрямую, используйте метод для моделей инструкций чата chat :

from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(
        role="system", content="You are a pirate with colorful personality."
    ),
    ChatMessage(role="user", content="Hello"),
]

response = llm.chat(messages)
print(response)

Вы также можете передавать выходные данные:

response = llm.stream_chat(messages)
for r in response:
    print(r.delta, end="")

Метод complete по-прежнему доступен для моделей типа chat-completions. В таких случаях входной текст преобразуется в сообщение с помощью role="user".

Использование моделей встраивания

Как и при создании клиента LLM, можно подключиться к модели внедрения. В следующем примере укажите переменную среды, чтобы указать модель внедрения:

export AZURE_INFERENCE_ENDPOINT="<your-model-endpoint-goes-here>"
export AZURE_INFERENCE_CREDENTIAL="<your-key-goes-here>"

Затем создайте клиент:

from llama_index.embeddings.azure_inference import AzureAIEmbeddingsModel

embed_model = AzureAIEmbeddingsModel(
    endpoint=os.environ["AZURE_INFERENCE_ENDPOINT"],
    credential=os.environ['AZURE_INFERENCE_CREDENTIAL'],
    model="<your-model-name>",
)

Что это делает: Создает экземпляр клиента для встраивания, чтобы преобразовывать текст в векторные представления. Эмбеддинги — это числовые представления текста, используемые для поиска семантического сходства и получения с дополненным генеративным подходом (RAG).

Ссылки:

В следующем примере показан простой тест для проверки его работы:

from llama_index.core.schema import TextNode

nodes = [
    TextNode(
        text="Before college the two main things I worked on, "
        "outside of school, were writing and programming."
    )
]
response = embed_model(nodes=nodes)
print(response[0].embedding)

Что это делает: Преобразует текстовый узел в эмбеддинги и выводит на экран числовую репрезентацию. Ожидаемые выходные данные: список чисел с плавающей запятой, представляющий семантический смысл текста (типичная длина: 384–1024 измерения в зависимости от модели).

Ссылки:

Настройка моделей, которые использует код

В коде можно использовать клиент модели LLM или встраивания по отдельности при работе с LlamaIndex или настроить весь сеанс при помощи параметров Settings. При настройке сеанса все код использует одинаковые модели для всех операций.

from llama_index.core import Settings

Settings.llm = llm
Settings.embed_model = embed_model

Что это делает: Регистрирует клиенты LLM и внедряет их глобально, поэтому все операции LlamaIndex автоматически используют эти модели без необходимости передавать их в качестве параметров каждой функции.

Ссылки:

Однако для некоторых сценариев требуется общая модель для большинства операций и конкретная модель для данной задачи. В этих случаях установите модель LLM или эмбеддинг для каждой конструкции LlamaIndex. В следующем примере показано, как задать определенную модель:

from llama_index.core.evaluation import RelevancyEvaluator

relevancy_evaluator = RelevancyEvaluator(llm=llm)

Что это делает: Создает средство оценки релевантности, использующее пользовательский клиент LLM для оценки результатов извлечения. Это позволяет использовать различные модели для различных задач (например, определенную модель для оценки и общего чата).

Ссылки:

Как правило, используйте сочетание обоих стратегий.