银河麒麟V10 Ollama+ShellGPT打造Shell AI助手——筑梦之路

发布于:2025-04-10 ⋅ 阅读:(51) ⋅ 点赞:(0)

环境说明

1. 操作系统版本: 银河麒麟V10 

2. CPU架构:X86

3. Python版本:3.12.9

4. 大模型:mistral:7b-instruct

准备工作

1. 编译安装python 3.12

# 下载python 源码

wget https://www.python.org/ftp/python/3.12.9/Python-3.12.9.tgz

# 安装编译所需工具包、依赖包

yum -y groupinstall "Development tools"

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel zlib* libffi-devel libuuid-devel libnsl2-devel 

# 解压源码包、配置、编译安装

tar -zxvf Python-3.12.9.tgz

cd Python-3.12.9

./configure --prefix=/opt/python --enable-optimizations

make -j$(nproc)

make install

# 创建软链接

ln -sf /opt/python/bin/python3 /usr/bin/python
ln -sf /opt/python/bin/pip3 /usr/bin/pip

python -V 

pip -V

python -m pip install --upgrade pip

2. 安装ollama

ollama建议安装在有GPU的机器上,这里使用二进制文件方式安装,操作系统建议使用ubuntu。

#下载ollama
wget https://github.com/ollama/ollama/releases/download/v0.5.7/ollama-linux-amd64.tgz

#创建目录
mkdir /usr/bin/ollama/

#解压二进制文件到指定目录
tar -zxvf ollama-linux-amd64.tgz   -C /usr/bin/ollama/

#创建用户组
useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama 
usermod -a -G ollama  root

#授权
chown ollama:ollama   /usr/bin/ollama 
chmod +x /usr/bin/ollama

#创建service文件
cat > /etc/systemd/system/ollama.service << EOF
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
#配置远程访问
Environment="OLLAMA_HOST=0.0.0.0"
#配置跨域请求
Environment="OLLAMA_ORIGINS=*"
#配置OLLAMA的模型存放路径,默认路径是/usr/share/ollama/.ollama/models/
Environment="OLLAMA_MODELS=/data/ollama/.ollama/models"
[Install]
WantedBy=default.target
EOF

systemctl daemon-reload

#创建模型存储目录
mkdir -p /data/ollama/.ollama/models 
chown -R ollama:ollama /data/ollama/.ollama

#启动服务并加入开机启动
systemctl  enable  ollama --now

#配置环境变量
vim /etc/profile

#追加
export PATH=/usr/bin/ollama/bin:$PATH
source /etc/profile

#检查
ollama   --version

curl 127.0.0.1:11434


#ollama常用命令
启动ollama服务
ollama serve
查看所有下载的模型 
ollama list
查看大模型信息 
ollama show deepseek-r1:1.5b
查看 ollama 管理的大模型 
ollama list 
运行大模型 
ollama run deepseek-r1:1.5b
查看正在运行的大模型 
ollama ps

3. 拉取大模型

ollama pull mistral:7b-instruct

外部客户端访问:http://ip地址:11434

安装ShellGPT

https://github.com/TheR1D/shell_gpt

https://github.com/TheR1D/shell_gpt/wiki/Ollama

1. 安装shellGPT

pip install "shell-gpt[litellm]"

pip install shell-gpt

2. 简单测试

sgpt --model ollama/mistral:7b-instruct  "Who are you?"

3. 修改配置

vim ~/.config/shell_gpt/.sgptrc

主要修改的地方:

DEFAULT_MODEL=ollama/mistral:7b-instruct
OPENAI_USE_FUNCTIONS=false
USE_LITELLM=true

注意:以上这种是ollama模型和shellGPT在同一台主机的配置方式。

# 不同机器之间调用大模型

DEFAULT_MODEL=mistral:7b-instruct
API_BASE_URL=http://ip地址:11434
OPENAI_API_KEY=token-123

# 参考配置

