Aprendizagem pessoal com IA
e orientação prática
豆包Marscode1

Anthropic Hints Engineering Course - Capítulo 9 Exercício: Programação de dicas complexas

exercício

Neste exercício, vamos criar um novo conjunto de regras para umAssistência à programação e robôs de ensino capazes de ler códigos e fornecer correções orientadas quando necessárioEscreva os prompts. Preencha cada uma das caixas amarelas abaixo com elementos de prompt que correspondam às descrições e aos exemplos do exemplo anterior de Prompts complexos. Quando tiver preenchido todas as caixas amarelas, você verá o prompt final costurado na caixa roxa na parte inferior.

Recomendamos que você role a página até o final para ver quais entradas esperadas devem ser consideradas (inclusive o que é {{VARIABLE_WORD}}). Não se esqueça de fazer referência a essa {{VARIABLE_WORD}} diretamente no prompt para que o conteúdo real da variável possa ser substituído.


elemento de sinalização descrições exemplo típico nota
1. formatação "Usuário:". Use "User:" no início do prompt CLAUDEMESSAGES(). Usuário. Isso é obrigatório! Em CLAUDEMESSAGES(), adicione uma nova linha à seção Claude Quando solicitado, você deve começar com isso.
2. contexto da missão Diga ao Claude a função que ele deve desempenhar ou o objetivo da tarefa que você deseja que ele realize. Você é o Codebot, um assistente que ajuda a identificar problemas de código e sugere melhorias. É melhor fornecer o contexto da tarefa no início do corpo do prompt.
3. contexto tonal (opcional) Se isso for importante para a interação, diga ao Claude o tom que ele deve usar. Atuar como um tutor socrático para ajudar os usuários a aprender. Dependendo dos requisitos da missão, esse elemento pode não ser necessário.
4. descrição detalhada da missão e regras Expanda as tarefas específicas que você deseja que Claude execute e as regras que ele deve seguir, e também dê a Claude a opção de "desistir". "Você receberá um código fornecido pelo usuário. Faça o seguinte:
1. identifique quaisquer problemas no código. Cada problema deve ser colocado em uma seção separada. <issues> Tagged in.
2. convide os usuários a escrever um código revisado para resolver o problema".
É uma boa ideia mostrar essa descrição e as regras a um amigo para garantir que a lógica esteja clara e bem definida.
5. exemplos Forneça pelo menos um exemplo de uma resposta ideal para o Claude emular usando o <example></example> As tags XML o cercam. "Este é um exemplo:
<example>
<code>
def calculate_circle_area(radius).
Retorno (3,14 * raio) ** 2
</code>
<issues>
<issue> 3,14 é elevado ao quadrado, quando, na verdade, apenas o raio deveria ser elevado ao quadrado.<issue>
</issues>
<response> Isso está quase correto, mas há um problema com a ordem das operações. Você pode escrever a fórmula do círculo e, em seguida, observar atentamente os colchetes no código.<response>
</example>
Os exemplos são a ferramenta mais eficaz para fazer com que o Claude trabalhe com o comportamento esperado. Contém casos extremos comuns. Mais exemplos = resposta mais confiável, mas adiciona latência e tokens. Apenas um exemplo é dado aqui para manter as coisas simples.
6. processamento de dados de entrada fazer uso de {{CODE}} indica o código que você deseja que o Claude processe, lembre-se de cercá-lo com tags XML. "Aqui está o código que você analisará:
<code>
{{CODE}}
</code>
Esse elemento pode variar de acordo com os requisitos da tarefa. Quando os dados de entrada são longos, é melhor colocá-los antes da instrução.
7. descrição ou solicitação imediata da missão "Lembre" o Claude ou diga explicitamente ao Claude o que ele precisa fazer para concluir a tarefa solicitada. Identifique questões relevantes e escreva uma resposta no estilo do tutor socrático. Não dê muita ajuda ao usuário! Em vez disso, dê a ele alguma orientação e deixe-o encontrar a solução certa por conta própria. Colocar essa seção no final de um prompt mais longo funciona melhor. Geralmente, é melhor colocar a consulta do usuário na parte inferior do prompt.
8. etapas de pré-reflexão (opcional) Para tarefas de várias etapas, é uma boa ideia dizer ao Claude para pensar passo a passo antes de dar uma resposta. Nem todos os prompts exigem essa etapa. Ela melhora a inteligência da resposta, mas também aumenta o tempo de resposta.
9. formatação de saída (opcional) Se você quiser que o Claude retorne os resultados em um formato específico, informe explicitamente qual é esse formato. Coloque cada pergunta no campo <issue> e coloque a resposta final na tag <response> Tagged in. Esse elemento pode variar de acordo com os requisitos da tarefa.
10. resposta pré-preenchida do Claude (se necessário) Forneça um espaço para preencher previamente a resposta do Claude para ajudar a orientar seu comportamento ou resposta. Se quiser preencher previamente a resposta do Claude, você deve incluir "Assistant:" e deve ser uma nova linha, caso contrário, será tratada como parte de "User:" (cuidaremos dessa etapa para você automaticamente). Se não for necessário preencher previamente, você pode omitir "Assistant:".

Agora vamos juntar tudo, fazer as substituições e ver como fica!

Dica: Se quiser ver a dica completa, você pode definir a opção pornográfico Copie e cole a cue box substituída em um editor de texto.

Modelo de prompt (emendado do anterior)

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> 标签内。

variante

Entrada {{CODE}}

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

Dicas de emendas e substituições

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> 标签中。

Resposta de Claude

这是我对代码的分析:  

<issues>  
<issue>  
函数 `print_multiplicative_inverses` 实际上并没有计算 `x` 相对于 `i` 的乘法逆元。相反,它只是输出了 `x / i` 的结果,而这并不是乘法逆元。  
</issue>  
<issue>  
该函数没有检查 `i` 是否是 `x` 的因子,这是乘法逆元存在的必要条件。如果 `i` 不是 `x` 的因子,那么乘法逆元是不存在的。  
</issue>  
</issues>  

<response>  
看起来你正在尝试打印 `x` 相对于从 0 到 `n-1` 的数的乘法逆元。然而,当前的实现并没有完全实现这一点。你能想到如何修改代码,以正确地计算并输出乘法逆元吗?你可能需要考虑乘法逆元的数学定义,以及它与 `x` 的因子之间的关系。  
</response>
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Anthropic Hints Engineering Course - Capítulo 9 Exercício: Programação de dicas complexas
pt_BRPortuguês do Brasil