【AI系列】通过 LangChain 加载大模型

【AI系列】通过 LangChain 加载大模型
www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

什么是 LangChain

LangChain 是一个用于开发由大型语言模型 (LLMs) 驱动的应用程序的框架。

为什么是 LangChain

因为 LLM 的 API 只是提供了一个非常基础的调用方式,当我们需要构建一个复杂的 Chat Bot 时,就需要考虑如何保存聊天的上下文、网络搜索、加载 PDF 等工程问题, 而LangChain 提供了一种解决方案,让开发者可以专注于业务逻辑的开发。

足够的流行度和认可度,目前已经在 Github 获得 83k star,并且其上升速度非常恐怖:

而 LangChain.js 并不是 Python 版本的套壳,而是一个完整的团队从 0 开始构建的生态,足以看出官方对 JavaScript 生态的重视:

基于此,在下将以 LangChain.js 为例,去使用大模型领域最流行的框架去构建应用,感受大模型的魅力。

支持的环境

  • Node.js (ESM and CommonJS) - 18.x, 19.x, 20.x
  • Cloudflare Workers Cloudflare
  • Vercel / Next.js (Browser, Serverless and Edge functions)
  • Supabase Edge Functions Supabase
  • Browser
  • Deno

安装

要安装这个包,你可以使用 npm 或 yarn:

yarn add langchain

安装环境

node >= 18.x

什么是 LCEL (LangChain Expression Language)

LangChain Expression Language is a way to create arbitrary custom chains. It is built on the [Runnable]protocol.

LCEL 无论是 python 还是 js 版本都在主推的新设计,能创建自定义的链,它是基于 [Runnable]协议构建的。

通过 LangChain 加载大模型

本地大模型

在 mac 平台下,推荐用 [ollama],使用简单,下载好模型后,点击这个 app,就会自动在 [http://localhost:11434] 起一个 llm 的服务。

安装 llama3 模型

可以通过 ollama list 查看所有的模型,然后通过 ollama pull 安装模型。

# 模型列表参考:https://ollama.com/library
ollama pull [model] 

目前下载了一个 ollama3 的模型

www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

当我们在本地启动了一个模型后,我们就可以通过 LangChain 来调用这个模型了。

import { Ollama } from '@langchain/community/llms/ollama';

const ollama = new Ollama({
  baseUrl: "http://localhost:11434", 
  model: "llama3", 
});


ollama.invoke("用中文讲一个笑话").then((res) => {
  console.log('res', res);
});


输出结果 👇

www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

云端大模型

OpenAI

在调用 OpenAI 之前需要先申请一个 API Key,然后将 API Key 设置为环境变量 OPENAI_API_KEY

然后通过 langchain 的 OpenAI 类来调用 OpenAI 的模型。

调用之前需要先 安装 @langchain/openai 包:

// 安装 openai 包
yarn add @langchain/openai

import { OpenAI } from "@langchain/openai";

const model = new OpenAI({
  model: "gpt-3.5-turbo-instruct", // Defaults to "gpt-3.5-turbo-instruct" if no model provided.
  temperature: 0.9,
  apiKey: "YOUR-API-KEY", // In Node.js defaults to process.env.OPENAI_API_KEY
});
const res = await model.invoke(
  "What would be a good company name a company that makes colorful socks?"
);
console.log({ res });

百度大模型

因为 OpenAI 在国内比较难访问,所以我们可以使用第三方大模型来避规访问慢的问题,这里以百度的大模型为例。

使用该嵌入模型需要 API 密钥。您可以通过 [console.bce.baidu.com/qianfan/ais…]创建应用注册获取 API_KEY 和 SECRET_KEY。

请将获取的API密钥设置为名为 BAIDU_API_KEY 的环境变量,并将您的密钥设置为名为BAIDU_SECRET_KEY 的环境变量。

// 您需要安装该 @langchain/community 包:
yarn add @langchain/community

import { ChatBaiduWenxin } from "@langchain/community/chat_models/baiduwenxin";
import { HumanMessage } from "@langchain/core/messages";
import 'dotenv/config';

const ernieTurbo = new ChatBaiduWenxin({
    modelName: process.env.BAIDU_MODEL_NAME,
});

const messages = [new HumanMessage("讲一个笑话")];

const res = await ernieTurbo.invoke(messages);

console.log(res);

www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

⚠️注意: 如果出现 API 调用次数有所限制,需要在 [console.bce.baidu.com/qianfan/ais…] 开通对应的模型服务。

LCEL 有什么优势

LCEL 从底层设计的目标就是支持 从原型到生产 完整流程不需要修改任何代码,也就是我们在写的任何原型代码不需要太多的改变就能支持生产级别的各种特性(比如并行、steaming 等),具体来说会有这些优势:

  • 并行: 只要是整个 chain 中有可以并行的步骤就会自动的并行,来减少使用时的延迟。
  • 自动的重试和 fallback: 大部分 chain 的组成部分都有自动的重试(比如因为网络原因的失败)和回退机制,来解决很多请求的出错问题。
  • 对 chain 中间结果的访问,在旧的写法中很难访问中间的结果,而 LCEL 中可以方便的通过访问中间结果来进行调试和记录。
  • LCEL 会自动支持 LangSimith 进行可视化和记录。

一条 Chain 组成的每个模块都是继承自 Runnable 这个接口,而一条 Chain 也是继承自这个接口,所以一条 Chain 也可以很自然的成为另一个 Chain 的一个模块。

任意的 Runnable 对象,都有几个常用的标准调用接口:

  • invoke 基础调用
  • batch 批量调用
  • stream 流式返回结果
  • streamLog 流式返回结果,并返回中间的运行结果

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

👉AGI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉AGI大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

👉AGI大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型
www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

www.zeeklog.com  - 【AI系列】通过 LangChain 加载大模型

Read more

前端防范 XSS(跨站脚本攻击)

目录 一、防范措施 1.layui util  核心转义的特殊字符 示例 2.js-xss.js库 安装 1. Node.js 环境(npm/yarn) 2. 浏览器环境 核心 API 基础使用 1. 基础过滤(默认规则) 2. 自定义过滤规则 (1)允许特定标签 (2)允许特定属性 (3)自定义标签处理 (4)自定义属性处理 (5)转义特定字符 常见场景示例 1. 过滤用户输入的评论内容 2. 允许特定富文本标签(如富文本编辑器内容) 注意事项 更多配置 XSS(跨站脚本攻击)是一种常见的网络攻击手段,它允许攻击者将恶意脚本注入到其他用户的浏览器中。

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例)

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例) 前端开发中最令人头疼的莫过于那些难以定位的UI问题——元素错位、样式冲突、响应式失效...传统调试方式往往需要反复修改代码、刷新页面、检查元素。现在,通过Cursor编辑器集成的Codex功能,你可以直接用截图交互快速定位和修复这些问题。本文将带你从零开始,掌握这套革命性的调试工作流。 1. 环境准备与基础配置 在开始之前,确保你已经具备以下环境: * Cursor编辑器最新版(v2.5+) * Node.js 18.x及以上版本 * React 18项目(本文以Chakra UI 2.x为例) 首先在Cursor中安装Codex插件: 1. 点击左侧扩展图标 2. 搜索"Codex"并安装 3. 登录你的OpenAI账户(需要ChatGPT Plus订阅) 关键配置项: // 在项目根目录创建.