AI(学习笔记第二课) 使用langchain进行AI开发
文章目录
- AI(学习笔记第二课) 使用langchain进行AI开发
- 学习内容:
- 1. 使用背景
- 2.创建`python`(`pycharm community版`)开发环境并连接`deepseek`
- 2.1 创建`python`(`pycharm community版`)开发环境
- 2.2 创建`python`工程
- 2.3 写入初始`python`的`AI`代码
- 2.4 使用`pycharm`导入必要的包进入`venv`
- 2.5 使用`langchain`导入必要的包
- 2.6 执行`AI`的`langchain`代码
- 3. 结合`ollama`构造`知识向量库`并进行`RAG`
- 3.1 构建本地的`ollama`服务
- 3.1.1 构建`ollama`的`LLM`大模型完全通过`deepseek.com`就可以查询到。
- 3.1.2 在 Windows 上安装 Ollama 的步骤如下:
- 3.1.3 验证`ollama`的启动情况
- 3.2 使用`langchain`测试本地的`ollama`服务
- 3.2.1 测试代码
- 3.2.2 执行代码
- 3.3 进行`RAG Retrieval Argumented`测试
- 3.3.1 知之为知之,不知`AI`知
- 3.3.2 测试代码
- 3.3.3 执行代码
AI(学习笔记第二课) 使用langchain进行AI开发
- 创建
python
开发环境(pycharm community版
)并连接deepseek
- 结合
ollama
构造知识向量库
学习内容:
- 创建
python
开发环境并连接deepseek
- 结合
ollama
构造知识向量库
,进行Retrieval-Augmented Generation (RAG
)
1. 使用背景
pycharm
已经是非常主流的python IDE
,在开发工作是经常使用,这里通过pycharm
进行python
的AI
开发。pycharm community
版是开源的开发IDE
,所以在开发中选择使用pycharm
。ollama
也是AI
开发的开源大模型,可以从ollama
得到很多的大模型,这里大模型采用ollama
。知识向量库
是RAG Retrieval-Augmented Generation
的基础,可以使用知识向量库
给AI
提供公司内部的数据文件,让其可以拥有AI
的分析基础数据。langchain
是一个AI
开发平台,使用langchain
,能够简化和规范AI
开发的流程。
2.创建python
(pycharm community版
)开发环境并连接deepseek
2.1 创建python
(pycharm community版
)开发环境
这里在windows
上安装,所以选择windows
版。
- pycharm windows
- 选择
pycharm community版
2.2 创建python
工程
这里,默认使用python venv
环境,进行虚拟环境的设定。之后创建src
代码文件夹。
同时,创建langchain_deepseek.py
文件进行AI
的入门测试。
2.3 写入初始python
的AI
代码
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema import HumanMessage# 配置 DeepSeek API(deepseek 兼容 OpenAI)
llm = ChatOpenAI(api_key = 'your own deepseek key',base_url = 'https://api.deepseek.com/v1',model='deepseek-chat'# 或其他 DeepSeek 模型
)# 直接调用
response = llm.invoke("你好,DeepSeek!")
print(response.content)# 使用 PromptTemplate
prompt = ChatPromptTemplate.from_messages([("system", "你是一个专业的AI助手"),("user", "{question}")
])
chain = prompt | llm
result = chain.invoke({"question": '请解释机器学习的基本概念'})
print(result.content)
- 这里
langchain
没有直接专用deepseek
的包,所以使用langchain_openai
。 - 这里,调用
ChatPromptTemplate.from_messages
的时候,有两种prompt
。system
--系统提示词一般指在整个AI
应用中不变化的部分,作为系统提示词。user
--用户提示词一般指在整个AI
应用中根据用户提示的,变化的提示词。
2.4 使用pycharm
导入必要的包进入venv
2.5 使用langchain
导入必要的包
python -m pip install langchain-openai langchain langchain-core
2.6 执行AI
的langchain
代码
可以看出,这里已经采用langchain
连接上deepseek
进行AI
对话了。
3. 结合ollama
构造知识向量库
并进行RAG
3.1 构建本地的ollama
服务
3.1.1 构建ollama
的LLM
大模型完全通过deepseek.com
就可以查询到。
- http://deepseek.com
如何在windows上安装ollama
使用自然语言进行AI
对话
3.1.2 在 Windows 上安装 Ollama 的步骤如下:
-
- 下载 Ollama
- 访问 Ollama 的官方 GitHub 发布页面:Ollama Releases
- 找到最新的 Windows 版本(通常是
.exe
安装文件),例如OllamaSetup.exe
,然后下载。
-
- 运行安装程序
- 双击下载的
OllamaSetup.exe
文件。 - 按照安装向导的提示完成安装(通常只需点击“下一步”即可)。
-
- 验证安装
- 安装完成后,Ollama 应该会自动启动。
- 打开 命令提示符(CMD) 或 PowerShell,运行以下命令检查是否安装成功:
如果返回版本号,说明安装成功。**ollama --version
-
- 运行 Ollama
- 在终端运行:
这会下载并运行ollama run llama2
llama2
模型(首次运行需要下载模型,可能需要一些时间)。
-
- (可选)设置环境变量
- 如果
ollama
命令无法识别,可能需要手动将 Ollama 的安装路径添加到系统环境变量PATH
中:- 右键“此电脑” > “属性” > “高级系统设置” > “环境变量”。
- 在
PATH
变量中添加 Ollama 的安装路径(默认可能是C:\Program Files\Ollama
)。
-
- 更新 Ollama
- 如果有新版本,可以重新下载安装包覆盖安装,或运行:
ollama update
-
常见问题
权限问题:如果安装失败,尝试以管理员身份运行安装程序。
防火墙阻止:确保 Ollama 可以访问网络(下载模型需要联网)。
GPU 支持:Ollama 默认使用 CPU,如需 GPU 加速,确保已安装 NVIDIA 驱动并支持 CUDA。
现在你应该可以在 Windows 上使用 Ollama 运行各种大语言模型了! 🎉
3.1.3 验证ollama
的启动情况
这里,使用mac
机器进行安装,IP
为192.168.2.208
。http://192.168.2.208:11434
出现下图,就表示正常已经LLM
大模型在本地进行正常动作了。
3.2 使用langchain
测试本地的ollama
服务
3.2.1 测试代码
from langchain_community.llms import Ollama
from langchain.chains import LLMChain
from langchain.prompts import ChatPromptTemplate
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)# 初始化Ollama模型
llm = Ollama(model="deepseek-r1:1.5b",base_url="http://192.168.2.208:11434")# 创建提示模板
prompt = ChatPromptTemplate.from_template("用简单的语言解释以下概念: {concept}"
)# 创建链
chain = LLMChain(llm=llm, prompt=prompt)# 运行链
concept = "llamaIndex"
result = chain.run(concept=concept)
print(result)
注意,同时安装必要的python package
3.2.2 执行代码
3.3 进行RAG Retrieval Argumented
测试
3.3.1 知之为知之,不知AI
知
使用LangChain构建向量数据库与Ollama集成@deepseek.com
,问问AI
会得到你想要的答案。
为什么不用自己构建的ollama
,因为自己构建的本地机器性能太差,大模型查询一下耗时太长。
3.3.2 测试代码
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)
from langchain.document_loaders.pdf import PyMuPDFLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chromafrom langchain.embeddings import OllamaEmbeddings
from langchain.vectorstores import Chroma
from langchain.embeddings import OllamaEmbeddingsfrom langchain.llms import Ollama
from langchain.chains import RetrievalQAtry:# 创建文档loader,这里使用pdf loader# langchain提供了大量的loaderloader = PyMuPDFLoader(file_path="../test_pdf/test.pdf",mode="single",pages_delimiter="")documents = loader.load()# 对文档进行分割text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=200)splits = text_splitter.split_documents(documents)# 使用Ollama的嵌入模型embeddings = OllamaEmbeddings(model="llama2")# 创建向量数据库,文档指定为上面的分割结果splitsvectorstore = Chroma.from_documents(documents=splits,embedding=embeddings,persist_directory="../chroma/chroma_db")# 使用chat大模型,指定在retriever中回答提问(人类的自然语言)llm = Ollama(model="llama2")qa_chain = RetrievalQA.from_chain_type(llm,retriever=vectorstore.as_retriever(),chain_type="stuff" # 简单文档拼接方式)query = "文档中提到了哪些重要概念?"result = qa_chain({"query": query})print(result["result"])except Exception as e:error_msg = f"执行错误: {e}"print(error_msg) # Continue 会捕获控制台输出
3.3.3 执行代码
TODO(继续检证)
相关文章:

