Инженерный курс "Антропные подсказки" - Глава 9 Упражнение: программирование сложных подсказок

упражнение

В этом упражнении мы создадим новый набор правил дляПомощь в программировании и обучающие роботы, способные считывать код и вносить в него необходимые коррективыНапишите подсказки. Заполните все желтые поля ниже элементами подсказки, которые соответствуют описаниям и примерам, приведенным в предыдущем примере сложных подсказок. Когда вы заполните все желтые поля, вы увидите окончательный вариант подсказки, сшитый вместе в фиолетовом поле внизу.

Мы рекомендуем прокрутить страницу вниз, чтобы увидеть, какие ожидаемые входные данные необходимо учитывать (в том числе, что такое {{VARIABLE_WORD}}). Обязательно ссылайтесь на эту {{VARIABLE_WORD}} непосредственно в подсказке, чтобы можно было подставить фактическое содержимое переменной.

элемент кияописаниятипичный примерпримечание
1. форматирование "Пользователь:"Используйте "User:" в начале запроса CLAUDEMESSAGES().Пользователь.Это обязательно! В CLAUDEMESSAGES() добавьте новую строку в Клод Когда появится запрос, начните с этого.
2. контекст миссииРасскажите Клоду о роли, которую он должен играть, или о цели задачи, которую вы хотите, чтобы он выполнил.Вы - Codebot, помощник, который помогает выявлять проблемы в коде и предлагает улучшения.Лучше всего дать контекст задания в начале текста подсказки.
3. Тональный контекст (по желанию)Если это важно для взаимодействия, скажите Клоду, каким тоном он должен говорить.Выступайте в роли сократовского наставника, помогая пользователям учиться.В зависимости от требований миссии этот элемент может не потребоваться.
4. Подробное описание миссии и правилаРасшифруйте конкретные задания, которые вы хотите, чтобы Клод выполнял, и правила, которым он должен следовать, или дайте Клоду возможность "уйти"."Вы получите код, предоставленный пользователем. Пожалуйста, сделайте следующее:
1. Выявите все проблемы в коде. Каждая проблема должна быть помещена в отдельный <issues> Tagged in.
2. предложите пользователям написать исправленный код, чтобы решить проблему".
Неплохо бы показать это описание и правила другу, чтобы убедиться, что логика понятна и четко сформулирована.
5. ПримерыПриведите хотя бы один пример идеального ответа, который Клод мог бы имитировать, используя <example></example> Вокруг него расположены теги XML."Это пример:
<example>
<code>
def calculate_circle_area(radius).
возврат (3,14 * радиус) ** 2
</code>
<issues>
<issue> 3,14 возводится в квадрат, хотя на самом деле возводится в квадрат только радиус.<issue>
</issues>
<response> Это почти правильно, но есть проблема с порядком операций. Вы можете выписать формулу окружности, а затем внимательно посмотреть на скобки в коде.<response>
</example>
Примеры - самый эффективный инструмент для того, чтобы заставить Клода работать в соответствии с ожидаемым поведением. Содержат общие крайние случаи. Больше примеров = более надежный ответ, но добавляется задержка и токены. Здесь приведен только один пример, чтобы сохранить простоту.
6. обработка входных данныхпользоваться {{CODE}} укажите код, который вы хотите, чтобы Claude обработал, не забыв окружить его XML-тегами."Вот код, который вы будете анализировать:
<code>
{{CODE}}
</code>
Этот элемент может меняться в зависимости от требований задачи. Если входные данные длинные, лучше всего поместить их перед инструкцией.
7. Непосредственное описание миссии или запрос"Напомните" Клоду или прямо скажите Клоду, что ему нужно сделать, чтобы выполнить предложенное задание.Определите актуальные вопросы и составьте ответ в стиле сократовского наставника. Не давайте пользователю слишком много помощи! Вместо этого дайте им несколько советов и позвольте найти правильное решение самостоятельно.Лучше всего поместить этот раздел в конце длинной подсказки. Обычно лучше всего размещать запрос пользователя в нижней части подсказки.
8. Этапы предварительной рефлексии (по желанию)При выполнении многоэтапных заданий стоит посоветовать Клоду подумать, прежде чем дать ответ.Не все подсказки требуют этого шага. Это повышает интеллектуальность ответа, но также увеличивает время ответа.
9. Форматирование выходных данных (опционально)Если вы хотите, чтобы Claude возвращал результаты в определенном формате, укажите ему, что это за формат.Поместите каждый вопрос в <issue> и поместите окончательный ответ в тег <response> Tagged in.Этот элемент может меняться в зависимости от требований задачи.
10. Предварительно заполненный ответ Клода (если требуется)Предоставьте место для предварительного заполнения ответа Клода, чтобы помочь ему сориентироваться в поведении или реакции.Если вы хотите предварительно заполнить ответ Клода, вы должны включить "Assistant:", и это должна быть новая строка, иначе она будет рассматриваться как часть "User:" (мы позаботимся об этом автоматически). Если предварительное заполнение не требуется, можно опустить "Assistant:".

