案例 16:从自然语言到脚本程序
当然,你可以自己设计和创作这个脚本,但为了简便,我们直接给出一个实例。你可以将这段文本发
给 AI,让AI 为你解释其原理并进行修改,最终实现你想要的功能。
你可以将以下这段代码保存为一个 Python 脚本,命名为 ai.py,将脚本加入系统变量,使其可以在任何位置从命令行调用。你只需要在终端输入 ai [你想要做的事情]
,它就会给你一个合适的命令,然后你许可执行就可以。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import json
import requests
def get_suggested_code(query):
"""使用OpenAI的API获取建议的代码"""
# 定义用户查询的提示内容
prompt = f'''
你是一个顶级程序员和 NLP 专家,请你为以下问题提供一个简单、可靠的命令行,切记,代码应当是纯文本格式,不含注释或额外解释,不含除了代码内容本身的任何其他输出:
<<<{query}>>>
要求:
- 适用于 MacOS 的 iTerm2 终端,shell 为 zsh。
- 优先参考 GitHub 和 StackOverflow 的代码。
- 如果涉及 PDF 处理,优先使用 Chrome,除非有更好的方式。
- 优先使用最新的专门为命令行访问进行优化的网站或MacOS原生应用。
- 如果使用 curl 命令,请添加合适的信息头。
- 避免使用需要注册KEY的在线服务。
代码是:
'''
# 定义API的请求地址、请求头和请求体内容
reqUrl = 'https://api.openai.com/v1/chat/completions'
reqHeaders = {
"Content-Type": "application/json",
'Authorization': 'Bearer ' + 'sk-zUfPzkmBDhIqY5ZRksKiT3BlbkFJWsGuT2lS2CKuc' # 请将'YOUR_API_KEY'替换为您的API密钥
}
reqBody = {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": prompt}],
"max_tokens": 2048,
"temperature": 0,
}
# 发送请求并处理可能的异常
try:
response = requests.post(reqUrl, headers=reqHeaders, json=reqBody)
response.raise_for_status()
suggested_code = json.loads(response.text)['choices'][0]['message']['content']
return suggested_code
except requests.RequestException as e:
print(f"\033[91m请求出错: {e}\033[0m")
return None
def main():
query = " ".join(sys.argv[1:])
suggested_code = get_suggested_code(query)
if suggested_code:
print("\033[95m>>>>>>>>>>OpenAI 返回的代码建议:\033[0m")
print(f"\033[92m{suggested_code}\033[0m")
user_input = input("\033[94m>>>>>>>>>>>>🤔执行此代码吗? (Y/N): \033[0m")
if user_input.lower() == "y":
print("\033[93m请手动复制并执行建议的代码,以确保安全。\033[0m")
else:
print("\033[91m>>>>>>>>>>>>🙅🏻未执行代码。\033[0m")
else:
print("\033[91m未能获取有效的代码建议。\033[0m")
if __name__ == "__main__":
main()