> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 提示工程

> 在 Devin Desktop 中编写有效提示以获取高质量代码的最佳实践，包括明确目标、上下文和约束。

如果你正在阅读这篇内容，你可能已经对 LLM 的一些用例和局限性有所了解。你提供给模型的提示和上下文越充分，得到的结果通常也会越好。

Devin Desktop 也是如此。想要充分发挥这个工具的作用，并获得尽可能高质量的代码来加快你的工作流程，就需要掌握一些编写更有效提示的最佳实践。

<Tip>对于更复杂的任务，如果你可能需要通过 [@-Mention](/zh/desktop/chat/overview#mentions) 引用特定代码块，请使用 [Chat](/zh/desktop/chat/overview) 而不是 [Command](/zh/desktop/command/plugins-overview)。 </Tip>

<div id="components-of-a-high-quality-prompt">
  ## 高质量提示的构成要素
</div>

* ***明确的目标或预期结果***
  * 你希望模型产出什么？
  * 你是希望模型给出一个套餐？编写新代码？还是进行重构？
* ***完成任务所需的全部相关上下文***
  * 你是否正确使用了 @-Mentions，以确保已包含合适的上下文？
  * 是否存在某些客户特有的上下文，Devin Desktop 可能无法理解？
* ***必要的约束条件***
  * 是否有必须使用的特定框架、库或语言？
  * 是否有空间或时间复杂度方面的约束？
  * 是否有需要考虑的安全问题？

<div id="examples">
  ## 示例
</div>

***示例 #1：***

* **不佳**：为 Order Book 对象的所有测试场景编写单元测试。

* **良好**：使用 `@class:unit-testing-module` 为 `@func:src-order-book-add` 编写单元测试，验证价格高于或低于止损线时抛出的异常

***示例 #2***：

* **不佳**：重构 rawDataTransform。

* **良好**：重构 `@func:rawDataTransform`，把 while 循环改写为 for 循环，并使其输出与 `@func:otherDataTransformer` 保持相同的数据结构

***示例 #3***：

* **不佳**：为 Contact Form 创建一个新的 Button。

* **良好**：为 `@class:ContactForm` 创建一个新的 Button 组件，并遵循 `@repo:frontend-components` 中规定显示“Continue”的样式指南
