-正文-

  • 1. LangChain是什么?(示例代码基于v0.3版本)

  • 2. LangChain全景

  • 3. 优点

  • 4. 注意事项

  • 5. LCEL(LangChain Expression Language)(示例)

  • 6. LangChain 的核心功能

  • 7. LangChain和Agent开发

================================================================================================================================================================================================================================================


AI Agent,即人工智能代理,一般直接叫做智能体。是一种能够感知环境、做出决策并采取行动的系统。这些系统能够执行被动的任务,也能够主动寻找解决问题的方法,适应环境的变化,并在没有人类直接干预的情况下做出决策。

智能体见: 一文说清楚什么是AI Agent(智能体)

基于大模型的AI Agent开发常用框架包括:LangChain、LlamaIndex、OpenAI API

===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

1. LangChain是什么?(示例代码基于 v0.3版本)

LangChain 是一个开源框架,目标是将大模型与外部数据连接起来,以便开发者能够更快和更容易地构建基于语言的 Al 应用。

LangChain的核心思想是通过模块化能设计和力抽象,将不同的组件和功能“链”在一起,以创建更复杂和多功能的语言处理系统。这些组件包括模型、聊天模型、文本嵌入模、型提示模板、索引、文档加载器、文本分割器、向量存储、检索器、记忆功能、链和代理等。这种设计不仅提高了系统的灵活性和可扩展性,还使得开发者可以根据具体需求自由组合和调整各个模块,从而实现更强大、更定制化的AI应用

通俗来说,LangChain 是一种帮助开发者用大模型制作“应用程序”的开发工具。它就像一个“搭建AI房子”的工具箱,里面有各种现成的积木,开发者只需要把这些积木拼起来,就可以实现很多强大的功能。

举个例子,假如你想制作一个智能客服,LangChain 可以:

  1. 给AI搭建大脑:让它用 ChatGPT 或类似的模型来回答问题。

  2. 记住用户信息:记住顾客的名字和之前的问题,避免每次都从头开始解释。

  3. 让AI会用工具:比如连接到公司数据库,查订单状态;或者直接用计算器给顾客算账。

  4. 处理复杂问题:比如顾客问一个"需要多步"才能回答的问题,LangChain 可以指导 AI 逐步完成。

2. LangChain全景

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

具体来说,该框架由以下开源库组成:

  • langchain-core : 基础抽象和LangChain表达式 (LCEL)。

  • langchain-community : 第三方集成。

    合作伙伴库(例如**langchain-openailangchain-anthropic** 等):一些集成已进一步拆分为自己的轻量级库,仅依赖于 langchain-core

  • langchain : 组成应用程序认知架构的链、代理和检索策略。

  • LangGraph : 通过将步骤建模为图中的边和节点,构建强大且有状态的多参与者应用程序。与LangChain无缝集成,但也可以单独使用。

  • LangServe : 将LangChain链部署为REST API。

  • LangSmith : 一个开发者平台,让您调试、测试、评估和监控LLM应用程序。

3. 优点

3.1 LangChain 是一个灵活的框架,它提供了与多种大模型进行交互的能力(示例)。

虽然LangChain最初主要支持 OpenAI公司的模型,但它的设计允许集成和使用来自不同源的多种模型,包括但不限于OpenAl、Cohere和 Hugging Face 等模型库中的模型。这样,你不必拘泥于某种模型,而是为自己的应用选择最合适的模型。

通过LangChain 提供的ModelLaboratory(模型实验室),你可以测试并比较不同的模型。下面是一段通过 ModelLaboratory比较不同大模型的示例代码

需要确保已经安装langchain-openai、langchain-cohere和langchain-huggingface库,并申请OpenAI_API_KEY、COHERE_API_KEY和HUGGINGFACEHUB_API_TOKEN

Cohere 是一家专注于自然语言处理(NLP)技术的公司,提供强大的语言模型和AI服务。提供API接口,供开发者和企业在自己的应用中集成先进的语言理解和生成能力

Hugging Face 是一个开源人工智能公司,专注于自然语言处理(NLP)和机器学习(ML)的技术发展。它为开发者和研究人员提供了大量的预训练模型和工具,方便他们在各自的应用中使用机器学习模型。提供大量开源的预训练模型和工具,开发者可以自由下载并在本地进行训练和使用,也有 API 服务,更侧重于提供一个开源生态系统

这两个公司都有一堆模型可被调用,这里需要对比三者的调用结果有什么不同

