随着 Shire 的持续迭代,我们有了一些新的体会和感触,即 Prompt 不仅仅是一段提示词,而是可以直接执行的代码。而当是可执行的代码时,就是可执行、 可共享的智能体。因此,我们创建了 Shire Run,一个轻量级的共享平台,以支持用户共享、下载、执行智能体。Shire Run 是 Shire 智能体共享平台, 你可以在上面下载、分享和共享编程智能体(当然,现在只是一个原型),详细见:https://shire.run/
在过去的一年多时间里,Prompt 不仅存在代码库中,还涌现越来越多的 Prompt 即代码实践。如下是我们可以看到的行业最佳实践:
当然了,对于 AI 平台来说,可能还会存在 prompt 的协作等等实践。举一个简单的例子,我们计划使用 prompt 来生成补全代码,那么 prompt 可能是这样的:
补全代码。
- 相关上下文:${selection.ast}
- 光标前代码:${selection.before}
- 光标后代码:${selection.after}
代码中包含了一系列的变量,以将 prompt 与代码解耦出来。而这个简单的 prompt 在实际使用时,还需要针对模型进行调整、对结果进行后处理等等。当我们的 AI 应用变得越来越复杂时,我们需要更好地管理我们的 Prompt。
随着 AI 应用工程化的深入,越来越多的 prompt 在直接在应用中直接执行。即由 prompt 生成平台所需要的数据、语言、代码等,再基于这些数据动态创建 对应的应用程序,诸如于低代码平台、AI IDE 等等。与此同时,工程化 + 智能体也让应用变得越来越智能:
因此,在我看来:
Prompt 即程序是将 Prompt 视作一段可以像代码一样运行的程序。它不仅仅是简单的提示词,而是通过模板化、模块化等方式进行设计和管理, 能够生成动态的功能和操作。就像软件开发中的代码一样,Prompt 也可以进行版本控制、单元测试、集成测试等,从而确保它在不同环境中的稳定性和可维护性。
而事实上,它们可以抽象为一个模式:DSL(领域特定语言) + Runtime(运行环境)。对于现在的 LLM 能力而言,直接生成复杂的程序是不靠谱的,如果想 驾驭这种复杂度,我们需要在 DSL 做更多的抽象与繁琐设计,诸如于:
那么,剩下的就是 Runtime 的设计。在 AI IDE 场景下,Runtime 是 IDE,在手机 APP 场景下,Runtime 是 APP,诸如此类。也因此,我们还需要在
Runtime 中提供这种基础能力,以支持这种 DSL 的执行,比如 AutoDev 直接提供 /refactor
的指令,以支持代码重构。
我们创建 Shire 语言的动机是:让开发人员可以完全定制自己的 AI Copilot。即通过编程语言的方式,来定义与 IDE 的交互,以及 AI 模型的交互。而当你 的 Prompt 可以直接执行时,就会带来更多的可能性,诸如于自动编码、针对特定领域的自动化代码生成、自定义的语义化搜索等等。
而与此同时,每个 Shire 代码都是 Shire 平台上的可执行程序。即你可以基于 Shire 的平台能力直接执行 Shire 程序,而 Shire 代码本身是一种带上下文的 Prompt 变体。
基于上述的理念,我们开始构建 Shire.run,一个带概念性的智能体共享平台。在 Shire Run 上,你可以:
考虑到 Shire 语言并不是很流程,所以我们暂时只做成了一个静态网站,以支持用户上传、下载、分享智能体。但是,我们相信随着 Shire 语言的发展, Shire Run 会变得越来越强大。
Shire 的当前版本是基于 IDE 所构建的,但是我们相信未来当你不再需要编译、构建时,你就不需要一个强大的本地 IDE。只需要一个轻量级的编辑器, 就可以完成你的工作。
因此,我们计划未来在 Shire Run 上提供在线执行智能体的能力,以支持用户在线执行智能体。一切只等待有缘人的加入:https://github.com/shire-lang/shire-compiler 。
总的来说,Shire Run 的创建是为了探索 Prompt 的无限可能性,突破传统的提示词范畴,将其视为可执行、可共享的智能体代码。这一理念让我们看到了 Prompt 在工程化和智能化方向上的广阔前景,也赋予了开发者更大的自由度去定制和创造。
未来,随着在线执行能力的引入,我们期待 Shire Run 成为推动 AI 开发与协作的重要工具。
围观我的Github Idea墙, 也许,你会遇到心仪的项目