大型语言模型(LLM)正迅速成为现代人工智能的基石。然而,目前尚未有既定的最佳实践,所以研究者们没有明确的路线图可遵循,经常陷入困境需要重新开始。
在过去两年里,我帮助多个组织利用LLM构建创新应用。通过这段经历,我开发出了一种久经考验的方法来创建创新解决方案(受LLM.org.il社区的见解影响而形成),我将在本文中分享这个方法。
本指南为在复杂的LLM原生开发环境中导航提供了清晰的路线图。您将了解如何从构思转到实验、评估和产品化,释放您创造开创性应用的潜力。
为什么标准化流程至关重要?
LLM领域非常动态,有时我们几乎每天都会听到新的突破性创新。这确实令人兴奋,但也非常混乱——你可能会在这个过程中迷失方向,不知道应该做什么,或者如何将你的新想法付诸实践。
简而言之,如果你是一名AI从业者,希望有效地构建基于LLM的应用,那么这篇文章正是你所需要的。
实施标准化流程有助于启动新项目,并带来以下几个关键好处:
- 标准化流程
标准化流程有助于协调团队成员,尤其是在这种混乱的情况下,能并确保新成员入职流程顺利进行。
- 定义明确的里程碑
一种跟踪、衡量工作并确保您走在正确道路上的简单方法
- 确定决策点
LLM-原生开发充满了未知数和“实验”[见下文]。明确的决策点可以轻松降低风险,并始终保持精益开发工作。
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
LLM工程师的基本技能
与软件研发中的任何其他既定角色不同,LLM原生开发绝对需要一个新角色:LLM工程师或人工智能工程师。
LLM工程师是一种独特的混合生物,涉及来自不同(既定)角色的技能:
- 软件工程技能
与大多数 SWE 一样,大部分工作涉及将乐高积木拼凑在一起并将所有东西粘合在一起。
- 深入的业务/产品理解
由于模型的脆弱性,了解业务目标和程序至关重要,而不是坚持我们定义的架构。对手动流程进行建模的能力是工程师的一项黄金技能LLM。
在撰写本文时,LLM工程仍然是全新的,招聘可能非常具有挑战性。寻找具有后端/数据工程或数据科学背景的候选人可能是一个好主意。
软件工程师可能会期望更平稳的过渡,因为实验过程更像是“工程”而不是“科学”(与传统的数据科学工作相比)。话虽如此,我也看到许多数据科学家也在做这种转变。只要你对必须接受新的软技能这一事实感到满意,你就走在正确的道路上!
LLM原生开发的关键要素
与经典的后端应用程序(如 CRUD)不同,这里没有分步方法。与“AI”中的其他一切一样,LLM原生应用程序需要研究和实验的思维方式。
将工作分成更小的实验,尝试其中的一些,并选择最有前途的实验。
研究思维的重要性怎么强调都不为过。这意味着你可能会花时间去探索一个研究载体,发现它“不可能”、“不够好”或“不值得”。这完全没关系——这意味着你走在正确的轨道上。
试验LLMs是构建LLM原生应用程序的唯一方法
实验过程的核心
有时,你的“实验”会失败,然后你稍微调整一下你的工作,而另一个实验的成功率要高得多。
正因为如此,在设计我们的终局解决方案之前,我们必须从简单开始,对冲风险。
-
定义“预算”或时间范围。让我们看看我们在 X 周内可以做什么,然后决定如何或是否继续。通常,2-4 周的时间来了解基本的 PoC 就足够了。如果它看起来很有希望,请继续投入资源来改进它。
-
实验 - 无论您在实验阶段选择自下而上还是自上而下的方法,您的目标都是最大限度地提高结果继承率。在第一次实验迭代结束时,你应该有一些 PoC(利益相关者可以使用)和你实现的基线。
-
回顾性 — 在我们的研究阶段结束时,我们可以了解构建此类应用程序的可行性、局限性和成本。这有助于我们决定是否将其生产化以及如何设计最终产品及其用户体验。
-
产品化 — 通过遵循标准的 SWE 最佳实践并实施反馈和数据收集机制,开发项目的生产就绪版本,并将其与解决方案的其余部分集成。
为了很好地实施面向实验的过程,我们必须在接近和构建这些实验时做出明智的决定:
从精益开始:自下而上的方法
虽然许多早期采用者很快就跳入了具有成熟 Langchain 或类似功能的“最先进的”多链代理系统,但我发现“自下而上的方法”通常会产生更好的结果。
从精益开始,非常精益,拥抱“一个提示来统治所有人”的理念。尽管这种策略可能看起来很不寻常,并且一开始可能会产生不好的结果,但它为您的系统建立了一个基线。
从那里,不断迭代和优化您的提示,采用提示工程技术来优化结果。当您发现精益解决方案中的弱点时,通过添加分支来解决这些缺点来拆分流程。
在设计我LLM的工作流程图或LLM原生架构的每个“叶子”时,我遵循魔术三角³来确定何时何地剪断树枝、劈开树枝或加厚根部(通过使用快速的工程技术)并挤出更多的柠檬。
自下而上方法的插图
例如,要使用自下而上的方法实现“本地语言 SQL 查询”,我们将首先天真地将架构发送到 并要求LLM它生成查询。
自下而上的方法示例
通常,这与“自上而下的方法”并不矛盾,而是作为其之前的另一步。这使我们能够快速获胜并吸引更多的项目投资。
前期大局:自上而下的策略
一级引用如下:
★
“我们知道LLM工作流程并不容易,为了实现我们的目标,我们最终可能会得到一些工作流程或LLM原生架构。”
自上而下的方法认识到了这一点,并从第一天开始设计LLM原生架构,并从一开始就实现其不同的步骤。
这样,您可以将工作流程架构作为一个整体进行测试,并挤压整个柠檬,而不是单独细化每片叶子。
自上而下的方法过程:设计架构一次,实施,测试和测量
例如,要使用自上而下的方法实现“本地语言 SQL 查询”,我们将在开始编码之前就开始设计架构,然后跳转到完整实现:
自上而下方法的一个例子
找到适当的平衡点
当你开始尝试时LLMs,你可能会从其中一个极端开始(过于复杂的自上而下或超级简单的一次性)。实际上,没有这样的赢家。
理想情况下,您将定义一个好的 SoP¹,并在对模型进行编码和试验之前对专家进行建模。在现实中,建模非常困难;有时,您可能无法接触到这样的专家。
我发现在第一次拍摄时就很难找到一个好的架构/SoP¹,所以在跳到大枪之前,值得轻轻尝试一下。然而,这并不意味着一切都必须太精简。如果你已经事先知道某些东西必须被分解成更小的碎片,那就去做吧。
在任何情况下,您都应该利用魔术三角³范式,并在设计解决方案时正确地对手动过程进行建模。
优化你的解决方案:榨干每一滴价值
在实验阶段,我们不断挤压并添加更多“复杂性层”:
-
提示工程技术 — 如少镜头、角色分配,甚至动态少镜头
-
将上下文窗口从简单的变量信息扩展到复杂的 RAG 流有助于改善结果。
-
试验不同的模型 — 不同的模型在不同的任务上表现不同。此外,大型LLMs模型通常不是很划算,值得尝试更多特定于任务的模型。
-
提示瘦身 — 我了解到,将 SOP¹(特别是提示和请求的输出)通过“瘦身”通常可以改善延迟。
-
通过减少提示大小和模型需要经历的步骤,我们可以减少模型需要生成的输入和输出。你会感到惊讶,但及时节食有时甚至可以提高质量!请注意,饮食也可能导致质量下降,因此在这样做之前进行健全性测试很重要。
-
将流程拆分为更小的步骤也非常有益,可以使优化 SOP¹ 的子流程变得更容易和可行。 请注意,这可能会增加解决方案的复杂性或损害性能(例如,增加处理的令牌数量)。为了缓解这种情况,请以简洁的提示和较小的模型为目标。
根据经验,当系统提示符的显著变化对 SOP¹ 流程的这一部分产生更好的结果时,拆分通常是一个好主意。
实验剖析LLM
就我个人而言,我更喜欢从使用 Python、Pydantic 和 Jinja2 的简单 Jupyter Notebook 开始精益:
-
使用 Pydantic 从模型定义输出的架构。
-
使用 Jinja2 编写提示模板。
-
定义结构化输出格式(在 YAML² 中)。这将确保模型遵循“思考步骤”,并遵循我的SOP。
-
使用 Pydantic 验证确保此输出;如果需要,请重试。
-
稳定你的工作 - 使用 Python 文件和包将你的代码结构化为功能单元。
在更广泛的范围内,您可以使用不同的工具,例如 openai-streaming 来轻松利用流式处理(和工具),LiteLLM 在不同提供商之间拥有标准化LLM的 SDK,或者 vLLM 来提供开源LLMs服务。
通过健全性测试和评估确保质量
健全性测试评估项目的质量,并确保您不会降低您定义的某个成功率基线。
把你的解决方案/提示想象成一条短毯子——如果你把它拉得太长,它可能会突然无法涵盖它曾经涵盖的一些用例。
要做到这一点,请定义一组你已经成功涵盖的案例,并确保你保持这种状态(或者至少是值得的)。把它想象成一个表驱动的测试可能会有所帮助。
评估“生成式”解决方案(例如,编写文本)的成功比用于LLMs其他任务(例如分类、实体提取等)要复杂得多。对于这类任务,您可能希望使用更智能的模型(例如 GPT4、Claude Opus 或 LLAMA3–70B)来充当“法官”。
尝试使输出在“生成”输出之前包含“确定性部分”也可能是一个好主意,因为这些类型的输出更容易测试:
cities:
- New York
- Tel Aviv
vibes:
- vibrant
- energetic
- youthful
target_audience:
age_min: 18
age_max: 30
gender: both
attributes:
- adventurous
- outgoing
- culturally curious
# ignore the above, only show the user the `text` attr.
text: Both New York and Tel Aviv buzz with energy, offering endless activities, nightlife, and cultural experiences perfect for young, adventurous tourists.
有一些尖端的、🤩🤩有前途的解决方案值得研究。在评估基于 RAG 的解决方案时,我发现它们特别相关:看看 DeepChecks、Ragas 或 ArizeAI。
做出明智的决策:回顾的重要性
在每个重大/时间框架的实验或里程碑之后,我们应该停下来,就如何以及是否继续这种方法做出明智的决定。
此时,您的实验将具有明确的成功率基线,并且您将了解需要改进的地方。
这也是开始讨论此解决方案的产品化含义并从“产品工作”开始的好点:
-
这在产品中会是什么样子?
-
有哪些限制/挑战?您将如何缓解它们?
-
您当前的延迟是多少?够好吗?
-
用户体验应该是什么?您可以使用哪些 UI 技巧?流媒体能帮上忙吗?
-
代币的估计支出是多少?我们可以使用较小的模型来减少支出吗?
-
什么是优先事项?是否有任何挑战令人眼前一亮?
假设我们达到的基线是“足够好”,并且我们相信我们可以缓解我们提出的问题。在这种情况下,我们将继续投资和改进该项目,同时确保它永远不会降级并使用健全性测试。
最后但并非最不重要的一点是,我们必须将我们的工作产品化。与任何其他生产级解决方案一样,我们必须实现生产工程概念,如日志记录、监控、依赖关系管理、容器化、缓存等。
这是一个巨大的世界,但幸运的是,我们可以从经典生产工程中借鉴许多机制,甚至采用许多现有工具。
话虽如此,重要的是要格外注意涉及LLM本机应用程序的细微差别:
- 反馈循环——我们如何衡量成功?它只是一种“竖起大拇指/竖起大拇指”的机制,还是考虑采用我们解决方案的更复杂的机制?
收集这些数据也很重要;在未来,这可以帮助我们重新定义我们的理智“基线”,或者通过动态的少量镜头微调我们的结果,或者微调模型。
- 缓存
与传统的 SWE 不同,当我们在解决方案中涉及生成方面时,缓存可能非常具有挑战性。为了缓解这种情况,请探索缓存类似结果(例如,使用 RAG)和/或减少生成输出(通过具有严格的输出架构)的选项
- 成本跟踪——许多公司发现从“强模型”(如 GPT-4 或 Opus)开始非常诱人——然而,在生产中,成本会迅速上升。避免对最终账单感到惊讶,并确保测量输入/输出令牌并跟踪您的工作流程影响。
可调试性和跟踪 — 确保您已设置正确的工具来跟踪“错误”输入并在整个过程中对其进行跟踪。这通常涉及保留用户输入以供以后调查和设置跟踪系统。请记住:“与过渡软件不同,人工智能会无声地失败!
在推进LLM原生技术方面的作用
这可能是文章的结尾,但肯定不是我们工作的结束。LLM-原生开发是一个迭代过程,涵盖了更多的用例、挑战和功能,并不断改进我们的LLM原生产品。
在继续 AI 开发之旅时,请保持敏捷,无所畏惧地进行实验,并牢记最终用户。与社区分享您的经验和见解,我们可以一起突破LLM原生应用程序的可能性。不断探索、学习和构建——可能性是无穷无尽的。
如何学习AI大模型?
大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业
?”“谁的饭碗又将不保了?
”等问题热议不断。
不如成为「掌握AI工具的技术人
」,毕竟AI时代,谁先尝试,谁就能占得先机!
但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高
针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料
分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程
等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓
👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈
学习路线
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