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

文章目录

  • [AI(学习笔记第二课) 使用langchain进行AI开发](#AI(学习笔记第二课) 使用langchain进行AI开发)
  • 学习内容:
    • [1. 使用背景](#1. 使用背景)
    • [2.创建`python`(`pycharm community版`)开发环境并连接`deepseek`](#2.创建pythonpycharm community版)开发环境并连接deepseek)
      • [2.1 创建`python`(`pycharm community版`)开发环境](#2.1 创建pythonpycharm community版)开发环境)
      • [2.2 创建`python`工程](#2.2 创建python工程)
      • [2.3 写入初始`python`的`AI`代码](#2.3 写入初始pythonAI代码)
      • [2.4 使用`pycharm`导入必要的包进入`venv`](#2.4 使用pycharm导入必要的包进入venv)
      • [2.5 使用`langchain`导入必要的包](#2.5 使用langchain导入必要的包)
      • [2.6 执行`AI`的`langchain`代码](#2.6 执行AIlangchain代码)
    • [3. 结合`ollama`构造`知识向量库`并进行`RAG`](#3. 结合ollama构造知识向量库并进行RAG)
      • [3.1 构建本地的`ollama`服务](#3.1 构建本地的ollama服务)
        • [3.1.1 构建`ollama`的`LLM`大模型完全通过`deepseek.com`就可以查询到。](#3.1.1 构建ollamaLLM大模型完全通过deepseek.com就可以查询到。)
        • [3.1.2 在 Windows 上安装 Ollama 的步骤如下:](#3.1.2 在 Windows 上安装 Ollama 的步骤如下:)
        • [3.1.3 验证`ollama`的启动情况](#3.1.3 验证ollama的启动情况)
      • [3.2 使用`langchain`测试本地的`ollama`服务](#3.2 使用langchain测试本地的ollama服务)
        • [3.2.1 测试代码](#3.2.1 测试代码)
        • [3.2.2 执行代码](#3.2.2 执行代码)
      • [3.3 进行`RAG Retrieval Argumented`测试](#3.3 进行RAG Retrieval Argumented测试)
        • [3.3.1 知之为知之,不知`AI`知](#3.3.1 知之为知之,不知AI知)
        • [3.3.2 测试代码](#3.3.2 测试代码)
        • [3.3.3 执行代码](#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版。

2.2 创建python工程

这里,默认使用python venv环境,进行虚拟环境的设定。之后创建src代码文件夹。

同时,创建langchain_deepseek.py文件进行AI的入门测试。

2.3 写入初始pythonAI代码

python 复制代码
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就可以查询到。
3.1.2 在 Windows 上安装 Ollama 的步骤如下:
    1. 下载 Ollama
    • 访问 Ollama 的官方 GitHub 发布页面:Ollama Releases
    • 找到最新的 Windows 版本(通常是 .exe 安装文件),例如 OllamaSetup.exe,然后下载。
    1. 运行安装程序
    • 双击下载的 OllamaSetup.exe 文件。
    • 按照安装向导的提示完成安装(通常只需点击"下一步"即可)。
    1. 验证安装
    • 安装完成后,Ollama 应该会自动启动。

    • 打开 命令提示符(CMD)PowerShell ,运行以下命令检查是否安装成功:

      bash 复制代码
      ollama --version

      如果返回版本号,说明安装成功。**

    1. 运行 Ollama
    • 在终端运行:

      bash 复制代码
      ollama run llama2

      这会下载并运行 llama2 模型(首次运行需要下载模型,可能需要一些时间)。

    1. (可选)设置环境变量
    • 如果 ollama 命令无法识别,可能需要手动将 Ollama 的安装路径添加到系统环境变量 PATH 中:
      1. 右键"此电脑" > "属性" > "高级系统设置" > "环境变量"。
      2. PATH 变量中添加 Ollama 的安装路径(默认可能是 C:\Program Files\Ollama)。
    1. 更新 Ollama
    • 如果有新版本,可以重新下载安装包覆盖安装,或运行:

      bash 复制代码
      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 测试代码
python 复制代码
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 测试代码
python 复制代码
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(继续检证)

相关推荐
tuan_zhang3 分钟前
西门子Industrial Copilot深度解析:工业智能的技术攻坚与生态重构
人工智能·copilot·工业软件
蹦蹦跳跳真可爱58912 分钟前
Python----神经网络(《Going deeper with convolutions》论文解读和GoogLeNet网络)
网络·人工智能·pytorch·python·神经网络
虹科网络安全23 分钟前
艾体宝方案丨深度解析生成式 AI 安全风险,Lepide 为数据安全护航
人工智能·aigc·ai监控·lepide·ai安全风险
牛奶咖啡1324 分钟前
学习设计模式《八》——原型模式
学习·设计模式·原型模式·浅度克隆·深度克隆·c#的克隆·原型管理器
shao91851635 分钟前
Gradio全解20——Streaming:流式传输的多媒体应用(6)——RT-DETR模型构建视频流目标检测系统
人工智能·gradio·streaming·rt-detr·视频流目标检测·rt-detrv2
周周记笔记40 分钟前
【统计学基础】随机抽样的特点
人工智能
每次的天空1 小时前
Android学习总结之Binder篇
android·学习·binder
金融小师妹1 小时前
AI技术视角:美联储信号与黄金动态的量化研究——基于多模态数据分析框架
大数据·人工智能·算法
海星船长丶1 小时前
【HCIP】----OSPF综合实验
网络·学习·智能路由器·hcip
jndingxin1 小时前
OpenCV 图形API(80)图像与通道拼接函数-----仿射变换函数warpAffine()
人工智能·opencv·计算机视觉