2.4 python如何通过大语言模型获得正常编程获得不到的编程效果
눈WSSB눈
2024年07月28日 18:26
收录于文集
共11篇

个大语言模型设置如下任务代码:

代码块
Python
自动换行
复制代码
					self.prom = "\
                        # 请根据输入内容从以下选项中选择一个回答\
                            {\
                                手写笔,图片拼接,AI,关闭,西门子,\
                                图片编辑,小游戏,模拟世界,屏幕坐标,隐藏,\
                                其他,测试,文件映射\
                            }\
                        #注意事项:\
                            1.如果你不确定,请选择'其他';\
                            2.不要输出其他内容;\
                            3.不要具有情感,不用回复问候语等,只需执行上述规则;\
                        "
复制成功

测试结果:

代码块
Python
自动换行
复制代码
user:pen
content:手写笔
user:pencil
content:手写笔
user:笔
content:手写笔
user:拼接
content:图片拼接
user:编辑
content:图片编辑
user:图片
content:图片拼接
user:ai
content:AI
user:close
content:关闭
user:Siemens
content:西门子
user:游戏
content:小游戏
user:test
content:测试
user:文件
content:其他
user:映射
content:文件映射
user:文件映射
content:文件映射
user:坐标
content:屏幕坐标
user:hide
content:隐藏
user:。。。
content:其他
复制成功

可以看出,不论是否是原词组、外语、部分词组及语义相近的词组,都可以获得所需的内容。大模型的本身对于人类手动编程的速度、复杂度都有超越级的优势,只需要部署大模型,相当于一个稍微有点错误、能力无限大的通用程序。

由此可见,如果发挥我们的想象力,我们可以使用大模型可以轻易完成一个极其复杂的任务,下面举个例。

代码块
Python
自动换行
复制代码
				prom="#根据要求生成一段完整的python代码,包括头文件、注释、代码。\
                            #注意:\
                                1.假设我已经安装了所有的python库,你可以尽情发挥。\
                                2.代码要有理有据,思路清晰。\
                                3.代码地首尾使用```包裹。\
                      "
复制成功

如上图,假设我们不会写python代码,但是我们又有使用python工作的需求,我们有一个无所不知(相对于我们自己个人)大模型,这就得到了完美互补。

代码块
Python
自动换行
复制代码
#引入自定义的chat模块
import chat
#时间模块
import time
#多线程
import subprocess
#创建本地大模型服务
client=chat.OLLAMA_AI(prom="#根据要求生成一段完整的python代码,包括头文件、注释、代码。\
                            #注意:\
                                1.假设我已经安装了所有的python库,你可以尽情发挥。\
                                2.代码要有理有据,思路清晰。\
                                3.代码地首尾使用```包裹。\
                      ")
#循环对话
while True:
  	#python代码需求
    print("user:",end="")
    user_input=input()
    #获取答案
    result=client.ask(user_input)
    #处理回答内容
    #以```分割内容
    parts=result.split("```")
    for  i in range(len(parts)):
      	#分离出python代码,有一段内容含有python并在开头
        if parts[i].lower().startswith("python"):
          	#删除掉python这个字符串
            code_str=parts[i].replace("python","")
            # 生成唯一的文件名,这里使用时间戳
            filename = f"output_{int(time.time())}.py"    
            # 使用 'w' 模式打开文件,如果文件不存在则创建
            with open(filename, 'w') as file:
                # 将字符串内容写入文件
                file.write(code_str)
            #运行filename = f"output_{int(time.time())}.py"
            # 构建命令
            command = ['python', filename]
            # 运行命令
            try:
                subprocess.run(command, check=True)
            except subprocess.CalledProcessError as e:
                print(f"Error running the script: {e}")
复制成功

要求及生成的图像

以下是保存下来的代码

代码块
Python
自动换行
复制代码

# 导入所需的库
from PIL import Image, ImageDraw

def create_red_square_image(size):
    """
    创建一个指定尺寸的红色正方形图像。

    参数:
        size (int): 图像的宽度和高度(单位:像素)

    返回:
        Image: 生成的红色正方形图像对象。
    """

    # 创建一个新的空白图像,大小为size x size,背景颜色为透明
    img = Image.new('RGB', (size, size), color='white')
    
    # 创建一个绘图对象来绘制在图像上
    draw = ImageDraw.Draw(img)
    
    # 使用红色填充整个图像(0-255范围内的RGB值)
    draw.rectangle((0, 0, size, size), fill=(255, 0, 0))
    
    return img

# 创建一个500x500像素的红色正方形图片
red_square_image = create_red_square_image(500)

# 显示生成的图像(需要使用ImageShow函数)
from PIL import ImageTk
import tkinter as tk

root = tk.Tk()
img_tk = ImageTk.PhotoImage(red_square_image)
panel = tk.Label(root, image=img_tk)
panel.pack(side="bottom", fill="both", expand="yes")

tk.mainloop()

复制成功

从模型生成的代码来看,思路很清晰,只要输入的要求条理清晰、准确,代码输出基本无误,本地运行7B模型完成这种任务还是比较吃力地。不过完成开头的简单任务还是很轻松的。