Теперь давайте соединим все вместе, сделаем замены и посмотрим, как это выглядит на самом деле!

Совет: Если вы хотите видеть полный текст подсказки, вы можете установить параметр порнография Скопируйте и вставьте в текстовый редактор замененное окно с репликами.

Шаблон подсказки (нарезанный сверху)

User: 你是 Codebot,一个帮助发现代码问题并建议可能改进方案的 AI 助手。

扮演一个苏格拉底式的导师,帮助用户学习。

你将收到用户的一些代码。请执行以下操作:
1. 识别代码中的任何问题。将每个问题放在单独的 <issues> 标签内。
2. 邀请用户编写修订版本的代码以解决问题。

以下是一个示例:

<example>  
<code>  
def calculate_circle_area(radius):  
return (3.14 * radius) ** 2  
</code>  
<issues>  
<issue>  
3.14 被平方了,实际上应该只对 radius 进行平方。  
</issue>  
<response>  
这已经接近正确了,但在运算顺序上有一个问题。可能有帮助的是,先写出圆的公式,然后仔细查看代码中的括号。  
</response>  
</example>  

以下是你要分析的代码:

<code>  
{{CODE}}  
</code>

找出相关问题,并编写苏格拉底式导师风格的回复。不要给用户太多帮助!而是提供指导,以便他们自己找到正确的解决方案。

将每个问题放在 <issue> 标签内,并将最终回复放在 <response> 标签内。

вариант

Вход {{CODE}}

# 打印乘法逆元素的函数  
def print_multiplicative_inverses(x, n):  
for i in range(n):  
print(x / i)

Советы по сращиванию и замене

User: 你是 Codebot,一位帮助用户发现代码问题并建议可能改进的有用 AI 助手。

扮演一位帮助用户学习的苏格拉底式导师。

你将获得用户提供的一些代码。请执行以下操作:
1. 识别代码中的任何问题。将每个问题放在单独的 <issues> 标签中。
2. 邀请用户编写修订后的代码来修复问题。

以下是一个示例:

<example>
<code>
def calculate_circle_area(radius):
return (3.14 * radius) ** 2
</code>
<issues>
<issue>
3.14 被平方了,实际上应该只有 radius 被平方。
</issue>
<response>
这几乎是对的,但有一个与运算顺序相关的问题。可能有助于写出圆的公式,然后仔细查看代码中的括号。
</response>
</example>

以下是你要分析的代码:

<code>
# 打印乘法逆的函数
def print_multiplicative_inverses(x, n):
for i in range(n):
print(x / i)
</code>

找到相关问题,并以苏格拉底式导师风格写出回应。不要给用户太多帮助!相反,只给他们指导,让他们自己找到正确的解决方案。

将每个问题放在 <issue> 标签中,并将你的最终回应放在 <response> 标签中。

Ответ от Клода

这是我对代码的分析:  
  
<issues>  
<issue>  
函数 `print_multiplicative_inverses` 实际上并没有计算 `x` 相对于 `i` 的乘法逆元。相反,它只是输出了 `x / i` 的结果,而这并不是乘法逆元。  
</issue>  
<issue>  
该函数没有检查 `i` 是否是 `x` 的因子,这是乘法逆元存在的必要条件。如果 `i` 不是 `x` 的因子,那么乘法逆元是不存在的。  
</issue>  
</issues>  
  
<response>  
看起来你正在尝试打印 `x` 相对于从 0 到 `n-1` 的数的乘法逆元。然而,当前的实现并没有完全实现这一点。你能想到如何修改代码,以正确地计算并输出乘法逆元吗?你可能需要考虑乘法逆元的数学定义,以及它与 `x` 的因子之间的关系。  
</response>
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...