2023 年最新百度智能云千帆大模型 Node.Js 本地测试 / 微信机器人详细教程(更新中)

news2024/11/28 22:52:09

千帆大模型概述

一站式企业级大模型平台,提供先进的生成式AI生产及应用全流程开发工具链。直接调用ERNIE-Bot 4.0及其他主流大模型,并提供可视化开发工具链,支持数据闭环管理、专属大模型定制、大模型训练调优、插件编排等功能。

在这里插入图片描述
千帆大模型链接地址:https://cloud.baidu.com/product/wenxinworkshop

百度智能云千帆社区

百度智能云千帆社区链接地址:https://cloud.baidu.com/qianfandev

在这里插入图片描述

获取 access_token

access_token 默认有效期30天,单位是秒,生产环境注意及时刷新。调用本文接口,需使用应用 API Key、Secret Key。

调用接口前,请确保已有千帆应用,如无请创建千帆应用。请勿将 API Key、Secret Key 以及生成的 Access token 与他人共享或硬编码到APP及终端,为保护您的资源安全,平台可能会针对恶意滥用 token 进行禁用。

详细 API 链接地址:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Ilkkrb0i5

const axios = require('axios')

let client = {
    grant_type: "client_credentials",
    client_id: "DSHOacP5hIEMQQ26zy8DPl5k",
    client_secret: "KMGS7P1pdmLuGavzO1Nc89Mik7Ibwaf8"
}

let config = {
    headers: {
        "Content-Type": "application/json"
    }
}
axios.get(`https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${client.client_id}&client_secret=${client.client_secret}`, {}, config).then(res => {
    console.log(res.data.access_token)
}).catch(err => {
    console.log(err)
})

ERNIE-BOT 4.0 测试

在这里插入图片描述
.env 配置文件设置 token

access_token=24.67c505bd4e4a59f2effc6fdc87deab68······

安装 axios 和 dotenv 第三方库

npm i axios
npm i dotenv

本地 Node.Js 环境测试

const axios = require('axios')
const { config } = require('dotenv')
config()

let msg = {
    "messages": [
        {
            "role": "user",
            "content": "介绍一下你自己"
        }
    ]
}

let axiosconfig = {
    headers: {
        'Content-Type': 'application/json'
    }
}

let uri = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + process.env.access_token

axios.post(uri, msg, axiosconfig).then(res => {
    console.log(res.data)
}).catch(err => {
    console.log(err)
})

开通计费管理

Open api daily request limit reached 报错码:每日调用次数达到限制则需要开通付费服务

{ error_code: 17, error_msg: 'Open api daily request limit reached' }

开通计费管理链接地址:https://console.bce.baidu.com/qianfan/chargemanage/list

在这里插入图片描述

readline 场景

配置 config.js 封装 axios 调用函数

const axios = require('axios')
const { config } = require('dotenv')
config()
let uri = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + process.env.access_token
let axiosconfig = {
    headers: {
        'Content-Type': 'application/json'
    }
}

let ask = async (content) => {
    let msg = {
        "messages": [
            {
                "role": "user",
                "content": content
            }
        ]
    }
    try {
        let res = await axios.post(uri, msg, axiosconfig)
        if (res.data) {
            return res.data.result
        } else {
            return "Bot in Service Error."
        }
    } catch {
        return "Bot in Axios Error."
    }
}

module.exports = {
    ask
}
const readline = require('readline')
const fs = require('fs')
const { ask } = require('./config')

let shell = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

shell.on('close', () => {
    process.exit(0);
});

async function ERNIEFunction() {
    shell.question('ERNIE-BOT 4.0 >>> ', async answer => {
        console.log(await ask(answer))
        ERNIEFunction()
    });
}

ERNIEFunction()

案例演示效果

在这里插入图片描述

千帆 & 微信机器人场景

配置 .env 应用配置文件

client_id=DSHOacP5hIEMQQ26z······
client_secret=KMGS7P1pdmLuG······

获取百度千帆模型 access_token 脚本 access_token.js

const axios = require('axios')
const { config } = require('dotenv')
config()

const fs = require('fs')

let client = {
    grant_type: "client_credentials",
    client_id: process.env.client_id,
    client_secret: process.env.client_secret
}

let axiosconfig = {
    headers: {
        "Content-Type": "application/json"
    }
}

let getAccessToken = async () => {
    try {
        let res = await axios.get(`https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${client.client_id}&client_secret=${client.client_secret}`, axiosconfig)
        fs.writeFileSync("access_token.txt", res.data.access_token)
    } catch {
        return false;
    }
}

module.exports = {
    getAccessToken
}

access_token.txt