安装依赖:

pip install langchain-cohere

pip install langchain-huggingface


# 导入langchain_openai库中的OpenAI类,用于与OpenAI进行交互
from langchain_openai import OpenAI
# 导入cohere,用于使用cohere的模型
from langchain_cohere import ChatCohere
# 导入huggingface,用于使用huggingface的模型
from langchain_huggingface import ChatHuggingFace,HuggingFaceEndpoint

import os

os.environ["CO_API_KEY"] = "myRKkidpqyuQqXZfe"
os.environ["HUGGINGFACEHUB_API_TOKEN"] = "hf_wQwVfvKMoGK"

# 初始化OpenAI、Cohere和HuggingFace的实例,并设置温度参数(控制生成文本的创新性)
openai = OpenAI(
    api_key='hk-iwtbie100a91e427',
    base_url='https://api.openai-hk.com/v1',
    temperature=0.1
)
# Cohere  command-xlarge-nightly这个模型支持中文;command模型不支持中文
cohere = ChatCohere(model="command-xlarge-nightly", temperature=0.1)

# HuggingFace
repo_id = "Qwen/Qwen2.5-72B-Instruct"   # 使用千问的模型 

llm = HuggingFaceEndpoint(
    repo_id=repo_id,
    temperature=0.1,
    model_kwargs={'trust_remote_code':True}
)
huggingface = ChatHuggingFace(llm=llm, verbose=True)

# 导入ModelLaboratory类,用于创建和管理多个语言模型
from langchain.model_laboratory import ModelLaboratory

# 创建一个模型实验室实例,整合了OpenAI、Cohere和HuggingFace的模型
model_lab = ModelLaboratory.from_llms([openai, cohere, huggingface])

# 使用模型实验室比较不同模型对同一个问题“百合花是来源自哪个国家?”的回答
model_lab.compare("百合花是来源自哪个国家?")

输出结果:


###### 输入的提示词
Input:
百合花是来源自哪个国家?

###### OpenAI的回答
OpenAI
Params: {'model_name': 'gpt-3.5-turbo-instruct', 'temperature': 0.1, 'top_p': 1, 'frequency_penalty': 0, 'presence_penalty': 0, 'n': 1, 'logit_bias': {}, 'seed': None, 'logprobs': None, 'max_tokens': 256}

百合花最早起源于中国,后来传播到日本、韩国、欧洲等地。

###### Cohere的回答
client=<cohere.client.Client object at 0x00000214FC92BD90> async_client=<cohere.client.AsyncClient object at 0x0000021482AAAEC0> model='command-xlarge-nightly' temperature=0.1
百合花,即百合属(学名:Lilium)植物,是一种多年生草本植物,原产于北半球温带地区。它广泛分布在欧洲、亚洲和北美等地,不同品种的百合花可能源自不同的国家和地区。

其中,亚洲是百合花的主要分布区域,中国、日本和韩国都有丰富的百合花品种。中国是百合花的重要原产国,拥有许多独特的野生百合品种,如卷丹、山丹、百合等。

欧洲的百合花品种也非常丰富,如法国的东方百合、英国的圣洁百合等。

北美地区也有许多百合花品种,如北美百合、加拿大百合等。

因此,不同种类的百合花可能源自不同的国家,但总体来说,百合花是广泛分布在北半球温带地区的植物。

###### HuggingFace的回答
llm=HuggingFaceEndpoint(repo_id='Qwen/Qwen2.5-72B-Instruct', 
.... 省略 ....
} model_id='Qwen/Qwen2.5-72B-Instruct'
百合花是一种非常古老的植物,其种类繁多,分布广泛,因此不能简单地说它起源于某一个国家。不过,关于百合属植物(Lilium)的原始分布地,科学界普遍认为大部分百合种类最初分布在亚洲东部,特别是中国、日本和俄罗斯的远东地区。中国是百合属植物的主要分布中心之一,拥有许多野生种类。因此,可以说百合花与中国有着密切的联系。同时,百合属植物也在欧洲和北

参考:

https://python.langchain.com/docs/integrations/providers/cohere/

https://python.langchain.com/api_reference/huggingface/chat_models/langchain_huggingface.chat_models.huggingface.ChatHuggingFace.html#langchain_huggingface.chat_models.huggingface.ChatHuggingFace

https://python.langchain.ac.cn/docs/integrations/llms/huggingface_endpoint/

