Поделиться через


Краткое руководство. Начало работы с помощниками Azure OpenAI (предварительная версия)

Azure OpenAI Assistants (предварительная версия) позволяет создавать помощников ИИ, адаптированных к вашим потребностям, с помощью пользовательских инструкций, и с расширенными инструментами, такими как интерпретатор кода и пользовательские функции.

Необходимые компоненты

  • Подписка Azure — создайте бесплатную учетную запись.

  • Службе Azure OpenAI предоставлен доступ в требуемой подписке Azure

    В настоящее время доступ к этой службе предоставляется только приложением. Вы можете подать заявку на доступ к Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access. Если у вас возникли проблемы, создайте соответствующий запрос в этом репозитории, чтобы связаться с нами.

  • Ресурс Azure OpenAI с совместимой моделью в поддерживаемом регионе.

  • Мы рекомендуем ознакомиться с примечанием о прозрачности ответственного ИИ и другими ресурсами ответственного искусственного интеллекта, чтобы ознакомиться с возможностями и ограничениями службы Azure OpenAI.

Перейдите в Azure OpenAI Studio.

Перейдите в Azure OpenAI Studio https://oai.azure.com/ и войдите с учетными данными, имеющими доступ к ресурсу OpenAI. Во время или после рабочего процесса входа выберите соответствующий каталог, подписку Azure и ресурс Azure OpenAI.

На целевой странице Azure OpenAI Studio запустите детскую площадку помощника с помощника по навигации >слева (предварительная версия)

Снимок экрана: целевая страница Azure OpenAI Studio.

Тестовая площадка

На игровой площадке Помощников можно изучить, прототипировать и тестировать помощников по искусственному интеллекту без необходимости выполнять какой-либо код. На этой странице можно быстро итерировать и экспериментировать с новыми идеями.

Снимок экрана: экран конфигурации Помощника без всех значений, заполненных.

Настройка помощника

Используйте область настройки помощника, чтобы создать новый помощник ИИ или выбрать существующий помощник.

Имя Description
Имя помощника Имя развертывания, связанное с определенной моделью.
Инструкции Инструкции напоминают системные сообщения, с их помощью вы даете модели руководство по поведению и контекст, на который она должна ссылаться при создании ответа. Вы можете описать личность помощника, указать ему, что он должен и не должен отвечать, и сообщить о том, как форматировать ответы. Вы также можете указать примеры действий, которые следует предпринять при ответе.
Развертывание Здесь вы указываете развертывание модели для использования с помощником.
Функции Создание настраиваемых определений функций для моделей для формирования вызовов API и структурированных выходных данных на основе ваших спецификаций
Интерпретатор кода Интерпретатор кода предоставляет доступ к изолированной среде Python, которую можно использовать для проверки и выполнения кода модели.
Файлы Вы можете отправить до 20 файлов с максимальным размером 512 МБ для использования с инструментами.

Инструменты

Отдельный помощник может получить доступ до 128 инструментов, включая code interpreterлюбые пользовательские средства, создаваемые с помощью функций.

Сеанс чата

Сеанс чата также называется потоком в API помощника, где происходит беседа между пользователем и помощник. В отличие от традиционных вызовов завершения чата, количество сообщений в потоке не ограничено. Помощник автоматически сжимает запросы, чтобы соответствовать пределу входного маркера модели.

Это также означает, что вы не контролируете, сколько маркеров передается модели во время каждой очереди беседы. Управление маркерами абстрагируется и обрабатывается полностью API помощников.

Нажмите кнопку "Очистить чат", чтобы удалить текущий журнал бесед.

Под текстовым полем ввода есть две кнопки:

  • Добавьте сообщение без запуска.
  • Добавьте и запустите.

Журналы

Журналы предоставляют подробный снимок действий API помощник.

Показать панели

По умолчанию существует три панели: помощник настройки, сеанса чата и журналов. Отображение панелей позволяет добавлять, удалять и изменять порядок панелей. Если вы когда-либо закрываете панель и хотите вернуть ее, используйте панели show для восстановления потерянной панели.