在这里插入图片描述
千帆大模型调用工具函数 chat.js

const axios = require('axios')
const fs = require('fs')

const { getAccessToken } = require("./access_token")
getAccessToken()

let token = fs.readFileSync("access_token.txt").toString()

console.log(token)

let uri = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=" + token
let axiosconfig = {
    headers: {
        'Content-Type': 'application/json'
    }
}

let ask = async (content) => {
    let msg = {
        "messages": [
            {
                "role": "user",
                "content": content
            }
        ]
    }
    try {
        let res = await axios.post(uri, msg, axiosconfig)
        if (res.data) {
            return res.data.result
        } else {
            return "Bot in Service Error."
        }
    } catch {
        return "Bot in Axios Error."
    }
}

module.exports = {
    ask
}

开启服务微信群 group.json 配置

{ "group": [ "testgroup", "helloworld" ] }

wechaty bot 启动脚本 bot.js

const { WechatyBuilder } = require('wechaty');
const qrcode = require('qrcode-terminal');
const fs = require('fs');

const data = fs.readFileSync('group.json', 'utf8');
const groupconfig = JSON.parse(data);

const bot = WechatyBuilder.build()

const moment = require('moment')

const colors = {
    red: '\u001b[31m', green: '\u001b[32m', blue: '\u001b[34m', reset: '\u001b[0m'
};

bot.on('scan', (code, status) => {
    qrcode.generate(code, { small: true });
})

bot.on('login', user => console.log(`User ${user} logged in`))

const { ask } = require('./chat')

bot.on('message', async message => {
    const room = message.room()
    if (room && groupconfig.group.includes(await room.topic())) {
        if (message.payload.type != 7) {
            return;
        } else {
            let msg = message.text()
            let formattedDate = moment().format('YYYY.MM.DD HH:mm:ss');
            console.log(colors.red + "ques : " + formattedDate + " : " + colors.reset + msg)
            let response = await ask(msg)
            console.log(colors.green + "answ : " + formattedDate + " : " + colors.reset + response)
            await room.say(response)
        }
    }
});

bot.on('ready', () => {
    console.log("Bot Running Now.")
})

bot.start();

项目所需全部依赖 package.json

{
	"dependencies": {
		"axios": "^1.6.2",
		"dotenv": "^16.3.1",
		"moment": "^2.29.4",
		"qrcode-terminal": "^0.12.0",
		"wechaty": "^1.20.2"
	},
	"scripts": {
		"start": "node bot.js"
	}
}

千帆 & 微信机器人演示

微信客户端测试演示视频

在这里插入图片描述
控制台日志

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1256584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RHCE---给openlab搭建web网站

作业:请给openlab搭建web网站 网站需求: 1.基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站, 1、基于 www.openlab.com/student 网站访问学生信…

中国一年有457万人确诊癌症!医生提示:这4种食物,再爱吃也要管住嘴

癌症是威胁人类生命健康的重大疾病,癌症的发生因素一直以来都是专家学者重点探索的课题。据世卫组织最新公布的数据显示,食物或与癌症发生之间存在着密切的联系,某些食物的摄入过多可能会增加患癌症的风险,所以我们应该警惕&#…

LeetCode Hot100 124.二叉树中的最大路径和

题目: 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点…

佳易王个体诊所门诊电子处方软件试用版下载,佳易王电子处方软件的配方模板功能作用与教程

佳易王个体诊所门诊电子处方软件试用版下载,佳易王电子处方软件的配方模板功能作用与教程 1、软件试用版及教程可以点击下方的官网卡片 2、软件中有一个实用的功能,配方模板功能,在开处方单时候可以一键导入配方,节省时间。 而…

2024年天津天狮学院专升本市场营销专业《市场营销学》考试大纲

2024年天津天狮学院专升本市场营销专业高职升本入学考试《市场营销学》考试大纲 一、考试性质 《市场营销学》专业课程考试是天津天狮学院市场营销专业高职升本入学考试的必 考科目之一,其性质是考核学生是否达到了升入本科继续学习的要求而进行的选拔性考试。《市…

2019年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

文章目录 2019年考研英语二真题SectionⅠ Use of EnglishSection II Reading ComprehensionText 121——细节信息题22——细节信息题23——细节信息题24——细节信息题25——词义题 Text 226——细节信息题27——细节信息题28——细节信息题29——细节信息题30——态度题 Text …

6.3 Windows驱动开发:内核枚举IoTimer定时器

内核I/O定时器(Kernel I/O Timer)是Windows内核中的一个对象,它允许内核或驱动程序设置一个定时器,以便在指定的时间间隔内调用一个回调函数。通常,内核I/O定时器用于周期性地执行某个任务,例如检查驱动程序…

