【LLM大模型】LangChain框架:Hub和LangSmith入门

(一)简介

1.早期

最开始的LangChainHub,类似于github一样,可以理解为LangChain 工具包 或者说 组件中心,里面提供了高质量的组件方便开发者使用。确确实实是一个分享和探索Prompt、链 和Agent的地方。

比如,我们要基于reAct机制实现一个Agent,如果自己写一堆Prompt(提示词)那就太费劲了。此时,在LangChainHub就有许多现成可用的Prompt模板,使用简单又省事,所以LangChainHub迅速流行开。

2.现在

后来LangChainHub被放到了LangSmith里,早期的时候LangChainHub有Prompt、Chain、Agent,现在也只有Prompt。

3.原因

  • 可能是后续为了商业化,将常用的prompt模板放入了LangSmith中,后续LangSmith是有各种付费计划
  • 聚焦于Prompt,毕竟Prompt比较独立 而且易于交付。而Chains 和 Agents 相对来说,交付难度高一些,变动性也低,所以官方直接将 Chains 和 Agents 沉淀到自己的核心库里,这样也能保证Chains 和 Agents 的质量,保证自己的口碑。

(二)Hub实例分析:这里以react代理的模板

要实现一个reAct机制,如果我们自己写提示词,太复杂了,现有的模板

https://smith.langchain.com/hub/hwchase17/react

告诉LLM,它可以使用一堆什么格式的工具,然后先推理,选择合适的工具,执行之后,进行观察,观察完了之后,继续推理,如果有答案了,就回复用户。

使用方法:

from langchain import hub
prompt = hub.pull("hwchase17/react")

案例见:LangChain补充四:Agent知识点和案例补充

(三)进行提示语版本管理

langsmith在hub上提供以下实用功能:

  1. 编辑提示语及提示语版本
  2. 类似Playground的提示语运行环境
  3. 在应用中加载提示语
  4. 与他人共享提示语

上面的这些prompt,比如:https://smith.langchain.com/hub/hwchase17/react都是public,公开

在这里插入图片描述

我们可以创建自己的prompt使用,并且可以分版本号使用

在这里插入图片描述

在这里插入图片描述

from langchain import hub
prompt = hub.pull("study")

可以拉取自己的prompt使用

二:LangSmith简介

https://docs.smith.langchain.com/

https://langchain114.com/docs/langsmith/walkthrough/

https://blog.csdn.net/FrenzyTechAI/article/details/132695264

(一)简介

https://langchain114.com/docs/langsmith/walkthrough/

LangChain 使得原型设计大型语言模型(LLM)应用程序和代理变得容易。

然而,将 LLM 应用程序交付到生产环境可能会异常困难。

可能需要大量定制和迭代prompt、chain和其他组件,以创建高质量的产品。

为了帮助这个过程,推出了 LangSmith,一个统一的平台,用于调试、测试和监控LLM 应用程序。

(二)简单使用

https://www.alang.ai/langchain/101/lc09

1.进入官网:https://smith.langchain.com/,创建一个 API 密钥,添加 环境变量

  • 获取API密钥

在这里插入图片描述

  • 设置环境变量

LANGCHAIN_TRACING_V2:设置为true让 LangChain 记录追踪信息

LANGCHAIN_PROJECT:设置环境变量来告诉 LangChain 记录到哪个项目(如果这个变量没有设置,运行将被记录到 default 项目)。 这会自动为你创建项目(如果它不存在的话)。

LANGCHAIN_ENDPOINT:设置langsmith地址,https://api.smith.langchain.com

LANGCHAIN_API_KEY:设置API密钥,langsmith的密钥,不同于openAI的key

2.记录运行日志

设置完环境变量后,正常执行langchain代码,会自动在langsmith创建project

from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

llm.invoke("what's generative ai?")

在这里插入图片描述

点击可以查看输入输出和token花费

在这里插入图片描述

3.记录复杂运行日志

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

llm = ChatOpenAI()

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are world class technical documentation writer."),
    ("user", "{input}")
])

translate_prompt = ChatPromptTemplate.from_messages([
    ("system", "Translate to simplified Chinese."),
    ("user", "{input}")
])

output_parser = StrOutputParser()

chain = prompt | llm | output_parser \
        | {"input": RunnablePassthrough()} \
        | translate_prompt | llm | output_parser

output = chain.invoke({"input": "what's generative ai?"})

在这里插入图片描述

可以看到调用链!

(三)在数据集上运行评估

https://blog.csdn.net/qq839019311/article/details/139198336

https://docs.smith.langchain.com/old/evaluation/quickstart

LangSmith 集成了 LangChain 的评估功能,为我们提供了一个系统化的 AI 调用链评估工具。主要包括以下几步:

  1. 在 LangSmith 创建数据集
  2. 开发一个 AI 应用的调用链(即业务逻辑)
  3. 在数据集上运行评估
  4. 在 LangSmith 界面查看评估结果
