Langchain开发环境部署及使用本地模型详解

 更新时间:2025年12月30日 08:43:10   作者:pingchuan3014  
LangChain是AI工程框架,扩展和补充LLM能力,文章介绍了如何安装环境、使用本地模型以及如何在LangChain中进行推理

作为AI工程框架,LangChain实际是对LLM能力的扩展和补充。

如果把LLM比作人的大脑,LangChain则是人的躯干和四肢,协助LLM完成“思考”之外的“脏活累活”。

一、安装环境

1、创建并激活虚拟环境

创建名为 myLC 的虚拟环境

python -m venv myLC

激活虚拟环境

cd C:\Users\amdin
myLC\Scripts\activate

也可采用conda做虚拟环境管理

2、安装核心库

  • langchain (核心)
  • langchain-openai (与OpenAI模型交互)
  • langchain-core: 包含所有核心抽象和运行时逻辑(如 LLM, Chain, Runnable 等)
  • langchain-community (社区维护的集成)
pip install langchain langchain-openai langchain-core langchain-community -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

3、安装常用依赖

  • tiktoken: OpenAI 用于计算文本 token 数量的工具。
  • chromadb: 一个开源的向量数据库,用于存储文档嵌入向量。
  • faiss-cpu: Facebook AI 开发的高效向量相似度搜索库。
  • python-dotenv: 用于从 .env 文件中加载环境变量 (如 API 密钥)。
pip install tiktoken chromadb faiss-cpu python-dotenv -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

4、验证开发环境

编写并执行test.py文件

import sys
import langchain
import openai

# 打印已安装库的版本
print(f"LangChain version: {langchain.__version__}")
print(f"OpenAI version: {openai.__version__}")

# 打印 Python 解释器版本
print(f"Python version: {sys.version}")

二、如何在 LangChain 中使用本地模型?

ChatOpenAI 这个类是专门为 OpenAI 官方 API 设计的集成。

它的工作原理是:

封装 API 请求:当你调用 chat_model.invoke(…) 时,ChatOpenAI 类会将你的输入(如问题、消息列表)格式化成符合 OpenAI API 规范的 JSON 数据。

发送网络请求:它通过网络将这个 JSON 数据发送到 OpenAI 的服务器。

接收并解析响应:OpenAI 的服务器在其强大的 GPU 集群上运行模型,生成回答后,将结果以 JSON 格式返回。ChatOpenAI 类接收这个响应,并将其解析成 LangChain 内部的数据结构(如 AIMessage)。

关键点在于:ChatOpenAI 是一个 “客户端” 或 “API 封装器”,它本身不包含任何模型的计算逻辑,所有的计算都发生在 OpenAI 的远程服务器上。 因此,它无法加载和执行你本地的模型文件。

那么如何在 LangChain 中使用本地模型?

要在 LangChain 中使用本地模型,你需要使用 LangChain 为本地模型推理框架提供的集成。

这些框架负责在你的本地机器(CPU 或 GPU)上加载和运行模型,而 LangChain 则提供一个统一的接口来调用它们。

1、使用vllm部署本地模型

#使用本机的18000端口,–model执行本地模型路径,–served-model-name为模型别名,方便后续langchain指定

python -m vllm.entrypoints.openai.api_server --model modelpath --host 0.0.0.0 --port 18000 --served-model-name deepseek-r1-local

注:也可以使用ollma或者其它方式部署本地模型。

2、使用langchain进行推理

编写测试文件test_langchain.py

from langchain_openai import ChatOpenAI
# --- core cfg ---
# User ChatOpenAI Class obj,and configure it to point to DeepSeek's API
# 1. model_name:  DeepSeek model name,
# 2. openai_api_base: DeepSeek API point,default is https://api.deepseek.com
# 3. openai_api_key: local mode need to set it to "none"
# 4. max_tokens: max token num
llm = ChatOpenAI(    
model_name="deepseek-r1-localg",      
openai_api_base="http://127.0.0.1:18000/v1/",    
openai_api_key="none",      
max_tokens=1024,    
temperature=0.7
)
try:    
print("Calling local DeepSeek-R1 model...")    
response = llm.invoke("who are you ? and explain how you differ from OpenAI's GPT model?")        
print("\n--- Local DeepSeek-R1 answer ---")    
print(response.content)    
print("------------------------")
except Exception as e:    
print(f"Error: {e}")

执行test_langchain.py,即可看到终端打印的输出内容,至此langchain调用本地模型的开发环境准备完毕。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python3 property装饰器实现原理与用法示例

    python3 property装饰器实现原理与用法示例

    这篇文章主要介绍了python3 property装饰器实现原理与用法,结合实例形式分析了Python3 property装饰器功能、原理及实现方法,需要的朋友可以参考下
    2019-05-05
  • 亲手教你实现pynq-z2条形码识别功能

    亲手教你实现pynq-z2条形码识别功能

    这篇文章主要介绍了pynq-z2条形码识别功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 深入理解Python中字典的键的使用

    深入理解Python中字典的键的使用

    这篇文章主要介绍了深入理解Python中字典的键的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • numpy如何处理Nan和inf

    numpy如何处理Nan和inf

    numpy是一个强大的科学计算库,在处理数据时经常会遇到NaN(不是数字)和Inf(无穷大)的情况,排序可以帮助我们查看这些特殊值的分布,使用np.isnan()函数可以生成一个布尔数组,用于判断哪些是NaN值,而np.isinf()函数则用于检测Inf值
    2024-09-09
  • Django 如何从request中获取前端数据

    Django 如何从request中获取前端数据

    这篇文章主要介绍了Django从request中获取前端数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python yield的用法实例分析

    Python yield的用法实例分析

    这篇文章主要介绍了Python yield的用法,结合实例形式分析了Python yield的基本功能、使用方法及操作注意事项,需要的朋友可以参考下
    2020-03-03
  • Python图像的增强处理操作示例【基于ImageEnhance类】

    Python图像的增强处理操作示例【基于ImageEnhance类】

    这篇文章主要介绍了Python图像的增强处理操作,结合实例形式分析了使用ImageEnhance类处理图片的亮度、对比度、色度以及锐度等相关操作技巧,需要的朋友可以参考下
    2019-01-01
  • Python如何使用__slots__实现节省内存和性能优化

    Python如何使用__slots__实现节省内存和性能优化

    你有想过,一个小小的 __slots__ 能让你的 Python 类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的小伙伴可以了解下
    2025-03-03
  • 一篇文章搞懂Python程序流程控制结构

    一篇文章搞懂Python程序流程控制结构

    这篇文章主要给大家介绍了关于Python程序流程控制结构的相关资料,本节学习了Python程序的控制结构之顺序结构、分支结构、循环结构,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • 用Python selenium实现淘宝抢单机器人

    用Python selenium实现淘宝抢单机器人

    今天给大家带来的是关于Python实战的相关知识,文章围绕着用Python selenium实现淘宝抢单机器人展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06

最新评论