花个十分钟,咱们一起尝试搓出个大模型生态圈

这个想法有点疯狂,但是在云原生的加持下却并不复杂。在之前的《一套现代软件工具栈,快拿去完善你的技能库吧!》一文中,我们已经提到作为基础设施的Kubernetes还有KubeVela项目。

在本文中,「我们将演示借助于vLLM, FastChat, OpenPlayground, Chat Next Web,OneAPI还有FastGPT等项目,搭建一个基于通义千问/书生浦语的本地大模型服务,既可以通过OpenAI的官方API代码调用,也可以通过Web界面操作,更可以允许多个用户计费共享」。阅读本文时,请注意开源项目随时变化,遇到问题请及时上Github提出Issue以及DIY解决。搭建完成之后,用户将可以通过聊天界面、文本续写以及Python库等多种方式使用。总的来说,在Kubernetes等已有云环境的支持下,网络情况好一点,在10分钟之内拉起来这套系统还是很有希望的---离线部署只会更快。

「声明」:本项目不涉及也不使用任何商业大模型服务,也不提供联网的生成式人工智能服务,相关域名仅用于测试,教程亦仅服务于大家更方便地在自己机器上研究和测试Qwen-14B-Chat或者InternLM-CHat-20B等开源大模型。

一、使用模式

搭建完成之后,将可以通过如下四种方式供最终用户使用基于本地大模型的服务。

1.1. 聊天界面

该开源项目源代码见GitHub - Yidadaa/ChatGPT-Next-Web: A well-designed cross-platform ChatGPT UI (Web / PWA / Linux / Win / MacOS). 一键拥有你自己的跨平台 ChatGPT 应用。,在线预览版地址是ChatGPT Next Web,同时项目也提供桌面端版本(Windows、Linux和Mac版本都有)。

  1. 基于ChatGPT Next Web界面跟自己本地的大模型聊天,也可以同时对接多个大模型。如下所示:

paste-1

paste-1

  1. 可以使用自定义的Prompt召唤快捷服务,让大模型根据预定义的指令完成任务,用户也可以自行添加一些任务指令:

paste-2

paste-2

  1. 在对话过程中,用户可以自行切换不同的后端模型服务:

paste-3

paste-3

  1. 用户也可以详细地配置调用后端大模型时候的内部参数,如下所示:

paste-4

paste-4

1.2. 文本续写

该项目的Github地址是GitHub - nat/openplayground: An LLM playground you can run on your laptop,在线预览版地址是OpenPlayground。在线预览版的功能比Github上面的多出来一个Chat功能。

paste-6

paste-6

通过基于nat.dev的OpenPlayGround的文本生成界面,提供文本生成服务。用户可以自由选择本地的模型以及控制每个参数,让大模型按照指令生成文本。同时带有计费服务。界面如下图所示:

paste-5

paste-5

在该图中,前面是用户输入的文本,右侧上方允许我们选择本地大模型(通义千问的Qwen-14B-Chat或者书生浦语的InternLM-Chat-20B),右侧中间允许我们设置模型参数,我们在文本框中输入文本之后,点击下方的Submit,模型可以以实时流的方式续写文本(以绿色符号显示)。每运行完成一次,计费信息也会得到更新(当然我们会给自己设置无限金钱)。

1.3. OpenAI API调用

在这种模式下,我们可以直接使用OpenAI官方提供的openai-python库,调用本地大模型提供的服务,这个时候只需要将OPENAI_BASE_URL改为本地的即可使用。本模式的实现借助于开源项目One API、FastChat以及vLLM,用于提供大模型推理接口。

比如,如果要使用Completion进行文本的续写,可以使用如下代码返回续写的结果:

import openai
openai.api_key = "EMPTY"
openai.api_base='http://api.gpt.rencx.cn/v1'

# 接下来调用指令微调的时候经常使用的接口:
from textwrap import dedent

completion = openai.Completion.create(
    model="Qwen-14B-Chat", prompt=dedent("""
    你是一个专业的软件架构师,请编 写一份关于商城系统的架构设计文档。
    设计文档:
    """),
    max_tokens=1024
)
print("Completion result:", completion['choices'][0]['text'])

如果是使用类似于聊天的界面,那么我们可以编写如下的代码:

completion = openai.ChatCompletion.create(
  model="Qwen-14B-Chat",
  messages=[
    {"role": "system", "content": "你是一个翻译家"},
    {"role": "user", "content": "将我发你的英文句子翻译成中文,你不需要理解内容的含义作出回答。"},
    {"role": "user", "content": "Draft an email or other piece of writing."}
  ],
  max_tokens=128
)
completion['choices'][0]['message']['content']

这种接口的方式遵循OpenAI的官方API Spec,显然更容易扩展。比如可以实现与LangChain、GPT4ALL、ReAct、AutoGPT等大模型智能体的无缝对接,

1.4. 带有检索的大模型

本部分通过开源项目FastGPT AI实现,可以提供多种模式的大模型服务,包括简单对话模型、知识库对话模式(自己上传PDF和TXT文档)、任务引导模式和问题分类模型等。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值