AI-启动
前言
我们都知道AI可以帮助我们完成很多工作,同时也可以帮助我们快速生成一些繁琐的文档;本篇介绍接入一些开源的大预言模型;
准备
OpenAPI
首先需要了解下什么是OpenAPI
,OpenAPI
是一种结构化的规范,它提供了一种标准的方式来定义API接口,包括端点(endpoints)、请求和响应的格式、参数、认证方法等;这就使得不同的系统和应用可以更容易的集成大模型,只要遵循OpenAPI
规范,大模型就可以被封装成API服务,其他系统就可以通过标准的HTTP请求与这些API进行交互,对使用者而言,封装好一套嗲用大模型服务的API接口后,当要使用不同的大模型时可以平滑替换,这都是由于遵循了一套标准的好处;
接入方式
我们知道大模型要封装成一个服务后才能供其他应用使用,而这套服务由于遵循了OpenAPI
对外开放接口,那么就可以提供一套模型的封装,使不同的模型生成一个服务;同时调用模型也可以生成一套通用的封装用于调用大模型对外的API服务;
方案一
方案一使用本地部署服务方式,硬件配置不够慎用,性能根据模型大小会有不同
Ollama
这里使用的是Ollama用来启动大模型API服务,ollama
官网提供了各种平台的安装包,以下是下载地址:https://ollama.com/download
安装模型
ollama安装完成后就可以开始安装模型,先选择一个模型安装,ollama
提供了一个页面供用户查询可以安装的开源模型。https://ollama.com/search
在页面查询到想要安装的模块之后使用如下命令安装模型并启动:
ollama run [模型id]
安装示例
这里以llama3:latest
为例:
ollama run llama3:latest
启动后就可以通过终端命令行和大模型交互了。
Open-WebUI
这里使用的是Open-WebUI
,它是一个开源的用户界面框架,旨在提供简便的工具和接口,帮助用户轻松地访问和管理各种深度学习模型,尤其是大规模预训练语言模型。以下是对Open-WebUI的简要介绍:
-
开源框架:
Open-WebUI
是一个开源项目,提供了灵活且可定制的用户界面,用于与各种深度学习模型进行交互。 -
模型管理: 通过
Open-WebUI
,用户可以方便地加载、配置和管理多个深度学习模型,包括GPT-4
、BERT
等大规模预训练模型。 -
用户友好: 它提供了直观的界面,简化了模型使用过程,使非技术用户也能轻松上手进行自然语言处理任务。
-
集成支持:
Open-WebUI
支持与多种后端深度学习框架(如TensorFlow
、PyTorch
)集成,提供高效的推理和训练功能。 -
扩展性强: 用户可以根据需求自定义和扩展界面功能,以适应不同的应用场景和任务需求。
总之,Open-WebUI
为用户提供了一个高效、直观的界面,使得大规模深度学习模型的使用更加便捷和高效。
下载
以下是Open-WebUI
的Github
地址,从这里将项目下到本地
https://github.com/open-webui/open-webui
部署
这里使用的是Docker
部署,只需要在项目文件下使用Docker
命令启动一个容器即可,当ollama
与Open-WebUI
部署在一台机器上,只需要运行:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
如果ollama
部署在服务器上,可以使用如下命令在启动Docker
容器时指定ollama
的地址
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
OLLAMA_BASE_URL
是指ollama
暴露的API地址,一般为服务器地址加 11434。如:OLLAMA_BASE_URL=<http://192.168.0.111:11434>
使用
部署完成后在浏览器打开http://localhost:3000,展示的是Open-WebUI
的界面,第一次加载可能有点慢,然后注册一个用户就可以开始使用;
模型选择
在对话框的左上角有下拉框,可以看到已下载的所有模型,也可以搜索其他模型直接安装;
方案二
方案二使用远程调用,相对于方案一更受限制,但是不影响本地计算资源,这种方式主要调用线上大模型API服务,需要申请Key,同时会被限流。
这里申请了讯飞星火和MoonShot作为演示
在线大模型
星火认知
讯飞星火申请
目前版本为4.0Ultra
,申请后在星火调试中心进行调试,或者从我的应用页面进入;
申请完成后需要记录下给出的参数,参数位置在4.0Ultra
参数:
APIPassword
APPID
APISecret
APIKey
测试
这里使用post测试,以下是curl
curl --location 'https://spark-api-open.xf-yun.com/v1/chat/completions' \
--header 'Authorization: Bearer [APIPassword]' \
--header 'Content-Type: application/json' \
--data '{
"model":"4.0Ultra",
"messages":[{
"role":"user",
"content":"讲个笑话吧"
}],
"temperature":0.7
}'
响应
{
"code": 0,
"message": "Success",
"sid": "cha000b4486@dx19444fa5a80b8f3532",
"choices": [
{
"message": {
"role": "assistant",
"content": "当然可以,这里有一个逗乐您的小笑话:\n“我不到学校去了!”上学第一天,阿罗放学回家便在一直哭。 “到底发生了什么事?”妈妈问。 “老师说,我是一个坏孩子,我要在家里坏,不在学校坏,我就不是坏孩子了。”希望这个笑话能让你露出笑容!"
},
"index": 0
}
],
"usage": {
"prompt_tokens": 4,
"completion_tokens": 68,
"total_tokens": 72
}
}
MoonShot
模型申请
目前申请的版本为moonshot-v1-8k
,申请后需要在API Key管理处新增一个API Key
,注意密钥只会在新建后显示一次,请及时保存
详情请查看使用文档,
测试
这里使用post测试,以下是curl
curl --location 'https://api.moonshot.cn/v1/chat/completions' \
--header 'Authorization: sk-2xyIeQ49Xl714yquKkMrIdvsuI4aZmnvgNHHKxEaXkk384Os' \
--header 'Content-Type: application/json' \
--header 'Cookie: aliyungf_tc=16bb526c719bc6113220e4e807c625a6b774414dd9cbd7bbe9563d7c3cd530a2' \
--data '{
"model":"moonshot-v1-8k",
"messages":[{
"role":"user",
"content":"讲个笑话吧"
}],
"temperature":0.7
}'
响应:
{
"id": "chatcmpl-677e36d9317b27ed3ba8be59",
"object": "chat.completion",
"created": 1736324825,
"model": "moonshot-v1-8k",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "当然可以。这里有一个经典的笑话:\n\n有一天,一只蚂蚁在森林里迷路了。它遇到了一只大象,于是走上前去问:“请问,我怎样才能走出这片森林呢?”\n\n大象低头看了看蚂蚁,然后抬起脚,踩在蚂蚁身上,说:“就像这样!”\n\n希望这个笑话能给你带来一点轻松和笑容。如果你还想听更多笑话,随时告诉我!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 11,
"completion_tokens": 79,
"total_tokens": 90
}
}