美文网首页
运维大佬秘诀:使用Aider和SiliconCloud API快

运维大佬秘诀:使用Aider和SiliconCloud API快

作者: 松影之子 | 来源:发表于2024-08-22 00:38 被阅读0次

后端或运维的同学每天都在和各种脚本打交道。无论是监控系统、日志分析,还是自动化部署,都会经常用到。最近发现了一个叫 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.

相关文章

网友评论

      本文标题:运维大佬秘诀:使用Aider和SiliconCloud API快

      本文链接:https://www.haomeiwen.com/subject/nzgbkjtx.html