Инженерный курс "Антропные подсказки" - Глава 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>
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...