W tej sekcji omawiamy najnowsze techniki inżynierii podpowiedzi dla ChatGPT, w tym wskazówki, aplikacje, ograniczenia, dokumenty i dodatkowe materiały do czytania.

Tematy:

  • [Wprowadzenie do ChatGPT]
  • Przeglądanie Conversation Task
  • Rozmowy z ChatGPT

[Wprowadzenie do ChatGPT]

ChatGPT to nowy model wyszkolony przez OpenAI, który ma zdolność do interakcji w sposób konwersacyjny. Model ten jest przeszkolony do wykonywania instrukcji w podpowiedzi, aby zapewnić odpowiednie odpowiedzi w kontekście dialogu. ChatGPT może pomóc w odpowiadaniu na pytania, sugerowaniu przepisów, pisaniu tekstów w określonym stylu, generowaniu kodu i wielu innych.

ChatGPT jest szkolony przy użyciu Reinforcement Learning from Human Feedback (RLHF). Chociaż model ten jest o wiele bardziej wydajny niż poprzednie iteracje GPT (a także wyszkolony w celu zmniejszenia szkodliwych i nieprawdziwych wyników), nadal ma pewne ograniczenia. Omówmy niektóre z możliwości i ograniczeń na konkretnych przykładach.

Możesz skorzystać z podglądu badań ChatGPT tutaj, ale w poniższych przykładach użyjemy trybu czatu na OpenAI Playground.

Przegląd Conversation Task

W jednym z poprzednich przewodników omówiliśmy nieco możliwości konwersacji i podpowiedzi ról. Opisaliśmy, jak poinstruować LLM, aby prowadził rozmowę w określonym stylu, z określonymi intencjami, zachowaniem i tożsamością.

Przyjrzyjmy się naszemu poprzedniemu podstawowemu przykładowi, w którym stworzyliśmy system konwersacyjny zdolny do generowania bardziej technicznych i naukowych odpowiedzi na pytania.

Prompt:

The following is a conversation with an AI research assistant. The assistant tone is technical and scientific.Human: Hello, who are you?AI: Greeting! I am an AI research assistant. How can I help you today?Human: Can you tell me about the creation of black holes?AI:

Na powyższym przykładzie widać dwa ważne elementy:

  • intencja lub wyjaśnienie, czym jest chatbot
  • tożsamość, która instruuje styl lub ton, jakiego chatbot będzie używał, aby odpowiedzieć

Powyższy prosty przykład działa dobrze z interfejsami API uzupełniania tekstu, które wykorzystują text-davinci-003. Niedawno OpenAI ogłosiło ChatGPT APIs, który jest bardziej wydajnym i tańszym modelem o nazwie gpt-3.5-turbo został specjalnie zbudowany dla tego typu funkcjonalności (uzupełnianie czatu). W rzeczywistości OpenAI zaleca ten model jako najlepszy nawet dla przypadków użycia innych niż czat. Inne korzyści wynikające z korzystania z interfejsów API ChatGPT to znaczna redukcja kosztów (90%) i wydajność.

Duże firmy, takie jak Snap Inc. i Instacart, już integrują funkcje konwersacyjne obsługiwane przez ChatGPT w swoich produktach, od spersonalizowanych rekomendacji po otwarte cele zakupowe.

Rozmowa z ChatGPT

Multi-turn Conversations

Aby rozpocząć demonstrację możliwości ChatGPT, użyjemy powyższego przykładu asystenta chatbota i omówimy wyniki. W porównaniu do text-davinci-003, model gpt-3.5-turbo, który zasila ChatGPT, używa formatu czatu jako danych wejściowych. Model oczekuje serii wiadomości jako danych wejściowych i wykorzystuje je do wygenerowania odpowiedzi.

Input:

SYSTEM: You are an AI research assistant. You use a tone that is technical and scientific.USER: Hello, who are you?ASSISTANT: Greeting! I am an AI research assistant. How can I help you today?USER: Can you tell me about the creation of black holes?

Output:

