【AI】命令行调用大模型


鑫宝Code

🌈个人主页: 鑫宝Code
🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础
💫个人格言: "如无必要,勿增实体"


正文开始

文章目录

  • 【AI】命令行调用大模型
    • 引入
    • 正文
      • 初始化项目
      • 撰写脚本
      • 全局安装
    • 成果展示

【AI】命令行调用大模型

引入

最近使用通义千问,发现我的网页一旦切换,它就不给我生成结果了,非常的鸡贼🐶。

亦或是打开其他的一些大模型网站,但是网页加载比较耗时,于是我开始思考🤔,有什么更快的方式去拿到大模型的结果呢。没错,使用接口直接调用🐶。通过设置全局命令,只需要在命令行中输入如下即可得到的结果。🤤

gpt4 你好
#大模型输出:你好,有什么可以帮助你的吗?

正文

🌟 大致思路: 这里使用的是前端npm,通过npm link 自己本地的npm包,从而达到能够快速调用的目的。

初始化项目

  1. 首先,在电脑上创建一个新的文件夹作为你的npm包项目,比如moon-shot.

没错,我们这里使用的是月之暗面的kiwi模型😁

  1. 使用npm init命令来生成项目的配置文件。具体代码如下:
mkdir moon-shot && cd moon-shot
npm init -y

撰写脚本

这里采用的脚本是之前在该篇文章《【AI】大模型API调研及推荐》里发布的。

对了,友情提醒:楼主使用的是mac,如果您采用的是windows可能会有些不同。🐶

  1. 创建一个文件夹src,里面有3个文件,分别是constant.js,kiwi.js以及main.js

    • constant.js用作存一些变量,例如MOON_API_KEY
    • kiwi.js文件用来写一些调用kiwi的接口。
    • main.js文件主要用于导出可调用的文件。
  2. 我们去Kiwi的API管理平台去创建一下自己的API_KEY,然后将API_KEY导出在constant.js文件里

constant.js文件如下👇

const MOON_API_KEY = "sk-your api-key";
exports.MOON_API_KEY = MOON_API_KEY;
  1. 然后在kiwi.js文件里撰写对应的接口

kiwi.js文件如下👇

const { MOON_API_KEY } = require("./constant");
const axios = require("axios");const callMoonShot = async (prompt) => {const url = "https://api.moonshot.cn/v1/chat/completions";const params = {model: "moonshot-v1-32k",messages: [{role: "user",content: prompt,},],};const res = axios.post(url, params, {headers: {"Content-Type": "application/json",Authorization: `Bearer ${MOON_API_KEY}`,},}).then((response) => {const { data } = response;const content = data.choices[0].message.content;return content;}).catch((error) => {console.error("调用月之暗面报错:", error);});return res;
};exports.callMoonShot = callMoonShot;

这里需要安装对应的依赖🐶,我使用的是pnpm,安装方式见下

pnpm i axios
  1. 最后我们在main.js里写进导出文件

这里我们的输入是从命令行中获取,在命令行中输出.

main.js文件如下👇

#!/usr/bin/env node
const { callMoonShot } = require("./kiwi");const main = async () => {const args = process.argv.slice(2);const input = args.join(",");const res = await callMoonShot(input);console.log(res);
};exports.main = main;if (require.main === module) {main();
}

注意: 这里要使用#!/usr/bin/env node,因为需要告诉操作系统指明特定的解释器去执行对应的Js代码, 大模型的解释如下🐶

全局安装

  1. 我们将package.json文件修改为如下:

这里主要是加入了bin的字段,指明入口文件。这样我们在调用执行文件时,可以不带路径,直接使用命令名来执行相对应的执行文件。😁

{"name": "moon-shot","version": "1.0.0","description": "","bin": {"moon": "./src/main.js"},"dependencies": {"axios": "^1.6.7"},"keywords": [],"author": "","license": "ISC"
}
  1. 全局link

进行到此步,这里我们的文件夹大致如下:

如果没有问题,那么我们运行如下命令

npm link

如果安装成功后,可以使用如下命令查看是否安装,如果安装成功了,恭喜🎉🎉🎉

npm ls -g --depth=0

成果展示

打开终端,输入如下命令

这里,我们会发现moon是绿色的啦。🤩

moon 请给我可爱的emoji

输出结果如下:

亲爱的读者,感谢您阅读到这里,如果您喜欢这篇内容并觉得我的文章对您有帮助的话,希望您能点赞关注,您的认可是我持续创作的最大动力!😋

End

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu20.04LTS+uhd3.15+gnuradio3.8.1源码编译及安装

文章目录 前言一、卸载本地 gnuradio二、安装 UHD 驱动三、编译及安装 gnuradio四、验证 前言 本地 Ubuntu 环境的 gnuradio 是按照官方指导使用 ppa 的方式安装 uhd 和 gnuradio 的,也是最方便的方法,但是存在着一个问题,就是我无法修改底层…

亚信安全联合人保财险推出数字安全保障险方案,双重保障企业数字化转型

数字化发展,新兴技术的应用与落地带来网络攻击的进一步演进升级,同时全球产业链供应链融合协同的不断加深,更让网络威胁的影响范围与危害程度不断加剧。 企业单纯依靠自身安全能力建设,能否跟上网络威胁的进化速度?能否…

Day49:WEB攻防-文件上传存储安全OSS对象分站解析安全解码还原目录执行

目录 文件-解析方案-目录执行权限&解码还原 目录执行权限 解码还原 文件-存储方案-分站存储&OSS对象 分站存储 OSS对象存储 知识点: 1、文件上传-安全解析方案-目录权限&解码还原 2、文件上传-安全存储方案-分站存储&OSS对象 文件-解析方案-目…

