ChatGPT prompt engineering

буюу хэрхэн оновчтой асуулт асуух вэ?

--

Хаа сайгүй AI, DeepFake, ChatGPT гээд галзуурч байгаа энэ үед иймэрхүү “tool”-г яаж сайн ашиглахыг сурахаас өөр гарцгүй болж дээ. Өнөөдөр харин DeepLearning AI болон Open AI хамтран гаргасан нэг цагийн богино хичээлийг хамтдаа үзье.

ChatGPT prompt engineering for developers

AI-н томчуудын нэг Andrew Ng бүтээлцсэн энэ хичээлийг үзсэнээр Large Language Model (LLM) хэрхэн ажилладаг, Prompt engineering-н сайн туршлагууд болон хэрхэн хэрэглэх талаар жишээнүүдтэй танилцана.

  • Summarizing (e.g., summarizing user reviews for brevity)
  • Inferring (e.g., sentiment classification, topic extraction)
  • Transforming text (e.g., translation, spelling & grammar correction)
  • Expanding (e.g., automatically writing emails)

эдгээрийг болон Чатбот хийх жишээ, Jupyter notebook дээр шууд ажиллуулах кодтой “бүрэн” хичээл байна лээ.

Зөвхөн web interface ашиглаад асуулт асуух биш, API ашиглан хөгжүүлэлтийг хурдасгах…

Хичээл — LLM

A Large Language Model (LLM) is a type of artificial intelligence (AI) model designed to understand and generate human-like text based on the patterns it has learned from vast amounts of text data.

LLM гэж юу вэ? Энгийнээр бол их хэмжээний өгөгдөл дээр сургасан, текстийг ойлгож, хүн шиг хариу өгөх чадамжтай хиймэл оюуны юм. Үндсэндээ дотроо 2 том төрөлтэй.

  1. Base LLM (суурь) — дараагийн үгийг таадаг
  2. Instruction-tuned LLM (сайжруулсан?) — заавар дагадаг
    - ихэвчлэн RLHF ашиглаж сургадаг.
2 types of LLM

LLM ашиглаад хүссэн үр дүндээ хүрэхгүй байх нь заавраа буруу эсвэл ойлгомжгүй өгснөөс болдог. Жишээ нь

  1. “Please write me something about Alan Turing” гэхийн оронд
  2. Нэмээд “focus on personal life”
  3. Дахиад нэмээд “in professional journalist tone”
  4. Бас “using these articles link#1 and link#2”

гэх юм бол илүү сайн үр дүнд хүрнэ.

Example prompt result (write about Alan Turing)

Хичээл — Guideline

2 үндсэн зарчим болон тэдгээртэй хамааралтай тактикуудтай танилцана. Эхнийх нь тодорхой, нарийвчилсан заавар өгөх.
— 1. Write clear and specific instructions

Тодорхой, оновчтой бөгөөд ИЛҮҮ нарийн байх тусам сайн үр дүнд хүрэх боломжтой.

Богинохон гэдэг нь ТОДОРХОЙ гэсэн үг биш. (clear ≠ short)

Заримдаа илүү дэлгэрэнгүй байх нь зааврыг тодорхой болгодог. Ингэхийн тулд шаардлагатай бол “тусгаарлагч” (delimiter) ашиглах,

Example code — Principle 1 & Tactic 1 (delimiter)

ямар хэлбэрээр хариу авахаа хэлэх (HTML, JSON…),

Example code — Principle 1 & Tactic 2 (structured output)

нөхцөл шалгах

Example code — Principle 1 & Tactic 3 (check condition)

болон жишээ үзүүлээд түүнтэй төстэй хариулт өг гэж болно

Example code — Principle 1 & Tactic 4 (few shot)

Дараагийнх нь AI-таа бодох хугацаа олгох.
— 2. Give the model time to think

Энэ зарчим нь AI худлаа хариулт шууд өгөхөөс сэргийлэх зориулалттай. Ингэхдээ эхлээд юу хийхийг нь ямар ямар үйлдэл хийхийг нь (steps) хэлж өгвөл алдаа гаргах магадлал багасна.

Example code — Principle 2 (incorrect)

Түүнээс гадна ямар нэг бодлого (math) бодуулах эсвэл хариу шалгах гэх мэт зааврыг ӨӨРӨӨ бодоорой гэж нэмж өгвөл худлаа бодолт хийхгүй.

Example code — Principle 2 (correct)

Эхний cell дээр ЗӨВ гэж хариу өгч байсан бол 2-дох дээр нь өөрөө бодолт хийгээд, шалгаад, Сурагчийн бодолтыг буруу гэдгийг нь хэлж өгч чадсан байна.

https://tenor.com/view/-gif-4572481

Хичээл — Iterative

Дараагийн хамгийн гол нэг зүйл нь бол ДАВТАЛТ. Эхлээд бичсэн заавраа (prompt) дахин2 сайжруулаад сүүлийн хувилбартаа хүрдэг. Нэг асуугаад л болчихно гэсэн үг биш.

Iterative prompt develpoment

Оновчтой бөгөөд нарийвчилсан заавар (prompt) өгөөд хариугаа авсны дараа хэрэгцээний дагаа шинэчлээд дахин асууна гэсэн үг.
- шаардлагатай бол ямар алхам (steps), өөрийн бодолт хийлгэнэ

# (1) Generate a marketing product description from a product fact sheet

# (2) Issue: The text is too long
# - Limit the number of words/sentences/characters

# (3) Issue: Text focuses on the wrong details
# - Ask it to focus on the aspects that are relevant to the intended audience

# (n) update as needed...

