助手GPT功能接入其它大语言模型
2024-1-13 18:3:54 Author: 纯属懒猫(查看原文) 阅读量:6 收藏

前言

    自助手增加ChatGPT功能以来,每当有新的大语言模型出现,总有人问插件什么时候支持某某模型,其实呢,助手一直都支持接入其它大语言模型,不过这需要你懂一点点代码,不懂也没关系,这不是有ChatGPT吗,它懂。下面的示例代码也是我一步步问ChatGPT整合而来。毕竟都什么年代了,谁还写传统的代码呢。

原理

    利用助手的反向代理功能,通过自己的代理服务器将助手发送过来的消息丢给其它语言模型,你唯一需要做的就是对数据格式进行转换。参考下面的示例代码,可以接入任何大语言模型。

示例

    以下是接入Gemini(谷歌推出的大模型)的参考代码,实际应用的话你还可以对错误进行处理,比如出错后自动重试,保证每次都可以返回内容。或者通过判断请求参数中的模型名称接入对应大模型。

const express = require('express');const axios = require('axios');
const app = express();const port = 9000;
const API_KEY = '';  // 配置Gemini的APIKEYconst 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就可以直接部署到腾讯云函数或自己的服务器。部署教程链接频道内也有分享。


文章来源: http://mp.weixin.qq.com/s?__biz=MzU2NTk1Mzk1NA==&mid=2247488677&idx=1&sn=57e1cfa596a6c7094599cd090f6da5c0&chksm=fd0db09c8f9b6a0063351227612c7ae385291f8bdff8ed0d599b26b9f42fe686f55f9d881a5a&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh