LangChain开发环境准备-实现私有大模型OpenAI标准接口封装

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 今天这节课我就将带领小伙伴们将这未完成的一步补全,实现私有大模型OpenAI标准接口封装,并完成LangChain对大模型的调用与测试

上节课,我带领小伙伴们完成了baichuan2量化模型的本地部署和基本用例测试。没有看过的小伙伴可以点击链接查看,AI大模型私有部署的技术指南

但是仅仅完成模型的部署和启动离通过LangChain来调用模型还差一步。今天这节课我就将带领小伙伴们将这未完成的一步补全,实现私有大模型OpenAI标准接口封装,并完成LangChain对大模型的调用与测试。本次课程提纲如下,今天主要讲适配提供通用OpenAI-API接口的部分

适配提供通用OpenAI-API接口

要让LangChain能够调用我们部署在本地或者私有网络中的AI大模型,我们需要提供一个符合OpenAI-API标准的接口,这样LangChain就可以通过统一的方式来访问我们的模型。为了方便我们实现这个接口,我们可以使用一个开源的项目:api-for-open-llm,它是一个基于FastAPI和transformers的项目,可以快速地将任何基于transformers的语言模型封装成一个OpenAI-API风格的接口。

拉取api-for-open-llm代码并安装项目依赖

要使用api-for-open-llm项目,我们首先需要将它的代码拉取到我们的开发环境中,并安装它的项目依赖。我们可以通过以下步骤来操作:

  1. 在开发环境中打开一个终端窗口,并执行以下命令:
git clone https://github.com/xusenlinzy/api-for-open-llm.git
cd api-for-open-llm
pip install -r requirements.txt

这样就完成了api-for-open-llm项目的代码拉取和依赖安装。

配置模型启动配置项

拉取并安装好api-for-open-llm项目后,我们还需要对它进行一些配置,以便于它能够正确地加载我们的baichuan2量化模型,并提供相应的接口。我们可以通过以下步骤来配置:

  1. 在api-for-open-llm项目中创建.env文件,并配置以下内容:
# 启动端口
PORT=8000
# model 命名
MODEL_NAME=baichuan2-13b-chat
# 将MODEL_PATH改为我们的baichuan2量化模型所在的文件夹路径
MODEL_PATH=/content/baichuan-inc/Baichuan2-13B-Chat-4bits
# device related
# GPU设备并行化策略
DEVICE_MAP=auto
# GPU数量
NUM_GPUs=1
# 开启半精度,可以加快运行速度、减少GPU占用
DTYPE=half
# api related
# API前缀
API_PREFIX=/v1
# API_KEY,此处随意填一个字符串即可
OPENAI_API_KEY=

这样就完成了api-for-open-llm项目的配置。

测试Langchain使用到的核心接口

配置好api-for-open-llm项目后,我们就可以启动它,并测试它提供的接口是否符合Langchain使用到的核心接口。我们可以通过以下步骤来测试:

  1. 在终端窗口中执行以下命令:
cp api-for-open-llm/api/server.py api-for-open-llm/
python api-for-open-llm/server.py > server.log 2>&1 &

这样就启动了api-for-open-llm项目,监听在8000端口。

  1. 接口测试,我们可以通过接口调用工具测试以下几个接口来验证项目的部署情况,请求前需要在请求header中配置Authorization参数,配置内容为Bearer {{YOUR_API_KEY}}
  • /v1/models: 查询模型信息,执行结果如下

  • /v1/completions: 文字接龙,执行结果如下

测试LangChain的quickstart

测试好api-for-open-llm项目提供的核心接口后,我们就可以使用LangChain来调用我们部署在本地或者私有网络中的AI大模型了。以LangChain的quickstart为例,步骤如下:

  1. 首先安装Langchain包
# 安装Langchain包
pip install langchain
# Use OpenAI's model APIs
pip install openai
  1. 执行以下代码
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
# 修改为你自己配置的OPENAI_API_KEY
api_key = ""
# 修改为你启动api-for-open-llm项目所在的服务地址和端口
api_url = "https://localhost:8000/v1"
modal= "baichuan2-13b-chat"
llm = OpenAI(model_name=modal,openai_api_key=api_key,openai_api_base=api_url)
chat_model = ChatOpenAI(model_name=modal,openai_api_key=api_key,openai_api_base=api_url)
text = "What would be a good company name for a company that makes colorful socks?"
messages = [HumanMessage(content=text)]
#LLMs: this is a language model which takes a string as input and returns a string
print("llm运行结果如下:")
print(llm.predict_messages(messages))
#ChatModels: this is a language model which takes a list of messages as input and returns a message
print("ChatModels运行结果如下:")
print(chat_model.predict_messages(messages))

