Megosztás a következőn keresztül:


Chat Markup Language ChatML (előzetes verzió)

Fontos

A GPT-3.5-Turbo modellek használata a jelen cikkben ismertetett befejezési végponttal előzetes verzióban marad, és csak a (0301) verzióval gpt-35-turbo lehetséges, amely már 2024. augusztus 1-jével megszűnik. Határozottan javasoljuk a GA Chat Completion API/végpont használatát. A Csevegés befejezése API a GPT-3.5-Turbo modellekkel való interakció ajánlott módja. A GPT-4 modellek elérésének egyetlen módja a Csevegés befejezése API.

Az alábbi kódrészlet a GPT-3.5-Turbo modellek ChatML-lel való használatának legalapvetőbb módját mutatja be. Ha ez az első alkalom, hogy programozott módon használja ezeket a modelleket, javasoljuk, hogy kezdje a GPT-35-Turbo & GPT-4 rövid útmutatóval.

Feljegyzés

Az Azure OpenAI dokumentációjában a GPT-3.5-Turbo és a GPT-35-Turbo felcserélhetően hivatkozunk. A modell hivatalos neve az OpenAI-ngpt-3.5-turbo, de az Azure OpenAI esetében az Azure-specifikus karakterkorlátozások miatt az alapul szolgáló modell neve .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'])

Feljegyzés

A gpt-35-turbo modell esetében nem érhetők el a következő paraméterek: logprobs, best_ofés echo. Ha ezen paraméterek bármelyikét beállítja, hibaüzenet jelenik meg.

A <|im_end|> jogkivonat egy üzenet végét jelzi. A ChatML használatakor ajánlott <|im_end|> a jogkivonatot leállítani, hogy a modell ne generáljon szöveget az üzenet végére érve.

Érdemes lehet a szokásosnál valamivel magasabb értéket beállítani max_tokens , például 300-at vagy 500-at. Ez biztosítja, hogy a modell ne állítsa le a szöveg generálását, mielőtt az az üzenet végére ér.

Modell verziószámozása

Feljegyzés

gpt-35-turbo az OpenAI-ból származó modellel egyenértékű gpt-3.5-turbo .

A korábbi GPT-3 és GPT-3.5 modellektől eltérően a gpt-35-turbo modell és a gpt-4gpt-4-32k modellek továbbra is frissülnek. Ezeknek a modelleknek az üzembe helyezésekor meg kell adnia egy modellverziót is.

A modellek kivonási dátumát a modelloldalunkon találja.

Csevegési korrektúranyelv (ChatML) használata

Feljegyzés

Az OpenAI továbbra is fejleszti a GPT-35-Turbo-t, és a modellekhez használt csevegőjelnyelv a jövőben is fejlődni fog. A dokumentumot folyamatosan frissítjük a legújabb információkkal.

OpenAI betanított GPT-35-Turbo speciális jogkivonatokon, amelyek a parancssor különböző részeit lehatárolva jelennek meg. Az üzenet egy rendszerüzenettel kezdődik, amely a modell első lépéseit, majd a felhasználó és az asszisztens közötti üzenetsorozatot követi.

Az egyszerű ChatML-parancssor formátuma a következő:

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

Rendszerüzenet

A rendszerüzenet az üzenet elején található a jogkivonatok és <|im_end|> a <|im_start|>system jogkivonatok között. Ez az üzenet a modell kezdeti utasításait tartalmazza. A rendszerüzenetben különböző információkat adhat meg, többek között a következőket:

  • Az asszisztens rövid leírása
  • Az asszisztens személyiségjegyei
  • Utasítások vagy szabályok, amit az asszisztens követni szeretne
  • A modellhez szükséges adatok vagy információk, például a gyakori kérdések releváns kérdései

Testre szabhatja a rendszerüzenetet a használati esethez, vagy csak egy egyszerű rendszerüzenetet is megadhat. A rendszerüzenet nem kötelező, de ajánlott legalább egy alapszintű üzenetet megadni a legjobb eredmény eléréséhez.

Üzenetek

A rendszerüzenet után üzenetek sorozatát is felveheti a felhasználó és az asszisztens között. Minden üzenetnek a <|im_start|> jogkivonattal kell kezdődnie, amelyet a szerepkör (user vagy assistant) követ, és a <|im_end|> jogkivonattal végződik.

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

A modell válaszának aktiválásához az üzenetnek jogkivonattal <|im_start|>assistant kell végződnie, amely azt jelzi, hogy az asszisztens válasza lesz. A felhasználó és az asszisztens közötti üzeneteket is belefoglalhatja a parancssorba, hogy néhány lövéses tanulást is elvégezhesse.

Példák kérése

Az alábbi szakasz példákat mutat be a GPT-35-Turbo és GPT-4 modellekhez használható különböző stílusokra. Ezek a példák csak kiindulópontok, és különböző kérésekkel kísérletezhet a saját használati esetek viselkedésének testreszabásához.

