如何在Linux系统上通过命令调用AI大模型?
文章目录
在这个AI技术飞速发展的时代,每一个程序员都应该问问自己:如何将人工智能的强大能力融入到我们熟悉的操作系统中?Linux,这个开源世界的基石,正在悄然拥抱这场认知革命。你是否想过,在你的服务器、你的开发环境中,也能轻松接入强大的AI大模型?这不仅仅是一个技术突破,更是一场开源精神与人工智能的完美邂逅。无需复杂界面,只需几行命令就能让AI帮你解答数学题、写代码、甚至分析数据!本文将手把手教你 零基础搭建专属AI命令行工具,让你在终端里体验「钢铁侠的贾维斯」般的智能助手!

(本实验基于Ubuntu22.04系统进行,AI大模型部署在另一台ubuntu22.04机器上)
一、准备工作
(如何部署本地AI大模型全网遍地都是我就不在过多赘述了,使用ollama即可轻松部署。)
1.确保模型已本地部署
- 确保大模型已经部署或使用API调用。(本文并非使用该机器的本地大模型,而是在另一台本地服务器上部署的8b大模型进行使用,所以涉及到了API调用,感兴趣的小伙伴可以自行搜索一下如何调用本地的API)
- 模型需支持Hugging Face Transformers格式(包含
pytorch_model.bin
、config.json
等文件)。
2.安装Python环境
sudo apt update
sudo apt install python3 python3-pip # 确保Python3已安装
sudo apt install python3-venv #安装虚拟环境支持
python3 -m venv ~/ai-env --without-pip # 跳过pip错误
source ~/ai-env/bin/activate # 激活环境
3.**手动安装pip **
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py # 在虚拟环境中安装pip
rm get-pip.py
二、编写API调用脚本
1.创建脚本文件
mkdir -p ~/ai-helper && cd ~/ai-helper
nano ai_api.py
2.脚本内容(适配你的API)
如果使用本地大模型,将地址更改成路径即可。
#!/usr/bin/env python3
import sys
import json
import requests
API_URL = "http://192.168.104.155:11434/api/generate"
def call_ai_api(prompt):
try:
system_prompt = "你是一个问答机器人,你需要回答用户提问的问题"
full_prompt = f"[INST] <<SYS>>\n{system_prompt}\n<</SYS>>\n\n{prompt} [/INST]"
payload = {
"model": "deepseek-r1:14b", # 14B模型
"prompt": full_prompt, # 使用结构化prompt
"stream": False,
"temperature": 1.3, # 1.2-1.3范围
"max_tokens": 2048, # token上限
}
# 增加超时容错机制
response = requests.post(
API_URL,
headers={"Content-Type": "application/json"},
data=json.dumps(payload),
timeout=600 # 14B模型建议更长超时
)
response.raise_for_status()
# 优化响应处理
result = response.json()
if "response" not in result:
return "收到空响应,请检查模型是否加载成功"
# 过滤模型自述内容(根据历史对话需求)
clean_response = result["response"].split("由中国的深度求索")[0].strip()
return clean_response or "未获取有效响应"
except requests.exceptions.Timeout:
return "请求超时,建议:1.检查模型服务状态 2.增加timeout值"
except requests.exceptions.RequestException as e:
return f"API连接失败: {str(e)}"
except json.JSONDecodeError:
return f"响应解析失败,原始数据开头: {response.text[:150]}"
except KeyError:
return f"响应格式异常,完整响应: {response.text}"
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: ai '你的请求内容'")
sys.exit(1)
print(call_ai_api(sys.argv[1]))
三、配置命令行工具
1.安装依赖库
source ~/ai-env/bin/activate
pip install requests # 安装HTTP请求库
deactivate
2.设置可执行权限
chmod +x ~/ai-helper/ai_api.py
3.创建全局别名
echo "alias ai='~/ai-env/bin/python3 ~/ai-helper/ai_api.py'" >> ~/.bashrc
source ~/.bashrc
搭建完成。
使用AI命令
ai "1+1=几"
<think>
</think>
1 + 1 = **2**
ai "你是谁?"
<think>
</think>
您好!我是由中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-R1。如您有任何任何问题,我会尽我所能为您提供帮助。
如果我们的deepseek模型较小例如7b/8b就可能超时例如:
root@C20241115552756:~/ai-helper# ai "天为什么是蓝色的"
请求失败: HTTPConnectionPool(host='192.168.104.155', port=11434): Read timed out. (read timeout=60)
root@C20241115552756:~/ai-helper# ai "圆周率前五位是多少?"
请求失败: HTTPConnectionPool(host='192.168.104.155', port=11434): Read timed out. (read timeout=60)
建议延长timeout时长,或者部署更大的AI大模型。
部署更大的大模型也意为着你可以提问更加复杂的问题,帮助你在工作中轻松解决复杂问题。
帮我做一个文档总结
root@C20241115552756:~/ai-helper# ai "朱自清的《春》,帮我做总结"
<think>
嗯,我需要帮用户总结朱自清的《春》。首先,我应该回忆一下这篇文章的主要内容和主题。《春》是朱自清先生的一篇非常著名的散文,我记得里面描绘了春天的各种景象,充满了生机和活力。
接下来,我应该分析文章的结构。开头部分应该是对冬天的描述,然后引出对春天的期待。接着,作者可能描绘了春天到来时的具体场景,比如小草、花儿、春风等等。最后,可能会以春天的未来或收获结尾。
在主题方面,朱自清先生的文章通常充满了对自然的热爱和赞美。《春》应该也不例外,表达了对春天的美好情感以及对生命的积极态度。同时,我还记得文中用了许多生动的比喻和细腻的描写,让读者仿佛身临其境。
用户可能希望得到一个简洁但全面的总结,所以我需要涵盖文章的主要意象、主题思想以及艺术特色。这些方面能够帮助用户更好地理解《春》的核心内容和作者的写作意图。
此外,我应该避免使用过于学术化的语言,保持口语化和自然,让用户容易理解和接受。同时,要注意用词准确,确保信息传达清晰明了。
最后,我会组织好总结的结构,先介绍文章的基本情况,再逐步深入到主题、意象和艺术特色,最后做一个简短的总结,强调《春》的价值和意义。
</think>
## 春日寻芳:一场与生命的对话
在朱自清笔下,《春》是一场与生命的对话。当"东风来了",这位散文大师以诗意的目光扫过大地,将蛰伏一冬的生命重新唤醒。
文章开篇便展现出对春天的期待:"盼望着,盼望着,东风来了,春天的脚步近了。"这看似简单的重复,实则暗含着生命对光明与温暖的渴望,在漫长的寒冬过后,每一个生命的脉搏都在为春日的到来而雀跃。
在描绘自然景象时,朱自清展现出一个博物学家般的细致:小草偷偷地从土里钻出来,像不谙世事的孩子;花儿们争姘斗艳,仿佛在举行一场无声的选美大会。这些意象不仅仅是对春天的写照,更是一个生命观察者眼中的世界——每一个细微的生命都在书写着属于自己的精彩剧本。
"春风像母亲的手抚摸着你",这句描写让整个春日多了一份温柔与慈爱。但在这看似柔情的文字背后,暗藏着一个深刻的主题:在春天这个生命的狂欢季,每个生命都在寻找属于自己的位置,都在演绎着一场关于成长的独幕剧。
结尾处的追问"春天是不是永远这样新鲜?"道出了作者对永恒之美的探寻。这不仅是一个关于季节的描写,更是一曲对生命本质的咏叹。在朱自清笔下,《春》不再是单纯的自然写生,而是一场与生命的对话,一次对永恒的叩问。
这篇散文最终告诉我们:春天不仅是大地的苏醒,更是每个心灵的觉醒时刻。当生命在这样的时节里萌发,我们便懂得了存在的真谛——那就是在每一个当下,都要以最饱满的姿态迎接生命的馈赠。
提问技术问题
我们向他提问什么是shell脚本?
root@C20241115552756:~/ai-helper# ai "介绍一下什么是Shell脚本。"
<think>
嗯,我现在想了解一下什么是Shell脚本。我在使用Linux的时候,经常看到一些命令,有时候需要多次输入同样的命令,感觉有点麻烦,所以可能可以自动化这些操作。那Shell脚本是不是就是用来自动执行命令的东西呢?
我记得在Windows里有批处理文件,也就是那些以.bat为扩展名的文件,双击后会按顺序执行里面写的命令。Linux里的Shell脚本应该和这个类似吧?但我不太确定具体的细节。
Shell是什么意思呢?应该是“外壳”的意思,在计算机中通常指用户与操作系统交互的界面。所以Shell脚本可能就是用来在Shell环境下运行的一系列指令组成的文件,对吗?
那我该怎么写一个Shell脚本呢?是不是需要先写一个文件,然后给它执行权限,再运行?我记得之前有看到过示例,比如#!/bin/bash这样的开头,这是指定使用哪个解释器来运行脚本。
另外,Shell脚本除了自动执行命令之外,还能做些什么呢?比如处理变量、读取输入、进行条件判断和循环。听起来很强大,可以用来编写自动化任务,比如定时备份文件或者监控服务器状态什么的。
我还不太清楚具体的语法结构,比如怎么定义变量,如何使用if语句,for循环是怎样的。可能需要学习一下基础的Shell编程语法。另外,还有没有一些常用的命令和工具可以帮助写出更高效的脚本呢?
总的来说,Shell脚本应该是一种自动化工具,允许用户通过编写一系列命令来执行特定的任务,节省时间和提高效率。但是具体的使用方法和高级功能还需要进一步的学习和实践。
</think>
### 什么是Shell脚本?
**Shell脚本**是用于Linux或Unix系统中的一系列指令的集合,以文件形式存在,能够自动执行特定任务。它通过解释器(如Bash)运行,类似于Windows中的批处理文件。
#### 主要特点:
1. **自动化操作**:允许用户将多个命令组合在一起,减少重复输入。
2. **脚本语言**:支持变量、条件判断、循环等编程结构。
3. **可执行性**:通过赋予执行权限,脚本可以直接运行。
#### 基本步骤:
1. 创建一个新文件(如`script.sh`)。
2. 在文件开头添加解释器声明,如`#!/bin/bash`。
3. 添加所需的命令和逻辑结构。
4. 赋予文件执行权限:`chmod +x script.sh`。
5. 运行脚本:`./script.sh`。
#### 常见用途:
- **自动化任务**:如备份、日志处理。
- **系统管理**:用于维护和监控服务器。
- **批处理操作**:批量文件重命名或删除。
#### 学习资源建议:
- 熟悉基础命令和语法。
- 练习编写简单的脚本,逐步学习高级功能。
编写简单的shell脚本
他还可以帮助我们去完成一些简单工作上的内容:
比如写一个简单的shell脚本监控系统机器:
root@C20241115552756:~/ai-helper# ai "帮我写一个简单监控系统机器的shell脚本,监控CPU、内存 、硬盘等信息。"
<think>
好的,我现在需要帮用户写一个简单的监控系统资源的Shell脚本,包括CPU、内存和硬盘的信息。首先,我得考虑用户可能是什么样的背景,可能是一个刚接触运维或者系统管理的新手,所以脚本应该简单易懂,并且不需要复杂的安装步骤。
接下来,我要确定这个脚本需要监控哪些指标。用户提到了CPU、内存和硬盘,所以我需要分别收集这些信息。对于每个部分,我得找出合适的命令来获取数据。
首先是CPU使用情况。我知道`top -n1 | grep -i cpu`可以显示当前的CPU使用率,但是输出中有很多信息,比如各个核心的使用情况,可能用户只需要总负载或者平均值。或者,也许可以用`htop`,但这个需要安装,所以还是用系统自带的命令比较好。
然后是内存部分,`free -h`能显示内存和交换分区的使用情况,这样用户可以看到总的内存使用率以及是否有足够的物理内存。输出中要提取总内存、已用和剩余的部分。
硬盘方面,可以使用`df -h`来查看各个挂载点的使用情况,包括总容量、已用空间和剩余空间。此外,磁盘I/O情况可能也很重要,所以加上`iostat`命令来获取读写速率等信息。
接下来考虑如何将这些信息整合到一个脚本中,并且输出成可读的格式。也许可以将每个部分单独处理,然后拼接起来显示在屏幕上或者保存到文件里。
考虑到用户可能需要定时运行这个脚本,比如每分钟一次,所以最后加上`crontab -e`的部分,指导用户如何设置任务调度。这样用户就可以自动化地监控系统资源了。
总结一下,我需要写一个Shell脚本,使用`top`, `free`, `df`, 和`iostat`命令来获取所需信息,并以友好的格式输出。同时,添加注释让用户更容易理解每个部分的作用。
</think>
以下是一个简单的监控系统资源(CPU、内存、硬盘)的Shell脚本:
```bash
#!/bin/bash
# 系统资源监控脚本
# 1. CPU 使用情况
echo "=== CPU 使用情况 ==="
top -n1 | grep -i cpu
# 2. 内存 使用情况
echo "\n=== 内存 使用情况 ==="
free -h
# 3. 硬盘 使用情况
echo "\n=== 硬盘 使用情况 ==="
df -h
# 4. 磁盘 I/O 情况
echo "\n=== 磁盘 I/O 情况 ==="
iostat -x
# 每隔一段时间自动运行(可选)
# 运行脚本后,可以使用以下命令添加到crontab:
# crontab -e
# 添加如下内容:
# */1 * * * * /path/to/script.sh
```
### 功能说明:
1. **CPU 使用情况**:显示 CPU 的负载情况。
2. **内存 使用情况**:显示物理内存和交换分区的使用情况。
3. **硬盘 使用情况**:显示各个挂载点的使用情况(包括剩余空间)。
4. **磁盘 I/O 情况**:显示磁盘的读写情况。
### 如何运行:
1. 将上述代码保存为一个文件,例如 `monitor.sh`。
2. 赋予脚本执行权限:
```bash
chmod +x monitor.sh
```
3. 运行脚本:
```bash
./monitor.sh
```
### 定时监控(可选):
如果你想让脚本每隔一段时间自动运行,可以将它添加到 `crontab` 中。例如,每分钟运行一次:
```bash
crontab -e
```
然后添加以下内容:
```bash
*/1 * * * * /path/to/monitor.sh
```
这个脚本会简单地输出系统资源的使用情况,适合用于基本监控。你可以根据需要进一步优化或添加更多功能。
帮我写一个docker-compose
我们尝试一下让AI帮我们写一个docker-compose.yaml测试一下:
root@C20241115552756:~/ai-helper# ai "我现在有mysql:5.7和wordpress:latest的镜像,帮我写一个docker-compose.yaml部署wordpress"
<think>
好的,我现在需要帮助用户用Docker Compose部署WordPress。他们提供了MySQL 5.7和WordPress latest的镜像。
首先,我应该创建一个`docker-compose.yaml`文件。这个文件包含服务定义,包括网络和卷 mounting。
接下来,我得设定两个服务:一个是MySQL,另一个是WordPress。每个服务需要指定镜像、端口映射以及环境变量。
对于MySQL,我需要设置ROOT_PASSWORD环境变量,并将数据库目录挂载到本地路径,这样数据不会丢失。同时,配置mysqldump的cron任务来备份数据库。
然后是WordPress部分,它依赖于MySQL,所以要使用depends_on。这里同样设置WP_ENV、WP_HOME和WP_SITEURL环境变量。挂载wordpress_dir到/www/html,确保文件安全。还应安装phpmyadmin以便管理数据库。
网络方面,我需要创建一个内部的自定义网络,这样两个服务可以互相通信。
写完yaml后,用户需要用docker-compose up -d启动,并检查状态是否正常。另外,备份和日志管理也很重要,所以提醒他们使用dump.sh脚本和查看容器日志的方法。
最后,确保所有步骤清晰明了,让用户能够顺利部署WordPress。
</think>
好的!以下是一个使用 Docker Compose 部署 WordPress 和 MySQL 的配置文件 (`docker-compose.yaml`)。这个配置将创建一个包含 WordPress 和 MySQL 服务的环境,并通过自定义网络和卷 mounting 来管理数据。
```yaml
version: '3'
services:
db:
image: mysql:5.7
container_name: wordpress_db
environment:
- MYSQL_ROOT_PASSWORD=root_password # 替换为你的数据库 root 密码
volumes:
- ./mysql_data:/var/lib/mysql
networks:
- wordpress-network
command: mysqldump --all-databases --user=root --password=root_password | gzip > /var/backups/db_$(date +%Y%m%d%H%M%S).sql.gz
wordpress:
image:wordpress:latest
container_name:wordpress_site
environment:
- WP_ENV=development
- WP_HOME=http://localhost
- WP_SITEURL=http://localhost
ports:
- "80:80"
depends_on:
- db
volumes:
- ./wordpress_data:/var/www/html
networks:
- wordpress-network
networks:
wordpress-network:
driver: bridge
volumes:
wordpress_data:
driver: local
```
### 解释:
1. **MySQL 服务**:
- 使用 `mysql:5.7` 镜像。
- 设置了根密码(请将 `root_password` 替换为你的密码)。
- 数据存储在本地的 `./mysql_data` 目录中。
- 每天自动备份数据库到 `/var/backups` 目录。
2. **WordPress 服务**:
- 使用 `wordpress:latest` 镜像。
- 映射了容器的 80 端口到主机的 80 端口。
- 设置了一些 WordPress 环境变量,方便 WordPress 安装和配置。
- 数据存储在本地的 `./wordpress_data` 目录中。
3. **网络**:
- 创建了一个名为 `wordpress-network` 的内部桥接网络,以便 WordPress 和 MySQL 服务之间通信。
### 部署步骤:
1. 确保你已经安装了 Docker 和 Docker Compose。
2. 在你的项目目录下创建一个 `docker-compose.yaml` 文件,并将上述内容粘贴进去。
3. 打开终端并运行以下命令启动服务:
```bash
docker-compose up -d
```
4. 查看服务状态:
```bash
docker-compose ps
```
### 注意事项:
- **备份**:数据库每天自动备份,但请定期检查 `/var/backups` 目录以确保备份正常。
- **日志管理**:可以通过 `docker logs -f wordpress_site` 查看 WordPress 容器的日志。
这个配置文件将帮助你快速部署一个 WordPress 网站,并且数据和数据库都会持久化存储在本地目录中。
想象一下,当Linux的稳定性和可定制性遇上AI的强大能力,会迸发出怎样的火花?这不仅让开发者如虎添翼,更为整个开源生态注入了新的活力。未来的世界级应用或许就诞生于这样的结合之中。现在,让我们一起走进这个激动人心的技术前沿,探索如何将Linux与AI大模型完美融合,开启属于我们的智能化新时代!
本文到此结束啦。
想象一下,当Linux的稳定性和可定制性遇上AI的强大能力,会迸发出怎样的火花?这不仅让开发者如虎添翼,更为整个开源生态注入了新的活力。未来的世界级应用或许就诞生于这样的结合之中。现在,让我们一起走进这个激动人心的技术前沿,探索如何将Linux与AI大模型完美融合,开启属于我们的智能化新时代!
本文到此结束啦。