Aracılığıyla paylaş


Sohbet İşaretleme Dili ChatML (Önizleme)

Önemli

GpT-3.5-Turbo modellerini, bu makalede açıklandığı gibi tamamlanma uç noktasıyla birlikte kullanmak önizleme aşamasında kalır ve yalnızca 1 Ağustos 2024'te kullanımdan kaldırılması planlanan sürüm (0301) ile gpt-35-turbo mümkündür. GA Sohbet Tamamlama API'sini /uç noktasını kullanmanızı kesinlikle öneririz. Sohbet Tamamlama API'si, GPT-3.5-Turbo modelleriyle etkileşim kurmanın önerilen yöntemidir. Sohbet Tamamlama API'si, GPT-4 modellerine erişmenin tek yoludur.

Aşağıdaki kod parçacığı, ChatML ile GPT-3.5-Turbo modellerini kullanmanın en temel yolunu gösterir. Bu modelleri program aracılığıyla ilk kez kullanıyorsanız GPT-35-Turbo & GPT-4 Hızlı Başlangıç ile başlamanızı öneririz.

Not

Azure OpenAI belgelerinde GPT-3.5-Turbo ve GPT-35-Turbo'ya birbirinin yerine başvuracağız. OpenAI üzerindeki modelin resmi adı şeklindedir gpt-3.5-turbo, ancak Azure'a özgü karakter kısıtlamaları nedeniyle Azure OpenAI için temel model adı şeklindedir 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'])

Not

Gpt-35-turbo modelinde aşağıdaki parametreler kullanılamaz: logprobs, best_ofve echo. Bu parametrelerden herhangi birini ayarlarsanız bir hata alırsınız.

Belirteç, <|im_end|> iletinin sonunu gösterir. ChatML kullanırken, modelin iletinin sonuna ulaştığında metin oluşturmayı durdurmasını sağlamak için belirteci durdurma sırası olarak eklemeniz <|im_end|> önerilir.

300 veya 500 gibi normalden biraz daha yüksek bir değere ayarlamayı max_tokens göz önünde bulundurun. Bu, modelin iletinin sonuna ulaşmadan önce metin oluşturma işlemini durdurmamasını sağlar.

Model sürümü oluşturma

Not

gpt-35-turbo OpenAI'deki modele gpt-3.5-turbo eşdeğerdir.

Önceki GPT-3 ve GPT-3.5 modellerinin aksine model gpt-35-turbo ve gpt-4gpt-4-32k modelleri güncelleştirilmeye devam edecektir. Bu modellerin dağıtımını oluştururken bir model sürümü de belirtmeniz gerekir.

Bu modellerin kullanımdan kaldırma tarihlerini modeller sayfamızda bulabilirsiniz.

Sohbet İşaretlemeyi Diliyle Çalışma (ChatML)

Not

OpenAI, GPT-35-Turbo'yi geliştirmeye devam ediyor ve modellerle birlikte kullanılan Sohbet İşaretlemeyi Dili gelecekte de gelişmeye devam edecek. Bu belgeyi en son bilgilerle güncel tutacağız.

OpenAI tarafından eğitilen GPT-35-Turbo, istemin farklı bölümlerini gösteren özel belirteçlerde. İstem, modelin başına geçmek için kullanılan bir sistem iletisiyle başlar ve ardından kullanıcı ile yardımcı arasında bir dizi ileti görüntülenir.

Temel bir ChatML isteminin biçimi aşağıdaki gibidir:

<|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 

Sistem iletisi

Sistem iletisi, ve <|im_end|> belirteçleri arasındaki istemin <|im_start|>system başına eklenir. Bu ileti modele ilk yönergeleri sağlar. Sistem iletisinde aşağıdakiler dahil olmak üzere çeşitli bilgiler sağlayabilirsiniz:

  • Yardımcının kısa açıklaması
  • Asistanın kişilik özellikleri
  • Yardımcının izlemesini istediğiniz yönergeler veya kurallar
  • SSS'den gelen ilgili sorular gibi model için gereken veriler veya bilgiler

Sistem iletisini kullanım örneğiniz için özelleştirebilir veya yalnızca temel bir sistem iletisi ekleyebilirsiniz. Sistem iletisi isteğe bağlıdır, ancak en iyi sonuçları elde etmek için en azından temel bir ileti eklemeniz önerilir.

İletiler

Sistem iletisinden sonra, kullanıcı ve yardımcı arasında bir dizi ileti ekleyebilirsiniz. Her ileti, belirteçle <|im_start|> ve ardından rol (user veya assistant) ile başlamalı ve belirteçle <|im_end|> bitmelidir.

<|im_start|>user
What is thermodynamics?
<|im_end|>

Modelden bir yanıt tetikleyebilmek için istem, yardımcının yanıt verme sırası olduğunu belirten belirteçle <|im_start|>assistant bitmelidir. Ayrıca, birkaç deneme öğrenmesi yapmak için istemde kullanıcı ile yardımcı arasında iletiler ekleyebilirsiniz.

İstem örnekleri

Aşağıdaki bölümde, GPT-35-Turbo ve GPT-4 modelleriyle kullanabileceğiniz farklı istem stilleri örnekleri gösterilmektedir. Bu örnekler yalnızca bir başlangıç noktasıdır ve kendi kullanım örneklerinizin davranışını özelleştirmek için farklı istemlerle denemeler yapabilirsiniz.

