Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Использование моделей GPT-3.5-Turbo с конечной точкой завершения, как описано в этой статье, остается в предварительной версии и возможно только с gpt-35-turbo
версией ( 0301), которая была прекращена для стандартного развертывания в феврале 2025 года. Мы настоятельно рекомендуем использовать GA Chat Completion API/endpoint или Responses API. API завершения чата — это рекомендуемый метод взаимодействия с моделями GPT-3.5-Turbo. API завершения чата также является единственным способом доступа к моделям GPT-4.
В следующем фрагменте кода показан самый простой способ использования моделей GPT-3.5-Turbo с ChatML. Если вы впервые используете эти модели программным способом, мы рекомендуем начать с нашего краткого руководства по GPT-35-Turbo и GPT-4.
Замечание
В документации Azure OpenAI мы взаимозаменяемо ссылаемся на GPT-3.5-Turbo и GPT-35-Turbo. Официальное имя модели в OpenAI— gpt-3.5-turbo
но для Azure OpenAI из-за ограничений конкретного символа Azure используется имя gpt-35-turbo
базовой модели.
import os
import openai
openai.api_type = "azure"
openai.api_base = "https://{your-resource-name}.openai.azure.com/"
openai.api_version = "2024-02-01"
openai.api_key = os.getenv("OPENAI_API_KEY")
response = openai.Completion.create(
engine="gpt-35-turbo", # The deployment name you chose when you deployed the GPT-35-Turbo model
prompt="<|im_start|>system\nAssistant is a large language model trained by OpenAI.\n<|im_end|>\n<|im_start|>user\nWho were the founders of Microsoft?\n<|im_end|>\n<|im_start|>assistant\n",
temperature=0,
max_tokens=500,
top_p=0.5,
stop=["<|im_end|>"])
print(response['choices'][0]['text'])
Замечание
Следующие параметры недоступны в модели gpt-35-turbo: logprobs
, best_of
и echo
. Если вы устанавливаете любой из этих параметров, вы получите ошибку.
Маркер <|im_end|>
указывает конец сообщения. При использовании ChatML рекомендуется включить <|im_end|>
маркер в последовательность остановки, чтобы убедиться, что модель перестает создавать текст, когда он достигнет конца сообщения.
Рекомендуется задать max_tokens
значение немного выше, чем обычно, например 300 или 500. Это гарантирует, что модель не перестает создавать текст, прежде чем он достигнет конца сообщения.
версионирование моделей
Замечание
gpt-35-turbo
эквивалентен gpt-3.5-turbo
модели из OpenAI.
В отличие от предыдущих моделей GPT-3 и GPT-3.5, gpt-35-turbo
модель, а также gpt-4
gpt-4-32k
модели будут продолжать обновляться. При создании развертывания этих моделей также необходимо указать версию модели.
Даты выхода на пенсию модели можно найти на странице моделей .
Работа с языком разметки чата (ChatML)
Замечание
OpenAI продолжает улучшать GPT-35-Turbo и язык разметки чата, используемый с моделями, будет продолжать развиваться в будущем. Мы будем обновлять этот документ с последними сведениями.
OpenAI обучил GPT-35-Turbo с использованием специальных токенов, которые выделяют разные части запроса. Запрос начинается с системного сообщения, используемого для создания модели, за которой следует ряд сообщений между пользователем и помощником.
Формат базового запроса ChatML выглядит следующим образом:
<|im_start|>system
Provide some context and/or instructions to the model.
<|im_end|>
<|im_start|>user
The user’s message goes here
<|im_end|>
<|im_start|>assistant
Системное сообщение
Системное сообщение включается в начале запроса между маркерами <|im_start|>system
и <|im_end|>
. Это сообщение содержит начальные инструкции для модели. Вы можете предоставить различные сведения в системном сообщении, в том числе:
- Краткое описание помощника
- Черты личности помощника
- Инструкции или правила, которым вы хотите, чтобы помощник следовал
- Данные или сведения, необходимые для модели, например соответствующие вопросы из часто задаваемых вопросов
Вы можете настроить системное сообщение для вашего варианта использования или просто включить базовое системное сообщение. Системное сообщение является необязательным, но рекомендуется по крайней мере включить базовый, чтобы получить лучшие результаты.
Сообщения
После системного сообщения можно включить ряд сообщений между пользователем и помощником. Каждое сообщение должно начинаться с маркера <|im_start|>
, за которым следует роль (user
или assistant
) и заканчиваться маркером <|im_end|>
.
<|im_start|>user
What is thermodynamics?
<|im_end|>
Чтобы активировать ответ от модели, запрос должен заканчиваться маркером <|im_start|>assistant
, указывающим на то, что теперь отвечает помощник. Вы также можете включить сообщения между пользователем и помощником в подсказку как способ обучения с небольшим числом примеров.
Примеры запросов
В следующем разделе показаны примеры различных стилей запросов, которые можно использовать с моделями GPT-35-Turbo и GPT-4. Эти примеры являются лишь отправной точкой, и вы можете поэкспериментировать с различными запросами на настройку поведения для собственных вариантов использования.
Базовый пример
Если вы хотите, чтобы модели GPT-35-Turbo и GPT-4 действуют аналогично chat.openai.com, можно использовать базовое системное сообщение, например "Помощник является большой языковой моделью, обученной OpenAI".
<|im_start|>system
Assistant is a large language model trained by OpenAI.
<|im_end|>
<|im_start|>user
Who were the founders of Microsoft?
<|im_end|>
<|im_start|>assistant
Пример с инструкциями
Для некоторых сценариев может потребоваться предоставить модели дополнительные инструкции, чтобы определить ограничения того, что может выполнять модель.
<|im_start|>system
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions:
- Only answer questions related to taxes.
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information.
<|im_end|>
<|im_start|>user
When are my taxes due?
<|im_end|>
<|im_start|>assistant
Использование данных для заземления
Вы также можете включить соответствующие данные или сведения в системное сообщение, чтобы предоставить модели дополнительный контекст для беседы. Если вам нужно включить только небольшое количество сведений, его можно жестко закодировать в системном сообщении. Если у вас есть большой объем данных, о которых должна знать модель, можно использовать внедрение или продукт, такой как поиск ИИ Azure, для получения наиболее важных сведений во время запроса.
<|im_start|>system
Assistant is an intelligent chatbot designed to help users answer technical questions about Azure OpenAI in Azure AI Foundry Models. Only answer questions using the context below and if you're not sure of an answer, you can say "I don't know".
Context:
- Azure OpenAI provides REST API access to OpenAI's powerful language models including the GPT-3, Codex and Embeddings model series.
- Azure OpenAI gives customers advanced language AI with OpenAI GPT-3, Codex, and DALL-E models with the security and enterprise promise of Azure. Azure OpenAI co-develops the APIs with OpenAI, ensuring compatibility and a smooth transition from one to the other.
- At Microsoft, we're committed to the advancement of AI driven by principles that put people first. Microsoft has made significant investments to help guard against abuse and unintended harm, which includes requiring applicants to show well-defined use cases, incorporating Microsoft’s principles for responsible AI use
<|im_end|>
<|im_start|>user
What is Azure OpenAI?
<|im_end|>
<|im_start|>assistant
Несколько снимков обучения с помощью ChatML
Вы также можете предоставить модели несколько примеров для обучения. Подход к обучению на малом количестве примеров немного изменился из-за нового формата подсказки. Теперь вы можете включить ряд сообщений между пользователем и помощником в запросе как несколько примеров снимка. Эти примеры можно использовать для заполнения ответов на распространенные вопросы, чтобы подготовить модель или обучить модель конкретным действиям.
Это только один пример того, как можно использовать обучение с небольшим количеством примеров в GPT-35-Turbo. Вы можете поэкспериментировать с различными подходами, чтобы увидеть, что лучше всего подходит для вашего варианта использования.
<|im_start|>system
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
<|im_end|>
<|im_start|>user
When do I need to file my taxes by?
<|im_end|>
<|im_start|>assistant
In 2023, you will need to file your taxes by April 18th. The date falls after the usual April 15th deadline because April 15th falls on a Saturday in 2023. For more details, see https://www.irs.gov/filing/individuals/when-to-file
<|im_end|>
<|im_start|>user
How can I check the status of my tax refund?
<|im_end|>
<|im_start|>assistant
You can check the status of your tax refund by visiting https://www.irs.gov/refunds
<|im_end|>
Использование языка разметки чата для сценариев, отличных от чата
ChatML предназначен для упрощения управления несколькими беседами, но также хорошо подходит для сценариев, отличных от чата.
Например, для сценария извлечения сущностей можно использовать следующую подсказку.
<|im_start|>system
You are an assistant designed to extract entities from text. Users will paste in a string of text and you will respond with entities you've extracted from the text as a JSON object. Here's an example of your output format:
{
"name": "",
"company": "",
"phone_number": ""
}
<|im_end|>
<|im_start|>user
Hello. My name is Robert Smith. I’m calling from Contoso Insurance, Delaware. My colleague mentioned that you are interested in learning about our comprehensive benefits policy. Could you give me a call back at (555) 346-9322 when you get a chance so we can go over the benefits?
<|im_end|>
<|im_start|>assistant
Предотвращение небезопасных входных данных пользователей
Важно добавить в приложение средства устранения рисков, чтобы обеспечить безопасное использование языка разметки чата.
Рекомендуется запретить конечным пользователям включать специальные маркеры в входные данные, например <|im_start|>
и <|im_end|>
. Мы также рекомендуем включить дополнительную проверку, чтобы убедиться, что запросы, которые вы отправляете в модель, хорошо сформированы и следуйте формату языка разметки чата, как описано в этом документе.
Вы также можете указать инструкции в системном сообщении, чтобы помочь модели реагировать на определенные типы входных данных пользователей. Например, можно указать модели ответить только на сообщения о определенной теме. Это поведение можно также укрепить с помощью нескольких примеров снимка.
Управление беседами
Ограничение gpt-35-turbo
маркера — 4096 токенов. Это ограничение включает количество токенов как из подсказки, так и из результата. Число токенов в запросе вместе со значением параметра max_tokens
должно быть меньше 4096, иначе вы получите ошибку.
Вы несете ответственность за то, чтобы убедиться, что запрос и завершение находятся в пределах лимита токенов. Это означает, что для более длительных бесед необходимо отслеживать количество токенов и отправлять модели только такой запрос, который укладывается в лимит токенов.
В следующем примере кода показан простой пример отслеживания отдельных сообщений в беседе.
import os
import openai
openai.api_type = "azure"
openai.api_base = "https://{your-resource-name}.openai.azure.com/" #This corresponds to your Azure OpenAI resource's endpoint value
openai.api_version = "2024-02-01"
openai.api_key = os.getenv("OPENAI_API_KEY")
# defining a function to create the prompt from the system message and the conversation messages
def create_prompt(system_message, messages):
prompt = system_message
for message in messages:
prompt += f"\n<|im_start|>{message['sender']}\n{message['text']}\n<|im_end|>"
prompt += "\n<|im_start|>assistant\n"
return prompt
# defining the user input and the system message
user_input = "<your user input>"
system_message = f"<|im_start|>system\n{'<your system message>'}\n<|im_end|>"
# creating a list of messages to track the conversation
messages = [{"sender": "user", "text": user_input}]
response = openai.Completion.create(
engine="gpt-35-turbo", # The deployment name you chose when you deployed the GPT-35-Turbo model.
prompt=create_prompt(system_message, messages),
temperature=0.5,
max_tokens=250,
top_p=0.9,
frequency_penalty=0,
presence_penalty=0,
stop=['<|im_end|>']
)
messages.append({"sender": "assistant", "text": response['choices'][0]['text']})
print(response['choices'][0]['text'])
Оставаясь в пределах ограничения токенов
Самый простой способ не превышать лимит токенов — это удалить старейшие сообщения в беседе, когда вы достигаете этого лимита.
Вы можете всегда включать максимально возможное количество маркеров, оставаясь в заданных рамках, или включать определенное количество предыдущих сообщений при условии, что они остаются в пределах этих рамок. Важно помнить, что более длинные запросы занимают больше времени, чтобы создать ответ и повлечь за собой более высокую стоимость, чем более короткие запросы.
Вы можете оценить количество токенов в строке с помощью библиотеки Python tiktoken , как показано ниже.
import tiktoken
cl100k_base = tiktoken.get_encoding("cl100k_base")
enc = tiktoken.Encoding(
name="gpt-35-turbo",
pat_str=cl100k_base._pat_str,
mergeable_ranks=cl100k_base._mergeable_ranks,
special_tokens={
**cl100k_base._special_tokens,
"<|im_start|>": 100264,
"<|im_end|>": 100265
}
)
tokens = enc.encode(
"<|im_start|>user\nHello<|im_end|><|im_start|>assistant",
allowed_special={"<|im_start|>", "<|im_end|>"}
)
assert len(tokens) == 7
assert tokens == [100264, 882, 198, 9906, 100265, 100264, 78191]
Дальнейшие шаги
- Дополнительные сведения о службе Azure OpenAI.
- Начинайте работу с моделью GPT-35-Turbo с помощью краткого руководства для GPT-35-Turbo и GPT-4.
- Дополнительные примеры см. в репозитории GitHub в Azure OpenAI Samples