我为什么放弃了 LangChain?

如果你关注了过去几个月中人工智能的爆炸式发展,那你大概率听说过。
简单来说, 是一个和库,由Chase 开发,用于连接的 GPT API(后续已扩展到更多模型)以生成人工智能文本 。
更具体地说,它是论文《ReAct:andin》的实现:该论文展示了一种提示技术,允许模型「推理」(通过思维链)和「行动」(通过能够使用预定义工具集中的工具,例如能够搜索互联网) 。
论文链接:
事实证明,这种组合能够大幅提高输出文本的质量,并使大型语言模型具备正确解决问题的能力 。
2023 年 3 月, 的 API 因升级降价大受欢迎, 的使用也随之爆炸式增长 。
这之后, 在没有任何收入也没有任何明显的创收计划的情况下,获得了 1000 万美元的种子轮融资和 2000-2500 万美元的 A 轮融资,估值达到 2 亿美元左右 。
ReAct 论文中的 ReAct 流示例 。
由推广的 ReAct 工作流在 /text--003 中特别有效,但成本很高,而且对于小型项目来说并不容易使用 。
Max Woolf 是一位的数据科学家 。他也使用过 ,这次经历总体来说不太好 。
让我们看看他经历了什么 。
「是只有我不会用吗?」
在工作时,我有一个任务是为 Tasty 品牌创建一个基于的聊天机器人(后来在 Tasty iOS 应用中发布为 ),可以与用户聊天并提供相关食谱 。
具体来说,源菜谱将被转换为嵌入式菜谱并保存在一个向量存储中:例如如果用户询问「健康食品」,查询会被转换为嵌入式菜谱,然后执行近似最近邻搜索以找到与嵌入式查询相似的菜谱,然后将其作为附加上下文提供给 ,再由显示给用户 。这种方法通常被称为检索增强生成 。
使用检索增强生成的聊天机器人的架构示例 。
「 是 RAG 最受欢迎的工具,所以我想这是学习它的最佳时机 。我花了一些时间阅读的全面文档,以便更好地理解如何最好地利用它 。」
经过一周的研究,我一无所获 。运行的 demo 示例确实可以工作,但是任何调整它们以适应食谱聊天机器人约束的尝试都会失败 。在解决了这些 bug 之后,聊天对话的整体质量很差,而且毫无趣味 。经过紧张的调试之后,我没有找到任何解决方案 。
总而言之,我遇到了生存危机:当很多其他 ML 工程师都能搞懂时,我却搞不懂,难道我是一个毫无价值的机器学习工程师吗?
我用回了低级别的 ReAct 流程,它立即在对话质量和准确性上超过了我的实现 。
浪费了一个月的时间来学习和测试 ,我的这种生存危机在看到News 关于有人用 100 行代码重现的帖子后得到了缓解,大部分评论都在发泄对的不满:
的问题在于它让简单的事情变得相对复杂,而这种不必要的复杂性造成了一种「部落主义」,损害了整个新兴的人工智能生态系统 。
所以,如果你是一个只想学习如何使用的新手,绝对不要从开始 。
的「Hello World」
的快速入门,从一个关于如何通过与 LLM/ 进行简单交互的迷你教程开始 。例如,创建一个可以将英语翻译成法语的机器人:
from langchain.chat_models import ChatOpenAIfrom langchain.schema import (AIMessage,HumanMessage,SystemMessage)chat = ChatOpenAI(temperature=0)chat.predict_messages([HumanMessage(content="Translate this sentence from English to French. I love programming.")])# AIMessage(content="J'adore la programmation.", additional_kwargs={}, example=False)
使用官方库的等效代码:
import openaimessages = [{"role": "user", "content": "Translate this sentence from English to French. I love programming."}]