![](https://img-blog.csdnimg.cn/direct/a3bfa904ba0642369d17f69a90c6e73f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Langchain
文章平均质量分 97
LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念已经内置标准化方案了。
之墨_
这个作者很懒,什么都没留下…
展开
-
【LangChain学习之旅】—(22)聊天客服机器人的开发(下)
Streamlit 和 Gradio 都是让数据科学家和开发者能够快速为机器学习模型创建 Web UI 的框架。Streamlit 是为数据应用、仪表板和可视化设计的。它提供了多种小部件,使得用户可以与数据和模型进行交互。它非常 Pythonic,意味着它的使用方式非常自然,对于熟悉 Python 的人来说非常直观。Gradio 更多是为了展示和演示机器学习模型。它提供了一种快速的方法,使非技术用户也能与机器学习模型进行交互,无需编写复杂的代码。以下是对它们特点进行的对比总结。原创 2024-05-13 15:37:33 · 232 阅读 · 0 评论 -
【LangChain学习之旅】—(21)聊天客服机器人的开发(上)
聊天机器人基本拥有了很多能力,有些能力来自于模型本身,比如 World Knowledge(世界知识)、总结、对话等等。除此之外,我们还为它武装了记忆功能以及检索内部文档的功能。除了基本的提示和 LLM 之外,记忆和检索是聊天机器人的核心组件。这两者使其不仅可以回忆起过去的交互,还可以提供最新的、特定领域的信息。在这个聊天机器人的构建过程中,我们进一步复习了 LangChain 中的对话模型、提示模板、记忆的实现,以及检索功能和 RAG 功能的实现。原创 2024-05-13 15:28:05 · 329 阅读 · 0 评论 -
【LangChain学习之旅】—(1) 何谓 LangChain
总而言之,LangChain 是一个基于大语言模型(LLMs)用于构建端到端语言模型应用的框架,它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人等。你已经制作好了一批鲜花的推广海报,想为每一个海报的内容,写一两句话,然后 post 到社交平台上,以期图文并茂。不过,这段代码需要的包比较多。根据输入的图片 URL,由 OpenAI 大语言模型驱动的 LangChain Agent,首先利用图像字幕生成工具将图片转化为字幕,然后对字幕做进一步处理,生成中文推广文案。原创 2023-12-17 17:01:16 · 1499 阅读 · 0 评论 -
【LangChain学习之旅】—(2) LangChain系统快速入门
当然,OpenAI 还提供其它的版本,gpt-3.5-turbo-0613 代表 ChatGPT 在 2023 年 6 月 13 号的一个快照,而 gpt-3.5-turbo-16k 则代表这个模型可以接收 16K 长度的 Token,而不是通常的 4K。以及这两种模型的最基本调用流程,另外,大语言模型可不是 OpenAI 一家独大,知名的大模型开源社群 HugginFace 网站上面提供了很多开源模型供你尝试使用,例如Meta 的 Llama-2 ,通义千问(Qwen)这通常是你想要的模型的输出。原创 2023-12-17 18:14:24 · 1179 阅读 · 0 评论 -
【LangChain学习之旅】—(3) LangChain快速构建本地知识库的智能问答系统
此时,信息提取的基本方式就是把问题也转换为向量,然后去和向量数据库中的各个向量进行比较,提取最接近的信息。从这些向量中,我们可以看到“国王”和“皇帝”这两个词的向量在某种程度上是相似的,而与“苹果”这个词相比,它们的向量则相差很大,因为这两个概念在语义上是不同的。余弦相似度度量的是方向的相似性,它更关心的是两个向量的角度差异,而不是它们的大小差异。(注意:可能需要安装。在众多的机器学习和人工智能应用中,尤其是自然语言处理和图像识别这类涉及大量非结构化数据的领域,将数据转化为高维度的向量是常见的处理方式。原创 2023-12-17 22:18:43 · 2025 阅读 · 1 评论 -
【LangChain学习之旅】—(4) 模型I/O:输入提示、调用模型、解析输出
这样,你就从头到尾利用大模型开发出来了一个能够自动生成鲜花文案的应用程序!怎么样,是不是感觉和我们平时所做的基于 SQL 和数据库表以及固定业务逻辑的应用开发很不一样?每一次运行都有不同的结果,而我们完全不知道大模型下一次会给我们带来怎样的新东西。因此,基于大模型构建的应用可以说充满了创造力。总结一下使用 LangChain 框架的好处,你会发现它有这样几个优势。模板管理:在大型项目中,可能会有许多不同的提示模板,使用 LangChain 可以帮助你更好地管理这些模板,保持代码的清晰和整洁。原创 2024-01-10 17:52:15 · 1106 阅读 · 0 评论 -
【LangChain学习之旅】—(5) 提示工程(上):用少样本FewShotTemplate和ExampleSelector创建应景文案
我们介绍了提示工程的原理,几种提示模板的用法,以及最重要的 FewShot 的思路。其实说白了,就是给模型一些示例做参考,模型才能明白你要什么。总的来说,提供示例对于解决某些任务至关重要,通常情况下,FewShot 的方式能够显著提高模型回答的质量。不过,当少样本提示的效果不佳时,这可能表示模型在任务上的学习不足。在这种情况下,我们建议对模型进行微调或尝试更高级的提示技术。原创 2024-01-10 20:24:44 · 1233 阅读 · 0 评论 -
【LangChain学习之旅】—(6) 提示工程(下):用思维链和思维树提升模型思考质量
CoT 这个概念来源于学术界,是谷歌大脑的 Jason Wei 等人于 2022 年在论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(自我一致性提升了语言模型中的思维链推理能力)》中提出来的概念。它提出,如果生成一系列的中间推理步骤,就能够显著提高大型语言模型进行复杂推理的能力。CoT 的核心思想是通过生成一系列中间推理步骤来增强模型的推理能力。原创 2024-01-12 14:30:14 · 1501 阅读 · 0 评论 -
【LangChain学习之旅】—(7) 调用模型:使用OpenAI API还是微调开源Llama2/ChatGLM?
之前的内容讲了提示工程的原理以及 LangChain 中的具体使用方式。今天,我们来着重讨论 Model I/O 中的第二个子模块,LLM。让我们带着下面的问题来开始这一节课的学习。大语言模型,不止 ChatGPT 一种。调用 OpenAI 的 API,当然方便且高效,不过,如果我就是想用其他的模型(比如说开源的 Llama2 或者 ChatGLM),该怎么做?再进一步,如果我就是想在本机上从头训练出来一个新模型,然后在 LangChain 中使用自己的模型,又该怎么做?原创 2024-01-12 16:31:45 · 1850 阅读 · 0 评论 -
【LangChain学习之旅】—(8) 输出解析:用OutputParser生成鲜花推荐列表
先创建了一个空的 DataFrame,用于存储从模型生成的描述。接下来,通过一个名为 FlowerDescription 的 Pydantic BaseModel 类,定义了期望的数据格式(也就是数据的结构)。# 创建一个空的DataFrame用于存储结果# 数据准备flowers = ["玫瑰", "百合", "康乃馨"]# 定义我们想要接收的数据格式flower_type: str = Field(description="鲜花的种类")原创 2024-01-13 22:58:41 · 1308 阅读 · 0 评论 -
【LangChain学习之旅】—(9) 用SequencialChain链接不同的组件
对于简单的应用程序来说,直接调用 LLM 就已经足够了。因此,在前几节的示例中,我们主要通过 LangChain 中提供的提示模板、模型接口以及输出解析器就实现了想要的功能。但是,如果你想开发更复杂的应用程序,那么就需要通过 “Chain” 来链接 LangChain 的各个组件和功能——模型之间彼此链接,或模型与其他组件链接。这种将多个组件相互链接,组合成一个链的想法简单但很强大。它简化了复杂应用程序的实现,并使之更加模块化,能够创建出单一的、连贯的应用程序,从而使调试、维护和改进应用程序变得容易。原创 2024-01-24 16:37:40 · 1035 阅读 · 0 评论 -
【LangChain学习之旅】—(10) 用RouterChain确定客户意图
在这里,我们会用 LLMRouterChain 和 MultiPromptChain(也是一种路由链)组合实现路由功能,该 MultiPromptChain 会调用 LLMRouterChain 选择与给定问题最相关的提示,然后使用该提示回答问题。我们会根据用户的问题内容,首先使用路由器链确定问题更适合哪个处理模板,然后将问题发送到该处理模板进行回答。下面,我们循环 prompt_infos 这个列表,构建出两个目标链,分别负责处理不同的问题。首先,我们针对两种场景,构建两个提示信息的模板。原创 2024-01-24 17:04:59 · 1230 阅读 · 0 评论 -
【LangChain学习之旅】—(11) 记忆:通过Memory记住用户上次的对话细节
今天介绍了一种对话链和四种类型的对话记忆机制,那么我们可以通过一个表格对这四种类型的记忆做一个整体比较。四种记忆机制的比较如下:网上还有人总结了一个示意图,体现出了当对话轮次逐渐增加时,各种记忆机制对 Token 的消耗数量。意图向我们表达的是:有些记忆机制,比如说 ConversationSummaryBufferMemory 和 ConversationSummaryMemory,在对话轮次较少的时候可能会浪费一些 Token,但是多轮对话过后,Token 的节省就逐渐体现出来了。原创 2024-03-03 14:34:51 · 1004 阅读 · 0 评论 -
【LangChain学习之旅】—(12) 代理(上):ReAct框架,推理与行动的协同
这节课我们介绍了什么是 LangChain 中的代理,更重要的是,我们介绍了代理自主行动的驱动力—— ReAct 框架。通过 ReAct 框架,大模型将被引导生成一个任务解决轨迹,即观察环境 - 进行思考 - 采取行动。观察和思考阶段被统称为推理(Reasoning),而实施下一步行动的阶段被称为行动(Acting)。在每一步推理过程中,都会详细记录下来,这也改善了大模型解决问题时的可解释性和可信度。原创 2024-03-10 16:42:18 · 201 阅读 · 0 评论 -
【LangChain学习之旅】—(13) 代理(中):AgentExecutor究竟是怎样驱动模型和工具完成任务的?
上节了解了 ReAct 框架的原理,LangChain 中的“代理”和“链”的差异究竟是什么?。下面这个图,就展现出了 Agent 接到任务之后,自动进行推理,然后自主调用工具完成任务的过程。那么,你看 LangChain,乃至整个大模型应用开发的核心理念就呼之欲出了。这个核心理念就是。这里,我又一次重复了上一段话,显得有点啰嗦,但是这个思路真的是太重要了,它也凸显了 LLM 作为 AI 自主决定程序逻辑这个编程新范式的价值,我希望你仔细认真地去理解。原创 2024-04-04 19:22:11 · 110 阅读 · 0 评论 -
【LangChain学习之旅】—(14)代理(下):结构化工具对话、Self-Ask with Search以及Plan and execute代理
LangChain 的第一个版本是在 2022 年 11 月推出的,当时的设计是基于 ReAct 论文构建的,主要围绕着代理和工具的使用,并将二者集成到提示模板的框架中。早期的工具使用十分简单,AgentExecutor 引导模型经过推理调用工具时,仅仅能够生成两部分内容:一是工具的名称,二是输入工具的内容。而且,在每一轮中,代理只被允许使用一个工具,并且输入内容只能是一个简单的字符串。这种简化的设计方式是为了让模型的任务变得更简单,因为进行复杂的操作可能会使得执行过程变得不太稳定。原创 2024-04-04 22:27:28 · 110 阅读 · 0 评论 -
【LangChain学习之旅】—(15)工具和工具箱:LangChain中的Tool和Toolkits一览
大模型的推理,加上工具的调用,都集成在一个系统中,而这个系统可以处理多种类型的任务。一旦选择了合适的工具,LangChain 就会将任务的输入传递给这个工具,然后工具会处理这些输入并生成输出。这个输出又经过大模型的推理,可以被用作其他工具的输入,或者作为最终结果,被返回给用户。当代理接收到一个任务时,它会根据任务的类型和需求,通过大模型的推理,来选择合适的工具处理这个任务。这个选择过程可以基于各种策略,例如基于工具的性能,或者基于工具处理特定类型任务的能力。在这个框架中,每个功能都被封装成一个工具。原创 2024-04-05 00:07:44 · 263 阅读 · 0 评论 -
【LangChain学习之旅】—(16)检索增强生成:通过RAG助力大模型
通过检索增强生成来存储和搜索非结构化数据的最常见方法是,给这些非结构化的数据做嵌入并存储生成的嵌入向量,然后在查询时给要查询的文本也做嵌入,并检索与嵌入查询“最相似”的嵌入向量。向量数据库则负责存储嵌入数据,并为你执行向量的搜索。RAG 实际上是为非结构化数据创建了一个“地图”。当用户有查询请求时,该查询同样被嵌入,然后你的应用程序会在这个“地图”中寻找与之最匹配的位置,从而快速准确地检索信息。原创 2024-04-05 20:01:43 · 137 阅读 · 0 评论 -
【LangChain学习之旅】—(18)回调函数:在AI应用中引入异步通信机制
在 LangChain 中,回调机制同样为用户提供了灵活性和自定义能力,以便更好地控制和响应事件。CallbackHandler 允许开发者在链的特定阶段或条件下注入自定义的行为,例如异步编程中的响应处理、事件驱动编程中的事件处理等。这为 LangChain 提供了灵活性和扩展性,使其能够适应各种应用场景。原创 2024-04-05 21:18:44 · 115 阅读 · 0 评论 -
【LangChain学习之旅】—(19)CAMEL:通过角色扮演进行思考创作内容
下面,定义 CAMELAgent 类。这是一个核心类,用于管理与语言模型的交互。它包含了初始化消息、更新消息和与模型进行交互的方法。self,) -> None:"""重置对话消息""""""初始化对话消息""""""更新对话消息列表""""""进行一步交互,并获取模型的响应"""智能代理在未来世界中将扮演越来越重要的角色。为了使这些代理能够更好地为人类服务,我们需要找到方法来提高它们的交流能力。CAMEL 这篇论文提供了一个全新的视角来看待交流代理的发展。原创 2024-04-05 22:29:34 · 164 阅读 · 0 评论 -
【LangChain学习之旅】—(20)BabyAGI:根据气候变化自动制定鲜花存储策略
LangChain 目前是将基于 CAMEL 框架的代理定义为 Simulation Agents(模拟代理)。这种代理在模拟环境中进行角色扮演,试图模拟特定场景或行为,而不是在真实世界中完成具体的任务。随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。这些代理的设计初衷就是能够独立地执行任务,并持续地追求长期目标。原创 2024-04-05 23:28:09 · 192 阅读 · 0 评论 -
【报错】LangChain Embedding 模型 (小记)—— chatglm报错“msg“:“str type expected“,“type“:“type_error.str“}]}‘
1. OpenAIEmbeddings: - 使用简单,并且效果比较好; - 会消耗openai的token,特别是大段文本时,消耗的token还不少,如果知识库是比较固定的,可以考虑将每次生成的embedding做持久化,这样就不需要再调用openai了,可以大大节约token的消耗; - 可能会有数据泄露的风险,如果是一些高度私密的数据,不建议直接调用。2. HuggingFaceEmbeddings: - 可以在HuggingFace上面选择各种sentence-similarity原创 2024-04-20 23:10:12 · 185 阅读 · 0 评论