编程 LangChain快速上手

2025-03-09 22:30:10 +0800 CST views 1267

LangChain快速上手

前言

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

安装与环境配置

系统需求

  • Python 版本:>=3.9
  • 推荐使用虚拟环境(如 venv 或 conda)以便隔离依赖。

安装 LangChain

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

  1. 帐号注册成功后,进入到控制台找到 "百度智能云千帆 AppBuilder",点击进入 AppBuilder 页面。

  2. 点击 密钥管理 选项,进入 “我的应用” 页面。

  3. 点击 创建应用 按钮,填写应用的名称和描述完成创建。

  4. 在应用列表中找到刚刚创建的应用,将 API keysecret key 复制保存,后续会用到。

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

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

⚠️ 注意: 为了方便,我将其他依赖也安装了。


第一个 LangChain 例子:调用 千帆 API

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

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。

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应用框架的助建工具。

其他模块概览

Tools

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

Memory

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

Agents

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

模型 I/O

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

回调 (callbacks)

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


总结

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

复制全文 生成海报 编程 人工智能 开发工具 Python API

推荐文章

使用 `nohup` 命令的概述及案例
2024-11-18 08:18:36 +0800 CST
五个有趣且实用的Python实例
2024-11-19 07:32:35 +0800 CST
jQuery中向DOM添加元素的多种方法
2024-11-18 23:19:46 +0800 CST
Linux 常用进程命令介绍
2024-11-19 05:06:44 +0800 CST
Python 获取网络时间和本地时间
2024-11-18 21:53:35 +0800 CST
乐观锁和悲观锁,如何区分?
2024-11-19 09:36:53 +0800 CST
2024年微信小程序开发价格概览
2024-11-19 06:40:52 +0800 CST
Vue3 结合 Driver.js 实现新手指引
2024-11-18 19:30:14 +0800 CST
Vue3中如何处理路由和导航?
2024-11-18 16:56:14 +0800 CST
Rust async/await 异步运行时
2024-11-18 19:04:17 +0800 CST
CSS实现亚克力和磨砂玻璃效果
2024-11-18 01:21:20 +0800 CST
黑客帝国代码雨效果
2024-11-19 01:49:31 +0800 CST
Go 协程上下文切换的代价
2024-11-19 09:32:28 +0800 CST
Go 中的单例模式
2024-11-17 21:23:29 +0800 CST
Plyr.js 播放器介绍
2024-11-18 12:39:35 +0800 CST
goctl 技术系列 - Go 模板入门
2024-11-19 04:12:13 +0800 CST
SQL常用优化的技巧
2024-11-18 15:56:06 +0800 CST
120个实用CSS技巧汇总合集
2025-06-23 13:19:55 +0800 CST
JavaScript 的模板字符串
2024-11-18 22:44:09 +0800 CST
Vue3中如何实现响应式数据?
2024-11-18 10:15:48 +0800 CST
api接口怎么对接
2024-11-19 09:42:47 +0800 CST
linux设置开机自启动
2024-11-17 05:09:12 +0800 CST
介绍Vue3的Tree Shaking是什么?
2024-11-18 20:37:41 +0800 CST
MySQL死锁 - 更新插入导致死锁
2024-11-19 05:53:50 +0800 CST
html一个包含iPhoneX和MacBook模拟器
2024-11-19 08:03:47 +0800 CST
Golang实现的交互Shell
2024-11-19 04:05:20 +0800 CST
程序员茄子在线接单