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>