Создание первого помощник

  1. В раскрывающемся списке установки помощник выберите "Создать"

  2. Присвойте помощнику имя

  3. Введите следующие инструкции "Вы являетесь помощник ИИ, который может писать код, чтобы помочь ответить на математические вопросы".

  4. Выберите развертывание gpt-4 (1106-preview). В раскрывающемся списке будут отображаться пользовательские имена развертывания, поэтому если имена модели или развертывания отличаются, следует выбрать развертывание, в котором базовая модель эквивалентна модели 1106-preview.

  5. Выберите переключатель включения интерпретатора кода.

  6. Выберите Сохранить.

    Снимок экрана: помощник с введенными сведениями о конфигурации.

  7. Введите вопрос для помощник, чтобы ответить: "Мне нужно решить уравнение3x + 11 = 14. Ты можешь мне помочь?"

  8. Нажмите кнопку "Добавить и запустить"

    The solution to the equation (3x + 11 = 14) is (x = 1).
    

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

  9. Введите следующий вопрос: "Показать мне код, который вы запустили, чтобы получить это решение".

    Certainly! Here's the Python code I ran to find the solution for the equation (3x + 11 = 14):
    
    from sympy import symbols, Eq, solve  
    
    # Define the variable  
    x = symbols('x')  
    
    # Define the equation  
    equation = Eq(3*x + 11, 14)  
    
    # Solve the equation  
    solution = solve(equation, x)  
    solution  
    

Снимок экрана: сеанс беседы на игровой площадке Помощника.

Вы также можете обратиться к журналам на правой панели, чтобы убедиться, что интерпретатор кода использовался и для проверки кода, выполняемого для создания ответа. Важно помнить, что в то время как интерпретатор кода дает модели возможность реагировать на более сложные математические вопросы, преобразовав вопросы в код и выполняясь в изолированной среде Python, вам по-прежнему необходимо проверить ответ, чтобы убедиться, что модель правильно преобразовала свой вопрос в допустимое представление в коде.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

См. также

Внимание

Некоторые функции, описанные в этой статье, могут быть доступны только в предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Необходимые компоненты

Перейдите в Azure AI Studio (предварительная версия)

  1. Войдите в Azure AI Studio.

  2. Перейдите к проекту или создайте проект в Azure AI Studio.

  3. В обзоре проекта выберите Помощники, расположенные на детской площадке Project.

    На игровой площадке Помощников можно изучить, прототипировать и тестировать помощников по искусственному интеллекту без необходимости выполнять какой-либо код. На этой странице можно быстро итерировать и экспериментировать с новыми идеями.

    На детской площадке есть несколько вариантов настройки помощника. В следующих шагах вы будете использовать панель настройки Помощника для создания новой помощник ИИ.

    Имя Description
    Имя помощника Имя развертывания, связанное с определенной моделью.
    Инструкции Инструкции напоминают системные сообщения, с их помощью вы даете модели руководство по поведению и контекст, на который она должна ссылаться при создании ответа. Вы можете описать личность помощника, указать ему, что он должен и не должен отвечать, и сообщить о том, как форматировать ответы. Вы также можете указать примеры действий, которые следует предпринять при ответе.
    Развертывание Здесь вы указываете развертывание модели для использования с помощником.
    Функции Создайте пользовательские определения функций для моделей, чтобы сформулировать вызовы API и структурировать выходные данные на основе ваших спецификаций. Не используется в этом кратком руководстве.
    Интерпретатор кода Интерпретатор кода предоставляет доступ к изолированной среде Python, которую можно использовать для проверки и выполнения кода модели.
    Файлы Вы можете отправить до 20 файлов с максимальным размером 512 МБ для использования с инструментами. Не используется в этом кратком руководстве.

    Снимок экрана: экран конфигурации Помощника без всех значений, заполненных.

Создание первого помощника

  1. Выберите развертывание в раскрывающемся списке "Развертывания".

  2. В раскрывающемся списке "Помощник по настройке" нажмите кнопку "Создать".

  3. Присвойте помощнику имя.

  4. Введите следующие инструкции "Вы являетесь помощник ИИ, который может писать код, чтобы помочь ответить на математические вопросы".

  5. Выберите развертывание модели. Мы рекомендуем протестировать одну из последних моделей gpt-4.

  6. Выберите переключатель включения интерпретатора кода.

  7. Выберите Сохранить.

    Снимок экрана: помощник с введенными сведениями о конфигурации.

  8. Введите вопрос для помощник, чтобы ответить: "Мне нужно решить уравнение3x + 11 = 14. Ты можешь мне помочь?"

  9. Нажмите кнопку "Добавить и запустить"

    The solution to the equation (3x + 11 = 14) is (x = 1).
    

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

  10. Введите следующий вопрос: "Показать мне код, который вы запустили, чтобы получить это решение".

    Sure. The code is very straightforward
    
    # calculation
    x = (14 - 11) / 3
    x
    
    
    First, we subtract 11 from 14, then divide the result by 3. This gives us the value of x which is 1.0.
    

    Снимок экрана: сеанс беседы на игровой площадке Помощника.

