【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.hqwc.cn/news/579252.html

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

相关文章

远程过程调用-buttonrpc源码解析5-函数绑定

前面几节的文章里提到过“通过一定的技术手段,通知远程服务器调用某个函数来执行相应的功能”,本片文章分析服务端如何使用std::bind函数,统一函数调用形式。 1、先看一个简单的例子: 温馨提示:std::bind除了绑定普通…

Linux——共享内存

Linux——共享内存 什么是共享内存共享内存原理Linux下共享内存的接口创建/获取共享内存:shmgetftok函数 映射共享内存到进程地址空间:shmat 解除共享内存映射:shmdt删除共享内存段:shmctl 利用共享内存进行通信 我们之前学习了匿…

关于未来自我的发展和一些学习方法(嵌入式方向)

我是一名大二的学生,考研还是就业,到底是重视专业课还是重视数学英语,这些问题一直困扰了我很久,但如今已经有了一些浅显的认识,所以才会想写这样一篇文章来记录一下自己的状态和未来的规划 下面的看法都是个人的看法&…

蓝桥杯刷题_day7_动态规划_路径问题

文章目录 DAY7下降路径最小和最小路径和地下城游戏 DAY7 下降路径最小和 【题目描述】 给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元…

通过node 后端实现颜色窃贼 (取出某个图片的主体rgb颜色 )

1.需求 我前端轮播图的背景色 想通过每一张轮播图片的颜色作为背景色 这样的话 需要通过一张图片 取出图片的颜色 这个工作通过前端去处理 也可以通过后端去处理 前端我试了试 color-thief 的插件 但是 这个插件是基于canvas 的模式来的 我需要在小程序中使用这个插件 而且是…

Qt 完成图片的缩放拖动

1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图。 paintEvent事件在改变窗口大小、移动窗口、手动调用update等情形下会被调用。需先了解下绘图该函数的用法。 - QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPi…

web布局——说清楚fixed布局

极限省流 想要fixed做导航页面:指定清楚top、left、right、bottom,没指定清楚布局位置就会采用默认的方式: 0)父元素的padding:fixed元素相对位移 1)同级元素是fixed元素:覆盖 2&#xff09…

自定义类型:【联合体和枚举】

一.联合体 1.联合体类型的声明 联合体像结构体一样,也是有一个或者多个成员组成,当然也可以不同的类型。但不同的是,比编译器只为最大的成员分配足够的内存空间,所有成员共用同一块内存空间。所以联合体也叫做:共用体…

GEE22:基于目视解译的土地利用分类(随机森林监督分类)

采样点信息: 设置一下采样点参数: 代码: //设置研究区位置 var table ee.FeatureCollection("users/cduthes1991/boundry/China_province_2019"); var roi table.filter(ee.Filter.eq(provinces,beijing)); Map.centerObjec…

公司服务器被.rmallox攻击了如何挽救数据?

公司服务器被.rmallox攻击了如何挽救数据? .rmallox这种病毒与之前的勒索病毒变种有何不同?它有哪些新的特点或功能? .rmallox勒索病毒与之前的勒索病毒变种相比,具有一些新的特点和功能。这种病毒主要利用加密技术来威胁用户&am…

一、图片隐写[Stegsolve、binwalk、010editor、WaterMark、BlindWaterMark、文件头尾]

工具配置 1.Stegsolve 工具地址:http://www.caesum.com/handbook/Stegsolve.jar 解释:该工具需要安装jar包后才能配合使用,下面同时会给出快速打开工具的代码,需要两个文件,启动的时候启动vbs文件 start.bat java …

基于SpringBoot的“财务管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“财务管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统登录界面图 管理员功能界面图…