系统架构设计:探索复杂性的概念—prompt

admin 2023-10-16 806 10/16

你有没有想过,当你在的时候 Intellij IDEA 输入段代码时,GitHub 你是如何回到相关结果的?事实上,这背后的秘密围绕着它 Prompt 建造的架构设计。

系统架构设计:探索复杂性的概念—prompt

Prompt 用于引导输入的文本段落或短语 AI 执行特定任务或输出特定类型的生成模型不同的 Prompt 它会导致不同的搜索结果,因为它们会影响模型对信息的处理通过巧妙地构建Prompt,模型可以在广泛的任务中执行特定的操作,从而提高搜索效率和用户满意度。

Prompt 设计不仅有影响 AIGC 模型的行为和输出也会影响软件架构的设计和优化所以,Prompt 和软件架构有什么关系?为什么? Prompt 对软件架构如此重要?在这篇文章中,我们将讨论这种关系,并基于我们为一些优秀的人工智能生成代码(AIGC)相关应用的研究,以及一些内部研究 AIGC 这些应用程序的观察是基于 LLM 构建和设计软件架构的优先理念。

这些应用包括:GitHub Copilot:一个基于 OpenAI Codex/Codex 2 可以根据用户提供的注释或代码片段生成完整的代码的模型代码生成器JetBrains AI Assistant:围绕开发人员的日常活动构建伴随性 AI 辅助的 IDE 插件。

Bloop:根据用户提供的自然语言描述或问题,生成相应的答案或代码我认为背后的原因只是围绕着它 LLM 只有优先考虑架构,才能对应这种复杂性PS:本文讨论的背景很复杂 AIGC 例如,应用程序 Copliot 型、Agent 类型应用,普通 AIGC 没有这种复杂性。

AIGC 优先应用的架构特征(初步)基于我们之前的文章《上下文工程:基于 Github Copilot 介绍了实时能力分析与思考 Copilot 光标位置(行内、块间、块外)生成三种不同类型的代码,如何结合用户行为和当前代码的上下文。

其基本特征是围绕用户的潜在意图设计相应的生成内容并结合当前的代码文件调整生成的内容,以满足相应语言的基本语法而 Bloop 它围绕着检索增强的生成(RAG)推断用户的潜在意图,如查询扩展,以更好地匹配潜在代码。

通过输出更多的上下文交互过程,用户可以调整他们的问题并获得更准确的答案再结合 JetBrains AI Assistant 我们简单地将复杂的语言上下文模块化架构 AIGC 该应用程序总结了三个核心特征(该版本将在未来继续优化):

为了构建清晰的指令,感知用户的意图: 这一特征包括捕获和分析用户的操作,以充分理解用户的目标和偏好应用程序需要能够识别用户的需求,并提供相应的内容生成方案,从而建立明确的指令这可以包括收集和解释用户输入、行为分析和使用历史数据来更好地了解用户需求。

通过这一特征,AIGC 应用程序能更好地满足用户的期望为了让用户输出更多的上下文,围绕用户意图进行交互设计: 该功能旨在创建友好灵活的用户界面,鼓励用户提供更多上下文信息用户通常通过输入和修改内容生成的参数和条件来表达自己的需求。

此外,AIGC 应用程序还可以隐藏用户的上下文信息,例如 v0.dev、智能数据和流式交互这些信息可以包括用户的操作历史、语言信息、位置信息等,以提供更个性化和智能的内容生成服务,从而增强用户体验基于数据的反馈改进和模型优化: 通过不断收集和分析用户对生成内容的反馈,如评分、评论、共享等,实现内容生成模型和算法的不断调整和优化。

使用这些反馈数据,AIGC 应用程序可以提高生成内容的质量和多样性,保证用户满意度的不断提高而且对这些应用程序来说,并不需要复杂的应用程序 prompt 技巧技巧性,复杂性 Prompt 面对工程化是灾难性的。

复杂 AIGC 应用的基本 Prompt 策略对于复杂 AIGC 就应用而言,难点在于 Prompt 策略,即如何构建自动上下文收集?一般来说,应考虑其设计过程:鲁棒性:Prompt 设计应能处理各种输入,并在不同的任务和领域表现良好。

它们不仅适用于特定的任务,而且应该是通用的评价和反馈循环:Prompt 设计的成功通常需要不断的迭代和反馈开发人员可能需要时间来调整Prompt来提高模型的性能,这也可能会影响软件架构鲁棒性也意味着复杂性 Prompt 它将成为一场灾难,因为作为一个生成模型,它不能考虑你的每一个 MUST/HAVE TO/必须,以及你给他的,你不应该 xxx。

太长的 prompt,不仅显得 LLM 很愚蠢,间接让你觉得很愚蠢你应该将长 prompt 分为多个 stage(人及 GPT 阅读长篇文本后,会忽略这个要求),即应该先拆解复杂的问题 —— 参考领域驱动设计的方法。

在 AIGC 我们可以把它放在工具里 Prompt 分为多种类型,强指令型和强结果型Prompt 策略 1:精确的上下文指令和精确的指令在非聊天场景中,如编写文档、编写报告等,工具中的指令往往非常简单: Writedocumentation,而为了让 LLM 为了产生更准确的结果,我们还需要补充更多的上下文,如:。