Temel örnek

GPT-35-Turbo ve GPT-4 modellerinin chat.openai.com benzer şekilde davranmasını istiyorsanız, "Yardımcı OpenAI tarafından eğitilen büyük bir dil modelidir" gibi temel bir sistem iletisi kullanabilirsiniz.

<|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

Yönergeler içeren örnek

Bazı senaryolarda, modelin yapabilecekleri için korumaları tanımlamak üzere modele ek yönergeler vermek isteyebilirsiniz.

<|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

Topraklama için verileri kullanma

Modele konuşma için ek bağlam sağlamak için sistem iletisine ilgili verileri veya bilgileri de ekleyebilirsiniz. Yalnızca az miktarda bilgi eklemeniz gerekiyorsa, bunu sistem iletisine sabit kodlayabilirsiniz. Modelin bilmesi gereken büyük miktarda veriniz varsa, sorgu zamanında en uygun bilgileri almak için eklemeleri veya Azure AI Search gibi bir ürünü kullanabilirsiniz.

<|im_start|>system
Assistant is an intelligent chatbot designed to help users answer technical questions about Azure OpenAI Serivce. 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 Service provides REST API access to OpenAI's powerful language models including the GPT-3, Codex and Embeddings model series.
- Azure OpenAI Service 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 Service?
<|im_end|>
<|im_start|>assistant

ChatML ile birkaç deneme öğrenmesi

Modele birkaç çekim örneği de verebilirsiniz. Yeni istem biçimi nedeniyle birkaç deneme öğrenmesi yaklaşımı biraz değişti. Artık kullanıcı ve yardımcı arasında birkaç çekim örneği olarak bilgi istemine bir dizi ileti ekleyebilirsiniz. Bu örnekler, modelin temellerini belirlemek veya modele belirli davranışları öğretmek için sık sorulan soruların yanıtlarını bulmak için kullanılabilir.

Bu, GPT-35-Turbo ile birkaç deneme öğrenmesini nasıl kullanabileceğinize yalnızca bir örnektir. Kullanım örneğiniz için en uygun olanı görmek için farklı yaklaşımlarla denemeler yapabilirsiniz.

<|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|>

Sohbet dışı senaryolar için Sohbet İşaretlemeyi Dili kullanma

ChatML, çok aşamalı konuşmaların yönetilmesini kolaylaştıracak şekilde tasarlanmıştır, ancak sohbet dışı senaryolar için de iyi çalışır.

Örneğin, varlık ayıklama senaryosu için aşağıdaki istemi kullanabilirsiniz:

<|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

Güvenli olmayan kullanıcı girişlerini önleme

Sohbet İşaretleme Dili'nin güvenli bir şekilde kullanılmasını sağlamak için uygulamanıza risk azaltmaları eklemeniz önemlidir.

Son kullanıcıların ve <|im_end|>gibi <|im_start|> girişlerine özel belirteçler ekleyebilmesini engellemenizi öneririz. Ayrıca, modele gönderdiğiniz istemlerin iyi biçimlendirildiğinden emin olmak için ek doğrulama eklemenizi ve bu belgede açıklandığı gibi Sohbet İşaretlemesi Dili biçimini izlemenizi öneririz.

Modelin belirli kullanıcı girişi türlerine nasıl yanıt vereceği konusunda yol göstermesi için sistem iletisinde yönergeler de sağlayabilirsiniz. Örneğin, modele yalnızca belirli bir konuyla ilgili iletileri yanıtlamasını sağlayabilirsiniz. Bu davranışı birkaç çekim örneğiyle de pekiştirebilirsiniz.

Konuşmaları yönetme

için gpt-35-turbo belirteç sınırı 4096 belirteçtir. Bu sınır hem istem hem de tamamlamadan belirteç sayısını içerir. parametrenin değeriyle birlikte istemdeki belirteçlerin sayısı 4096'nın max_tokens altında kalmalıdır, aksi durumda bir hata alırsınız.

İstem ve tamamlamanın belirteç sınırına uygun olduğundan emin olmak sizin sorumluluğunuzdadır. Bu, daha uzun konuşmalar için belirteç sayısını izlemeniz ve modele yalnızca belirteç sınırına denk gelen bir istem göndermeniz gerektiği anlamına gelir.

Aşağıdaki kod örneği, konuşmadaki ayrı iletileri nasıl izleyebildiğinize ilişkin basit bir örneği gösterir.

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'])

Belirteç sınırının altında kalma

Belirteç sınırının altında kalmanın en basit yaklaşımı, belirteç sınırına ulaştığınızda konuşmadaki en eski iletileri kaldırmaktır.

Sınırın altında kalırken her zaman mümkün olduğunca çok belirteç eklemeyi seçebilir veya bu iletilerin sınırın içinde kaldığı varsayılarak her zaman belirli sayıda önceki iletiyi ekleyebilirsiniz. Daha uzun istemlerin yanıt oluşturmanın daha uzun sürdüğünü ve daha kısa istemlerden daha yüksek maliyete neden olduğunu aklınızda bulundurmanız önemlidir.

Aşağıda gösterildiği gibi tiktoken Python kitaplığını kullanarak bir dizedeki belirteç sayısını tahmin edebilirsiniz.

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]

Sonraki adımlar