Вы также можете обратиться к журналам на правой панели, чтобы убедиться, что интерпретатор кода использовался и для проверки кода, выполняемого для создания ответа. Важно помнить, что в то время как интерпретатор кода дает модели возможность реагировать на более сложные математические вопросы, преобразовав вопросы в код и выполняясь в изолированной среде Python, вам по-прежнему необходимо проверить ответ, чтобы убедиться, что модель правильно преобразовала свой вопрос в допустимое представление в коде.

Основные понятия

При использовании игровой площадки Помощников помните о следующих понятиях.

Инструменты

Отдельный помощник может получить доступ до 128 инструментов, включая code interpreterлюбые пользовательские средства, создаваемые с помощью функций.

Сеанс чата

Сеанс чата также называется потоком в API помощника, где происходит беседа между пользователем и помощник. В отличие от традиционных вызовов завершения чата, количество сообщений в потоке не ограничено. Помощник автоматически сжимает запросы, чтобы соответствовать пределу входного маркера модели.

Это также означает, что вы не контролируете, сколько маркеров передается модели во время каждой очереди беседы. Управление маркерами абстрагируется и обрабатывается полностью API помощников.

Нажмите кнопку "Очистить чат", чтобы удалить текущий журнал бесед.

Под текстовым полем ввода есть две кнопки:

  • Добавьте сообщение без запуска.
  • Добавьте и запустите.

Журналы

Журналы предоставляют подробный снимок действий API помощник.

Показать панели

По умолчанию существует три панели: помощник настройки, сеанса чата и журналов. Отображение панелей позволяет добавлять, удалять и изменять порядок панелей. Если вы когда-либо закрываете панель и хотите вернуть ее, используйте панели show для восстановления потерянной панели.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

Кроме того, можно удалить помощник или поток с помощью API помощника.

См. также

Пакет исходного кода | библиотеки справочной документации | (PyPi) |

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.

  • Доступ, предоставленный Azure OpenAI в требуемой подписке Azure

    В настоящее время доступ к этой службе предоставляется только приложением. Вы можете подать заявку на доступ к Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access. Если у вас возникли проблемы, создайте соответствующий запрос в этом репозитории, чтобы связаться с нами.

  • Python 3.8 или более поздней версии

  • Следующие библиотеки Python: os, openai (требуется версия 1.x)

  • Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.

  • Ресурс Azure OpenAI с совместимой моделью в поддерживаемом регионе.

  • Мы рекомендуем ознакомиться с примечанием о прозрачности ответственного ИИ и другими ресурсами ответственного искусственного интеллекта, чтобы ознакомиться с возможностями и ограничениями службы Azure OpenAI.

  • Ресурс Azure OpenAI с gpt-4 (1106-preview) развернутой моделью использовался для тестирования этого примера.

Для проверки подлинности без пароля необходимо выполнить следующие действия.

  1. Используйте пакет azure-identity.
  2. Назначьте роль учетной Cognitive Services User записи пользователя. Это можно сделать в портал Azure в разделе управления доступом (IAM)>Добавить назначение ролей.
  3. Войдите с помощью Azure CLI, например az login.

Настройка

  1. Установите клиентную библиотеку OpenAI Python с помощью следующих компонентов:
pip install openai
  1. Для рекомендуемой проверки подлинности без пароля:
pip install azure-identity

Примечание.

  • Поиск по файлам может получать до 10 000 файлов на помощник – 500 раз больше, чем раньше. Это быстро, поддерживает параллельные запросы с помощью многопоточных поисковых запросов, а также функции расширенного перерасписывания и перезаписи запросов.
    • Векторное хранилище — это новый объект в API. После добавления файла в векторное хранилище он автоматически анализируется, блокируется и внедряется, подготавливается к поиску. Хранилища векторов можно использовать в помощник и потоках, упрощая управление файлами и выставление счетов.
  • Мы добавили поддержку tool_choice параметра, который можно использовать для принудительного использования определенного средства (например, поиска файлов, интерпретатора кода или функции) в определенном запуске.

Примечание.

Эта библиотека поддерживается OpenAI. Ознакомьтесь с журналом выпуска, чтобы отслеживать последние обновления библиотеки.

Получение ключа и конечной точки

Для успешного выполнения вызова к службе Azure OpenAI вам потребуется следующее.

Имя переменной Значение
ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти значение в коде представления игровой площадки>в Azure OpenAI Studio.> Пример конечной точки: https://docs-test-001.openai.azure.com/.
API-KEY Это значение можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Вы можете использовать KEY1 или KEY2.
DEPLOYMENT-NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для развертывания при развертывании модели. Это значение можно найти в разделе "Развертывания модели управления>ресурсами" в портал Azure или в разделе "Развертывания управления>" в Azure OpenAI Studio.

Перейдите к своему ресурсу на портале Azure. Ключи и конечная точка можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Снимок экрана: колонка обзора для ресурса Azure OpenAI в портал Azure с расположением ключей доступа и конечных точек, окружаемых красным цветом.

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