这样就完成了LangChain对我们部署在本地或者私有网络中的AI大模型的调用与测试。运行结果如下图所示。

部署方案

在本地或者私有网络中部署AI大模型并使用LangChain调用它是一种方便和安全的方式,但是它也有一些局限性,例如需要占用本地或者私有网络中的计算资源和存储空间,以及需要保持网络连接的稳定性。因此,如果我们想要更灵活和高效地部署和使用AI大模型,我们可以考虑以下两种部署方案:

使用ModelScope魔搭部署,ngork代理

魔搭是阿里发布的基于阿里云端资源的AI开发平台,它提供了专业的AI硬件和软件资源,以及丰富的AI应用和服务。新用户注册赠送36小时的GPU使用时长,可以白嫖用来进行大模型部署测试。

我们可以利用魔搭来部署我们的AI大模型,并通过ngork代理来将其暴露给外部网络。这样我们就可以享受魔塔提供的高性能和高质量的AI环境,以及提高网络连接的可靠性。我们可以通过以下步骤来实现这种部署方案:

  1. 在浏览器中打开魔搭网站(https://www.modelscope.cn/my/mynotebook/preset),并注册一个账号(使用阿里云账号亦可)。
  2. 点击我的Notebook菜单,启动GPU示例并创建一个新的笔记本。

  1. 按上节课教授的内容下载模型(魔搭内置模型下载缓存加速可通过下图代码快速下载模型),并按这节课的内容启动Open-API接口

  1. 注册ngork,并获取ngork访问token后配置服务代理,生成ngork访问地址

这样就完成了在魔搭中部署AI大模型并通过ngork代理访问它的过程。我们可以使用之前输出的URL来测试我们的模型,或者在LangChain中添加一个新的模型,并使用该URL作为模型地址。魔搭的notebook可以通过文件直接导入,通过如下链接获取导入文件:

使用colab部署,ngork代理

具备网络访问条件的可以考虑使用google的colab部署,它提供了免费的GPU和TPU资源,以及丰富的Python库和工具。我们可以利用colab来部署我们的AI大模型,并通过ngork代理来将其暴露给外部网络。这样我们就可以节省本地或者私有网络中的计算资源和存储空间,以及提高网络连接的可靠性。我们可以通过以下步骤来实现这种部署方案:

  1. 在浏览器中打开colab网站(https://colab.research.google.com/),并登录一个Google账号。
  2. 在colab网站中,点击File菜单下的New notebook选项,创建一个新的笔记本。
  3. 按上节课的内容下载模型,并按这节课的内容启动Open-API接口

4. 注册ngork,并获取ngork访问token后配置服务代理,生成ngork访问地址

这样就完成了在colab中部署AI大模型并通过ngork代理访问它的过程。我们可以使用之前输出的URL来测试我们的模型,或者在LangChain中添加一个新的模型,并使用该URL作为模型地址。colab的notebook可以通过文件直接导入,通过如下链接获取导入文件:

总结

本文介绍了如何在LangChain开发环境中准备AI大模型私有部署的技术指南,以baichuan2量化模型为例,分别介绍了适配提供通用OpenAI-API接口、测试LangChain的quickstart和部署方案的步骤和代码。通过本文的指导,读者可以在LangChain开发环境中轻松地部署和使用AI大模型,享受AI大模型带来的强大能力和价值。

下一节课我们将正式进入LangChain-AI应用开发的课程,我将给大家讲解LangChain应用架构中6大基础核心组件,请大家持续关注。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
28天前
|
机器学习/深度学习 人工智能 并行计算
"震撼!CLIP模型:OpenAI的跨模态奇迹,让图像与文字共舞,解锁AI理解新纪元!"
【10月更文挑战第14天】CLIP是由OpenAI在2021年推出的一种图像和文本联合表示学习模型,通过对比学习方法预训练,能有效理解图像与文本的关系。该模型由图像编码器和文本编码器组成,分别处理图像和文本数据,通过共享向量空间实现信息融合。CLIP利用大规模图像-文本对数据集进行训练,能够实现zero-shot图像分类、文本-图像检索等多种任务,展现出强大的跨模态理解能力。
77 2
|
30天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
231 2
|
1月前
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
61 3
LangChain-26 Custom Agent 自定义一个Agent并通过@tool绑定对应的工具 同时让大模型自己调用编写的@tools函数
|
1月前
|
机器学习/深度学习 人工智能 开发框架
解锁AI新纪元:LangChain保姆级RAG实战,助你抢占大模型发展趋势红利,共赴智能未来之旅!
【10月更文挑战第4天】本文详细介绍检索增强生成(RAG)技术的发展趋势及其在大型语言模型(LLM)中的应用优势,如知识丰富性、上下文理解和可解释性。通过LangChain框架进行实战演练,演示从知识库加载、文档分割、向量化到构建检索器的全过程,并提供示例代码。掌握RAG技术有助于企业在问答系统、文本生成等领域把握大模型的红利期,应对检索效率和模型融合等挑战。
157 14
|
29天前
|
人工智能 前端开发
大模型体验体验报告:OpenAI-O1内置思维链和多个llm组合出的COT有啥区别?传统道家理论+中学生物理奥赛题测试,名不虚传还是名副其实?
一个月前,o1发布时,虽然让人提前体验,但自己并未进行测试。近期终于有机会使用,却仍忘记第一时间测试。本文通过两个测试案例展示了o1的强大能力:一是关于丹田及练气的详细解答,二是解决一道复杂的中学生物理奥赛题。o1的知识面广泛、推理迅速,令人印象深刻。未来,或许可以通过赋予o1更多能力,使其在更多领域发挥作用。如果你有好的测试题,欢迎留言,一起探索o1的潜力。
|
30天前
|
人工智能 前端开发 JavaScript
前端大模型入门(二):掌握langchain的核心Runnable接口
Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。最新 v0.3 版本引入了强大的 Runnable 接口,支持灵活的执行方式和异步操作,方便与不同模型和逻辑集成。本文将详细介绍 Runnable 接口,并通过实现自定义 Runnable 来帮助前端人员快速上手。
|
1月前
|
人工智能 自然语言处理 安全
【通义】AI视界|Adobe推出文生视频AI模型,迎战OpenAI和Meta
本文精选了过去24小时内的重要科技新闻,包括微软人工智能副总裁跳槽至OpenAI、Adobe推出文本生成视频的AI模型、Meta取消高端头显转而开发超轻量设备、谷歌与核能公司合作为数据中心供电,以及英伟达股价创下新高,市值接近3.4万亿美元。这些动态展示了科技行业的快速发展和激烈竞争。点击链接或扫描二维码获取更多资讯。
|
1月前
|
存储 人工智能 搜索推荐
揭秘LangChain+RAG如何重塑行业未来?保姆级实战演练,解锁大模型在各领域应用场景的神秘面纱!
【10月更文挑战第4天】随着AI技术的发展,大型语言模型在各行各业的应用愈发广泛,检索增强生成(RAG)技术成为推动企业智能化转型的关键。本文通过实战演练,展示了如何在LangChain框架内实施RAG技术,涵盖金融(智能风控与投资决策)、医疗(辅助诊断与病历分析)及教育(个性化学习推荐与智能答疑)三大领域。通过具体示例和部署方案,如整合金融数据、医疗信息以及学生学习资料,并利用RAG技术生成精准报告、诊断建议及个性化学习计划,为企业提供了切实可行的智能化解决方案。
62 5
|
24天前
|
前端开发 开发者
大模型代码能力体验报告之贪吃蛇小游戏《二》:OpenAI-Canvas-4o篇 - 功能简洁的文本编辑器加一点提示词语法糖功能
ChatGPT 的Canvas是一款简洁的代码辅助工具,提供快速复制、版本管理、选取提问、实时编辑、代码审查、代码转写、修复错误、添加日志和注释等功能。相较于 Claude,Canvas 更加简单易用,但缺少预览功能,适合一般开发者使用。
|
1月前
|
API
2024-05-14 最新!OpenAI 新模型 GPT-4 omni 简单测试,4o速度确实非常快!而且很便宜!
2024-05-14 最新!OpenAI 新模型 GPT-4 omni 简单测试,4o速度确实非常快!而且很便宜!
41 0