基于helm的方式在k8s集群中部署gitlab - 升级(三)

接上一篇 基于helm的方式在k8s集群中部署gitlab - 部署(一),本篇重点对gitlab在k8s集群中进行升级 文章目录 1. gitlab 升级1.1 获取release1.2 下载目前版本的gitlab charts1.3 获取当前的values文件1.4 升级 2. gitlab数据库升级2.1 备份数…

【Linux】记录错误信息日志的实现

文章目录 前言一、 目录实现(log.hpp)二、目录的具体使用1.comm.hpp(管道初始化)2.sever.cpp(为读端且令其创建命名管道)3.client.cpp(为写端) 前言 我们这个设计的日志可以自定以输出的方向,可…

echart一键生成迁徙图

echart_move 介绍 echart迁徙图,选择起点和目的地生成迁徙图 软件架构 html echarts js 使用说明 将文件放到同一目录下打开index.html即可 默认是小飞机图标,如果想修改图标,将图片放到同一目录,如1.svg 代码修改为对应位…

windows本地dockr的clickhouse链接本地mysql服务,连接不上

不想看过成的,解决办法在最后面 报错信息: SQL 错误 [1000] [08000]: Poco::Exception. Code: 1000, e.code() 0, Exception: Connections to all replicas failed: test1localhost:3306 as user root (version 21.12.3.32 (official build)) , serve…

使用Selenium、Python和图鉴打码平台实现B站登录

selenium实战之模拟登录b站 基础知识铺垫: 利用selenium进行截图: driver.save_screenshot() 注意图片文件名要用png结尾. 关于移动: ActionChains(bro).move_to_element_with_offset()# 对于某个图像ActionChains(bro).move_by_offset(…

敢做敢当——歌手荆涛与歌曲《敢做敢当》的精神内核

在人生的道路上,多少次我们渴望前方,梦想在远方熠熠生辉,然而等待我们的,却往往是昨日的辉煌。面对这样的境遇,我们应该如何选择?荆涛的歌曲《敢做敢当》给出了我们一个明确的答案。 一、风中伫立&#xff…

LeetCode198.打家劫舍

打家劫舍和背包问题一样是一道非常经典的动态规划问题,只要做过几道动态规划的题,这道题简直就非常容易做出来。我应该花了10来分钟左右就写出来了,动态规划问题最重要的就是建立状态转移方程,就是说如何从上一个状态转移到下一个…

Matlab数学建模算法详解之混合整数线性规划 (MILP) 算法(附完整实现代码)

🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗&#x1f91…

Python 进阶(十一):高精度计算(decimal 模块)

《Python入门核心技术》专栏总目录・点这里 文章目录 1. 导入decimal模块2. 设置精度3. 创建Decimal对象4. 基本运算5. 比较运算6. 其他常用函数7. 注意事项8. 总结 大家好,我是水滴~~ 在进行数值计算时,浮点数的精度问题可能会导致结果的不准确性。为了…

【研究中】sql server权限用户设置23.11.26

--更新时间2023.11.26 21:30 负责人:jerrysuse DBAliCMSIF EXISTS (select * from sysobjects where namehkcms_user)--判断是否存在此表DROP TABLE hkcms_user CREATE TABLE hkcms_user (id int primary key identity(1, 1),username char(32) NOT N…

【多线程】-- 03 龟兔赛跑案例线程创建方法之三:Callable接口

多线程 2 线程创建 【续】2.2 龟兔赛跑案例 首先需要一个赛道距离,然后会距离终点越来越近判断比赛是否结束打印出胜利者龟兔赛跑开始故事中是乌龟获胜,兔子需要睡觉,所以要模拟兔子睡觉最终,乌龟赢得比赛 package com.duo.de…

【Spring MVC】Filter 过滤器异常处理 HandlerExceptionResolver 分析

文章目录 前言版本说明测试 Demo1、自定义过滤器 DemoFilter2、自定义业务异常 ServiceException3、自定义异常处理类 DemoExceptionHandler4、DemoController5、请求测试 问题分析1、日志打印记录2、Debug 方法 解决方案1、修改自定义过滤器2、请求测试 解决方案分析1、日志打…

Linux uname命令教程:如何打印linux操作系统名称和硬件的基本信息(附实例教程和注意事项)

Linux uname命令介绍 uname命令是一个在Linux中常用的命令行工具,用于打印有关操作系统名称和系统硬件的基本信息。uname这个名字来源于"UNIX name"。它最常用于确定处理器架构,系统主机名和系统上运行的内核版本。 Linux uname命令适用的Li…