当前位置: 首页 > news >正文

基于langchain+llama2的本地私有大语言模型实战

Langchain功能

LangChian 作为一个大语言模型(LLM, Large Language Model)开发框架,是 LLM 应用架构的重要一环。借助 LangChain,我们可以创建各种应用程序,包括聊天机器人和智能问答工具。

image-20250306092604294

AI模型:包含各大语言模型的LangChain接口和调用细节,以及输出解析机制。

提示模板(Prompts): 提示模板,激发大语言模型的潜力。

检索(Retrieval): 自建知识库,实现检索增强生成(Retrieval Augmented Generation ,RAG),包含文档加载、文本拆分、转换成向量、向量存储、知识检索。

向量数据库: 保存语料信息。

组件

架构 | 🦜️🔗 LangChain 框架

image-20250307173645572

快速上手

安装依赖

pip install langchain
pip install -qU langchain-openai
pip install "langserve[all]"
pip install -U langchain-community
python
Python 3.10.0 | packaged by conda-forge | (default, Nov 10 2021, 13:20:59) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
pip list
Package                  Version
------------------------ -----------
aiohappyeyeballs         2.5.0
aiohttp                  3.11.13
aiosignal                1.3.2
annotated-types          0.7.0
anyio                    4.8.0
async-timeout            4.0.3
attrs                    25.1.0
build                    1.2.2.post1
certifi                  2025.1.31
charset-normalizer       3.4.1
cmake                    3.31.6
colorama                 0.4.6
dataclasses-json         0.6.7
diskcache                5.6.3
dpcpp-cpp-rt             2024.0.2
exceptiongroup           1.2.2
frozenlist               1.5.0
greenlet                 3.1.1
h11                      0.14.0
httpcore                 1.0.7
httpx                    0.28.1
httpx-sse                0.4.0
idna                     3.10
importlib_metadata       8.6.1
intel-cmplr-lib-rt       2024.0.2
intel-cmplr-lic-rt       2024.0.2
intel-opencl-rt          2024.0.2
intel-openmp             2024.0.2
jsonpatch                1.33
jsonpointer              3.0.0
langchain                0.3.20
langchain-community      0.3.19
langchain-core           0.3.41
langchain-text-splitters 0.3.6
langsmith                0.3.12
llama_cpp_python         0.2.23
marshmallow              3.26.1
mkl                      2024.0.0
mkl-dpcpp                2024.0.0
multidict                6.1.0
mypy-extensions          1.0.0
numpy                    2.2.3
onednn                   2024.0.0
onemkl-sycl-blas         2024.0.0
onemkl-sycl-datafitting  2024.0.0
onemkl-sycl-dft          2024.0.0
onemkl-sycl-lapack       2024.0.0
onemkl-sycl-rng          2024.0.0
onemkl-sycl-sparse       2024.0.0
onemkl-sycl-stats        2024.0.0
onemkl-sycl-vm           2024.0.0
orjson                   3.10.15
packaging                24.2
pip                      25.0
propcache                0.3.0
pydantic                 2.10.6
pydantic_core            2.27.2
pydantic-settings        2.8.1
pyproject_hooks          1.2.0
python-dotenv            1.0.1
PyYAML                   6.0.2
requests                 2.32.3
requests-toolbelt        1.0.0
setuptools               75.8.2
sniffio                  1.3.1
SQLAlchemy               2.0.38
tbb                      2021.13.1
tenacity                 9.0.0
tomli                    2.2.1
typing_extensions        4.12.2
typing-inspect           0.9.0
urllib3                  2.3.0
wheel                    0.45.1
yarl                     1.18.3
zipp                     3.21.0
zstandard                0.23.0

推理问题示例

完成代码:

from langchain_community.llms import LlamaCpp
from langchain.prompts import PromptTemplate
from langchain.schema.output_parser import StrOutputParser
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler

# 1. 定义中文提示模板
template_zh = """[INST] <<SYS>>
你是一个智能 助手,需用简洁且口语化的回答用户问题。若问题不明确,请主动询问细节。
<</SYS>>

{question} [/INST]"""

prompt = PromptTemplate(template=template_zh, input_variables=["question"])
callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])
# 2. 加载本地模型
# 配置参数
n_gpu_layers = 40  # 根据您的模型和GPU VRAM大小调整
n_batch = 512  # 应在1到n_ctx之间,考虑GPU的VRAM大小

llm = LlamaCpp(
    model_path="llama-2-7b-chat.Q4_K_M.gguf",
    n_gpu_layers=n_gpu_layers,
    n_batch=n_batch,
    callback_manager=callback_manager,
    verbose=True,
)

# 3. 构建链
chain = prompt | llm | StrOutputParser()

# 4. 调用示例
question = "如何用Python实现快速排序?"
response = chain.invoke({"question": question})
print(f"\n回答:{response}")

输出结果

回答:  Hey there! 😊
To implement quicksort in Python, you can use the following code:
```python
def quicksort(arr):
    if len(arr) <= 1:
        return arr
    else:
        pivot = arr[0]
        less = [x for x in arr[1:] if x < pivot]
        greater = [x for x in arr[1:] if x >= pivot]
        return quicksort(less), pivot, quicksort(greater)
```
This is a basic implementation of the quicksort algorithm. The function takes an array as input and returns three values: the sorted list (or lists), the pivot element, and the results of recursively calling the quicksort function on the greater and less than elements.
Please let me know if you have any questions! 😃
(langchain) PS D:\code\trae> 

ref

一文详解最热的 LLM 应用框架 LangChain - 知乎

http://www.dtcms.com/a/61939.html

相关文章:

  • 义乌购商品详情接口调用指南:Python实战代码与完整示例
  • 【算法】BST的非递归插入,删除,查询
  • 蓝桥杯[每日两题] 练习题:盛最多水的容器 三数之和(java版)
  • flutter的HTTP headers用法介绍
  • 【组件安装】Rocky 8.10 安装Local License Server 25.03.0 for Linux
  • Python基本语法——变量
  • Conda环境搭建实战指南:打造高效开发环境
  • DeepSeek开源Day2:DeepEP技术详解
  • Ae 效果详解:VR 降噪
  • tkinter上canvas展示图片报错(mac系统)
  • 【人工智能】随机森林的智慧:集成学习的理论与实践
  • Linux练级宝典->Linux进程概念介绍
  • ROS2学习笔记2
  • 使用Vue CLI从零搭建企业级项目实战(Vue3+全家桶)
  • 【Axure原型分享】数字滚动——同时滚动效果
  • UIToolkit(一)
  • 【redis】pipeline管道
  • 第八章:C++ 实践
  • 调试正常 ≠ 运行正常:Keil5中MicroLIB的“量子态BUG”破解实录
  • 【Java面试题汇总】Java面试100道最新合集!
  • 笔记六:单链表链表介绍与模拟实现
  • cocos creator使用mesh修改图片为圆形,减少使用mask,j减少drawcall,优化性能
  • Linux 进程信息查看
  • docker私有仓库配置
  • π0源码剖析——从π0模型架构的实现(如何基于PaLI-Gemma和扩散策略去噪生成动作),到基于C/S架构下的模型训练与部署
  • 深度学习数值精度详细对比:BF16、FP16、FP32
  • 【商城实战(18)】后台管理系统基础搭建:从0到1构建电商中枢
  • 大空间多人互动技术、大空间LBE、VR大空间什么意思?如何实现?
  • from psbody.mesh import MeshModuleNotFoundError: No module named ‘psbody‘
  • AI算法与应用 全栈开发 前端开发 后端开发 测试开发 运维开发