Shell-AI:基于LLM实现自然语言理解的CLI工具

一、前言

随着AI技术的普及,部分技术领域的门槛逐步降低,比如非科班出身,非技术专业,甚至从未涉足技术领域,完全不懂服务器部署和运维,如今可以依托AI大模型非常轻松的掌握和使用相关技术,来解决一些实际问题。

比如在不同的操作系统中总会避免不了需要接触和使用CLI命令行界面,许多任务都需要使用命令行界面进行操作。而对于非技术专业人员来说,在完全没有学习Linux或Shell脚本命令的情况下可能会非常困难,甚至在没基础的情况下现学也会遇到很多问题,止步不前。为了解决这个问题,我们今天介绍一个名为 Shell-AI 的小工具,它是一个轻量级的CLI实用程序,可以将自然语言理解的能力带入您的命令行。

Shell-AI 只需要简单的自然语言输入,就可以为您提供单行命令建议,并帮助您实现您的意图。整个工程代码不到200行,使用非常方便,尤其对于非技术专业人员来说,避免了学习很多Linux或者Shell脚本命令,直接可以使用自然语言进行操作,同时对于专业技术或者运维人员,也会极大的提高日常工作的效率。在本篇文章中,我们将介绍如何使用Shell-AI工具,并探讨其在日常工作中的必要性。

二、Shell-AI 介绍

Shell-AI ( shai ) 是一个 CLI 实用程序,可为你的命令行带来自然语言理解的功能。只需用自然语言输入您想要执行的操作, shai 就会建议可实现您意图的单行命令。在幕后,Shell-AI 利用 LangChain 来实现 LLM 的使用,并以优秀的 InquirerPy 为基础构建交互式 CLI。

Shell-AI 具备以下特点:

  • 自然语言输入:用简单的英语(或其他支持的语言)描述您想要做什么。

  • 命令建议:获取可完成您要求的单行命令建议。

  • 跨平台:适用于 Linux、macOS 和 Windows。

  • Azure 兼容性:Shell-AI 现在支持 Azure OpenAI 部署。

三、Shell-AI 安装

首先需要确保已成功安装了Python环境,为了避免依赖冲突,建议还是创建虚拟环境来安装Shell-AI,具体安装在前面的文章中有介绍过多次,然后直接使用 pip 从 PyPI 安装 Shell-AI:

pip install shell-ai

四、Shell-AI 使用

4.1、环境变量

OPENAI_API_KEY :必填。将此环境变量设置为您的 OpenAI API 密钥。您可以在 OpenAI 官网上找到它。

4.2、可选变量

  • OPENAI_MODEL :默认为 gpt-3.5-turbo 。如果需要,您可以将其设置为另一个 OpenAI 模型。

  • SHAI_SUGGESTION_COUNT :默认为 3。您可以设置它来指定要生成的建议数量。

  • OPENAI_API_BASE :默认为 https://api.openai.com/v1 。您可以将其设置为指定代理或服务模拟器。

  • OPENAI_ORGANIZATION :OpenAI 组织 ID

  • OPENAI_PROXY :OpenAI 代理

  • OPENAI_API_TYPE :如果您使用的是 Azure 部署,则设置为“azure”。

  • AZURE_DEPLOYMENT_NAME :您的 Azure 部署名称(如果使用 Azure,则为必需)。

  • AZURE_API_BASE :您的 Azure API 库(如果使用 Azure,则为必需)。

4.3、配置文件

我们也可以将这些变量存储在 JSON 配置文件中:

  • 对于 Linux/macOS:在 ~/.config/shell-ai/ 下创建一个名为 config.json 的文件,并使用 chmod 600 ~/.config/shell-ai/config.json 保护它。

  • 对于 Windows:在 %APPDATA%\shell-ai\ 下创建一个名为 config.json 的文件

示例 config.json

{"OPENAI_API_KEY": "your_openai_api_key_here","OPENAI_MODEL": "gpt-3.5-turbo-0613","SHAI_SUGGESTION_COUNT": "3","OPENAI_API_BASE":"your_open_ai_proxy_url"
}

应用程序将从该文件中读取(如果存在),并覆盖任何现有的环境变量。

设置这些配置后运行应用程序。

4.5、案例实战

安装完成后,就可以使用 shai 命令调用该实用程序。

五、总结

