文章摘要(AI生成)
这篇教程介绍了如何为自己的博客接入AI能力,其中使用了chat GPT和Azure AI等工具。首先需要注册一个类似的AI账户,推荐使用付费的但支持国内支付的SMS接码网站来获取非大陆用户手机号。然后在官网申请一个API,并在服务器上设置代理来使用open ai api。接下来介绍了两种建立AI应用的方案:fast GPT和flowise。如果项目庞大且复杂,建议使用第一种方案;如果场景单一且轻量化,则建议使用第二种方案。具体操作可参考GitHub的readme文档,并通过docker compose快速搭建流程。在创建合适的应用之前,先搭建一个示例来演示如何通过对话记录询问AI获取最新文章。选择连续对话的客户端,需要内存和语言模型。对于内存,可选择历史会话直接缓存、窗口缓存或会话摘要缓存。对于语言模型,选择特定的模型类型,如gpt3.5-16k,根据版本和请求的大小决定处理能力和效率。最后,使用工具栏中的选项进行总结,生成200字以内的摘要。
有一个GPT或AI账户
本篇教程的初始就是需要借助现有的AI工具,例如chat GPT, Azure AI等工具来为自己的博客接入AI能力,那么注册一个类似的账号是必须的。
tips: chat GPT 账号申请
chat GPT由于国内云服务器的频繁刷接口,所以对国内IP做了封禁,要注册GPT账号就得有一个非大陆用户的手机号,这里推荐一个付费的但是支持国内支付的SMS接码网站:https://sms-activate.org/cn/freePrice#activation
注册之后需要在https://platform.openai.com/account/api-keys 申请一个API。
注意:我们下面在使用open ai api时,云服务器直接访问官网api接口也是被禁的,所以需要在服务器自作代理,教程可以参考:https://doc.fastgpt.run/docs/installation/proxy/nginx/
搭建LLM脚手架
脚手架搭建基于现有LLM项目有两种方案,一种是fast GPT , 一种是flowise。第一种是对第二种的二次开发,如果项目比较庞大,场景比较复杂那么建议第一种,如果场景单一,偏向轻量化使用则建议使用第二种,本篇以第二个框架作为引导教程。
flowise使用说明在github readme中介绍很清楚,可以通过docker compose快速搭建。
创建之后我们在服务端配置好端口映射后,访问对应的地址可以看到flowise前端页面:
创建合适的应用?
创建应用前我们先搭建一个简单的示例,通过这个示例我们可以询问AI获取网站的最新文章:
创建客户端
客户端有很多种,这里我们选择连续对话的客户端,它可以根据我们过去的对话记录回答问题。这也正是我们想要在文章助手中实现的
这个连续对话客户端,需要内存和语言模型,这里memory有几种:
- 历史会话直接缓存
- 窗口缓存,只存储最近k次对话记录
- 会话摘要缓存,存储会话摘要
根据我们的场景可以从三种之间选择其中一种这里我选择的是第二种,会话保存记录限制4。
会话模型
会话模型我这里选择的是gpt3.5-16k模型,注意不同模型类型之间对于消息的处理能力和处理效率是不同的,一般GPTXX-MM种,XX标识处理效率,也是GPT版本标识,即版本越高处理越好回答越精确,而MM标识请求最大限制,标识处理内容的大小
处理工具
工具栏中有很多可选工具:
- 实时搜索工具:由于现有的GPT模型数据都是基于22年数据训练,所以当你咨询实时数据时就会发现无法回答。实时搜索工具可以解决这个问题
- 结果计算器:计算器,对结果进行计算优化
- LLM链转换工具:将我们定义的LLM的场景和输出应用作为我们工具中的一种
- 自定义工具:本次重点工具,我们可以通过自定义调用的后台接口以实现我们想要的功能。
- 文件读取工具:从磁盘读取文件
- GET请求工具:执行get请求
- POST请求工具:执行POST请求
- 。。。。等
自定义工具
拖入自定义工具组件,点击创建按钮我们新建一个自定义工具:
自定义工具由以下几个部分组成:
- 工具名称:用来标识工具唯一性的,中英文都可以,英文可以避免不必要的麻烦
- 工具描述:这个描述需要讲清楚工具的用途,描述需要精炼并且准确,是AI判断是否什么场景使用这个工具的判断条件
- 请求参数:如果是内容搜索或者需要传参的请求,那么我们需要定义请求参数
- 执行脚本:通过脚本调用后台接口,解析结果作为工具返回
这里我们以获取最新文章为例,执行脚本可以编写如下:
/*
* You can use any libraries imported in Flowise
* You can use properties specified in Output Schema as variables. Ex: Property = userid, Variable = $userid
* Must return a string value at the end of function
*/
const fetch = require('node-fetch');
const url = 'https://XXXXX.com/content/posts?page=0&size=10&keyword=&sort=topPriority%2CcreateTime%2Cdesc';
const options = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Api-Authorization':'XXXXXXXXXXXXXXXXXXXXXX'
}
};
try {
const response = await fetch(url, options);
const text = await response.text();
return text;
} catch (error) {
console.error(error);
return '';
}
测试客户端
客户端创建之后保存,我们点击会话按钮便可以测试我们的效果是否符合预期:
运行非常完美!~
通过在网站中嵌入我们的助手代码即可在网站中访问AI助手进行对话沟通了!
评论区