【深耕 Python】Data Science with Python 数据科学(2)jupyter-lab和numpy数组

关于数据科学环境的建立,可以参考我的博客:【深耕 Python】Data Science with Python 数据科学(1)环境搭建 Jupyter代码片段1:简单数组的定义和排序 import numpy as np np.array([1, 2, 3]) a np.array([9, 6, 2, …

深入解析快速排序算法

深入解析快速排序算法 一、快速排序算法简介二、快速排序算法过程三、快速排序算法示例四、快速排序算法分析1. 时间复杂度:2. 空间复杂度:3. 稳定性: 五、快速排序算法优化1. 优化基准元素的选择:2. 优化小数组的排序&#xff1a…

WIFI驱动移植实验:WIFI从路由器动态获取IP地址与联网

一. 简介 前面两篇文章,一篇文章实现了WIFI联网前要做的工作,另一篇文章配置了WIFI配置文件,进行了WIFI热点的连接。文章如下: WIFI驱动移植实验:WIFI 联网前的工作-CSDN博客 WIFI驱动移植实验:连接WIF…

工业镜头常用参数之实效F(Fno.)和像圈

Fno. 工业镜头中常用到的参数F,有时候用F/#,Fno.来表示,指的是镜头通光能力的参数。它可用镜头焦距及入瞳直径来表示,也可通过镜头数值孔径(NA)和光学放大倍率(β)来计算。有效Fno.…

【御控物联】JavaScript JSON结构转换(11):数组To数组——综合应用

文章目录 一、JSON结构转换是什么?二、术语解释三、案例之《JSON数组 To JSON数组》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

VOC(客户之声)赋能智能家居:打造个性化、交互式的未来生活体验

随着科技的飞速发展,智能家居已成为现代家庭不可或缺的一部分。然而,如何让智能家居更好地满足用户需求,提供更贴心、更智能的服务,一直是行业关注的焦点。在这个背景下,VOC(客户之声)作为一种用…

Java NIO详解

一、概念 NIO, 即new io,也叫非阻塞io 二、NIO三个核心组件: Buffer数据缓冲区Channel通道Selector选择器 1、Buffer缓冲区 缓冲区本质上是一个可以存放数据的内存块(类似数组),可以在这里进行数据写入和读取。此…

git 修改历史 commit message

目录 1,修改当前的2,修改历史的1,先查看 log2,开始修改 3,其他注意点1,中途不想修改了2,commit ID 会发生变化3,推送远程4,精准定位 1,修改当前的 直接使用下…

Linux实现m4a格式转换为wav格式

需要在linux上安装ffmpeg 参考博客 Linux上安装ffmpeg修改环境变量【这一点很重要,自己因为没有添加环境变量,捣鼓了很长时间】 将ffmpeg的绝对路径添加到 PATH 环境变量中,以让系统能找到ffmpeg的安装路径。 # /home//project/ffmpeg-6.1-a…

三个表的联合查询的场景分析-场景4:c表维护a和b表的id关联关系(一对多)

基础SQL演练,带详细分析,笔记和备忘。 目录 背景介绍 表数据 需求1:查询g表所有记录,以及关联的h的id 需求2:在需求1基础上,查出关联的h的其它字段(name) 需求3:在需…

【排序算法】希尔排序

文章目录 📝希尔排序( 缩小增量排序 )🌠分组思想🌠缩小增量的过程🌠 排序步骤🌉希尔排序的特性总结: 🚩总结 📝希尔排序( 缩小增量排序 ) 希尔排序是一种经典的排序算法&#xff0c…

Java复习第十三天学习笔记(HTML),附有道云笔记链接

【有道云笔记】十三 3.29 HTML https://note.youdao.com/s/Ru3zoNqM 一、基本标签 HTML:超文本标记语言 定义页面结构 CSS&#xff1a;层叠样式表 页面显示的样式、排版 BootStrap JS: JavaScript 界面交互(动态交互、逻辑) JQuery <!DOCTYPE html> <html> &l…

体育馆场地预约系统项目管理

1 前言 体育馆作为提供体育活动设施的重要场所&#xff0c;其使用和管理效率对于满足公众需求、提高体育活动质量具有重要意义。然而&#xff0c;传统体育馆场地预约方式仍然存在流程繁琐、效率低下等问题&#xff0c;已无法满足现代社会的需求。旨在提高体育馆的预约和管理效率…

WebGIS开发

1.准备工作 高德开发API注册账号&#xff0c;创建项目拿到key和密钥 高德key 2.通过JS API引入高德API <html><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><metaname&quo…

人工智能 框架 paddlepaddle 飞桨 使用指南 使用例子 线性回归模型demo 1

安装过程&使用指南&线性回归模型 使用例子 本来预想 是安装 到 conda 版本的 11.7的 但是电脑没有gpu 所以 安装过程稍有变动,下面简单讲下 conda create -n paddle_env117 python=3.9 由于想安装11.7版本 py 是3.9 所以虚拟环境名称也是 paddle_env117 activa…

HTTP 与 HTTPS 的区别

基本概念 HTTP&#xff08;HyperText Transfer Protocol&#xff1a;超文本传输协议&#xff09;是一种应用层协议&#xff0c;主要用于在网络上进行信息的传递&#xff0c;特别是用于Web浏览器和服务器之间的通信。 它使用明文方式发送数据&#xff0c;这意味着传输的内容可…

C++中的STL简介与string类

目录 STL简介 STL的版本 STL的六大组件 string类 标准库中的string类 string类的常用接口 string类对象对容量的操作 size()函数与length()函数 capacity()函数 capacity的扩容方式 reserve()函数 resize()函数 string类对象的操作 push_back()函数 append()函数 operator()函数…