prompt = f"""
Your task is to help a marketing team create a description for a retail
website of a product based on a technical fact sheet.

(1) Write a product description based on the information provided in the
technical specifications delimited by triple backticks.

(2) Use at most 50 words.

(3) The description is intended for furniture retailers, so should be technical in
nature and focus on the materials the product is constructed from. At the end of
the description, include every 7-character Product ID in the technical specification.

Technical specifications: ```{fact_sheet_chair}```
"""
response = get_completion(prompt)
print(response)

(1), (2), (3) гэх мэтээр сайжруулсаар өөрийн хүссэн үр дүндээ хүрнэ.

Iterative prompt example

Хичээл — Summarizing

Их хэмжээний тексийг бүгдийг нь унших хэцүү байдаг. Үүнийг хөнгөвчлөхийн тулд summarize хийлгэж цагаа хэмнэх боломжтой.

prod_review = """
Got this panda plush toy for my daughter's birthday, who loves it and takes it everywhere. It's soft and \
super cute, and its face has a friendly look. It's a bit small for what I paid though. I think there \
might be other options that are bigger for the same price. It arrived a day earlier than expected, \
so I got to play with it myself before I gave it to her.
"""

prompt = f"""
Your task is to generate a short summary of a product review from an ecommerce site.

Summarize the review below, delimited by triple backticks, in at most 30 words.

Review: ```{prod_review}```
"""

response = get_completion(prompt)
print(response)
Summarize result example

Өгөгдсөн сэтгэгдлийг товчлоод дээрх өгүүлбэрийг гаргаж өгнө. Мөн товчлохдоо хэдэн үг, өгүүлбэр, тэмдэгт байхыг заах эсвэл юун дээр илүү төвлөрөхийг заах боломжтой.

  • Summarize with a word/sentence/character limit
  • Summarize with a focus on specific detail

Бас нэг зүйл нь их текстээс зөвхөн өөрт хэрэгтэй хэсгийг ШҮҮЖ авахын тулд “extract”-г ашиглах хэрэгтэй.

Example “extract”

Хичээл — Inferring

Текстээс эерэг/сөрөг гэсэн мэдрэмжийг ялгах боломжтой. Жишээ сэтгэгдэл дээр ашиглаад үзвэл…

Inferring result example

Жоохон лавшруулаад ямар сэтгэл хөдлөл байгааг асуувал

Inferring result (emotion) example

Манай Facebook, Ikon.mn дээрх comment-үүдийг ингээд л сайхан хяначхаж болох нь ээ?

Хичээл — Transforming

Өгөгдсөн текстийг өөрчлөх, хувиргах нь бас нэг гол хэрэглээ. Хамгийн энгийн нь ОРЧУУЛГА, үг үсгийн болон дүрмийн алдааг шалгах, бичгийн хэлбэрийг өөрчлөхөд ашиглаж болно.

Transforming result example (translation)

Шаардлагатай бол хэлийг нь өөрөө таниад орчуул гэж ч болно.

Transforming result example (detect language)

Бичсэн текстээ хэллэг, эсвэл бичгийн хэлбэрийг нь өөрчлүүлэхийн тулд “tone transformation” ашиглана.

Transforming result example (tone)

За тэгээд мэдээж proofread хийлгэх, үг үсгийн алдааг засуулах (correct), текстийн форматыг (JSON to HTML etc…) солих гэх мэт зүйлсийг хийх боломжтой.

Хичээл — Expanding

Өгөгдсөн текст дээр үндэслээд шинэ текст үүсгэхэд ашигладаг. Энгийн жишээ нь хэрэглэгчийн имэйл/feedback-т тохирсон хариу илгээх байж болно.

Expanding result example (customer reply email)

Шинээр текст үүсгэх үед анхаарах нэг зүйл нь “temperature”. Энгийнээр бол randomness-г нь тодорхойлж байгаа юм. AI model нь сурсан өгөгдлөөсөө хамаараад “дараагийн үг” ямар байхыг таадаг.

Temperature = randomness

Жишээ нь temperature=0 үед “my favorite food is …” гэж бичихэд дараачийн үг нь байнга “pizza” байна. Учир нь магадлал 53%. Хэрвээ temperature=0.3 эсвэл 0.7 болгож өөрчилбөл харин өөр хариулт авах магадлалтай…

Temperature > 0

Зөвхөн байгаа текст дээр гэлтгүй “цоо шинээр” текст үүсгэж ч болно. Гэхдээ иймэрхүү тохиолдолд заримдаа “таг худлаа” юм үүсгээд байдгийг мартаж болохгүй.

hallucination = create convincing language that is flat-out wrong, or does not exist in their training data

TL;DR

Өнөөдрийн нийтлэлээ эргээд харахад бид нар Base LLM биш Instruction-tuned LLM ашигладаг. Түүнийгээ сайн ашиглахын тулд асуултаа оновчтой тавих нь тун чухал аж.

Текстийг товчлох (summarize), шүүх (extract), таних (infer), дэлгэрүүлэх (expand), өөрчлөх (transform) гээд олон боломжууд бидэнд маш хялбараар хэрэглэхэд бэлэн болсон байна. #LongLiveTechnology

Ашиглахын тулд үндсэн “2 зарчим”-аа дагаад дахин2 асуугаад байж дээ.

  1. Write clear and specific instructions
  2. Give the model time to think
  3. Update and ask again (iterative)
https://giphy.com/explore/keep-on-tryinga

Чатбот-той хэсгийг нь тусдаа нийтлэлээр хуваалцья. Арай л урт болчихлоо 😁

--

--

Билигүн.Б (Програмч аав)
2B +1% better 2day

I am who I am... || өөрийнхөөрөө байхаас ичихгүй