百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

LangChain快速上手

liuian 2025-03-02 18:03 9 浏览

前言

本章节将带你快速搭建一个 LangChain 开发环境,并完成你的第一个应用程序。通过简单示例,你将熟悉 LangChain 的基础操作流程。

安装与环境配置

  1. 系统需求

? Python 版本:>=3.9

? 推荐使用虚拟环境(如 venv 或 conda)以便隔离依赖。

  1. 安装 LangChain

因为openai国内挂代理访问比较慢,我为了图方便也是为了方便学习我使用百度的千帆模型来演示,所以在安装langchain之前,你最好去注册一个千帆的帐号,具体操作如下图所示:

帐号注册成功后,进入到控制台找到”百度智能云千帆AppBuilder“,鼠标点击进入到AppBuilder页面

AppBuilder页面如下所示:

点击密钥管理选项,进入到“我的应用页面”,如下所示:

点击创建应用按钮,填写对应用的名称和描述完成应用的创建,然后在应用列表中,找到刚刚创建的应用,将API key和secret key复制保存起来,后续会用到。

在申请完千帆模型所需的key之后,我们可以运行以下命令安装最新版本的 LangChain 和相关依赖:

Bash
mkdir langchain
cd langchain/
python3 -m venv .venv
source .venv/bin/activate
pip install langchain-core langgraph>0.2.27 langchain langchain_community qianfan

??注意: 为了图方便我将其他依赖也安装了

  1. 第一个 LangChain例子:调用 千帆 API
Bash
import os
from langchain_community.llms.baidu_qianfan_endpoint import QianfanLLMEndpoint

os.environ["QIANFAN_AK"] = "千帆apikey"
os.environ["QIANFAN_SK"] = "千帆secret key"

llm = QianfanLLMEndpoint(temperature=0.9)

text = "百度是一家什么样的公司?"

print(llm.invoke(text))

运行结果如下图所示:

以上代码设置了API key,初始化了QianfanLLMEndpoint对象,并调用了invoke方法完成对百度这家公司的评价。

LangChain 的基本模块概览

LangChain 提供了一系列模块化工具,便于开发复杂的应用程序。在后续章节中会详细讲解各模块的使用,这里提供一个概览

  1. Prompt Templates(提示词模板)

提示模板用于构建动态提示,适用于需要变量插值的场景。示例代码如下所示:

from langchain.prompts import PromptTemplate


template = "请使用{word_count}个词描述langchain。"

prompt = PromptTemplate(input_variables=["word_count"], template=template)

print(prompt.format(word_count=10))

运行结果如下所示:

(.venv) ?  python prompt.py
请使用10个词描述langchain。
  1. Chains (链)

Chains 用于串联多个步骤,比如将用户输入传递到模型,然后将模型输出传递到另一个处理步骤。类似于Linux的管道,即将前面的结果作为条件传给下一个程序来处理。

import os
from langchain.chains.llm import LLMChain
from langchain.prompts import PromptTemplate
from langchain_community.llms import QianfanLLMEndpoint

os.environ["QIANFAN_AK"] = "千帆apikey"
os.environ["QIANFAN_SK"] = "千帆secret key"

template = "用一句话总结以下内容: {text}"

prompt = PromptTemplate(input_variables=['text'], template=template)

llm = QianfanLLMEndpoint(temperature=0.9)

chain = LLMChain(llm=llm, prompt=prompt)

response = chain.run("LangChain 是一个帮助构建 AI 应用的框架。")
print(response)

运行结果如下所示:

(.venv) ?  python chains.py
[WARNING][2024-12-15 01:40:49.177] redis_rate_limiter.py:21 [t:8428670784]: No redis installed, RedisRateLimiter unavailable. Ignore this warning if you don't need to use qianfan SDK in distribution environment
/langchain/chains.py:15: LangChainDeprecationWarning: The class `LLMChain` was deprecated in LangChain 0.1.17 and will be removed in 1.0. Use :meth:`~RunnableSequence, e.g., `prompt | llm`` instead.
  chain = LLMChain(llm=llm, prompt=prompt)
/langchain/chains.py:17: LangChainDeprecationWarning: The method `Chain.run` was deprecated in langchain 0.1.0 and will be removed in 1.0. Use :meth:`~invoke` instead.
  response = chain.run("LangChain 是一个帮助构建 AI 应用的框架。")
[INFO][2024-12-15 01:40:49.207] oauth.py:277 [t:8428670784]: trying to refresh token for ak `2ctEom***`
[INFO][2024-12-15 01:40:49.385] oauth.py:304 [t:8428670784]: successfully refresh token
LangChain是一个AI应用框架的助建工具。
  1. Tools

