大语言模型
- 阅读更多 关于 大语言模型
- 登录 发表评论
【LLM】Langchain跟踪介绍
我们很高兴宣布在LangChain中支持原生追踪!通过在LangChain运行中启用跟踪,您将能够更有效地可视化、逐步完成和调试链和代理。
A view of a more complicated trace at a high level
动机
关于链和代理执行的推理对于故障排除和调试非常重要。然而,对于复杂的链和代理来说,这可能很困难,原因有很多:
- 可能会有大量的步骤,因此很难跟踪所有步骤
- 步骤的顺序无法固定,可能会根据用户输入而变化
- 每个阶段的输入/输出可能不长,需要进行更详细的检查
链或代理的每一步也可能涉及嵌套——例如,代理可能会调用一个工具,该工具使用LLMMathChain,它使用LLMChain,然后调用LLM。如果您注意到来自顶级代理运行的奇怪或不正确的输出,则很难确定它在执行中的确切位置。
通过跟踪,您可以清楚地看到特定链或代理运行中涉及的每个LangChain原语的输入和输出,按照它们被调用的顺序,从而解决了这一问题。
【LLM】LangChain特性存储和LLM
编者按:非常感谢Willem Pienaar(Feast)、Mike Del Balso(Tecton)和Simba Khadder(FeatureForm)对本文的评论和帮助。
LLM代表了人工智能的一种新范式。有多少对传统机器学习有用的工具和服务在这里仍然相关,这是一个悬而未决的大问题。一方面,对于这种新的范式,有非常真实的新用例和需求。另一方面,现有的工具和服务具有多年的经验、开发和功能强化。这些工具在这个新的范式中仍然有用吗?
特性存储概述
一个特别有趣的案例研究是功能商店。在传统的机器学习中,模型的输入不是原始文本或图像,而是与手头的数据点相关的一系列工程“特征”。特征库是一个特征库,是一个旨在将ML特征集中并提供给模型的系统。通常有两个好处:
一种跟踪在特定时间点存在哪些特征以用于模型训练的方法
- 进行推理时使用的实时特征管道
- 这些可能如何适用于LLM应用程序?
第一点似乎没有那么重要。大多数人使用OpenAI、Anthropic等预先训练的LLM,而不是从头开始训练自己的模型。
【LLM】langchain结构化工具
TL;DR:我们正在引入一种新的抽象,以允许使用更复杂的工具。虽然以前的工具只接受单个字符串输入,但新工具可以接受任意数量的任意类型的输入。我们还引入了一个新的代理类,它可以很好地与这些新类型的工具配合使用。
重要链接:
- 工具列表
- 新代理人
早在2022年11月,当我们首次推出LangChain时,代理和工具利用率在我们的设计中发挥了核心作用。我们建立了基于ReAct的首批链之一,这是一篇开创性的论文,将工具的使用带到了提示框架的前沿。
在早期,工具的使用过于简单。一个模型将生成两个字符串:
- 工具名称
- 所选工具的输入字符串
这种方法将代理限制为每转一个工具,并且该工具的输入限制为单个字符串。这些限制主要是由于模型的限制;模型甚至很难熟练地完成这些基本任务。可靠地执行更复杂的操作,例如选择多个工具或填充复杂的模式,将是一件愚蠢的事。
然而,更先进的语言模型(如text-davinci-003、gpt-3.5-turbo和gpt-4)的快速发展为现有模型能够可靠实现的目标奠定了基础。这促使我们重新评估LangChain代理框架中对工具使用的限制。
【LLM】LangChain入门:构建LLM驱动的应用程序入门指南
LangChain教程,用于在Python中使用大型语言模型构建任何东西
“What did the stochastic parrot say to the other?” (Image drawn by the author)
自从ChatGPT发布以来,大型语言模型(LLM)获得了很大的流行。尽管你可能没有足够的资金和计算资源在地下室从头开始训练LLM,但你仍然可以使用预先训练的LLM来构建一些很酷的东西,例如:
- 可以根据您的数据与外界互动的个人助理
- 为您的目的定制聊天机器人
- 对您的文档或代码进行分析或总结
LLM正在改变我们构建人工智能产品的方式
【LLM】LangChain的LangFlow
LangFlow是LangChain的一个GUI,可以轻松地进行LLM应用程序和提示链接的实验和原型制作。
LangFlow是一个基于LangChain的本地LLM图形开发接口。如果你以任何方式熟悉LangChain,在链、代理和提示工程方面,这个开发界面都会感觉非常直观。
在下图中,是所有可用组件分组的列表。展开后,可以看到链、提示、代理和LLM的开发可供性列表。这个列表肯定会随着兴趣的增加而增加。
以下是关于如何构建一个非常简单的LLM Chaining应用程序以及如何与该应用程序聊天的简短教程。
要构建最简单的LLM应用程序,需要选择三个组件并将其拖到设计画布上:
【LLM】langchain 和 ChatGTP 4 agents
代理
代理通过涉及LLM来确定要遵循的操作序列,从而保持一定程度的自主权。
考虑下图,在收到请求后,代理会利用LLM来决定采取哪种操作。“操作”完成后,Agent将进入“观察”步骤。从观察步骤开始,代理人分享一个想法;如果没有达到最终答案,Agent会循环返回到另一个Action,以便更接近最终答案。
LangChain代理可以使用一系列操作。
下面的代码显示了LangChain代理回答一个极其模糊和复杂的问题的完整工作示例:
Who is regarded as the father of the iPhone and what is the square root of his year of birth?
代理人可以采取一些行动:
LLM数学,
以下是SerpApi网站的截图。SerpApi使得从搜索引擎结果中提取数据变得可行。
GPT-4(GPT-4–0314)。
【LLM】LangChain 代理和大型语言模型
目前在LLM上开发的方法正在迅速发展,即时工程在某种程度上被链接和代理的概念所吸收。
在最近的一篇文章中,我写到了即时工程的演变,以及即时工程是如何被吸收到更大的开发结构中的。
这些更大的开发结构允许:
- 更长、更复杂的用户交互
- 进程可以串行或并行运行
- 提示可以编程、共享、存储和模板化
- 链接是创建提示流或提示序列的概念。
对于现有流退出并且可以创建预先确定的会话或工作流的情况,Chaining工作得很好。
另一方面,在流量未知或高度不可预测的情况下,链接并不能很好地服务于场景。在这些情况下,预定的流程将不能很好地工作,并且需要一定程度的自主权。
什么是代理?
代理可以通过使用其可支配的一组工具或资源来接收查询。这些工具可以包括访问维基百科、网络搜索、数学库、LLM等。
【LLM】大型语言模型背景下的自主代理LangChain
随着大型语言模型(LLM)的实现在深度和广度上的扩展,出现了一些要求:
- 对LLM进行编程并创建可重复使用的提示的能力&将提示无缝地合并到更大的应用程序中。
- 创建链以对大型应用程序的LLM交互进行排序。
- 通过一个可以在工具范围内自主行动的代理,自动进行即兴的思维链提示。
- 创建可扩展的提示管道,可以从各种来源收集相关数据,所有这些都基于用户输入并构成提示;并将提示提交给LLM。
“任何足够先进的技术都与魔术难以区分。”
-阿瑟·C·克拉克
对于LLM相关的操作,显然需要自动化。目前,这种自动化是以所谓的代理的形式出现的。
提示链接是指执行一系列预先确定的动作。