2.1 📝 Введение в Prompt Engineering

Поясняем за промпты 🩻

 

В этом уроке разберемся с основным шагом взаимодействия с генеративными моделями - написанием промпта.

Грамотно составленный промпт поможет превратить генеративную модель из забавной игрушки в рабочий инструмент, способный приносить пользу, экономить время и даже генерировать профит. Далее, продвигаясь в изучении более сложных сценариев и инструментов взаимодействия с LLM, вы убедитесь, что под капотом любого навороченного инструмента лежит специально спроектированный промпт. Поэтому стоит сосредоточенно пройти этот модуль, чтобы заложить фундамент для понимания дальнейшего материала.

 

Ноутбук урока (Colab - то же самое что ноутбук урок, но в Colabe)

локальный файл (локальный файл)

Colab для решения задачи из стэпа 8 (локальный файл)


Пожелания по colab тетрадке: вынести определение используемой модели (openai или апи курса) в самый верх и в остальных ячейках через проверку флага использовать нужную модель. Я пользуюсь api openai и мне пришлось из всех ячеек удалять course_key

@Игорь_Суслов, про какой колаб речь? Для решения задач?

@Иван_Александров, нет, про ноутбук урока https://colab.research.google.com/github/a-milenkin/LLM_practical_course/blob/main/notebooks/M2.1_Prompt_Engineering_intro.ipynb - т.е. примеры из него нельзя потыкать с ключом openai без доп приседаний

@Игорь_Суслов, да, неудобно. Посмотрим, как можно поправить.

Во втором примере про контексты
prompt = """
Ответь на вопрос.
Если на вопрос нельзя ответить, ответь 'Я не знаю'.
Question: Дай мне 2 примера как использовать GPT-3 на Python
Answer: """

llm = ChatOpenAI(temperature=0.0, course_api_key=course_api_key)
print(llm.invoke(prompt).content)

ответ вполне вменяемый и отличается от примера в лучшую стороную.

Введите API ключ
1. Использование GPT-3 для генерации текста на Python:
```python
import openai

openai.api_key = 'YOUR_API_KEY'

response = openai.Completion.create(
  engine="text-davinci-003",
  prompt="Once upon a time",
  max_tokens=100
)

print(response.choices[0].text)
```

2. Использование GPT-3 для задачи вопрос-ответ на Python:
```python
import openai

openai.api_key = 'YOUR_API_KEY'

response = openai.Completion.create(
  engine="text-davinci-003",
  prompt="Q: What is the capital of France?\nA:",
  max_tokens=100
)

print(response.choices[0].text)
```

В чем причина?

@Василий_Фадеев,  генерация скорее всего будет постоянно разная, плюс возможно модель уже поумнела.

Какая команда в in должна быть (указанная в блокноте команда выдаёт ошибку):

len(tokenizer.encode(llm.invoke(prompt).content))

или

len(tokenizer.encode(llm.predict(prompt)))?

 

и чем эти команды различаются?

@Дмитрий_Андронов, должна быть invoke. Predict использовалась в старой версии библиотеки langchain.

В рамках блока M2.1 модель должна была выдать "я не знаю" как у вас написано, но она выдала верный ответ.Стоит ли скорректировать курс? Это модель обучилась выдавать правильный ответ или что?

 

@Камила_Камалетдинова, где-то уже про это спрашивали. Видимо, модель стала поумнее с тех пор. Либо надо ещё инструкций в промпт добавить.

Приветствую. А что если модель не понимает инструкции в ячейке ниже, где была задача ответить на вопрос, опираясь на контекст ниже. Вместо этого модель выдает 'На онлайн платформах, специализирующихся на образовании, таких как Coursera, Udemy, Skillshare, LinkedIn Learning и др.', хотя мы этого в контексте не задавали?

@ANDREY_Chernov, может поумнела) Можно добавить инструкцию, чтобы отвечала не знаю, если нет в контексте.

Подскажите пожалуйста, как было получено 504 в 440 + 504 ~ 1000 

Если max_tokens=512, то 504 это усреднённое прогона по нескольким запросам?

@Grigorii_Tarasov, если вы про этот момент, то я думаю, что 504 было взято просто как пример, получившийся при запуске 18 ячейки, а потом, возможно, эту ячейку перезапустили с другим значением max_tokens и забыли поменять, поэтому получилось число, которое больше чем 512.