推特博主 @agishaun 基于上方内容,分享了他自己的在千余小开发实践中的经验和收获,帮助你少走弯路:

1. 每个人都可以学会提示词

学习使用 LLM 进行开发,可以节约节省大量时间。因此,尽可能将LLM整合到你的开发流程中,建议从 Microsoft Copilot 开始。

2. 数据,数据,还是数据!

数据质量是LLM开发中被低估的因素。记住!「Garbage in Garbage out (输入是垃圾,输出也是垃圾)」适用于任何软件系统,而LLM仍然是软件系统。

3. 向量数据库不能解决一切问题

一个好的向量数据库,也不能解决所有的数据质量问题。使用 LLAMA 或者 LangChain 框架帮助清理数据并正确地导入数据更为重要。

4. 通过艰难的方式学习 LLM

框架会加速你的开发过程,但它会把实现的细节隐藏起来。如果你刚开始LLM的开发旅程,可以尝试在没有任何框架的情况下开发,或者使用像  Microsoft Guidance 这样的轻框架。

5. 如何正确使用 LLM?

如何正确地使用大型语言模型(LLM)?如何从原型项目毕业?

(长文) 在我的上一条推文中提供了一些背景,我注意到了一个在创建AI应用过程中的模式,它始于这样的想法:“我有这些数据,如果能有个聊天机器人能处理这些数据就好了”。然后,工程师将这些数据转录为.txt文件或类似的格式,生成一个嵌入向量,然后存储在向量数据库中。接着,采用语义搜索从向量数据库中检索数据,并使用像Langchain QA这样的工具进行对话。最后,微调提示来优化响应。我认为,这种方法从根本上说是错误的。

相反,我提出了一个备选的开发周期:

  1. 游乐场提示设计:首先,确定你试图通过大型语言模型(LLM)解决的问题。思考你如何指导LLM回答特定的查询。记住,尽管LLM试图"完成",你的目标应该是"成功"。

  2. 上下文数据设计:设计了足够的提示之后,考虑哪些数据可以帮助LLM提供更好的回应。这些就是你想要喂入到上下文窗口的"上下文数据",以便LLM生成响应。在这个阶段,你不需要向量数据库、Langchain或任何库,只需要设计好的提示。

  3. 数据库(DB)索引和搜索:下一步是从任何系统(例如文件系统或互联网)有效地检索上下文数据。我用DB作为一个例子。最常见的解决方案是像@milvusio、@trychroma、@supabase这样的向量数据库,它们与自然语言协同工作。然而,关注点应该是搜索的质量,因为它大大影响数据的相关性。不相关的数据肯定会导致你的LLM产生幻觉。

  4. 数据摄取:在这里,清理你的数据非常重要。任何软件都遵循“垃圾进,垃圾出”的原则,GenAI应用程序也不例外。摄取的数据应该是干净的,结构良好的,易于理解的,并直接与查询相关的。

  5. 框架和服务:这是最直接的部分。使用传统的软件工程技巧或ChatGPT来设置。像@LangChainAI、@llama_index、Microsoft Guidance和Microsoft Semantic Kernel这样的LLM工具可以加速你的开发过程。

最后,我想强调提示工程的重要性,我已经投入了大量的时间。我开发了一个chrome扩展,增强了我与OpenAI游乐场的互动,功能包括csv下载和提示差异(类似于GitHub)。如果我收到足够的转发和点赞,我会考虑开源它!

 

一般工程师面对大模型开发时,一般是先准备数据,然后试图存储,再放入LLM 中编排。而 @agishaun认为,更优化的流程可以降低 50% 的开发时间,减少 90% 的错误率,是因为这样开发离LLM 更近,且可以充分利用LLM 的能力 ⋙ Twitter @agishaun[7]