CHAT_CACHE_PATH=/tmp/chat_cache
CACHE_PATH=/tmp/cache
CHAT_CACHE_LENGTH=100
CACHE_LENGTH=100
REQUEST_TIMEOUT=60
DEFAULT_MODEL=qwen
DEFAULT_COLOR=magenta
ROLE_STORAGE_PATH=/root/.config/shell_gpt/roles
DEFAULT_EXECUTE_SHELL_CMD=false
DISABLE_STREAMING=false
CODE_THEME=dracula
OPENAI_FUNCTIONS_PATH=/root/.config/shell_gpt/functions
OPENAI_USE_FUNCTIONS=true
SHOW_FUNCTIONS_OUTPUT=false
API_BASE_URL=http://xxxx:11434
PRETTIFY_MARKDOWN=true
USE_LITELLM=false
SHELL_INTERACTION=true
OS_NAME=auto
SHELL_NAME=auto
OPENAI_API_KEY=token-123

测试验证

1. 通用知识

sgpt "什么是斐波那契数列"

sgpt "你知道现在的操作系统是什么吗"

2. shell命令

sgpt --shell "找到所有的.log文件"

sgpt -s "查查看内存使用情况"

sgpt --shell "make a file named demo.txt"

sgpt --shell "find demo.txt in current folder"

3. code模式

sgpt -c "python解决buzz问题"

4. chat模式

sgpt --chat conversation_1 "please remember my favorite number: 4"

sgpt --chat conversation_1 "what would be my favorite number + 5?"
# chat+shell混合使用

sgpt --chat conversation_3 --shell "what is in current folder"
# -> ls
sgpt --chat conversation_3 "Sort by name"
# -> ls | sort
sgpt --chat conversation_3 "Concatenate them using FFMPEG"
# -> ffmpeg -i "concat:$(ls | sort | tr '\n' '|')" -codec copy output.mp4
sgpt --chat conversation_3 "Convert the resulting file into an MP3"
# -> ffmpeg -i output.mp4 -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 final_output.mp3
# chat+code混合使用

sgpt --chat conversation_2 --code "make a request to localhost using python"
sgpt --chat conversation_2 --code "add caching"

sgpt --list-chats

sgpt --show-chat conversation_1

5. REPL模式

# 交互模式

sgpt --repl temp

# shell code混合使用

sgpt --repl temp --shell

6. Agent模式

sgpt --create-role json_generator
# Enter role description: Provide only valid json as response.
sgpt --role json_generator "random: user, password, email, address"
╭─ Arguments ──────────────────────────────────────────────────────────────────────────────────────────────╮
│   prompt      [PROMPT]  The prompt to generate completions for.                                          │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --model            TEXT                       Large language model to use. [default: gpt-4o]             │
│ --temperature      FLOAT RANGE [0.0<=x<=2.0]  Randomness of generated output. [default: 0.0]             │
│ --top-p            FLOAT RANGE [0.0<=x<=1.0]  Limits highest probable tokens (words). [default: 1.0]     │
│ --md             --no-md                      Prettify markdown output. [default: md]                    │
│ --editor                                      Open $EDITOR to provide a prompt. [default: no-editor]     │
│ --cache                                       Cache completion results. [default: cache]                 │
│ --version                                     Show version.                                              │
│ --help                                        Show this message and exit.                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Assistance Options ─────────────────────────────────────────────────────────────────────────────────────╮
│ --shell           -s                      Generate and execute shell commands.                           │
│ --interaction         --no-interaction    Interactive mode for --shell option. [default: interaction]    │
│ --describe-shell  -d                      Describe a shell command.                                      │
│ --code            -c                      Generate only code.                                            │
│ --functions           --no-functions      Allow function calls. [default: functions]                     │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Chat Options ───────────────────────────────────────────────────────────────────────────────────────────╮
│ --chat                 TEXT  Follow conversation with id, use "temp" for quick session. [default: None]  │
│ --repl                 TEXT  Start a REPL (Read–eval–print loop) session. [default: None]                │
│ --show-chat            TEXT  Show all messages from provided chat id. [default: None]                    │
│ --list-chats  -lc            List all existing chat ids.                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Role Options ───────────────────────────────────────────────────────────────────────────────────────────╮
│ --role                  TEXT  System role for GPT model. [default: None]                                 │
│ --create-role           TEXT  Create role. [default: None]                                               │
│ --show-role             TEXT  Show role. [default: None]                                                 │
│ --list-roles   -lr            List roles.                                                                │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