自助手增加ChatGPT功能以来,每当有新的大语言模型出现,总有人问插件什么时候支持某某模型,其实呢,助手一直都支持接入其它大语言模型,不过这需要你懂一点点代码,不懂也没关系,这不是有ChatGPT吗,它懂。下面的示例代码也是我一步步问ChatGPT整合而来。毕竟都什么年代了,谁还写传统的代码呢。
利用助手的反向代理功能,通过自己的代理服务器将助手发送过来的消息丢给其它语言模型,你唯一需要做的就是对数据格式进行转换。参考下面的示例代码,可以接入任何大语言模型。
以下是接入Gemini(谷歌推出的大模型)的参考代码,实际应用的话你还可以对错误进行处理,比如出错后自动重试,保证每次都可以返回内容。或者通过判断请求参数中的模型名称接入对应大模型。
const express = require('express');
const axios = require('axios');
const app = express();
const port = 9000;
const API_KEY = ''; // 配置Gemini的APIKEY
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${API_KEY}`;
app.use(express.json());
app.use('/', async (req,res) => {
// console.log(req.body);
// 助手提交过来的数据
// {
// messages: [
// {
// content: '你是ChatGPT,是懒猫将你开发成了微信插件,请以对话方式回应,不要以用户身份回答。',
// role: 'system'
// },
// { content: '你好', role: 'user' }
// ],
// top_p: 1,
// model: 'gpt-3.5-turbo',
// stream: false
//}
const messages = req.body.messages;
if (!messages) {
// 没有参数直接访问链接
res.status(400).json({ error: '出错啦,请把代理地址填入助手中访问' });
return;
}
let contents = [];
messages.forEach((item,index) => {
// 插件传递过来的第一条消息是预设,Gemini第一条消息要求是用户,所以当设置预设后添加上一条模型回复的内容
if (index === 0) {
contents.push({
'role':'user',
'parts':[{'text' :item.content}]
},{
'role':'model',
'parts':[{'text' :'好的'}]
})
}else if(index === 1 && item.role === 'assistant') {
// 由于Gemini接收对话的格式必须是user/model/user/model...,多条对话时插件传递过来的第二条可能会变成assistant所以忽略掉
}else{
if (item.role === 'assistant') {
contents.push({
'role':'model',
'parts':[{'text' :item.content}]
});
}else{
contents.push({
'role':'user',
'parts':[{'text' :item.content}]
});
}
}
});
try {
const response = await axios.post(url, {
'contents':contents
});
if (response.data.candidates) {
// 返回数据给助手
res.json({
'choices': [{
'message': {
'role': 'assistant',
'content': response.data.candidates[0].content.parts[0].text
}
}]
});
}else{
res.status(400).json({ error: '出错啦' });
}
}catch (error) {
res.status(400).json({ error: '出错啦' });
}
})
app.listen(port,() =>{
console.log(`服务启动成功http://localhost:${port}`);
})
上面的代码已打包在我的TG频道https://t.me/lanmaoshare。下载后填入自己的apikey就可以直接部署到腾讯云函数或自己的服务器。部署教程链接频道内也有分享。