Переменные среды

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Создание помощник

В нашем коде мы укажем следующие значения:

Имя Description
Имя помощника Имя развертывания, связанное с определенной моделью.
Инструкции Инструкции напоминают системные сообщения, с их помощью вы даете модели руководство по поведению и контекст, на который она должна ссылаться при создании ответа. Вы можете описать личность помощника, указать ему, что он должен и не должен отвечать, и сообщить о том, как форматировать ответы. Вы также можете указать примеры действий, которые следует предпринять при ответе.
Модель Здесь вы устанавливаете имя развертывания модели для использования с помощник. Средство извлечения требует gpt-35-turbo (1106) или gpt-4 (1106-preview) модели. Присвойте этому значению имя развертывания, а не имя модели, если оно не совпадает.
Интерпретатор кода Интерпретатор кода предоставляет доступ к изолированной среде Python, которую можно использовать для проверки и выполнения кода модели.

Инструменты

Отдельный помощник может получить доступ до 128 инструментов, включая code interpreterлюбые пользовательские средства, создаваемые с помощью функций.

Создание приложения Python

Войдите в Azure, а az login затем создайте и запустите помощник с помощью следующего рекомендуемого примера Python без пароля:

import os
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI

token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")

client = AzureOpenAI(
    azure_ad_token_provider=token_provider,
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version="2024-05-01-preview",
)

# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Assist",
    instructions="You are an AI assistant that can write code to help answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview" # You must replace this value with the deployment name for your model.
)

# Create a thread
thread = client.beta.threads.create()

# Add a user question to the thread
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

# Run the thread and poll for the result
run = client.beta.threads.runs.create_and_poll(
    thread_id=thread.id,
    assistant_id=assistant.id,
    instructions="Please address the user as Jane Doe. The user has a premium account.",
)

print("Run completed with status: " + run.status)

if run.status == "completed":
    messages = client.beta.threads.messages.list(thread_id=thread.id)
    print(messages.to_json(indent=2))

Чтобы использовать ключ API службы для проверки подлинности, можно создать и запустить помощник со следующим примером Python:

import os
from openai import AzureOpenAI

client = AzureOpenAI(
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version="2024-05-01-preview",
)

# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Assist",
    instructions="You are an AI assistant that can write code to help answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview" # You must replace this value with the deployment name for your model.
)

# Create a thread
thread = client.beta.threads.create()

# Add a user question to the thread
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

# Run the thread and poll for the result
run = client.beta.threads.runs.create_and_poll(
    thread_id=thread.id,
    assistant_id=assistant.id,
    instructions="Please address the user as Jane Doe. The user has a premium account.",
)

print("Run completed with status: " + run.status)

if run.status == "completed":
    messages = client.beta.threads.messages.list(thread_id=thread.id)
    print(messages.to_json(indent=2))

Выходные данные

Выполнение завершено с состоянием: завершено

{
  "data": [
    {
      "id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
      "assistant_id": "asst_cYqL1RuwLyFV3HU1gkaE2k0K",
      "attachments": [],
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
          },
          "type": "text"
        }
      ],
      "created_at": 1716397091,
      "metadata": {},
      "object": "thread.message",
      "role": "assistant",
      "run_id": "run_hFgBPbUtO8ZNTnNPC8PgpH1S",
      "thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
    },
    {
      "id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
      "assistant_id": null,
      "attachments": [],
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
          },
          "type": "text"
        }
      ],
      "created_at": 1716397025,
      "metadata": {},
      "object": "thread.message",
      "role": "user",
      "run_id": null,
      "thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
    }
  ],
  "object": "list",
  "first_id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
  "last_id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
  "has_more": false
}

Расшифровка результатов

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

from sympy import symbols, Eq, solve  
  
# Define the variable  
x = symbols('x')  
  
# Define the equation  
equation = Eq(3*x + 11, 14)  
  
# Solve the equation  
solution = solve(equation, x)  
solution  

Важно помнить, что в то время как интерпретатор кода дает модели возможность реагировать на более сложные запросы, преобразовав вопросы в код и выполняя этот код итеративно в песочнице Python, пока он не достигнет решения, необходимо проверить ответ, чтобы убедиться, что модель правильно преобразовала вопрос в допустимое представление в коде.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

См. также

