Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описано, как развернуть и использовать модель рассудок DeepSeek в Майкрософт Foundry. В этом руководстве для иллюстрации используется DeepSeek-R1 . Однако содержимое также относится к новой модели рассуждения DeepSeek-R1-0528.
Что вы делаете:
В этом руководстве вы развертываете модель рассуждений DeepSeek-R1, отправляете запросы для вывода программным способом с помощью кода и анализируете выходные данные модели, чтобы понять, как она приходит к своим ответам.
Действия, которые вам предстоит выполнить в этом руководстве, следующие:
- Создайте и настройте ресурсы Azure для использования DeepSeek-R1 в модели Foundry.
- Настройте развертывание модели.
- Используйте DeepSeek-R1 с API OpenAI v1 следующего поколения для Azure, чтобы интегрировать модель в код.
Предпосылки
Для работы с этой статьей необходимо иметь следующее.
Подписка Azure с допустимым методом оплаты. Если у вас нет подписки Azure, создайте платную учетную запись Azure. Если вы используете модели GitHub, вы можете обновить с моделей GitHub до моделей Майкрософт Foundry и создать подписку Azure в процессе.
Доступ к Майкрософт Foundry с соответствующими разрешениями для создания ресурсов и управления ими. Обычно требуется роль участника или владельца в группе ресурсов для создания ресурсов и развертывания моделей.
Роль пользователя Cognitive Services (или более высокая), назначенная вашей учетной записи Azure на ресурсе Foundry. Эта роль требуется для выполнения выводов с помощью Microsoft Entra ID. Назначьте его на портале Azure в разделе контроль доступа (IAM) на ресурсе Foundry.
Установите пакет SDK Azure OpenAI для языка программирования:
-
Python:
pip install openai azure-identity -
.NET:
dotnet add package OpenAIиdotnet add package Azure.Identity -
JavaScript:
npm install openai @azure/identity -
Java: добавьте пакеты
com.openai:openai-javaиcom.azure:azure-identity
-
Python:
DeepSeek-R1 — это модель рассуждений, которая создает объяснения наряду с ответами. Он поддерживает завершение текстовых чатов, но не поддерживает вызовы инструментов или структурированные форматы выходных данных. Дополнительные сведения см. в разделе "О моделях причин ".
Создание ресурсов
Чтобы создать проект Foundry, поддерживающий развертывание для DeepSeek-R1, выполните следующие действия. Вы также можете создать ресурсы с помощью Azure CLI или инфраструктура как код с использованием Bicep.
- Войдите в Майкрософт Foundry. Убедитесь, что переключатель New Foundry включен. Эти действия относятся к Foundry (new).
- Проект, над которым вы работаете, отображается в левом верхнем углу.
- Чтобы создать проект, выберите имя проекта, а затем создайте новый проект.
- Присвойте проекту имя и нажмите кнопку "Создать проект".
Развертывание модели
- Добавьте модель в проект. Выберите "Построить " в середине страницы, а затем модель.
- Выберите "Развернуть базовую модель ", чтобы открыть каталог моделей.
- Найдите и выберите плитку модели DeepSeek-R1 , чтобы открыть ее карточку модели и нажмите кнопку "Развернуть". Вы можете выбрать быстрое развертывание , чтобы использовать значения по умолчанию, или выбрать "Настроить развертывание ", чтобы просмотреть и изменить параметры развертывания.
Когда развертывание завершится, вы попадаете в его тестовую среду, где вы можете начать взаимодействие с развертыванием. Убедитесь, что развертывание готово, убедившись, что состояние развертывания отображается успешно. Обратите внимание на имя развертывания и URI конечной точки из сведений о развертывании, так как они необходимы для раздела кода.
Если вы предпочитаете просматривать модель в интерактивном режиме, перейдите к разделу "Использовать модель на игровой площадке".
Использование модели в коде
Используйте конечную точку и учетные данные модели Foundry для подключения к модели.
- Выберите область "Сведения" в верхней области "Игровые площадки", чтобы просмотреть сведения о развертывании. Здесь можно найти URI развертывания и ключ API.
- Получите имя ресурса из URI развертывания, который будет использоваться для вывода модели с помощью кода.
Используйте api OpenAI следующего поколения версии 1 Azure для использования модели в коде. В этих примерах кода используется безопасный подход проверки подлинности без ключей Microsoft Entra ID через библиотеку удостоверений Azure.
В следующих примерах кода показано, как:
Проверка подлинности с помощью Microsoft Entra ID с помощью
DefaultAzureCredential, которая автоматически пытается выполнить несколько методов проверки подлинности (переменные среды, управляемое удостоверение, Azure CLI и другие). Точный порядок зависит от используемой версии пакета SDK для удостоверений Azure.Подсказка
Для локальной разработки убедитесь, что проверка подлинности выполняется с помощью Azure CLI, выполнив
az login. Для рабочих развертываний в Azure настройте управляемое удостоверение для приложения.Создайте клиента для завершения чата, связанного с развертыванием модели
Отправка базового запроса в модель DeepSeek-R1
Получение и отображение ответа
Ожидаемые выходные данные: Ответ JSON, содержащий ответ модели, процесс обоснование (в <think> тегах), статистику использования маркеров (маркеры запроса, маркеры завершения, общие маркеры) и сведения о модели.
Установите пакеты openai и azure-identity с помощью диспетчера пакетов, например pip:
pip install --upgrade openai azure-identity
В следующем примере показано, как создать клиент для использования завершения чата, а затем создать и распечатать ответ:
from openai import OpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://ai.azure.com/.default"
)
client = OpenAI(
base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
)
response = client.chat.completions.create(
model="DeepSeek-R1", # Replace with your model deployment name.
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "How many languages are in the world?"}
]
)
#print(response.choices[0].message)
print(response.model_dump_json(indent=2))
Подсказка
После выполнения кода вы увидите ответ JSON, который включает choices[0].message.content в себя ответ модели. Если модель создаёт рассуждения, ответ содержит содержимое, заключённое в тег <think>...</think>, после чего идёт окончательный ответ.
Справочник по API:
- клиент OpenAI Python
- Клиент OpenAI JavaScript
- клиент OpenAI .NET
- Класс DefaultAzureCredential
- Справочник по API завершения чата
- Обзор библиотеки идентификации Azure
Рассуждение может генерировать более длинные ответы и использовать большее количество токенов. DeepSeek-R1 поддерживает до 5 000 запросов в минуту и 5 000 000 токенов в минуту. См. ограничения скорости , применяемые к моделям DeepSeek-R1. Рассмотрите возможность использования стратегии повторных попыток для обработки ограничений скорости. Вы также можете запросить увеличение ограничений по умолчанию.
О моделях рассуждений
Модели причин могут достичь более высокого уровня производительности в таких доменах, как математика, программирование, наука, стратегия и логистика. Таким образом, эти модели создают выходные данные путем явного использования цепочки мысли для изучения всех возможных путей перед созданием ответа. Они проверяют свои ответы по мере их создания, что помогает прийти к более точным выводам. В результате моделям рассуждений может потребоваться меньше контекстных подсказок для создания эффективных результатов.
Модели причин создают два типа содержимого в виде выходных данных:
- Результаты рассуждений
- Завершение вычислений
Оба эти завершения становятся частью содержимого, сформированного моделью. Таким образом, они вносят вклад в ограничения и затраты токенов, которые связаны с моделью. Некоторые модели, например DeepSeek-R1, могут отвечать, используя содержание с рассуждениями. Другие, например o1, выдают только завершения.
Содержание рассуждений
Некоторые модели рассуждений, такие как DeepSeek-R1, создают завершения и включают в себя обоснования их. Причины, связанные с завершением, включаются в содержимое ответа в тегах <think> и </think>. Модель может выбирать сценарии, для которых будет создан контент для рассуждений. В следующем примере показано, как создать содержимое рассуждения с помощью Python.
import re
match = re.match(r"<think>(.*?)</think>(.*)", response.choices[0].message.content, re.DOTALL)
print("Response:")
if match:
print("\tThinking:", match.group(1))
print("\tAnswer:", match.group(2))
else:
print("\tAnswer:", response.choices[0].message.content)
print("Model:", response.model)
print("Usage:")
print("\tPrompt tokens:", response.usage.prompt_tokens)
print("\tTotal tokens:", response.usage.total_tokens)
print("\tCompletion tokens:", response.usage.completion_tokens)
Thinking: Okay, the user is asking how many languages exist in the world. I need to provide a clear and accurate answer. Let's start by recalling the general consensus from linguistic sources. I remember that the number often cited is around 7,000, but maybe I should check some reputable organizations.\n\nEthnologue is a well-known resource for language data, and I think they list about 7,000 languages. But wait, do they update their numbers? It might be around 7,100 or so. Also, the exact count can vary because some sources might categorize dialects differently or have more recent data. \n\nAnother thing to consider is language endangerment. Many languages are endangered, with some having only a few speakers left. Organizations like UNESCO track endangered languages, so mentioning that adds context. Also, the distribution isn't even. Some countries or regions have hundreds of languages, like Papua New Guinea with over 800, while others have just a few. \n\nA user might also wonder why the exact number is hard to pin down. It's because the distinction between a language and a dialect can be political or cultural. For example, Mandarin and Cantonese are considered dialects of Chinese by some, but they're mutually unintelligible, so others classify them as separate languages. Also, some regions are under-researched, making it hard to document all languages. \n\nI should also touch on language families. The 7,000 languages are grouped into families like Indo-European, Sino-Tibetan, Niger-Congo, etc. Maybe mention a few of the largest families. But wait, the question is just about the count, not the families. Still, it's good to provide a bit more context. \n\nI need to make sure the information is up-to-date. Let me think – recent estimates still hover around 7,000. However, languages are dying out rapidly, so the number decreases over time. Including that note about endangerment and language extinction rates could be helpful. For instance, it's often stated that a language dies every few weeks. \n\nAnother point is sign languages. Does the count include them? Ethnologue includes some, but not all sources might. If the user is including sign languages, that adds more to the count, but I think the 7,000 figure typically refers to spoken languages. For thoroughness, maybe mention that there are also over 300 sign languages. \n\nSummarizing, the answer should state around 7,000, mention Ethnologue's figure, explain why the exact number varies, touch on endangerment, and possibly note sign languages as a separate category. Also, a brief mention of Papua New Guinea as the most linguistically diverse country/region. \n\nWait, let me verify Ethnologue's current number. As of their latest edition (25th, 2022), they list 7,168 living languages. But I should check if that's the case. Some sources might round to 7,000. Also, SIL International publishes Ethnologue, so citing them as reference makes sense. \n\nOther sources, like Glottolog, might have a different count because they use different criteria. Glottolog might list around 7,000 as well, but exact numbers vary. It's important to highlight that the count isn't exact because of differing definitions and ongoing research. \n\nIn conclusion, the approximate number is 7,000, with Ethnologue being a key source, considerations of endangerment, and the challenges in counting due to dialect vs. language distinctions. I should make sure the answer is clear, acknowledges the variability, and provides key points succinctly.
Answer: The exact number of languages in the world is challenging to determine due to differences in definitions (e.g., distinguishing languages from dialects) and ongoing documentation efforts. However, widely cited estimates suggest there are approximately **7,000 languages** globally.
Model: DeepSeek-R1
Usage:
Prompt tokens: 11
Total tokens: 897
Completion tokens: 886
Справочник по API:
Модели логических подсказок
При создании запросов на создание моделей причин следует учитывать следующее:
- Используйте простые инструкции и избегайте использования методов цепочки мышления.
- Встроенные возможности рассуждения делают простые запросы нулевого снимка столь же эффективными, как и более сложные методы.
- При предоставлении дополнительного контекста или документов, например в сценариях RAG, включая только наиболее релевантную информацию, может помочь предотвратить чрезмерное усложнение ответа модели.
- Модели причин могут поддерживать использование системных сообщений. Однако они могут не следовать им строго, как и другие неразумные модели.
- При создании многоэтапных приложений рассмотрите добавление только окончательного ответа из модели, без содержания обоснований, как это описано в разделе Содержание рассуждений.
Обратите внимание, что модели причин могут занять больше времени для создания ответов. Они используют длинные цепочки рассуждений мысли, которые обеспечивают более глубокое и более структурированное решение проблем. Они также выполняют самопроверку, чтобы перекрестно проверить свои ответы и исправить свои ошибки, тем самым показывая возникающие самоотражающие поведение.
Параметры
Модели причин поддерживают подмножество стандартных параметров завершения чата для поддержания целостности процесса их рассуждений.
Поддерживаемые параметры:
-
max_tokens— максимальное количество токенов для генерации в ответе -
stop— Последовательности, где API останавливает генерацию токенов -
stream— включение потоковых ответов -
n— количество завершений для генерации
Неподдерживаемые параметры (модели причин не поддерживаются):
-
temperature— Исправлено для оптимизации качества логического вывода -
top_p— Не настраиваемая для моделей рассуждений -
presence_penalty— недоступно -
repetition_penalty— недоступно для моделей рассуждений
Пример использования max_tokens:
response = client.chat.completions.create(
model="DeepSeek-R1",
messages=[
{"role": "user", "content": "Explain quantum computing"}
],
max_tokens=1000 # Limit response length
)
Полный список поддерживаемых параметров см. в справочнике по API завершения чата.
Использование модели на детской площадке
Используйте модель на детской площадке, чтобы получить представление о возможностях модели.
Как только развертывание завершается, вы попадаете на тестовую площадку модели, где можно начать работать с развертыванием. Например, вы можете ввести запросы, например, "Сколько языков в мире?" в песочнице.
Устранение неполадок
Если при выполнении этого руководства возникают проблемы, воспользуйтесь приведенными ниже рекомендациями по устранению распространенных проблем.
Ошибки проверки подлинности (401/403)
- Убедитесь, что вы вошли в Azure CLI. Для локальной разработки запустите
az loginперед выполнением кода.DefaultAzureCredentialиспользует учетные данные Azure CLI в качестве резервной копии, если другие учетные данные недоступны. - Проверьте назначения ролей. Для учетной записи Azure требуется роль Cognitive Services User (или выше) на ресурсе Foundry для выполнения инференс-вызовов с использованием Microsoft Entra ID. Если вы еще не назначили эту роль, обратитесь к разделу "Предварительные требования".
- Проверьте формат конечной точки. URL-адрес конечной точки должен соответствовать формату
https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/. Убедитесь, что имя ресурса соответствует ресурсу Foundry.
Проблемы с развертыванием
- Имя развертывания и имя модели. Параметр
modelв вызовах API ссылается на имя развертывания, а не имя модели. Если вы настроили имя развертывания во время создания, используйте это имя вместоDeepSeek-R1. - Развертывание не готово. Если вы получите ошибку 404, убедитесь, что состояние развертывания отображается успешно на портале Foundry перед вызовами API.
Ограничение скорости (429 ошибок)
- Реализуйте логику повторных попыток. Модели рассуждения создают более длинные ответы, и это требует большего количества токенов. Используйте экспоненциальный обратный выход для обработки ошибок 429 (слишком много запросов).
- Мониторинг использования токенов. DeepSeek-R1 содержимое рассуждений (в тегах
<think>) засчитывается в ваш лимит токенов. См. квоты и ограничения для текущих ограничений скорости. - Запрос на увеличение квоты. Если вы постоянно нажимаете ограничения скорости, запрос увеличивается до ограничений по умолчанию.
Проблемы с установкой пакета
- Python. Установите оба обязательных пакета:
pip install openai azure-identityПакетazure-identityтребуется дляDefaultAzureCredential. - JavaScript. Установите оба обязательных пакета:
npm install openai @azure/identity - .NET. Установите пакет удостоверений Azure:
dotnet add package Azure.Identity.
Полученные навыки
В этом руководстве вы выполнили следующее:
- Созданные ресурсы Foundry для размещения моделей ИИ
- Развернута модель логического вывода DeepSeek-R1
- Выполнение вызовов API с проверкой подлинности с помощью Microsoft Entra ID
- Отправленные запросы на вывод и полученные данные вывода.
- Анализ содержимого вывода из ответов модели для понимания процесса мышления модели.