AI(学习笔记第二课) 使用langchain进行AI开发
文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…...

基于Jenkins的DevOps工程实践之Jenkins共享库
文章目录 前言Jenkins共享库结构1、共享库演示2、知识点补充3、实践使用共享库格式化输出日志4、groovy基础语法4.1、 什么是 Groovy?4.2、groovy特点4.3、运行方法4.4、标识符4.5、基本数据类型4.5.1、string类型4.5.2、list类型 4.6、函数使用4.7、正则表达式 5、…...

使用Qt自带的Qt assistant时如何添加需要查看的文档
当我们双击打开Qt Assistant时 左边目录栏只有自带的帮助文档,所以需要添加要查看的文档 点击左上角Edit中的Preferences,点击add 找到qdoc文件夹 全选里面的内容 点击Apply 点击ok 左边的目录栏就出现所有这个版本的Qt有关的文档啦...

基于网络爬虫+Spark+Hadoop等大数据和SpringBoot技术实现的的汽车行业大数据分析与可视化平台系统(源码+论文+PPT+部署文档教程等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...

日本IT|AI应用工程师主要工作内容以及职业前景解析
1. 主要工作内容 AI应用工程师是: 类别具体工作内容常见工具需求分析和业务部门沟通,明确「用AI解决什么问题」PowerPoint, Excel, Miro模型选型与微调用现成AI(如BERT、YOLOv8、Stable Diffusion等)做Fine-TuningPython (PyTor…...

Soft Mask(软遮罩)技术
一、概述 Soft Mask是一种技术或工具,主要用于实现平滑的边缘遮罩效果。它在不同的应用领域有不同的实现和定义 1.在Unity UI设计中 SoftMask是一款专为Unity设计的高级遮罩工具,它突破了传统Mask的限制,提供了更为灵活和细腻的UI遮罩解决方案…...

ESP32开发之freeRTOS的互斥量
什么是互斥量互斥量的应用场合互斥量的API函数基本代码结构互斥量使用举例递归锁递归锁举例总结什么是互斥量 在freeRTOS中,多个任务访问一块共享资源,会产生竞争现象。 比如马路上只有一个很早以前的电话亭,A、B都想要打电话,然后他们就开始打架了。但是如果A先进去了然…...

K8s 资源分类
K8s 资源分类图谱 内置资源的分类 1、工作负载相关: Pod:最小的部署单元,包含一个或多个容器。 Deployment:管理无状态应用的副本和滚动更新。 StatefulSet:适用于有状态应用(如数据库)&#…...
Python连接云端服务器:基于Paramiko库的实践与问题剖析
引言 在软件开发与运维场景中,借助Python连接云端服务器进行操作极为常见。Paramiko库作为实现SSHv2协议的有力工具,为Python与云端服务器的交互搭建了桥梁。本文将深入介绍使用Paramiko连接云端Linux服务器的方法,并剖析过程中可能遭遇的问…...

基于 Flask的深度学习模型部署服务端详解
基于 Flask 的深度学习模型部署服务端详解 在深度学习领域,训练出一个高精度的模型只是第一步,将其部署到生产环境中,为实际业务提供服务才是最终目标。本文将详细解析一个基于 Flask 和 PyTorch 的深度学习模型部署服务端代码,帮…...
洛谷 P1850 [NOIP 2016 提高组] 换教室
题目传送门 前言 终于自己想出概率期望 d p dp dp 的状态了,但是依旧没能相对转移方程。(招笑) 暴力 这题部分分和特殊情况分给的挺多的,所以先拿部分分。 一、思路 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距…...
C#生成二维码和条形码
C# 实现二维码和条形码生成:从入门到实战 文章目录 C# 实现二维码和条形码生成:从入门到实战一、引言二、准备工作2.1 开发环境搭建2.2 引入相关库 三、生成条形码3.1 条形码基本概念3.2 使用[ZXing.Net](https://ZXing.Net)生成条形码3.2.1 核心代码实现…...

【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
我们都知道,现在企业数字化转型那可是势在必行,数据库迁移这事儿就变得特别关键。金仓数据库的 KingbaseES(简称 KES),就给咱从 MySQL 往 KES 迁移数据库提供了一套超好用的方案。下面咱就讲下 咋用金仓数据库来完成这…...

多态(c++详细版)
一.多态 1.1 多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时多态(静态多态)主…...
内存泄漏系列专题分析之八:高通相机CamX内存泄漏内存占用分析--通用ION(dmabuf)内存拆解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理 这一篇我们开始讲: 内存泄漏系列专题分析之八:高通相机CamX内存泄漏&内存占用分析--通用ION(dmabuf)内…...
后端项目进度汇报
项目概述 本项目致力于构建一个先进的智能任务自动化平台。其核心技术是一套由大型语言模型(LLM)驱动的后端系统。该系统能够模拟一个多角色协作的团队,通过一系列精心设计或动态生成的处理阶段,来高效完成各种复杂任务ÿ…...

数据结构——二叉树和堆(万字,最详细)
目录 1.树 1.1 树的概念与结构 1.2 树相关的术语 1.3 树的表示法 2.二叉树 2.1 概念与结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树存储结构 2.3.1 顺序结构 2.3.2 实现顺序结构二叉树 2.3.2.1 堆的概念与结构 2.3.2. 2 堆的插入与删除数据…...

MATLAB基于格拉姆角场与2DCNN-BiGRU的轴承故障诊断模型
本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 目录 0 引言 1 格拉姆角场原理 2 2DCNN-BiGRU网络结构 3 应用实例 3.1 数据准备 3.2 格拉姆角场数据提取 3.3 网络模型搭建-重中之重 3.4 …...

正点原子IMX6U开发板移植Qt时出现乱码
移植Qt时出现乱码 1、前言2、问题3、总结 1、前言 记录一下正点原子IMX6U开发板移植Qt时出现乱码的解决方法,方便自己日后回顾,也可以给有需要的人提供帮助。 2、问题 用正点原子IMX6U开发板移植Qt时移植Qt后,sd卡里已经存储了Qt的各种库&…...

JVM局部变量表和操作数栈的内存布局
局部变量表和操作数栈 首先看一段Java源码 public class Add_Sample{public int add(int i, int j){int k 100;int result i j k;return result;}public static void main(String[] args){int result new Add_Sample().add(10,20);System.out.println(result);} }使用ja…...

Mockoon 使用教程
文章目录 一、简介二、模拟接口1、Get2、Post 一、简介 1、Mockoon 可以快速模拟API,无需远程部署,无需帐户,免费,跨平台且开源,适合离线环境。 2、支持get、post、put、delete等所有格式。 二、模拟接口 1、Get 左…...

使用 IDEA + Maven 搭建传统 Spring MVC 项目的详细步骤(非Spring Boot)
搭建Spring MVC项目 第一步:创建Maven项目第二步:配置pom.xml第三步:配置web.xml第四步:创建Spring配置文件第五步:创建控制器第六步:创建JSP视图第七步:配置Tomcat并运行目录结构常见问题解决与…...
以下是在 Ubuntu 上的几款PDF 阅读器,涵盖轻量级、功能丰富和特色工具:
默认工具:Evince(GNOME 文档查看器) 特点:Ubuntu 预装,轻量快速,支持基本标注和书签。 安装:已预装,或手动安装: sudo apt install evince功能全面:Okular&…...

3.2.3 掌握RDD转换算子 - 4. 按键归约算子 - reduceByKey()
在本节课中,我们深入学习了Spark RDD的reduceByKey()算子。reduceByKey()主要用于处理元素为(key, value)形式的RDD,能够将相同key的元素聚集并合并,最终返回一个新RDD,其元素类型与原RDD保持一致。通过案例演示,我们首…...
AI领域的MCP(Model-Centric Paradigm)
1. 什么是MCP(Model-Centric Paradigm)? MCP(Model-Centric Paradigm)是人工智能开发中的一种核心理念,强调以模型的优化与改进作为主要驱动因素来提升AI系统的表现。在MCP模式下,开发者专注于…...

Pandas比MySQL快?
知乎上有人问,处理百万级数据,Python列表、Pandas、Mysql哪个更快? Pands是Python中非常流行的数据处理库,拥有大量用户,所以拿它和Mysql对比也是情理之中。 实测来看,MySQL > Pandas > Python列表…...
模拟内存管理
文章目录 1. 实验六:内存管理2. 记录内存空间使用情况2.1 全局参数2.2 内存空间相关参数2.3 关键结构体定义2.4 内存系统初始化 3. 记录空闲分区3.1 采用位图的方式记录物理内存中的空闲帧3.1.1 记录方式3.1.2 举例分析 3.2 主要操作3.2.1 初始化空闲帧:…...
大模型调优方法与注意事项
大模型调优(Fine-tuning)是指对预训练的大型语言模型(如GPT、BERT、LLaMA等)进行二次训练,使其适应特定任务或领域的过程。以下是调优的关键步骤、方法和注意事项: 一、调优的核心步骤 任务定义与数据准备 …...

简易的考试系统设计(Web实验)
简易的考试系统设计(Web实验) 1.实验内容与设计思想(一)实验需求(二)设计思路 2.代码展示3.实验小结 1.实验内容与设计思想 (一)实验需求 1.编写两个页面程序,一个HTML…...
【嵌入式开发-SDIO】
嵌入式开发--SDIO ■ SDIO-简介■■■■■ ■ SDIO-简介 SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、…...