LangChain入门

server/2024/11/24 4:43:35/

LangChain入门 | 豆包MarsCode AI 刷题

本篇文章为《LangChain 实战课》前三节课的总结性文章,主要内容包含内容梳理与总结,学习记录,以及一些思考。

01开篇词|带你亲证AI应用开发的“奇点”时刻

内容

这篇文章介绍了Lang Chain是什么,特别地,提出了LangChain的六大组件,模型、提示模板、数据检索、记忆、链、代理。文章中展示了LangChain的两个简单应用:(1)使用LangChain写情人节玫瑰宣传标语(2)使用LangChain读图,为图片生成文案。

遇到的问题

这篇文章的代码都要使用OPENAI的API KEY,由于我没有一个正规的OPENAI 账号,无法申请API KEY,因此这些代码我都没有成功运行。为了初步尝试大模型API的调用, 我根据项目中README.md文件的指导,去注册了豆包大模型的账户,并且申请了API KEY——api-key-20241106232444,

在这里插入图片描述

并且运行了demo文件,代码如下:

from volcenginesdkarkruntime import Ark
import os
client = Ark(base_url = os.environ["OPENAI_BASE_URL"],api_key = os.environ["OPENAI_API_KEY"],
)# Non-streaming:
print("----- standard request -----")
completion = client.chat.completions.create(model=os.environ["LLM_MODELEND"],messages = [{"role": "system", "content": "你是一个人工智能专家"},{"role": "user", "content": "使用100个字讲一讲Transformer?"},],
)
print(completion.choices[0].message.content)# Streaming:
print("----- streaming request -----")
stream = client.chat.completions.create(model=os.environ["LLM_MODELEND"],messages = [{"role": "system", "content": "人工智能专家"},{"role": "user", "content": "使用50个字讲一讲什么是聚类"},],stream=True
)
# 遍历流中的每个分块
for chunk in stream:# 如果分块没有选择项,则跳过当前循环迭代if not chunk.choices:continue# 打印分块的第一个选择项的增量内容,并在末尾添加空字符以避免换行print(chunk.choices[0].delta.content, end="")
# 循环结束后,打印一个空行
print()

运行结果:

在这里插入图片描述

02LangChain系统安装和快速入门

内容

这篇文章介绍了两种模型,Chat ModelText Model,并且给出了调用两个模型的两个demo,通过demo,介绍了两种模型在request和response时的一些常用参数。最后,文中给出了使用LangChian调用两种模型的实例。

遇到的问题

(1)LLMs、Text Model和Chat Model三者的关系

文章并没有介绍着三者的关系,在查阅资料后,我明白了:

  • LLMs 是底层核心

    • LLM 是一种底层的、广义的技术,可以支持多种语言任务。
    • Text 模型和 Chat 模型都是 LLM 的具体应用。
  • Text 模型 vs. Chat 模型

    • Text 模型专注于单次任务处理,面向生成和分析任务,不具备多轮对话能力。
    • Chat 模型专注于对话交互,强化了对上下文的理解和对人类语言意图的捕捉。
(2)使用已经被OPEN AI被淘汰的API

在这一次的demo中,我没有注意到注释的提醒,这份代码只做示意,无法运行,因此卡在这里好几天,一直想把代码跑通。

在这里插入图片描述

这给我提了一个打醒,要关注开源代码顶部的一些注释,有时候代码没有达到预期效果,可能就是没有注意这些注释的提示。

03用LangChain快速构建基于“易速鲜花”本地知识库的智能问答系统

内容

这篇文章详细介绍了构建一个基于本地知识和大模型的智能问答系统的步骤。文中给出了两张概括性图片,这里引用一下:

  • 基于LangChain框架实现一个知识库文档问答系统的整体框架
    在这里插入图片描述

  • 系统的数据处理管道

在这里插入图片描述