3.2 LangChain封装了很多大模型应用开发理念的技术实现细节

这种封装能省好多事,具体包括管理提示模板和提示词、与不同类型的大模型进行交互的通用接口、完成语言逻辑思维框架(例如 ReAct)的代码实现、与外部数据源交互、创建交互式 Agent、维护链或 Agent 调用的状态,以及实现历史对话的记忆功能等。

例如,我们只需调用 create_react_agent函数,就可以创建一个具有ReAct思维框架的 Agent,轻松实现 ReAct 的推理功能 - 所有的细节都被封装在 LangChain 的API中。

ReAct见:从0到1开发AI Agent(智能体)(二)| 智能体推理引擎ReAct框架的快速入门

3.3 LangChain 的第三方应用接口多且全,与大量其他AI开发相关的库和工具进行集成。

例如LangChain包含与各种向量数据库进行交互的接口。这为我们进行大模型应用开发提供了一站式解决方案。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

4. 注意事项

因为LangChain 提供了丰富的功能、工具和第三方接口,所以它的功能和整个生态环境显得过于复杂,这可能会给初学者或不熟悉大模型的开发者带来挑战。其次,通过 LangChain开发的复杂应用在处理过多数据时也可能会遇到效率问题。最后LangChain 还在迅速发展,其版本迭代速度非常快,旧的代码在新版本中可能无法正常运行。

最后这个问题需要注意,现在网上很多示例是基于旧版本的

5. LCEL(LangChain Expression Language)(示例)

为了让基于大模型的Al应用开发变得容易,LangChain 推出了LangChain Expression Language(简称 LCEL)。LCEL是一种声明式语言。它可以使 LangChain 中各组件的组合变得简单且直观。

LCEL 的特点如下:

  • 流式处理,即在与大模型交互的过程中尽可能快地输出首个Token,同时确保数据的连续性和不断输出,维持一个持续稳定的交互流程。

  • 异步操作,能在同一台服务器上处理多个并发请求

  • 自动并行执行那些可以并行的步骤,以实现尽可能低的延迟

  • 允许配置重试和后备选项,使链在规模上更可靠。

  • 允许访问复杂链的中间结果,并与LangSmith跟踪和LangServe部署无缝集成

示例:

# 导入所需的库
from langchain_core.output_parsers import StrOutputParser # 用于解析输出结果为字符串
from langchain_core.prompts import ChatPromptTemplate # 用于创建聊天提示模板
from langchain_openai import ChatOpenAI # 用于调用OpenAI的GPT模型

# 创建一个聊天提示模板,其中{topic}是一个占位符,用于后续插入具体的话题
prompt = ChatPromptTemplate.from_template("请讲一个关于 {topic} 的故事")

# 初始化ChatOpenAI对象,指定使用的模型为"gpt-4"
# model = ChatOpenAI(model="gpt-4-mini")
model = ChatOpenAI(
    api_key='hk-iwtbie91e427',
    base_url='https://api.openai-hk.com/v1',
    temperature=0.1
)


# 初始化一个输出解析器,用于将模型的输出解析成字符串
output_parser = StrOutputParser()

'''使用管道操作符(|)连接各个处理步骤,创建一个处理链
   其中prompt用于生成具体的提示文本,
   model用于根据提示文本生成回应,
   output_parser用于处理回应并将其转换为字符串'''
chain = prompt | model | output_parser

# 调用处理链,传入话题"水仙花",执行生成故事的操作
message = chain.invoke({"topic": "水仙花"})

# 打印链的输出结果
print(message)

从前,有一朵美丽的水仙花,她生长在一个幽静的小花园里。水仙花的花瓣洁白如雪,花蕊娇嫩如玉,散发着淡淡的清香,吸引了许多蜜蜂和蝴蝶前来采蜜。

水仙花非常喜欢阳光和清新的空气,每天都在花园里欢快地舞动着花瓣,享受着自由自在的生活。她和其他花朵们相处融洽,彼此之间互相照顾,共同绽放出美丽的花海。

然而,有一天,一场暴风雨袭击了小花园,水仙花被狂风吹倒在地,花瓣被雨水打湿,显得狼狈不堪。其他花朵们纷纷为她担心,希望她能够振作起来。

水仙花虽然受伤了,但她并没有放弃,她努力地挣扎着站起来,用最后一丝力气重新展开花瓣,绽放出最后一丝光芒。她告诉其他花朵们:“即使受伤,也要坚强地面对,因为生命中总会有风雨,只有坚强才能战胜困难。”