Справочная документация | по пакету исходного кода | (NuGet)

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.

  • Доступ, предоставленный Azure OpenAI в требуемой подписке Azure

    В настоящее время доступ к этой службе предоставляется только приложением. Вы можете подать заявку на доступ к Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access. Если у вас возникли проблемы, создайте соответствующий запрос в этом репозитории, чтобы связаться с нами.

  • Пакет SDK для .NET 8

  • Ресурс Azure OpenAI с совместимой моделью в поддерживаемом регионе.

  • Мы рекомендуем ознакомиться с примечанием о прозрачности ответственного ИИ и другими ресурсами ответственного искусственного интеллекта, чтобы ознакомиться с возможностями и ограничениями службы Azure OpenAI.

  • Ресурс Azure OpenAI с gpt-4 (1106-preview) развернутой моделью использовался для тестирования этого примера.

Настройка

Создание приложения .NET Core

В окне консоли (cmd, PowerShell или Bash) выполните команду dotnet new, чтобы создать консольное приложение с именем azure-openai-quickstart. Эта команда создает простой проект Hello World с одним исходным файлом C#: Program.cs.

dotnet new console -n azure-openai-assistants-quickstart

Измените каталог на созданную папку приложения. Чтобы создать приложение, выполните следующую команду:

dotnet build

Выходные данные сборки не должны содержать предупреждений или ошибок.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

Установите клиентская библиотека OpenAI .NET с помощью следующих компонентов:

dotnet add package Azure.AI.OpenAI.Assistants --prerelease

Получение ключа и конечной точки

Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется конечная точка и ключ.

Имя переменной Значение
ENDPOINT Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Кроме того, значение можно найти, выбрав Azure OpenAI Studio >Тестовая площадка >Представление кода. Пример конечной точки: https://docs-test-001.openai.azure.com/.
API-KEY Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2.

Перейдите к своему ресурсу на портале Azure. Раздел "Ключи и конечная точка " можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

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

Переменные среды

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Создание помощник

В нашем коде мы укажем следующие значения:

Имя Description
Имя помощника Имя развертывания, связанное с определенной моделью.
Инструкции Инструкции напоминают системные сообщения, с их помощью вы даете модели руководство по поведению и контекст, на который она должна ссылаться при создании ответа. Вы можете описать личность помощника, указать ему, что он должен и не должен отвечать, и сообщить о том, как форматировать ответы. Вы также можете указать примеры действий, которые следует предпринять при ответе.
Модель Здесь вы устанавливаете имя развертывания модели для использования с помощник. Средство извлечения требует gpt-35-turbo (1106) или gpt-4 (1106-preview) модели. Присвойте этому значению имя развертывания, а не имя модели, если оно не совпадает.
Интерпретатор кода Интерпретатор кода предоставляет доступ к изолированной среде Python, которую можно использовать для проверки и выполнения кода модели.

Инструменты

Отдельный помощник может получить доступ до 128 инструментов, включая code interpreterлюбые пользовательские средства, создаваемые с помощью функций.

Создайте и запустите помощник со следующими параметрами:

using Azure;
using Azure.AI.OpenAI.Assistants;

string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new ArgumentNullException("AZURE_OPENAI_ENDPOINT");
string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? throw new ArgumentNullException("AZURE_OPENAI_API_KEY");
AssistantsClient client = new AssistantsClient(new Uri(endpoint), new AzureKeyCredential(key));

// Create an assistant
Assistant assistant = await client.CreateAssistantAsync(
    new AssistantCreationOptions("gpt-4-1106-preview") // Replace this with the name of your model deployment
    {
        Name = "Math Tutor",
        Instructions = "You are a personal math tutor. Write and run code to answer math questions.",
        Tools = { new CodeInterpreterToolDefinition() }
    });

// Create a thread
AssistantThread thread = await client.CreateThreadAsync();

// Add a user question to the thread
ThreadMessage message = await client.CreateMessageAsync(
    thread.Id,
    MessageRole.User,
    "I need to solve the equation `3x + 11 = 14`. Can you help me?");

// Run the thread
ThreadRun run = await client.CreateRunAsync(
    thread.Id,
    new CreateRunOptions(assistant.Id)
);

// Wait for the assistant to respond
do
{
    await Task.Delay(TimeSpan.FromMilliseconds(500));
    run = await client.GetRunAsync(thread.Id, run.Id);
}
while (run.Status == RunStatus.Queued
    || run.Status == RunStatus.InProgress);

// Get the messages
PageableList<ThreadMessage> messagesPage = await client.GetMessagesAsync(thread.Id);
IReadOnlyList<ThreadMessage> messages = messagesPage.Data;

// Note: messages iterate from newest to oldest, with the messages[0] being the most recent
foreach (ThreadMessage threadMessage in messages.Reverse())
{
    Console.Write($"{threadMessage.CreatedAt:yyyy-MM-dd HH:mm:ss} - {threadMessage.Role,10}: ");
    foreach (MessageContent contentItem in threadMessage.ContentItems)
    {
        if (contentItem is MessageTextContent textItem)
        {
            Console.Write(textItem.Text);
        }
        Console.WriteLine();
    }
}