Writedocumentation forgiven method,它结合了不同语言的语法形式(类声明、方法声明等)然后,还需要考虑不同的文档工具,比如 write PHPDoc而使用 Python 当语言需要使用时,也需要使用 “”作为文档的起始标志。

为了编写更标准化的文档,还需要结合 use@告诉paramtag示例 LLM 应该写什么样的文档?然后,问题来了,让我们 AIGC 构建这一上下文,我们需要:获取与语言相关的信息,如版本信息等配置或获取语言的文档工具。

获取待写文档的代码信息如果是方法,需要提醒 method has return type 基本规范根据不同的语言配置进行例如 Python 到底是用 Tab 还是用空格指令本身很简单,但要建立准确的上下文,就要回到工程问题上来。

Prompt 策略 2:围绕结果设计互动,获取用户的上下文其它非编码场景 RAG 在场景下,我们通常围绕着:感知-分析-执行 分析用户的意图,然后根据用户的意图生成更多的上下文先看数据问答的例子:意图:xx (子公司)去年的收入?。

观察...思考:请选择查询的数据子项?操作:选择 xx 领域….最终输出:图表(柱状图等)这里有一个问题用户最终想要的是图表还是文本信息?我们想帮助用户做出这个决定吗?如果我们想做出这个决定,我们需要根据用户以前的历史经验吗?。

因此,在此场景中,在进入解决方案之前,我们一直在澄清用户的问题围绕 Prompt 战略架构设计示例现在,回到架构设计,让我们来看看相应的例子语言插件架构我们正在理解 JetBrains 的 AI 在工具的架构设计中,参考(复制)类似的设计。

在 JetBrains 的 IDE 不同的语言后缀会调用不同的语言 IDE 插件功能实现相应的重构等因此,在设计相应的功能时,将不同的语言划分为不同的模块,以实现其动态加载例如,为了生成测试代码的准确性,我们需要获取测试代码、测试框架和其他信息,因此我们需要语言、技术栈、相关和其他上下文。

因此,如果我们仔细拆卸它,我们需要围绕插件架构构建它 IDE 插件,即在 Core 模块里定义 Prompt 在不同的语言模块中,与我们的抽象接口实现相应的上下文获取方法如果我们只是一个简单的聊天功能,我们不需要如此复杂的架构,但生成内容的准确性会降低。

发散-收敛上下文而在诸如于 Bloop 这一类以 RAG(检索增强生成) 在主要的应用设计中,更重要的是如何从不同的渠道丰富用户的上下文,主要是如何匹配最相似的答案发散它的使用方法有很多种,比如分析用户的意图,让它能够检索内容 —— 代码检索、文档检索、网络检索等。

收敛结合发散的结果,处理检索到的内容,然后总结最终的过程呈现和内容而且这部分内容本身就是作为策略的一部分存在的,它可以作为基础设施的一部分,比如 LLM SDK,或者代码服务其它场景在其他场景中,比如 Code Review,我们将在提交信息中结合 story id、最后总结了三个部分:代码变更和业务信息。

类似于语义代码搜索的场景,但与普通代码相似 Code Review 相比之下,为了达到更准确的上下文,成本更高平衡 Prompt 进化路线的战略和架构尽管 AIGC 它可以显著加速我们编写代码的时间,但在上下文架构上花费更多的时间意味着架构的复杂性。

我们应该花这么多时间来建造它吗? prompt 上面,它带来的 ROI 需要根据不同的场景来考虑是否合理此外,我们还需要关注它 Prompt 进化策略,构建结构的进化路线例如,对于一个 Code Review 我们应该如何规划工具?。

实现基本的 code review 接口调用与 comments 调用?结合提交信息,来吧 review 代码,分析两者是否一致?从提交信息中获取业务上下文,分析代码是否与业务一致……然后,根据我们可以获得的数据设计最终数据 prompt,并以此作为规划架构演进路线的版本。

小结由 ChatGPT 生成:本文讨论了复杂性 AIGC 应用中的 Prompt 以及架构设计的关键Prompt 是引导 AI 文本段落的设计直接影响AIGC应用的性能复杂 AIGC 该应用程序具有三个核心特征:感知用户意图,设计用户交互,以获得更多的上下文和基于数据反馈的模型优化。

有两种 Prompt 策略包括简化指令和围绕结果的设计,以帮助构建更有效的Prompt示例架构设计采用语言插件,可根据不同的语言后缀实现不同的功能,改进 AIGC 多语言支持应用文章强调 Prompt 指出重要性 Prompt 架构设计在提高生成内容的质量和用户满意度方面至关重要。

在实践中,需要平衡 Prompt 为了满足不同的策略和架构设计 AIGC 应用需求

来源:天宇软件资讯

- THE END -

admin

10月16日21:21

最后修改:2023年10月16日
0

非特殊说明,本博所有文章均为博主原创。

软件商城
nowmru.com
2024-09-20 07:12:12
软件商城:nowmru.com
软件商城地址:http://nowmru.com
软件商城:nowmru.com
取消

选择聊天工具: