【大模型LangChain开发-1】无需购买OpenAI Token,LangChain开发本地化部署全攻略

一、引言

随着人工智能技术的快速发展,越来越多的开发者希望将大语言模型融入自己的应用中。然而,使用OpenAI API进行开发面临着不小的成本压力:

  • 高昂的API费用:OpenAI的API采用按token计费的模式,对于需要频繁调用或处理大量文本的应用来说,费用会快速累积。一个中等规模的项目每月可能需要支付数百甚至上千美元。
  • 使用限制:免费账户存在严格的请求速率限制,即使付费用户也有API调用频率的上限,这可能影响应用的响应速度和用户体验。
  • 隐私安全考虑:所有请求数据都需要传输到OpenAI的服务器,对于处理敏感信息的应用来说存在潜在的数据安全风险。

本地化部署模型提供了一个极具吸引力的替代方案。通过将开源大语言模型部署在自己的硬件上,开发者可以:

  • 彻底消除API费用:一次性硬件投入后,没有持续的API调用成本
  • 无限制使用:不受速率限制,可以根据实际需求进行任意次数的调用
  • 保护数据隐私:所有数据处理都在本地完成,无需担心敏感信息泄露
  • 离线工作能力:不依赖网络连接,即使在无法访问互联网的环境中也能正常运行

在接下来的内容中,我们将详细介绍如何选择合适的开源模型,使用Ollama进行本地部署,并通过LangChain框架轻松实现与本地模型的集成,从而打造一个零API成本的AI应用开发环境。

二、开源模型选择

在开始本地部署之前,选择合适的开源模型至关重要。不同模型在性能、资源需求和特长方面各有差异。以下是几个适合本地部署的高性能开源模型推荐:

本地部署的兼容模型

  • lm-studio:本地运行 LLM,并暴露 OpenAI 兼容接口,支持 LangChain。
  • Ollama:运行如 llama3、mistral 等模型,本地通过 OpenAI 兼容 API 提供服务。
  • LocalAI:开源项目,完美模拟 OpenAI 接口,可部署本地模型。
  • OpenRouter:多模型聚合平台,免费额度较多,支持通过 OpenAI 接口访问。
  • FastChat:ChatGPT 替代方案,可以暴露 OpenAI 兼容接口。

LangChain该如何选择模型?

其实很简单,任何兼容 OpenAI API 接口协议的LLM,LangChain都可以使用。这里我选择Ollama模型,因为它足够简单,可以本地化部署,满足日常个人学习开发需求是够的了。

三、Ollama本地部署步骤

Ollama是一个简化大语言模型本地部署的优秀工具,它让运行Llama等开源模型变得异常简单。Ollama的主要优势包括:

  • 自动模型下载和管理
  • 简化的安装和启动流程
  • 提供API接口,便于与各种应用集成
  • 自动处理模型量化,优化内存使用
  • 支持多种模型,易于切换

下面是详细的Ollama部署步骤:

1. 安装Ollama

  1. 访问Ollama官方网站 https://ollama.com/download
  2. 下载对应操作系统的安装包
  3. 运行安装程序,按提示完成安装
  4. 安装完成后,Ollama会自动在后台运行

[图片上传失败...(image-6a26bc-1749622915275)]

2. 下载并运行Llama模型

Ollama支持多种开源模型,这里我们以Llama3为例:

安装好之后你会看到如下窗口,你只需要执行命令 就可以运行大模型了

    ollama run llama3.2
image.png

3. 验证模型运行

输入一些文本,例如"介绍下Ollama模型",按Enter键发送。如果模型正常工作,它会生成回复。
要退出对话模式,输入/exit或按Ctrl+C

首次运行时模型需要加载到内存/GPU中,可能需要等待一段时间,后续使用会更快。

4. Ollama API服务

Ollama自动启动一个本地API服务,默认监听在http://localhost:11434。通过这个API,我们可以用各种编程语言与模型交互。

5.成功部署Ollama

成功部署Ollama并确认模型可以正常工作后,我们就可以进入下一步——将这些本地模型与LangChain框架集成,构建功能强大且零API成本的应用程序。

四、LangChain与本地模型的对接方法

LangChain是一个强大的框架,用于开发由大语言模型驱动的应用程序。它提供了丰富的组件和工具,使开发者能够创建复杂的AI应用流程。虽然LangChain最初流行于与OpenAI API的集成,但它同样支持本地部署的模型,包括通过Ollama运行的模型。