本文介绍了一个名为Shell-AI的小工具,它是一个轻量级的CLI实用程序,可以将自然语言理解的能力带入您的命令行。Shell-AI只需要简单的自然语言输入,就可以为您提供单行命令建议,并帮助您实现您的意图。整个工程代码不到200行,使用非常方便,尤其对于非技术专业人员来说,避免了学习很多Linux或者Shell脚本命令,直接可以使用自然语言进行操作。同时对于专业技术或者运维人员,也会极大地提高日常工作的效率。

六、References

https://github.com/ricklamers/shell-ai

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

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

相关文章

网络地址转换技术NAT(第九课)

一 什么是NAT? NAT是网络地址转换的缩写,是一种在计算机网络中使用的技术,可以将私有地址转换为公共地址,从而实现本地网络与公共网络的互联。NAT工作在网络层,可以隐藏内部网络中的IP地址和端口号,从而增强网络的安全性和灵活性。在家庭网络、企业网络、公共WIFI热点等…

MongoDB实验——MongoDB shell操作

MongoDB shell操作 实验原理 MongoDB shell是一个可执行文件,是MongoDB自带的一个交互式JavaScript shell,位于MongoDB安装路径下的/bin文件夹中。要启动MongoDB shell,可执行命令mongo。这将在控制台提示符中启动该shell,Mongo…

获取Linux内核源码

在嵌入式平台上做Linux开发的时候,我们用的kernel都是芯片厂家移植到自家平台上的,但是最初的原生Linux内核的源码是从哪里来的呢?下面我们介绍一下怎么获取原生的Linux源码。 从Linux社区获取内核kernel源码 Linux社区的官方网站是 https:…

构造函数和析构函数(个人学习笔记黑马学习)

构造函数:主要作用在于创建对象时为对象的成员属性赋值&#xff0c;构造函数由编译器自动调用&#xff0c;无须手动调用。析构函数:主要作用在于对象销毁前系统自动调用&#xff0c;执行一些清理工作。 #include <iostream> using namespace std;//对象初始化和清理class…

音视频开发常用工具

文章目录 前言一、VLC 播放器1、简介2、下载3、VLC media player4、VLC 打开网络串流5、VLC 作为流媒体服务器①、搭建 RTSP 流媒体服务器②、新建播放器 二、MediaInfo1、简介2、下载3、MediaInfo①、主界面②、主要功能特点③、使用方法④、Mediainfo 相关参数和含义简介 三、…

Redis 哨兵(sentinel)

1. 是什么一 1.1 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为新主库&#xff0c;继续对外服务 1.2 作用 俗称&#xff0c;无人值守运维 哨兵的作用&#xff1a; 1、监控redis运行状态&#xff0c;包括master和slave 2、当m…

下行抢占指示 DCI format 2_1

这部分R17和R15基本内容一样&#xff0c;只是有写细节描述略有区别&#xff0c;这里就以R17版本的协议看下downlinkPreemption&#xff0c;即DCI format 2_1有关内容。 R15支持eMBB和URLLC服务。 由于URLLC业务是优先级较高的业务&#xff0c;当无线资源不足时&#xff0c;已经…

【LeetCode-中等题】200. 岛屿数量

文章目录 题目方法一&#xff1a;深度优先搜索 dfs方法二&#xff1a;广度优先搜索 bfs方法三&#xff1a;&#xff08;重点掌握&#xff09;并查集 题目 方法一&#xff1a;深度优先搜索 dfs 思路&#xff1a;让一个扫描指针扫描每一个格子&#xff0c;然后每扫到一个为1的格…

基于Gin框架的HTTP接口限速实践

在当今的微服务架构和RESTful API主导的时代&#xff0c;HTTP接口在各个业务模块之间扮演着重要的角色。随着业务规模的不断扩大&#xff0c;接口的访问频率和负载也随之增加。为了确保系统的稳定性和性能&#xff0c;接口限速成了一个重要的话题。 1 接口限速的使用场景 接口…

Qt —UDP通信QUdpSocket 简介 +案例

1. UDP通信概述 UDP是无连接、不可靠、面向数据报&#xff08;datagram&#xff09;的协议&#xff0c;可以应用于对可靠性要求不高的场合。与TCP通信不同&#xff0c;UDP通信无需预先建立持久的socket连接&#xff0c;UDP每次发送数据报都需要指定目标地址和端口。 QUdpSocket…

