当前项目是受到Shell_GPT启发的,使用Rust开发的一个命令行工具,作用跟Shell_GPT几乎一样,就是可以让你命令行里面调用LLM。
相比于Shell_GPT,我搞的sgp_rs应该是可以直接下载二进制文件解压缩就能用的,所以安装代码如下, 以0.4.5版本为例。如果有最新的,从 https://github.com/xuzhougeng/sgpt-rs/releases/下载。
wget https://github.com/xuzhougeng/sgpt-rs/releases/download/v0.4.5/sgpt-v0.4.5-linux-musl-x86_64.tar.gz
tar xf sgpt-v0.4.5-linux-musl-x86_64.tar.gz
接着把sgpt添加到环境变量中,或者在当前目录下用./sgpt
的方式使用。
先使用我的fake模型评估是否安装成功
sgpt --model fake "Hello world"
为了真正的使用模型,编辑 ~/.config/sgpt_rs/.sgptrc 设置使用DeepSeek作为默认模型
API_BASE_URL=https://api.deepseek.com
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DEFAULT_MODEL=deepseek-chat
也可以直接在环境变量或者在~/.zshrc, ~/.bashrc中配置
export API_BASE_URL=https://api.deepseek.com
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export DEFAULT_MODEL=deepseek-chat
大抵是支持所所有OpenAI接口兼容的模型,比如说轨迹流动的接口。
export API_BASE_URL=https://api.siliconflow.cn
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export DEFAULT_MODEL=moonshotai/Kimi-K2-Instruct-0905
也支持本地Ollama
# 推荐写法:带 /v1(客户端会自动补齐 /v1,不带也可以)
export API_BASE_URL=http://localhost:11434/v1
# Ollama 不需要API_KEY, 随便写
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 选择已拉取的模型,例如:llama3.1 / qwen2.5 / mistral 等
export DEFAULT_MODEL=gpt-oss:120b
如果你是服务器A上配置了Ollama,想让服务器B也能用。千万不要修改让Ollama的Host为0.0.0.0,因为Ollama无法设置API_KEY,很容易被其他人用。最好的方法你用Nignx转发。
server {
listen 80;
server_name _; # 或者写你的内网主机名/IP
# 基本认证
# (可选)内网 IP 白名单,更安全
allow 172.16.0.0/12;
allow 192.168.0.0/16;
deny all;
location / {
proxy_pass http://127.0.0.1:11434;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 对流式响应(SSE)很重要
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}
然后其他服务器只需要修改 export API_BASE_URL=http://你的Ollama的服务器:11434/v1
即可使用
对于我而言,sgpt的主要用户就是如下几个
第一,一些复杂的命令,我想不到起来,例如find查找一天内生成的文件
sgpt -s 'find查找一天内生成的文件'
# 输出的结果
find . -type f -mtime -1
[E]xecute, [M]odify, [D]escribe, [A]bort:
这里的E表示执行,M表示还不对,继续提示,D表示解释这个命令,A表示退出。
第二,就是不想复制信息到网页里,可以直接通过管道符合给sgpt,比如说
cat install.sh | sgpt '这个脚本用途是什么?'
第三,直接生成脚本
sgpt --code '来一个shell脚本分析下最近的登录用户' > run.sh
bash run.sh
当然实际上我还开发了很多有趣的功能,就后面慢慢介绍了