下面我们将详细介绍如何将LangChain与Ollama本地模型对接:

1. 安装必要的依赖

首先,我们需要安装LangChain及其相关依赖:

bash
# 安装LangChain核心库
pip install langchain

# 安装用于连接Ollama的集成库
pip install langchain-community

# 如果需要使用LangChain的高级功能,如链式调用、代理等
pip install langchain-core

2. 基本连接与使用

在LangChain中,有两种主要方式连接和使用本地部署的Ollama模型:通过LLMs和ChatModels。了解这两种方式的区别对于正确构建提示和处理响应非常重要。

LangChain中的模型类型介绍

LangChain中存在两种核心类型的语言模型:

  • LLMs: 接收字符串输入并返回字符串输出的模型
  • ChatModels: 接收消息列表作为输入并返回消息的模型

这两种模型类型的主要区别在于输入/输出格式:

  • LLMs使用简单的字符串作为输入和输出
  • ChatModels使用结构化的消息列表,每条消息都有特定的角色(如人类、AI或系统)

在使用ChatModels时,LangChain提供了几个便捷的消息类型:

  • HumanMessage: 来自用户的消息
  • AIMessage: 来自AI助手的消息
  • SystemMessage: 系统指令消息
  • FunctionMessage: 函数调用相关消息

访问大模型方案1:使用ChatModels接口

通过ChatOpenAI并设置本地Ollama服务的基础URL,可以使用消息格式与模型交互:

    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage

    llm = ChatOpenAI(
        base_url="http://localhost:11434/v1",  # Ollama 的本地接口
        api_key="fake-key",  # 必填但 Ollama 不会验证
        model_name="llama3.2"
    )

    messages = [HumanMessage(content="介绍一下ollama模型")]

    response = llm.invoke(messages)

    print(response.content)

访问大模型方案2:使用LLMs接口

使用专门的Ollama集成类,可以更直接地访问模型:

    from langchain_community.llms import Ollama

    # 初始化Ollama LLM
    # 默认连接到localhost:11434,如果Ollama运行在其他地址,可以通过base_url参数指定
    llm = Ollama(model="llama3.2")

    # 简单的文本生成
    response = llm.invoke("解释一下量子计算的基本原理")
    print(response)

模型返回结果如下:


image.png

两种方法的选择建议

  • 使用LLMs方法(方案2)的优势:

    • 代码更简洁,配置更少
    • 直接使用字符串输入,适合简单的单轮交互
    • 专门为Ollama优化的接口
  • 使用ChatModels方法(方案1)的优势:

    • 支持结构化的消息格式,便于管理多轮对话
    • 与OpenAI API接口兼容,便于代码迁移
    • 可以使用系统提示更好地控制模型行为

根据您的具体应用场景选择合适的方法。对于简单查询,LLMs接口更为直接;而对于复杂对话系统,ChatModels接口提供了更好的结构化支持。

五、总结

在本文中,我们详细探讨了如何通过本地部署开源大语言模型来替代OpenAI API,从而实现零成本的LangChain应用开发。以下是主要要点的总结:

本地部署模型替代OpenAI API的优势

  1. 成本效益

    • 完全消除持续的API费用
    • 一次性硬件投入后无额外支出
    • 适合需要频繁调用或大规模处理的应用场景
  2. 隐私与安全

    • 数据完全在本地处理,不会上传到第三方服务器
    • 适合处理敏感信息和保密数据的应用
    • 符合严格的数据合规要求
  3. 无限制使用

    • 不受API调用次数和频率限制
    • 能够支持高并发和批量处理需求
    • 开发和测试过程更加灵活自由
  4. 离线工作能力

    • 不依赖互联网连接
    • 适用于网络受限或隔离的环境
    • 提高应用的稳定性和可靠性

本地部署的局限性

为了全面客观,也需要认识到本地部署的一些局限:

  1. 硬件要求

    • 运行较大模型需要适当的GPU资源
    • 初始硬件成本可能较高
  2. 性能差距

    • 开源模型在某些特定任务上可能不如最新的商业模型
    • 较小参数的模型在复杂任务上表现可能有限

下一步建议

后续我们继续分享LangChain的更多使用场景:如链式调用、提示模板、多轮对话,RAG等

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容