运维大佬秘诀:使用Aider和SiliconCloud API快速进行各种脚本开发

后端或运维的同学每天都在和各种脚本打交道。无论是监控系统、日志分析,还是自动化部署,都会经常用到。最近发现了一个叫 Aider 的 开源项目,配合硅基流动的SiliconCloud API接口,写代码尤其是写脚本快到飞起。
Aider 是一个与大型语言模型(LLMs)进行结合,可以编辑本地 或者Git 仓库中的代码,Aider 不限于单一编程语言。它可以理解并生成多种编程语言的代码,比如python、js、html、java等,而且还能通过命令行与 Aider 进行对话式交互,询问问题。
SiliconCloud是基于优质的大语言模型提供服务,包括 Llama3、Mixtral、Qwen、Deepseek等,为用户提供超快的模型API接口。

首先安装aider

根据github教程GitHub - aider安装一下aider

python -m pip install aider-chat

然后注册并白嫖SiliconCloud API

安装完成后注册一下SiliconCloud拿一下API,新用户注册就送2000万tokens,够用很久了,而且还有很多免费的模型可以选不会消耗额度

image.png

注册完成后到控制台拿一下密钥


image.png

拿到密钥后根据文档设置一下环境变量,把硅基流动的API作为模型请求源


image.png
# Mac/Linux:
export OPENAI_API_BASE=https://api.siliconflow.cn/v1
export OPENAI_API_KEY=<你的key>

# Windows:
setx OPENAI_API_BASE https://api.siliconflow.cn/v1
setx OPENAI_API_KEY <你的key>

# 别忘了重启一下bash

重启bash后可以像下面一样验证一下设置环境变量成功没


image.png

显示是你刚才设置的就可以

准备工作OK,开始起飞

aider有两种模式,不管哪种模式前提是要使用AI大模型,硅基流动提供的有几十种国内外模型可以选,这里选择的是deepseek-ai/DeepSeek-Coder-V2-Instruct
第一种是聊天模式,通过命令行激活bash作为聊天对话工具及时解答问题

 aider --model openai/deepseek-ai/DeepSeek-Coder-V2-Instruct chat # 激活SiliconCloud API的deepseek编码模型解答编程问题

激活后得益于SiliconCloud 国内线路的优化,响应速度非常快


image.png

受限于bash或者terminal的显示,聊天模式并不是重点,重点是写代码模式
第二种,编写/修改代码模式
比如建一个测试的空目录和空文件main.py,然后在这个目录打开bash或者命令行窗口,执行命令行

aider --model openai/deepseek-ai/DeepSeek-Coder-V2-Instruct .\main.py

可能会提示你关联git仓库,跳过就可以,有git仓库的好处时能记录提问和代码修改历史
然后出现下方页面


image.png

这时候就可以输入你的需求了,小试牛刀,比如处理nginx 的访问日志,我们想知道:"哪些 IP 访问最频繁?",以前自己做可能需要搞半天,现在有了 Aider 加上SiliconCloud 的 deepseek api(个人感觉国内模型这个编码能力表现较好),分分钟就能搞定。
输入完需求回车之后一眨眼的功夫,代码不仅写好了还帮你自动保存到了文件中,有问题还可以继续提示修改,是不是相当强大


image.png
import re
from collections import Counter

def read_log_file(file_path):
    with open(file_path, 'r') as file:
        log_data = file.read()
    return log_data

def extract_ips(log_data):
    ip_pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\b'
    ips = re.findall(ip_pattern, log_data)
    return ips

def get_top_n_ips(ips, n=10):
    ip_counter = Counter(ips)
    top_n_ips = ip_counter.most_common(n)
    return top_n_ips

def print_top_n_ips(top_n_ips):
    print(f"Top {len(top_n_ips)} most frequent IPs:")
    for ip, count in top_n_ips:
        print(f"{ip}: {count}")

def main():
    log_file_path = 'access.log'
    log_data = read_log_file(log_file_path)
    ips = extract_ips(log_data)
    top_n_ips = get_top_n_ips(ips)
    print_top_n_ips(top_n_ips)

if __name__ == "__main__":
    main()

再来个自动化部署脚本:帮我实现自动化部署脚本实例,使用git拉取代码 使用npm run build编译打包,然后登录服务器上传到指定目录

Desktop\test\auto.py
> 帮我实现自动化部署脚本实例,使用git拉取代码 使用npm run build编译打包,然后登录服务器上传到指定目录

好的,我可以帮助你实现一个自动化部署脚本。这个脚本将使用 git 拉取代码,使用 npm run build
编译打包,然后登录到服务器并上传到指定目录。以下是一个示例脚本:

Desktop\test\auto.py

 +import os
 +import subprocess
 +import paramiko
 +
 +def deploy():
 +    # 本地代码目录
 +    local_code_dir = "/path/to/your/local/code"
 +    # 远程服务器信息
 +    remote_server = "your_remote_server"
 +    remote_user = "your_remote_user"
 +    remote_password = "your_remote_password"
 +    remote_dir = "/path/to/remote/directory"
 +
 +    try:
 +        # 进入本地代码目录
 +        os.chdir(local_code_dir)
 +
 +        # 拉取最新代码
 +        print("Pulling the latest code from git...")
 +        subprocess.run(["git", "pull"], check=True)
 +
 +        # 安装依赖
 +        print("Installing dependencies...")
 +        subprocess.run(["npm", "install"], check=True)
 +
 +        # 编译打包
 +        print("Building the project...")
 +        subprocess.run(["npm", "run", "build"], check=True)
 +
 +        # 连接到远程服务器
 +        print("Connecting to the remote server...")
 +        ssh = paramiko.SSHClient()
 +        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 +        ssh.connect(remote_server, username=remote_user, password=remote_password)
 +
 +        # 上传编译后的文件
 +        print("Uploading the build files to the remote server...")
 +        sftp = ssh.open_sftp()
 +        sftp.put_r(os.path.join(local_code_dir, "build"), remote_dir)
 +        sftp.close()
 +
 +        # 关闭SSH连接
 +        ssh.close()
 +
 +        print("Deployment completed successfully!")
 +    except Exception as e:
 +        print(f"Error during deployment: {e}")
 +
 +if __name__ == "__main__":
 +    deploy()


请注意:

 1 将 /path/to/your/local/code 替换为你的本地代码目录路径。
 2 将 your_remote_server、your_remote_user、your_remote_password 和 /path/to/remote/directory
   替换为你的远程服务器信息和目标目录。
 1 将 /path/to/your/local/code 替换为你的本地代码目录路径。
 2 将 your_remote_server、your_remote_user、your_remote_password 和 /path/to/remote/directory
   替换为你的远程服务器信息和目标目录。
 3 确保你已经安装了 paramiko 库,可以使用 pip install paramiko 进行安装。

这个脚本将自动完成从拉取代码到上传编译后文件的整个部署过程。


Tokens: 487 sent, 583 received.
Committing Desktop\test\auto.py before applying edits.
Commit b032538 feat: add auto.py for desktop testing
Applied edit to Desktop\test\auto.py
Commit d94f2b3 feat: add automated deployment script for git pull, npm build, and server upload
You can use /undo to undo and discard each aider commit.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容