Выведет выходные данные следующим образом:

2024-03-05 03:38:17 -       user: I need to solve the equation `3x + 11 = 14`. Can you help me?
2024-03-05 03:38:25 -  assistant: The solution to the equation \(3x + 11 = 14\) is \(x = 1\).

Новые сообщения можно создать в потоке перед повторной запуском, которые будут видеть, помощник использовать прошлые сообщения в качестве контекста в потоке.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

См. также

Пакет исходного кода | библиотеки справочной документации | (npm) |

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.

  • Доступ, предоставленный Azure OpenAI в требуемой подписке Azure

    В настоящее время доступ к этой службе предоставляется только приложением. Вы можете подать заявку на доступ к Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access. Если у вас возникли проблемы, создайте соответствующий запрос в этом репозитории, чтобы связаться с нами.

  • Node.js LTS с поддержкой TypeScript или ESM.

  • Azure CLI , используемый для проверки подлинности без пароля в локальной среде разработки, создайте необходимый контекст, выполнив вход с помощью Azure CLI.

  • Ресурс Azure OpenAI с совместимой моделью в поддерживаемом регионе.

  • Мы рекомендуем ознакомиться с примечанием о прозрачности ответственного ИИ и другими ресурсами ответственного искусственного интеллекта, чтобы ознакомиться с возможностями и ограничениями службы Azure OpenAI.

  • Ресурс Azure OpenAI с gpt-4 (1106-preview) развернутой моделью использовался для тестирования этого примера.

Для проверки подлинности без пароля необходимо выполнить следующие действия.

  1. @azure/identity Используйте пакет.
  2. Назначьте роль учетной Cognitive Services User записи пользователя. Это можно сделать в портал Azure в разделе управления доступом (IAM)>Добавить назначение ролей.
  3. Войдите с помощью Azure CLI, например az login.

Настройка

  1. Установите клиентскую библиотеку OpenAI Assistants для JavaScript с помощью:

    npm install openai
    
  2. Для рекомендуемой проверки подлинности без пароля:

    npm install @azure/identity
    

Получение ключа и конечной точки

Для успешного выполнения вызова к службе Azure OpenAI вам потребуется следующее.

Имя переменной Значение
ENDPOINT Это значение можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Кроме того, можно найти значение в коде представления игровой площадки>в Azure OpenAI Studio.> Пример конечной точки: https://docs-test-001.openai.azure.com/.
API-KEY Это значение можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Вы можете использовать KEY1 или KEY2.
DEPLOYMENT-NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для развертывания при развертывании модели. Это значение можно найти в разделе "Развертывания модели управления>ресурсами" в портал Azure или в разделе "Развертывания управления>" в Azure OpenAI Studio.

Перейдите к своему ресурсу на портале Azure. Ключи и конечная точка можно найти в разделе "Управление ресурсами". Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Снимок экрана: колонка обзора для ресурса OpenAI в портал Azure с ключами доступа и конечными точками, окружными красным цветом.

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

Переменные среды

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Добавьте дополнительные переменные среды для имени развертывания и версии API:

  • AZURE_OPENAI_DEPLOYMENT_NAME: имя развертывания, как показано в портал Azure.
  • OPENAI_API_VERSION: дополнительные сведения о версиях API.

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

setx AZURE_OPENAI_DEPLOYMENT_NAME "REPLACE_WITH_YOUR_DEPLOYMENT_NAME" 
setx OPENAI_API_VERSION "REPLACE_WITH_YOUR_API_VERSION" 

Создание помощник

В нашем коде мы укажем следующие значения:

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

Инструменты

Отдельный помощник может получить доступ до 128 инструментов, включая code interpreterлюбые пользовательские средства, создаваемые с помощью функций.

Войдите в Azure, а az login затем создайте и запустите помощник со следующим рекомендуемым модулем TypeScript без пароля (index.ts):

import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
  Assistant,
  AssistantCreateParams,
  AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";

// Add `Cognitive Services User` to identity for Azure OpenAI resource
import {
  DefaultAzureCredential,
  getBearerTokenProvider,
} from "@azure/identity";

// Get environment variables
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
  .AZURE_OPENAI_DEPLOYMENT_NAME as string;
const openAIVersion = process.env.OPENAI_API_VERSION as string;

// Check env variables
if (!azureOpenAIEndpoint || !azureOpenAIDeployment || !openAIVersion) {
  throw new Error(
    "Please ensure to set AZURE_OPENAI_DEPLOYMENT_NAME and AZURE_OPENAI_ENDPOINT in your environment variables."
  );
}

