后端或运维的同学每天都在和各种脚本打交道。无论是监控系统、日志分析,还是自动化部署,都会经常用到。最近发现了一个叫 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
拿到密钥后根据文档设置一下环境变量,把硅基流动的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.
网友评论