AI(学习笔记第二课) 使用langchain进行AI开发

news2025/5/9 14:23:44

文章目录

  • 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进行pythonAI开发。pycharm community版是开源的开发IDE,所以在开发中选择使用pycharm
  • ollama也是AI开发的开源大模型,可以从ollama得到很多的大模型,这里大模型采用ollama
  • 知识向量库RAG Retrieval-Augmented Generation的基础,可以使用知识向量库AI提供公司内部的数据文件,让其可以拥有AI的分析基础数据。
  • langchain是一个AI开发平台,使用langchain,能够简化和规范AI开发的流程。

在这里插入图片描述

2.创建pythonpycharm community版)开发环境并连接deepseek

2.1 创建pythonpycharm community版)开发环境

这里在windows上安装,所以选择windows版。

  • pycharm windows
  • 选择pycharm community版
    在这里插入图片描述

2.2 创建python工程

在这里插入图片描述
这里,默认使用python venv环境,进行虚拟环境的设定。之后创建src代码文件夹。
同时,创建langchain_deepseek.py文件进行AI的入门测试。
在这里插入图片描述

2.3 写入初始pythonAI代码

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 执行AIlangchain代码

在这里插入图片描述
可以看出,这里已经采用langchain连接上deepseek进行AI对话了。

3. 结合ollama构造知识向量库并进行RAG

3.1 构建本地的ollama服务

3.1.1 构建ollamaLLM大模型完全通过deepseek.com就可以查询到。
  • http://deepseek.com
  • 如何在windows上安装ollama 使用自然语言进行AI对话
3.1.2 在 Windows 上安装 Ollama 的步骤如下:
    1. 下载 Ollama
    • 访问 Ollama 的官方 GitHub 发布页面:Ollama Releases
    • 找到最新的 Windows 版本(通常是 .exe 安装文件),例如 OllamaSetup.exe,然后下载。
    1. 运行安装程序
    • 双击下载的 OllamaSetup.exe 文件。
    • 按照安装向导的提示完成安装(通常只需点击“下一步”即可)。
    1. 验证安装
    • 安装完成后,Ollama 应该会自动启动。
    • 打开 命令提示符(CMD)PowerShell,运行以下命令检查是否安装成功:
      ollama --version
      
      如果返回版本号,说明安装成功。**
    1. 运行 Ollama
    • 在终端运行:
      ollama run llama2
      
      这会下载并运行 llama2 模型(首次运行需要下载模型,可能需要一些时间)。
    1. (可选)设置环境变量
    • 如果 ollama 命令无法识别,可能需要手动将 Ollama 的安装路径添加到系统环境变量 PATH 中:
      1. 右键“此电脑” > “属性” > “高级系统设置” > “环境变量”。
      2. PATH 变量中添加 Ollama 的安装路径(默认可能是 C:\Program Files\Ollama)。
    1. 更新 Ollama
    • 如果有新版本,可以重新下载安装包覆盖安装,或运行:
      ollama update
      
  • 常见问题
    权限问题:如果安装失败,尝试以管理员身份运行安装程序。
    防火墙阻止:确保 Ollama 可以访问网络(下载模型需要联网)。
    GPU 支持:Ollama 默认使用 CPU,如需 GPU 加速,确保已安装 NVIDIA 驱动并支持 CUDA。
    现在你应该可以在 Windows 上使用 Ollama 运行各种大语言模型了! 🎉

3.1.3 验证ollama的启动情况

这里,使用mac机器进行安装,IP192.168.2.208http://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 PyMuPDFLoader

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma

from langchain.embeddings import OllamaEmbeddings
from langchain.vectorstores import Chroma
from langchain.embeddings import OllamaEmbeddings

from langchain.llms import Ollama
from langchain.chains import RetrievalQA

try:
    # 创建文档loader,这里使用pdf loader
    # langchain提供了大量的loader
    loader = 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")
    # 创建向量数据库,文档指定为上面的分割结果splits
    vectorstore = 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(继续检证)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2371537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于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:适用于有状态应用(如数据库)&#…

基于 Flask的深度学习模型部署服务端详解

基于 Flask 的深度学习模型部署服务端详解 在深度学习领域,训练出一个高精度的模型只是第一步,将其部署到生产环境中,为实际业务提供服务才是最终目标。本文将详细解析一个基于 Flask 和 PyTorch 的深度学习模型部署服务端代码,帮…

【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南

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

多态(c++详细版)

一.多态 1.1 多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时多态(静态多态)主…

数据结构——二叉树和堆(万字,最详细)

目录 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并运行目录结构常见问题解决与…

3.2.3 掌握RDD转换算子 - 4. 按键归约算子 - reduceByKey()

在本节课中,我们深入学习了Spark RDD的reduceByKey()算子。reduceByKey()主要用于处理元素为(key, value)形式的RDD,能够将相同key的元素聚集并合并,最终返回一个新RDD,其元素类型与原RDD保持一致。通过案例演示,我们首…

Pandas比MySQL快?

知乎上有人问,处理百万级数据,Python列表、Pandas、Mysql哪个更快? Pands是Python中非常流行的数据处理库,拥有大量用户,所以拿它和Mysql对比也是情理之中。 实测来看,MySQL > Pandas > Python列表…

简易的考试系统设计(Web实验)

简易的考试系统设计(Web实验) 1.实验内容与设计思想(一)实验需求(二)设计思路 2.代码展示3.实验小结 1.实验内容与设计思想 (一)实验需求 1.编写两个页面程序,一个HTML…

基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(上)

#作者:闫乾苓 文章目录 概念和架构概述主要特点消息传递核心概念Pulsar 的消息模型Pulsar 的消息存储与分发Pulsar 的高级特性架构BrokerBookKeeperZooKeeper 概念和架构 概述 Pulsar 是一个多租户、高性能的服务器到服务器消息传递解决方案。Pulsar 最初由雅虎开…