// Get Azure SDK client
const getClient = (): AzureOpenAI => {
  const credential = new DefaultAzureCredential();
  const scope = "https://cognitiveservices.azure.com/.default";
  const azureADTokenProvider = getBearerTokenProvider(credential, scope);
  const assistantsClient = new AzureOpenAI({
    endpoint: azureOpenAIEndpoint,
    apiVersion: openAIVersion,
    azureADTokenProvider,
  });
  return assistantsClient;
};

const assistantsClient = getClient();

const options: AssistantCreateParams = {
  model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
  name: "Math Tutor",
  instructions:
    "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
  tools: [{ type: "code_interpreter" } as AssistantTool],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";

// Create an assistant
const assistantResponse: Assistant =
  await assistantsClient.beta.assistants.create(options);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);

// Create a thread
const assistantThread: Thread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);

// Add a user question to the thread
const threadResponse: Message =
  await assistantsClient.beta.threads.messages.create(assistantThread.id, {
    role,
    content: message,
  });
console.log(`Message created:  ${JSON.stringify(threadResponse)}`);

// Run the thread and poll it until it is in a terminal state
const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
  assistantThread.id,
  {
    assistant_id: assistantResponse.id,
  },
  { pollIntervalMs: 500 }
);
console.log(`Run created:  ${JSON.stringify(runResponse)}`);

// Get the messages
const runMessages: MessagesPage =
  await assistantsClient.beta.threads.messages.list(assistantThread.id);
for await (const runMessageDatum of runMessages) {
  for (const item of runMessageDatum.content) {
    // types are: "image_file" or "text"
    if (item.type === "text") {
      console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
    }
  }
}

Чтобы использовать ключ службы для проверки подлинности, можно создать и запустить помощник со следующим модулем TypeScript (index.ts):

import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
  Assistant,
  AssistantCreateParams,
  AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";

// Get environment variables
const azureOpenAIKey = process.env.AZURE_OPENAI_KEY as string;
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
  .AZURE_OPENAI_DEPLOYMENT_NAME as string;
const openAIVersion = process.env.OPENAI_API_VERSION as string;

// Check env variables
if (!azureOpenAIKey || !azureOpenAIEndpoint || !azureOpenAIDeployment || !openAIVersion) {
  throw new Error(
    "Please set AZURE_OPENAI_KEY and AZURE_OPENAI_ENDPOINT and AZURE_OPENAI_DEPLOYMENT_NAME in your environment variables."
  );
}

// Get Azure SDK client
const getClient = (): AzureOpenAI => {
  const assistantsClient = new AzureOpenAI({
    endpoint: azureOpenAIEndpoint,
    apiVersion: openAIVersion,
    apiKey: azureOpenAIKey,
  });
  return assistantsClient;
};

const assistantsClient = getClient();

const options: AssistantCreateParams = {
  model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
  name: "Math Tutor",
  instructions:
    "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
  tools: [{ type: "code_interpreter" } as AssistantTool],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";

// Create an assistant
const assistantResponse: Assistant =
  await assistantsClient.beta.assistants.create(options);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);

// Create a thread
const assistantThread: Thread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);

// Add a user question to the thread
const threadResponse: Message =
  await assistantsClient.beta.threads.messages.create(assistantThread.id, {
    role,
    content: message,
  });
console.log(`Message created:  ${JSON.stringify(threadResponse)}`);

// Run the thread and poll it until it is in a terminal state
const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
  assistantThread.id,
  {
    assistant_id: assistantResponse.id,
  },
  { pollIntervalMs: 500 }
);
console.log(`Run created:  ${JSON.stringify(runResponse)}`);

// Get the messages
const runMessages: MessagesPage =
  await assistantsClient.beta.threads.messages.list(assistantThread.id);
for await (const runMessageDatum of runMessages) {
  for (const item of runMessageDatum.content) {
    // types are: "image_file" or "text"
    if (item.type === "text") {
      console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
    }
  }
}

Выходные данные