Egyszerű példa

Ha azt szeretné, hogy a GPT-35-Turbo és a GPT-4 modellek hasonlóan viselkedjenek, mint chat.openai.com, használhat egy alapszintű rendszerüzenetet, például: "Az Asszisztens egy openAI által betanított nagy nyelvi modell".

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

Példa utasításokra

Egyes forgatókönyvek esetében érdemes lehet további utasításokat adni a modellnek a modell által elvégezhető védőkorlátok meghatározásához.

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

Adatok használata földeléshez

A rendszerüzenetben releváns adatokat vagy információkat is megadhat, hogy a modell további kontextust biztosítson a beszélgetéshez. Ha csak kis mennyiségű információt kell tartalmaznia, akkor a rendszerüzenetben keményen kódozhatja. Ha nagy mennyiségű adatra van szüksége, amelyet a modellnek tudnia kell, beágyazásokkal vagy olyan termékekkel, mint az Azure AI Search, lekérheti a legrelevánsabb információkat a lekérdezési időpontban.

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

Kevés felvétel a ChatML-lel való tanulásról

Néhány példaképet is megadhat a modellnek. A kevés lövéses tanulás megközelítése kissé megváltozott az új parancssori formátum miatt. Mostantól néhány példaként felvehet egy üzenetsort a felhasználó és az asszisztens között. Ezek a példák arra használhatók, hogy válaszokat adjanak a modell alapkontrasztjára vonatkozó gyakori kérdésekre, vagy megtanítsanak bizonyos viselkedéseket a modellnek.

Ez csak egy példa arra, hogyan használhat néhány lövés tanulást a GPT-35-Turbo használatával. Kísérletezhet különböző megközelítésekkel, hogy lássa, mi működik a legjobban a használati esethez.

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

Csevegési korrektúranyelv használata nem csevegési forgatókönyvekhez

A ChatML úgy lett kialakítva, hogy egyszerűbbé tegye a többfordulós beszélgetések kezelését, de a nem csevegéses helyzetekben is jól működik.

Entitás-kinyerési forgatókönyv esetén például a következő parancssort használhatja:

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

Nem biztonságos felhasználói bemenetek megakadályozása

Fontos, hogy a csevegési korrektúra nyelv biztonságos használata érdekében kockázatcsökkentéseket vegyen fel az alkalmazásba.

Javasoljuk, hogy megakadályozza, hogy a végfelhasználók speciális jogkivonatokat vegyenek fel a bemenetükbe, például <|im_start|> és <|im_end|>. Azt is javasoljuk, hogy adjon hozzá további ellenőrzést, hogy a modellnek küldött kérések megfelelően legyenek formázva, és kövesse a jelen dokumentumban leírt csevegési korrektúranyelv-formátumot.

A rendszerüzenetben útmutatást is adhat a modellnek arra vonatkozóan, hogyan reagálhat bizonyos típusú felhasználói bemenetekre. Utasíthatja például a modellt, hogy csak egy adott témával kapcsolatos üzenetekre válaszoljon. Ezt a viselkedést néhány példafelvétellel is megerősítheti.

Beszélgetések kezelése

A jogkivonatok gpt-35-turbo korlátja 4096 token. Ez a korlát magában foglalja a jogkivonatok számát a parancssorból és a befejezésből is. A parancssorban lévő tokenek számának és a max_tokens paraméter értékének 4096 alatt kell maradnia, vagy hibaüzenet jelenik meg.

Az Ön felelőssége, hogy a kérés és a befejezés a jogkivonat korlátján belül legyen. Ez azt jelenti, hogy hosszabb beszélgetések esetén nyomon kell követnie a jogkivonatok számát, és csak a jogkivonat-korláton belül eső kérést kell küldenie a modellnek.

Az alábbi kódminta egy egyszerű példát mutat be arra, hogyan követheti nyomon a beszélgetésben lévő különálló üzeneteket.

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

A jogkivonat korlátja alatt marad

A legegyszerűbb módszer, ha a jogkivonat korlátja alatt marad, ha eltávolítja a beszélgetés legrégebbi üzeneteit, amikor eléri a jogkivonat korlátját.

Dönthet úgy, hogy mindig a lehető legtöbb jogkivonatot tartalmazza, amíg a korlát alatt marad, vagy mindig megadhat egy megadott számú korábbi üzenetet, feltéve, hogy ezek az üzenetek a korláton belül maradnak. Fontos szem előtt tartani, hogy a hosszabb kérések hosszabb időt vesznek igénybe a válasz létrehozásához, és magasabb költségekkel járnak, mint a rövidebb kérések.

A sztringben lévő tokenek számát a tiktoken Python-kódtár használatával becsülheti meg az alábbiak szerint.

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]

Következő lépések