对于构建一般智能问答系统的具体步骤,我自己进行一个简单的总结:

  1. 数据收集:从本地或者互联网中收集数据;
  2. 数据处理:对数据进行清洗,之后分片,为存储做准备;
  3. 数据存储:选用合适的向量数据库,将分片数据“嵌入”向量空间
  4. 构建RetrievalQA 链:根据用户提问,在向量数据库中检索相似或相近的一些分片数据,将这些分片数据和用户提问作为对大模型的提问,让大模型来回答问题
  5. 渲染前端页面:将大模型返回的结果通过一定的Web架构展示给用户。

问题与优化:

代码能否进行优化,使得对数据分片进行持久化,第一次运行后,后续运行不需要进行文本分片和储存,而可以直接从数据库中检索(Qdrant数据库的持久化问题),打算等学完所有课程后进行进一步探索。

知识积累

1.使用命令行查看操作系统类型

  • Linux:
uname -a
  • windows
systeminfo

2.操作Linux系统上的环境变量

  • 查看特定环境变量
echo $变量名
  • 为当前会话设置临时环境变量
export 变量名="变量值"
  • 设置永久环境变量

~/.bashrc 文件中添加以下行:

export MY_VAR="some_value"

然后,运行 source ~/.bashrc 来使更改生效。

资源整理

  • [LangChainGitHub社区](GitHub - langchain-ai/langchain:🦜🔗构建上下文感知推理应用程序)
  • [LangChain的pythonAPI参考](LangChain Python API 参考 — 🦜🔗 LangChain 文档)
  • [OPENAI API参考](API Reference - OpenAI API)

http://www.ppmy.cn/server/144435.html

相关文章

知从科技加入SOAFEE组织,携手推动汽车软件创新

在汽车行业迈向智能化、网联化的关键时期,知从科技受ARM邀请正式加入 SOAFEE(Scalable Open Architecture for Embedded Edge - 面向嵌入式边缘的可扩展开放架构)组织,这一战略举措标志着知从科技在全球汽车软件领域的进一步扩展和…

MongoDB主备副本集方案:两台服务器使用非对称部署的方式实现高可用与容灾备份

昨天(2024/11/18)碰到这么个问题,因为要控制成本,公司只愿意出两台服务器(很小的盒子)部署业务,采用传统的主备模式。这其中就包括Mongodb数据库,最稳固的方法当然是采用官方推荐的最低3台。但没…

网络协议之FTP

一、背景介绍 FTP,全称为文件传输协议(File Transfer Protocol),是一种用于在网络上进行文件传输的协议。它是互联网上最早出现的文件传输标准之一,使用广泛且成熟稳定。FTP协议通过客户端和服务器之间的交互&#xf…

.net6 使用 FreeSpire.XLS 实现 excel 转 pdf - docker 部署

FreeSpire.XLS && Aspose.Cells包都可以实现。实现过程中发现如下问题: 本地测试通过, docker部署服务器后报错: The type initializer for Spire.Xls.Core.Spreadsheet.XlsPageSetupBase threw an exception. 由于缺少依赖&#xf…

区块链安全常见的攻击——不安全的 Delegatecall 漏洞(Unsafe Delegatecall Vulnerability)【3】

区块链安全常见的攻击合约和简单复现,附带详细分析——不安全的 Delegatecall 漏洞(Unsafe Delegatecall Vulnerability)【3】 1、不安全的 Delegatecall 漏洞(Unsafe Delegatecall Vulnerability) 1.1 漏洞合约 co…

aws配置飞书告警通知

serverless 创建应用 在 SAR 中搜索 Feishu-notifier 查到本应用(注意因为本项目会创建 EventBridge 到 SNS Publish 权限,按下图进行勾选 Eventbridge 规则 cloudwatch 告警 {"detail-type": ["CloudWatch Alarm State Change"],…

Unity 事件处理的几种方式

//Unity 事件处理的几种方式 //1 通过编辑器绑定方式 //2:addlistener //3:实现接口 //4:自定义框架 using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;nam…

【人工智能】深入理解PyTorch:从0开始完整教程!全文注解

在当今人工智能和深度学习的浪潮中,PyTorch作为一个灵活且强大的深度学习框架,正受到越来越多开发者和研究者的青睐。无论你是初学者还是经验丰富的开发者,这篇文章将带你深入理解PyTorch,从基础概念到高级应用,帮助你…