springboot配置ym管理各种日记(log)

1&#xff1a;yml配置mybatis_plus默认日记框架 mybatis-plus:#这个作用是扫描xml文件生效可以和mapper接口文件使用&#xff0c;#如果不加这个,就无法使用xml里面的sql语句#启动类加了MapperScan是扫描指定包下mapper接口生效&#xff0c;如果不用MapperScan可以在每一个mapp…

docker常用中间件安装

文章目录 1、前言2、中间件安装2.1、mysql2.2、gitlab容器2.3、nacos2.4、redis2.5、xxljob2.6、zipkin2.7、sentinel2.8、seata2.8.1、获取镜像2.8.2、运行容器并获取配置 2.9、rockerMQ2.9.1、rockerMQ-namesrv2.9.2、rockerMQ-broker2.9.3、rockerMQ-console 2.10、jenkins2…

每日一题(链表中倒数第k个节点)

每日一题&#xff08;链表中倒数第k个节点&#xff09; 链表中倒数第k个结点_牛客网 (nowcoder.com) 思路: 如下图所示&#xff1a;此题仍然定义两个指针&#xff0c;fast指针和slow指针&#xff0c;假设链表的长度是5&#xff0c;k是3&#xff0c;那么倒数第3个节点就是值为…

【进阶篇】MySQL分库分表详解

文章目录 0. 前言1. 垂直分库分表2. 水平分库分表 1. 理解过程及实现方案问题讨论衍生出分库分表策略借助成熟组件使用分库分表阶段完成后面临的问题1. 异地多活问题2. 数据迁移问题3. 分布式事务问题4. join查询的问题 分库分表的策略实现示例 2. 参考文档 0. 前言 假设有一个…

windows笔记本远程连接如何打开任务管理器?

参考素材&#xff1a; https://jingyan.baidu.com/article/8275fc86a97f5207a03cf6cd.html https://www.anyviewer.cn/how-to/ctrl-alt-delete-remote-desktop-6540.html 网上查了很多方法&#xff0c;都说ctrlaltend可以解决这个问题。 但是笔记本键盘上没有end键。 继续查了一…

【数学建模】清风数模正课5 相关性分析

相关系数 相关性分析的关键是计算相关系数&#xff0c;在本节课中将会介绍两种常用的相关系数&#xff1a;皮尔逊相关系数&#xff08;Pearson&#xff09;和斯皮尔曼相关系数&#xff08;Spearman&#xff09;。 它们可以用来衡量两个变量间相关性的大小&#xff0c;对于不同…

Android 13 - Media框架(9)- NuPlayer::Decoder

这一节我们将了解 NuPlayer::Decoder&#xff0c;学习如何将 MediaCodec wrap 成一个强大的 Decoder。这一节会提前讲到 MediaCodec 相关的内容&#xff0c;如果看不大懂可以先跳过此篇。原先觉得 Decoder 部分简单&#xff0c;越读越发现自己的无知&#xff0c;Android 源码真…

安卓 tcp 客户端

安卓 tcp 客户端 Server:8888 是Qt 写的Tcp 服务器 ip 是 192.168.2.103 port是8888 安卓手机运行 kotlin 语法的Tcp Client &#xff0c;连接&#xff0c;收发数据 效果如下图 Tcpclient package com.example.myapplicationimport android.os.Handler import android.os.Loo…

Go操作各大消息队列教程(RabbitMQ、Kafka)

Go操作各大消息队列教程 1 RabbitMQ 1.1 概念 ①基本名词 当前市面上mq的产品很多&#xff0c;比如RabbitMQ、Kafka、ActiveMQ、ZeroMQ和阿里巴巴捐献给Apache的RocketMQ。甚至连redis这种NoSQL都支持MQ的功能。 Broker&#xff1a;表示消息队列服务实体Virtual Host&#x…

深入探讨梯度下降:优化机器学习的关键步骤(一)

文章目录 &#x1f340;引言&#x1f340;什么是梯度下降&#xff1f;&#x1f340;损失函数&#x1f340;梯度(gradient)&#x1f340;梯度下降的工作原理&#x1f340;梯度下降的变种&#x1f340;随机梯度下降&#xff08;SGD&#xff09;&#x1f340;批量梯度下降&#xf…