Assistant created: {"id":"asst_zXaZ5usTjdD0JGcNViJM2M6N","createdAt":"2024-04-08T19:26:38.000Z","name":"Math Tutor","description":null,"model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"fileIds":[],"metadata":{}}
Thread created: {"id":"thread_KJuyrB7hynun4rvxWdfKLIqy","createdAt":"2024-04-08T19:26:38.000Z","metadata":{}}
Message created:  {"id":"msg_o0VkXnQj3juOXXRCnlZ686ff","createdAt":"2024-04-08T19:26:38.000Z","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","role":"user","content":[{"type":"text","text":{"value":"I need to solve the equation `3x + 11 = 14`. Can you help me?","annotations":[]},"imageFile":{}}],"assistantId":null,"runId":null,"fileIds":[],"metadata":{}}
Created run
Run created:  {"id":"run_P8CvlouB8V9ZWxYiiVdL0FND","object":"thread.run","status":"queued","model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"metadata":{},"usage":null,"assistantId":"asst_zXaZ5usTjdD0JGcNViJM2M6N","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","fileIds":[],"createdAt":"2024-04-08T19:26:39.000Z","expiresAt":"2024-04-08T19:36:39.000Z","startedAt":null,"completedAt":null,"cancelledAt":null,"failedAt":null}
Message content: "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
Message content: "Yes, of course! To solve the equation \\( 3x + 11 = 14 \\), we can follow these steps:\n\n1. Subtract 11 from both sides of the equation to isolate the term with x.\n2. Then, divide by 3 to find the value of x.\n\nLet me calculate that for you."
Message content: "I need to solve the equation `3x + 11 = 14`. Can you help me?"

Важно помнить, что в то время как интерпретатор кода дает модели возможность реагировать на более сложные запросы, преобразовав вопросы в код и выполняя этот код итеративно в JavaScript до тех пор, пока он не достигнет решения, необходимо проверить ответ, чтобы убедиться, что модель правильно перевела вопрос в допустимое представление в коде.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

Пример кода

См. также

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.

  • Доступ, предоставленный Azure OpenAI в требуемой подписке Azure

    В настоящее время доступ к этой службе предоставляется только приложением. Вы можете подать заявку на доступ к службе Azure OpenAI, заполнив форму по адресу https://aka.ms/oai/access. Если у вас возникли проблемы, создайте соответствующий запрос в этом репозитории, чтобы связаться с нами.

  • Python 3.8 или более поздней версии

  • Ресурс Azure OpenAI с совместимой моделью в поддерживаемом регионе.

  • Мы рекомендуем ознакомиться с примечанием о прозрачности ответственного ИИ и другими ресурсами ответственного искусственного интеллекта, чтобы ознакомиться с возможностями и ограничениями службы Azure OpenAI.

  • Ресурс Azure OpenAI с gpt-4 (1106-preview) развернутой моделью использовался для тестирования этого примера.

Настройка

Получение ключа и конечной точки

Чтобы успешно выполнить вызов к Azure OpenAI, вам потребуется следующее:

Имя переменной Значение
ENDPOINT Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Кроме того, значение можно найти, выбрав Azure OpenAI Studio>Тестовая площадка>Представление кода. Пример конечной точки: https://docs-test-001.openai.azure.com/.
API-KEY Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Вы можете использовать KEY1 или KEY2.
DEPLOYMENT-NAME Это значение будет соответствовать пользовательскому имени, которое вы выбрали для развертывания при развертывании модели. Это значение можно найти в разделеУправление ресурсами >Развертывания на портале Azure или в разделеУправление >Развертывания в Azure OpenAI Studio.

Перейдите к своему ресурсу на портале Azure. Конечную точку и ключи можно найти в разделе Управление ресурсами. Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Снимок экрана: колонка обзора для ресурса Azure OpenAI в портал Azure с расположением ключей доступа и конечных точек, окружаемых красным цветом.

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

Переменные среды

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

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

REST API

Создание помощник

Примечание.

При использовании Azure OpenAI для model параметра требуется имя развертывания модели. Если имя развертывания модели отличается от имени базовой модели, то вы измените код на "model": "{your-custom-model-deployment-name}".

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-05-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instructions": "You are an AI assistant that can write code to help answer math questions.",
    "name": "Math Assist",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4-1106-preview"
  }'

Инструменты

Отдельный помощник может получить доступ до 128 инструментов, включая code interpreterлюбые пользовательские средства, создаваемые с помощью функций.

Создание потока

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d ''

Добавление вопроса пользователя в поток

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
      "role": "user",
      "content": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
    }'

Запуск потока

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assistant_id": "asst_abc123",
  }'

Получение состояния выполнения

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs/run_abc123 \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Ответ помощника

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Расшифровка результатов

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

    from sympy import symbols, Eq, solve  
      
    # Define the variable  
    x = symbols('x')  
      
    # Define the equation  
    equation = Eq(3*x + 11, 14)  
      
    # Solve the equation  
    solution = solve(equation, x)  
    solution  

Важно помнить, что в то время как интерпретатор кода дает модели возможность реагировать на более сложные запросы, преобразовав вопросы в код и выполняя этот код итеративно в песочнице Python, пока он не достигнет решения, необходимо проверить ответ, чтобы убедиться, что модель правильно преобразовала вопрос в допустимое представление в коде.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Azure OpenAI, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы.

См. также