ASSISTANT: Of course! Black holes are created when a massive star runs out of fuel and collapses under its own gravity. This collapse causes the star to become incredibly dense, with a gravitational field so strong that not even light can escape it. This point of no return is known as the event horizon. Once a star crosses the event horizon, it is considered a black hole...

Zauważ, że w powyższym przykładzie uprościłem dane wejściowe i wyjściowe, ale interfejs API uzupełniania czatu ChatGPT wymaga, aby wiadomości miały określony format. Poniżej dodałem migawkę tego, jak ten przykład wyglądałby przy użyciu Chat Mode w OpenAI Playground:

Bardziej formalne wywołanie API dla naszego przykładu wyglądałoby mniej więcej tak, jak w poniższym przykładzie:

import openai openai.ChatCompletion.create(  model="gpt-3.5-turbo",  messages=[        {"role": "system", "content": "You are an AI research assistant. You use a tone that is technical and scientific."},        {"role": "user", "content": "Hello, who are you?"},        {"role": "assistant", "content": "Greeting! I am an AI research assistant. How can I help you today?"},        {"role": "user", "content": "Can you tell me about the creation of black holes?"}    ])

W rzeczywistości oczekuje się, że sposób interakcji programistów z ChatGPT w przyszłości będzie odbywał się za pośrednictwem Chat Markup Language (w skrócie ChatML).

Single-turn tasks

Format czatu umożliwia konwersacje wieloobrotowe, ale obsługuje również zadania jednoobrotowe, podobne do tego, co wykorzystaliśmy w text-davinci-003. Oznacza to, że możemy użyć ChatGPT do wykonywania podobnych zadań, jakie zademonstrowaliśmy dla oryginalnych modeli GPT. Na przykład, spróbujmy wykonać następujące zadanie odpowiadania na pytania przy użyciu ChatGPT:

Input:

USER: Answer the question based on the context below. Keep the answer short and concise. Respond "Unsure about answer" if not sure about the answer.Context: Teplizumab traces its roots to a New Jersey drug company called Ortho Pharmaceutical. There, scientists generated an early version of the antibody, dubbed OKT3. Originally sourced from mice, the molecule was able to bind to the surface of T cells and limit their cell-killing potential. In 1986, it was approved to help prevent organ rejection after kidney transplants, making it the first therapeutic antibody allowed for human use.Question: What was OKT3 originally sourced from?Answer:

Output:

ASSISTANT: Mice.

Należy pamiętać, że dodaję etykiety USER i ASSISTANT, aby lepiej zademonstrować, w jaki sposób można wykonać zadanie za pomocą ChatGPT. Oto przykład z wykorzystaniem Playground:

Bardziej formalnie, jest to wywołanie API (uwzględniłem tylko komponent wiadomości żądania):

CONTENT = """Answer the question based on the context below. Keep the answer short and concise. Respond \"Unsure about answer\" if not sure about the answer. Context: Teplizumab traces its roots to a New Jersey drug company called Ortho Pharmaceutical. There, scientists generated an early version of the antibody, dubbed OKT3. Originally sourced from mice, the molecule was able to bind to the surface of T cells and limit their cell-killing potential. In 1986, it was approved to help prevent organ rejection after kidney transplants, making it the first therapeutic antibody allowed for human use. Question: What was OKT3 originally sourced from? Answer:""" response = openai.ChatCompletion.create(    model="gpt-3.5-turbo",    messages=[        {"role": "user", "content": CONTENT},    ],    temperature=0,)

Instructing Chat Models

Zgodnie z oficjalnymi dokumentami OpenAI, snapshoty modelu gpt-3.5-turbo również zostaną udostępnione. Na przykład, możemy uzyskać dostęp do migawki z 1 marca gpt-3.5-turbo-0301. Pozwala to deweloperom na wybór konkretnych wersji modelu. Oznacza to również, że najlepsze praktyki dotyczące instruowania modeli mogą się zmieniać z wersji na wersję.

Obecną rekomendacją dla gpt-3.5-turbo-0301 jest dodanie instrukcji w wiadomości user w przeciwieństwie do dostępnej wiadomości system.

Referencje