最终,水仙花顽强地度过了风雨,重新恢复了往日的美丽。她的坚强和勇敢感动了其他花朵们,大家都学会了面对困难时要坚强不屈,不轻易放弃。

从此以后,水仙花成为了小花园里最受尊敬的花朵,她的故事也被传颂开来,成为了一代代花朵们学习的楷模。每当风雨来临时,大家都会想起水仙花的故事,坚定地面对挑战,勇敢地前行。

LCEL 是通过**“|”** 符号连接不同组件的。首先,通过 PromptTemplate 生成针对大模型的提示,插入实际的问题。然后,将这个提示发送给OpenAI组件(即语言模型),模型根据提示生成回答。最后,通过 StrOutputParser解析模型的输出,确保输出是字符串格式 这个示例展示了通过串联不同的组件(如输入处理、模型调用、输出解析等)来构建复杂的语言处理任务的基本流程。

6. LangChain 的核心功能

  1. 链(Chains)

    • LangChain 支持将多个 LLM 调用和工具操作链接成工作流,比如从用户提问到返回答案的多步骤处理。

    • 工作流可以动态适应输入内容,特别适合构建复杂任务的自动化流程。

  2. 提示模板(Prompt Templates)

    • 提供动态模板化提示生成工具,优化提示质量并提高 LLM 的输出表现。开发者可以轻松重复使用和调整提示。
  3. 记忆(Memory)

    • 内置上下文记忆功能,可以保留会话历史,用于创建更连贯的对话体验。

    • 支持短期记忆(会话内存储)和长期记忆(跨会话存储,例如结合向量数据库)。

  4. 工具(Tools)与代理(Agents)

    • 工具:集成搜索引擎、数据库、API 等功能,扩展 LLM 的能力。

    • 代理:通过代理动态决策调用哪些工具,完成复杂任务(如知识查询或计算)。

  5. 数据增强生成(RAG, Retrieval-Augmented Generation)

    • 将外部知识库(文档、数据库)与 LLM 结合,动态检索相关内容以提升回答的准确性。
  6. 向量数据库集成

    • 支持向量数据库,用于语义搜索和知识库管理。
  7. LangGraph

    • 新推出的工具库,用于构建多智能体(multi-agent)和多状态应用,推荐用于设计复杂代理系统。

7. LangChain和Agent开发

在构建 Agent 时,LangChain 可以作为一个强大的框架来整合不同的 AI模型和工具,提供更连贯和复杂的对话流程,以及信息检索和处理能力。

因此,它允许开发者构建更复杂、更智能的 Agent。LangChain 提供了大量工具,可以将大模型连接到其他数据或计算源,包括搜索引擎、API和其他数据存储。大模型通过工具可以获取最新的数据,并将其作为上下文插入提示中。工具还可以用来执行行动(如运行代码、修改文件等)。大模型观察这些行动的结果,以决定下一步要做什么。

LangChain 通过 Agent执行器(Agent Executor)运行 Agent的逻辑,当满足某些标准时才停止运行。

下图展示了一个由 LangChain Agent 驱动的典型的大模型系统设计架构。

在上图所示的架构中,用户通过服务器提供提示词(Prompt),系统则通过索引(Indexes,也就是 Retrieval)检索信息。这些信息被用来更新系统的记忆(Memory)为处理用户的输入提供上下文。

系统核心是模型(Model),其中包括一个大模型,可能是用于理解和生成语言的AI。大模型通过链(Chains)与其他模型相连,这可能意味着不同模型之间的信息流动和合作。

在系统底部,多个Agent负责执行具体任务。它们可以完成不同的操作,并且可能独立工作。每个 Agent都可能代表系统中的一个功能模块或服务。用户的提示被模型处理后,系统产生输出(Output),并可能通过回调(Callbacks)触发额外的动作或处理,这通常用于处理异步事件或在满足某些条件时执行特定的函数。

整个过程形成了一个从输入到输出的循环,涉及信息检索、记忆更新、模型处理和动作执行,最终达到响应用户请求的目的。这个过程体现了LangChain的模块化和灵活性允许系统根据需要动态地组合不同的功能和服务。

参考:

1. 一文说清楚什么是AI Agent(智能体)

2. 从0到1开发AI Agent(智能体)(二)| 智能体推理引擎ReAct框架的快速入门

3.《大模型应用开发 动手做AI Agent》

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟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%免费】🆓

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