#包含input输入的数据和output输出的对应标签
examples = [
    {
    "comment": "这家酒店环境很好,交通便利,服务员非常友好,下次还会来!",
    "reviews": "好评"
    },
    {
    "comment": "房间虽小但很干净整洁,性价比很高,下次还会选择这里。",
    "reviews": "好评"
    },
    {
    "comment": "酒店的游泳池和健身房设施一流,住宿体验非常棒,下次有机会一定再来。",
    "reviews": "好评"
    },
    {
    "comment": "早餐种类很丰富,味道也不错,服务态度很好,对得起这个价格。",
    "reviews": "好评"
    },
    {
    "comment": "酒店位置非常优越,临近著名景点,出行非常方便,下次有机会一定会再入住。",
    "reviews": "好评"
    },
    {
    "comment": "房间设施有些陈旧,卫生情况一般,不太符合我的预期,下次不会再选择这里。",
    "reviews": "差评"
    },
    {
    "comment": "服务员的态度不太友好,办理入住和退房的效率也比较低下,不太满意。",
    "reviews": "差评"
    },
    {
    "comment": "酒店停车场收费很高,且位置不太好找,感觉性价比不太高,不会再来了。",
    "reviews": "差评"
    },
    {
    "comment": "房间隔音效果很差,能听到走廊和邻居的声音,影响睡眠质量,希望能够改进。",
    "reviews": "差评"
    },
    {
    "comment": "酒店餐厅的菜品种类和口味都一般,性价比不高,下次不会再选择这里。",
    "reviews": "差评"
    }
]

1.在LangSmith创建数据集

from langsmith import Client

inputs=[]
outputs=[]
for example in examples:
    inputs.append({'comment':example['comment']})
    outputs.append({'reviews':example['reviews']})

#创建数据集
client = Client()
dataset_name = "Hotel Reviews Dataset"
dateset = client.create_dataset(dataset_name,description="Hotel reviews dataset for comment and query")
client.create_examples(dataset_id=dateset.id,inputs=inputs,outputs=outputs)

在这里插入图片描述

在这里插入图片描述

2.开发一个 AI 应用的调用链

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
prompt = ChatPromptTemplate.from_messages([
    ("system","请分析下面的用户评论,并确定它是积极还是消极。如果是积极,用“好评”回答,如果是消极,用“差评”回答。"),
    ("human","{comment}"),
])
chain = prompt | llm | StrOutputParser()

测试调用链

res = chain.invoke(input={"comment":"这家酒店环境很好,交通便利,服务员非常友好,下次还会来!"})

在这里插入图片描述

3.配置评估器(可以自定义,也可以使用现成的)

@run_evaluator
def correct_label(run, example) -> EvaluationResult:
    prediction = run.outputs.get("output") or ""    #调用链返回的预测值
    required = example.outputs.get("reviews") or "" #数据集中的标签
    score = prediction == required
    return {"score": int(score), "key": "correct_label"}

eval_config = RunEvalConfig(
    custom_evaluators=[correct_label],  # 自定义评估器
    #evaluators参数配置现有的
)

dataset_name = "Hotel Reviews Dataset"
client = Client()

client.run_on_dataset(
    dataset_name=dataset_name,
    llm_or_chain_factory=chain,
    evaluation=eval_config,
    verbose=True,
    project_name="Hotel Reviews Project",
    project_metadata={"version": "1.0.0"},
)

在这里插入图片描述

在这里插入图片描述

可以发现输出结果跟预期不一致(期望输出“差评”,实际输出“差评。” ),因此需要prompt优化

请分析下面的用户评论,并确定它是积极还是消极。如果是积极,只需要回答“好评”两字,如果是消极,只需要回答“差评”两字。

4.查看评估结果

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain.smith import RunEvalConfig, run_on_dataset
from langsmith.evaluation import EvaluationResult, run_evaluator
from langsmith import Client

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
prompt = ChatPromptTemplate.from_messages([
    ("system","请分析下面的用户评论,并确定它是积极还是消极。如果是积极,只需要回答“好评”两字,如果是消极,只需要回答“差评”两字。"),
    ("human","{comment}"),
])
chain = prompt | llm | StrOutputParser()

@run_evaluator
def correct_label(run, example) -> EvaluationResult:
    prediction = run.outputs.get("output") or ""    #调用链返回的预测值
    required = example.outputs.get("reviews") or "" #数据集中的标签
    score = prediction == required
    return {"score": int(score), "key": "correct_label"}

eval_config = RunEvalConfig(
    custom_evaluators=[correct_label],  # 自定义评估器
)

dataset_name = "Hotel Reviews Dataset"
client = Client()

client.run_on_dataset(
    dataset_name=dataset_name,
    llm_or_chain_factory=chain,
    evaluation=eval_config,
    verbose=True,
    project_name="Hotel Reviews Project 02",
    project_metadata={"version": "1.0.0"},
)

注意:如果第二次对同一个数据集评估,会出现session重复问题,修改project_name即可

在这里插入图片描述

(四)LangSmith在微调中的作用

LLM 学习新知识有两种主要方式:权重更新和提示。权重更新可以通过预训练或微调来实现,而提示则可以通过检索增强生成(RAG)等方式来实现。模型的权重类似于长期记忆,而提示则类似于短期记忆。

如何系统的去学习AI大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~

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

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

全套 《LLM大模型入门+进阶学习资源包↓↓↓ 获取~

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

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

在这里插入图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

在这里插入图片描述

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

学习计划:

  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

在这里插入图片描述

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值