Глава 2. Говорим ясно и по делу

Урок 3 из 13 курса «Промпт-инженерия: интерактивный курс»: официальный курс Anthropic Academy (Антропик) на русском языке. Этот урок бесплатный.

Глава 2: Четкость и Прямота

Глава 2: Четкость и Прямота

Настройка

Запустите следующую ячейку настройки, чтобы загрузить ваш ключ API и установить вспомогательную функцию get_completion.


Урок

Claude лучше всего реагирует на четкие и прямые инструкции.

Думайте о Claude как о любом другом человеке, который только что устроился на работу. Claude не имеет контекста относительно того, что делать, кроме того, что вы ему буквально говорите. Как и при первом инструктаже человека по выполнению задачи, чем подробнее вы объясните Claude, что именно вы хотите, тем лучше и точнее будет его ответ."

Если сомневаетесь, следуйте Золотому Правилу Четких Запросов: - Покажите свой prompt коллеге или другу и попросите их самих следовать инструкциям, чтобы увидеть, смогут ли они получить желаемый результат. Если они запутаются, Claude запутается.

Примеры

Давайте рассмотрим такую задачу, как написание стихов. (Игнорируйте любые несоответствия слогов — LLM пока не очень хорошо считают слоги.)

# Запрос
PROMPT = "Write a haiku about robots."

# Вывод ответа Claude
print(get_completion(PROMPT))

Это хайку достаточно хорошее, но пользователи могут захотеть, чтобы Claude переходил непосредственно к стихотворению без преамбулы «Вот хайку».

Как этого добиться? Мы просто просим об этом!

# Запрос
PROMPT = "Write a haiku about robots. Skip the preamble; go straight into the poem."

# Вывод ответа Claude
print(get_completion(PROMPT))

Вот еще один пример. Давайте спросим Claude, кто лучший баскетболист всех времен. Ниже вы можете увидеть, что хотя Claude перечисляет несколько имен, он не дает однозначного ответа «лучший».

# Запрос
PROMPT = "Who is the best basketball player of all time?"

# Вывод ответа Claude
print(get_completion(PROMPT))

Можем ли мы заставить Claude принять решение и выбрать лучшего игрока? Да! Просто спросите!

# Запрос
PROMPT = "Who is the best basketball player of all time? Yes, there are differing opinions, but if you absolutely had to pick one player, who would it be?"

# Вывод ответа Claude
print(get_completion(PROMPT))

Если вы хотите поэкспериментировать с примерами запросов из этого урока, не меняя ничего выше, прокрутите до конца блокнота урока, чтобы посетить Игровую площадку для примеров.


Упражнения

Упражнение 2.1 - Испанский

Измените SYSTEM_PROMPT, чтобы Claude выдавал свой ответ на испанском языке.

# Системный prompt - это единственное поле, которое вы должны изменить
SYSTEM_PROMPT = "[Replace this text]"

# Запрос
PROMPT = "Hello Claude, how are you?"

# Получение ответа Claude
response = get_completion(PROMPT, SYSTEM_PROMPT)

# Функция для оценки правильности выполнения упражнения
def grade_exercise(text):
    return "hola" in text.lower()

# Вывод ответа Claude и соответствующей оценки
print(response)
print("\n--------------------------- GRADING ---------------------------")
print("This exercise has been correctly solved:", grade_exercise(response))

❓ Если хотите получить подсказку, запустите ячейку ниже!

from hints import exercise_2_1_hint; print(exercise_2_1_hint)

Упражнение 2.2 - Только один игрок

Измените PROMPT так, чтобы Claude вообще не уклонялся от ответа и отвечал ТОЛЬКО именем одного конкретного игрока, без каких-либо других слов или знаков препинания.

# Запрос - это единственное поле, которое вы должны изменить
PROMPT = "[Replace this text]"

# Получение ответа Claude
response = get_completion(PROMPT)

# Функция для оценки правильности выполнения упражнения
def grade_exercise(text):
    return text == "Michael Jordan"

# Вывод ответа Claude и соответствующей оценки
print(response)
print("\n--------------------------- GRADING ---------------------------")
print("This exercise has been correctly solved:", grade_exercise(response))

❓ Если хотите получить подсказку, запустите ячейку ниже!

from hints import exercise_2_2_hint; print(exercise_2_2_hint)

Упражнение 2.3 - Напишите рассказ

Измените PROMPT так, чтобы Claude ответил как можно более длинным ответом. Если ваш ответ превышает 800 слов, ответ Claude будет оценен как правильный.

# Запрос - это единственное поле, которое вы должны изменить
PROMPT = "[Replace this text]"

# Получение ответа Claude
response = get_completion(PROMPT)

# Функция для оценки правильности выполнения упражнения
def grade_exercise(text):
    trimmed = text.strip()
    words = len(trimmed.split())
    return words >= 800

# Вывод ответа Claude и соответствующей оценки
print(response)
print("\n--------------------------- GRADING ---------------------------")
print("This exercise has been correctly solved:", grade_exercise(response))

❓ Если хотите получить подсказку, запустите ячейку ниже!

from hints import exercise_2_3_hint; print(exercise_2_3_hint)

Поздравляем!

Если вы решили все упражнения до этого момента, вы готовы перейти к следующей главе. Успешных запросов!


Игровая площадка для примеров

Это область, где вы можете свободно экспериментировать с примерами запросов, показанными в этом уроке, и настраивать запросы, чтобы увидеть, как это может повлиять на ответы Claude.

# Запрос
PROMPT = "Write a haiku about robots."

# Вывод ответа Claude
print(get_completion(PROMPT))
# Запрос
PROMPT = "Write a haiku about robots. Skip the preamble; go straight into the poem."

# Вывод ответа Claude
print(get_completion(PROMPT))
# Запрос
PROMPT = "Who is the best basketball player of all time?"

# Вывод ответа Claude
print(get_completion(PROMPT))
# Запрос
PROMPT = "Who is the best basketball player of all time? Yes, there are differing opinions, but if you absolutely had to pick one player, who would it be?"

# Вывод ответа Claude
print(get_completion(PROMPT))

Полезные гиды