工具允许模型访问外部数据源或执行特定功能,例如调用搜索引擎、数据库或 API。

  1. Memory

Memory 提供对话的上下文记忆功能,允许在多轮对话中保留历史记录。

  1. Agents

代理能够动态决策,结合提示、工具和记忆实现复杂的多工具交互。

  1. 模型I/O

是langchain与大模型的接口,负责处理输入和数据输出,以及各种大模型的交互。

  1. 回调 (callbacks)

记录和传输链的中间步骤。

今天的内容到此就结束了,通过本章节,你已经成功安装 LangChain,运行了一个基本示例,并初步了解了核心模块的功能。接下来可以深入探索各个模块的详细应用。

如果你觉得这篇文件对你有所帮助的话,还请您转发分享一下,让更多的编程爱好者看到!!!

相关推荐

那些Java架构师必知必会的技术

Java基础#Java对象的内存布局MapStruct解了对象映射的毒周末我把HashMap源码又过了一遍Java7和Java8中的ConcurrentHashMap原理解析Java中自定...

Java内存泄漏最全详解(6大原因及解决方案)

大家好,我是mikechen。内存泄漏是经常出现的线上故障,也是大厂面试经常考察的,下面我就全面来详解内存泄漏以及解决方案@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题...

都说Feign是RPC,没有侵入性,为什么我的代码越来越像 C++

1.概览随着SpringCloud的流行性,Feign已经成为RPC的事实标准,由于其构建与Http协议之上,对请求和返回值缺少规范约束,在日常开发过程中经常由于设计不当对系统造成一...

面试题系列-java后端面试题List 和 Set 的区别

List和Set的区别List,Set都是继承自Collection接口List特点:元素有放入顺序,元素可重复,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(...

一直不理解为什么在重写equals方法时都要重写hashCode方法

为什么在重写equals方法时都要重写hashCode方法呢?首先jdk的要求是这样的,equals与hashcode间的关系:1、如果两个对象相同(即用equals比较返回true),那么它们的ha...

翻了ConcurrentHashMap1.7 和1.8的源码,我总结了它们的主要区别

ConcurrentHashMap思考:HashTable是线程安全的,为什么不推荐使用?HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次...

10 个经典的 Java 集合面试题,看你能否答得上来?

来自:evget.com/article/2014/11/27/21869.html这里有10个经典的Java面试题,也为大家列出了答案。这是Java开发人员面试经常容易遇到的问题,相信你了解和掌握之...

MyBatis3.5.11-从入门到高阶

一.课程介绍MyBatis概述MyBatis基础应用MyBatis高级MyBatis进阶二.MyBatis概述1、为什么需要MyBatis在我们程序中,运行时期产生的数据都是存放在内存中的,那么在内存...

灵魂拷问:如何检查 Java 数组中是否包含某个值?

作者|沉默王二责编|Elle在逛programcreek的时候,我发现了一些专注细节但价值连城的主题。比如说:如何检查Java数组中是否包含某个值?像这类灵魂拷问的主题,非常值得深入地研...

Java后端学习路线是什么?

关于Java后端(SpringBoot为主)学习路线:一、Java基础阶段编程语言基础掌握基本数据类型(如int、double、char等)、变量、常量的定义和使用。理解运算符(算术、关...

Mybatis配置文件XML全貌详解,再不懂我也没招了

一、为什么要使用配置文件试想,如果没有配置文件,我们的应用程序将只能沿着固定的姿态运行,几乎不能做任何动态的调整,那么这不是一套完美的设计,因为我们希望拥有更宽更灵活的操作空间和更多的兼容度,同时也能...

软件性能调优全攻略:从瓶颈定位到工具应用

性能调优是软件测试中的重要环节,旨在提高系统的响应时间、吞吐量、并发能力、资源利用率,并降低系统崩溃或卡顿的风险。通常,性能调优涉及发现性能瓶颈、分析问题根因、优化代码和系统配置等步骤,调优之前需要先...

你还在使用Guava的Lists.newArrayList()吗

Guava说起Guava,做Java开发的应该没人不知道吧,毕竟“google出品,必属精品”。虽然应该没有Spring那样让Javaer无法避开,但是其中很多工具类的封装还是让人欲罢不能。而我们今天...

JDK成长记7:3张图搞懂HashMap底层原理

HashMap基本原理和优缺点HashMap基本原理和优缺点一句话讲,HashMap底层数据结构,JDK1.7数组+单向链表、JDK1.8数组+单向链表+红黑树。HashMap的3个底层原理Hash...

如何深度理解mybatis?

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...