0


ChatGPT写Flask-Demo——有体验地址

ChatGPT中API的试用


最近ChatGPT智能AI很火,可以写代码,DEBUG,写简历等等
上去查看了一下,是可以调用API的,本着学习的态度就是用这个款AI辅助我写了一个demo(本人原来对flask只懂一点点)

目录


先看效果:

0x01主页

主要功能是验证API,可以用默认的(考虑到多人使用,所以用自己的更好)
在这里插入图片描述

0x02图片API

主要功能就是自带的API,创建图片、变体图片、编辑图片
在这里插入图片描述

0x03上传图片

作为一个网站怎么能没有上传口 =。= 在这里插入图片描述

0x04调用的API自动保存

主要是第二部调用的api创建的图片等进行自动保存
在这里插入图片描述

0x05上传视频

上传视频,AI写的,真牛啊
在这里插入图片描述

0x06日志功能

AI还写了自动后台记录日志功能
在这里插入图片描述

0x07目录结构

在这里插入图片描述

0x08APP.py

  1. @app.route('/')defindex():
  2. key ={"api":-1}if k !="":
  3. key["key"]=1else:
  4. key["key"]=0
  5. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}>")return render_template('index.html', key=key)@app.route('/submit', methods=['POST'])defsubmit():
  6. key ={"api":-1}if k !="":
  7. key["key"]=1else:
  8. key["key"]=0
  9. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}>")return render_template('index.html', key=key)@app.route('/image')defimage1():
  10. key ={"key":0}
  11. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}>")return render_template('image.html',key=key,key2=key,key3=key)@app.route('/text')deftext():
  12. key =-1
  13. filenames = os.listdir("static\\text\\")# 打印文件名
  14. items_gx =[]for filename in filenames:
  15. items_gx.append(f"text/{filename}")
  16. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}>")return render_template('text.html',key=key,items_gx=items_gx)@app.route('/test_api',methods=['POST'])deftest_api():
  17. key ={"key":1}
  18. timestamp = time.time()try:
  19. org = request.form['org']
  20. api = request.form['api_key']
  21. f =open("temp","w", encoding="utf-8")
  22. f.write(api)
  23. f.close()
  24. openai.organization = org
  25. openai.api_key_path ="temp"
  26. api_dict[org]= api
  27. try:
  28. k = openai.Model.list()
  29. key["api"]=1
  30. f =open("share-api/org","a+", encoding="utf-8")
  31. f.write(f"[{timestamp}]{org}\n")
  32. f.close()
  33. f =open("share-api/api","a+", encoding="utf-8")
  34. f.write(f"[{timestamp}]{api}\n")
  35. f.close()except:
  36. key["api"]=0
  37. openai.organization ="org-tuPuSBX5NRzKaE06CVvU2dHD"
  38. openai.api_key_path ="api_key.txt"
  39. logger.debug(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<[{api_dict}>")return render_template('index.html', key=key)except Exception as e:
  40. logger.debug(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<[{e}>")return e
  41. @app.route('/img_sub1',methods=['POST'])defimg_sub1():
  42. key ={"key":1}
  43. keyn ={"key":0}
  44. items =[]try:
  45. prompt = request.form['prompt']
  46. size = request.form['size']
  47. num =int(request.form['num'])ifint(num)>10:for i inrange(0,num,10):
  48. sleep(31)
  49. ret = openai.Image.create(prompt=prompt, n=10, size=size)for i in ret['data']:
  50. items.append(i['url'])else:
  51. ret = openai.Image.create(prompt=prompt, n=num, size=size)for i in ret['data']:
  52. items.append(i['url'])for i in items:
  53. md5_name = md5(i)
  54. response = requests.get(i)# 打开图片
  55. img = Image.open(BytesIO(response.content))
  56. img.save(f"{save_cimg}{md5_name}.png", optimize=True, quality=50)# urllib.request.urlretrieve(i, f"{save_cimg}{md5_name}.png")
  57. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}>::<{keyn}>::<{items}>")return render_template('image.html', key=key,key2=keyn,key3=keyn, items=items)except openai.error.OpenAIError as e:
  58. stat =f"[{e.http_status}]{e.error}"
  59. logger.debug(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<[{e.http_status}]{e.error}>")return stat
  60. @app.route('/img_sub2',methods=['POST'])defimg_sub2():
  61. key ={"key":1}
  62. keyn ={"key":0}
  63. items =[]
  64. file_src1 =""
  65. file_src2 =""try:
  66. image = request.form['main']
  67. mask = request.form['mask']if image==""or mask =="":
  68. image = file_src1
  69. mask = file_src2
  70. prompt = request.form['prompt']
  71. size = request.form['size']
  72. num =int(request.form['num'])ifint(num)>10:for i inrange(0, num,10):
  73. sleep(31)
  74. ret = openai.Image.create_edit(image=image,mask=mask,prompt=prompt, n=int(num), size=size)for i in ret['data']:
  75. items.append(i['url'])else:
  76. ret = openai.Image.create_edit(image=image,mask=mask,prompt=prompt, n=int(num), size=size)for i in ret['data']:
  77. items.append(i['url'])for i in items:
  78. md5_name = md5(i)
  79. response = requests.get(i)# 打开图片
  80. img = Image.open(BytesIO(response.content))
  81. img.save(f"{save_cimg}{md5_name}.png", optimize=True, quality=50)# urllib.request.urlretrieve(i, f"{save_cimg}{md5_name}.png")
  82. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}>::<{keyn}>::<{items}>")return render_template('image.html',key=keyn, key2=key,key3=keyn,items2=items)except openai.error.OpenAIError as e:
  83. stat =f"[{e.http_status}]{e.error}"
  84. logger.debug(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<[{e.http_status}]{e.error}>")return stat
  85. @app.route('/img_sub3',methods=['POST'])defimg_sub3():
  86. key ={"key":1}
  87. keyn ={"key":0}
  88. items =[]
  89. file_src3 =""try:
  90. image = request.form['main']if image=="":
  91. image = file_src3
  92. size = request.form['size']
  93. num =int(request.form['num'])ifint(num)>10:for i inrange(0, num,10):
  94. sleep(31)
  95. ret = openai.Image.create_variation(image=image, n=int(num), size=size)for i in ret['data']:
  96. items.append(i['url'])else:
  97. ret = openai.Image.create_variation(image=image, n=int(num), size=size)for i in ret['data']:
  98. items.append(i['url'])for i in items:
  99. md5_name = md5(i)
  100. response = requests.get(i)# 打开图片
  101. img = Image.open(BytesIO(response.content))
  102. img.save(f"{save_cimg}{md5_name}.png", optimize=True, quality=50)# urllib.request.urlretrieve(i, f"{save_cimg}{md5_name}.png")
  103. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}>::<{keyn}>::<{items}>")return render_template('image.html',key=keyn, key2=keyn, key3=key, items3=items)except openai.error.OpenAIError as e:
  104. stat =f"[{e.http_status}]{e.error}"
  105. logger.debug(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<[{e.http_status}]{e.error}>")return stat
  106. @app.route('/upload_edit1', methods=['POST'])defupload1():# 获取客户端上传的图片
  107. image = request.files['image']# 获取图片的名称
  108. image_name = image.filename
  109. dirok= mkdir_date("img\\")if dirok !=0:# 保存图片到本地
  110. file_src1 =f"img\\{dirok}\\{image_name}"
  111. image.save(file_src1)
  112. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{file_src1}>")return"上传成功!"return"上传失败!"@app.route('/upload_edit2', methods=['POST'])defupload2():# 获取客户端上传的图片
  113. image = request.files['image']# 获取图片的名称
  114. image_name = image.filename
  115. dirok= mkdir_date("img\\")if dirok !=0:# 保存图片到本地
  116. file_src2 =f"img\\{dirok}\\{image_name}"
  117. image.save(file_src2)
  118. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{file_src2}>")return"上传成功!"return"上传失败!"@app.route('/upload_edit3', methods=['POST'])defupload3():# 获取客户端上传的图片
  119. image = request.files['image']# 获取图片的名称
  120. image_name = image.filename
  121. dirok= mkdir_date("img\\")if dirok !=0:# 保存图片到本地
  122. file_src3 =f"img\\{dirok}\\{image_name}"
  123. image.save(file_src3)
  124. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{file_src3}>")return"上传成功!"return"上传失败!"@app.route('/gx_upload', methods=['POST'])defgx_upload():
  125. key =1
  126. filenames = os.listdir("static\\text\\")# 打印文件名
  127. items_gx =[]for filename in filenames:
  128. items_gx.append(f"text/{filename}")try:# 获取客户端上传的图片
  129. image = request.files['image']# 获取图片的名称
  130. image_name = image.filename
  131. filename = md5(str(image_name))
  132. file_src_gx =f"static\\text\\{filename}.{image_name.split('.')[-1]}"
  133. image.save(file_src_gx)
  134. logger.info(f"[{request.remote_addr}]::[{request.method}]::{request.url}::{request.args}::<{key}::{file_src_gx}>")return render_template('text.html', key=key, items_gx=items_gx)except Exception as e:print(e)return render_template('text.html',key=0,items_gx=items_gx)if __name__ =='__main__':
  135. app.run(host="0.0.0.0", port=5001)

0x09Key.py

  1. import os
  2. from datetime import datetime
  3. import hashlib
  4. import openai
  5. openai.organization ="org-xxxx"
  6. openai.api_key_path ="api_key.txt"defmkdir_date(dir):
  7. nows = datetime.now()
  8. date_str = nows.strftime('%Y-%m-%d')try:# 创建文件夹
  9. os.mkdir(dir+date_str)return date_str
  10. except Exception as e:return date_str
  11. defmd5(str1):
  12. m = hashlib.md5()
  13. m.update(str1.encode('utf-8'))returnstr(m.hexdigest())

0x0A结语

对于一个只会一点点代码水平的人来说,这个AI也是够了,解决能力大于某度,过于强大

源码整合包:传送门

Demo地址:传送门(请勿攻击)

标签: flask chatgpt python

本文转载自: https://blog.csdn.net/qq_19623861/article/details/128314049
版权归原作者 我重来不说话 所有, 如有侵权,请联系我们删除。

“ChatGPT写Flask-Demo——有体验地址”的评论:

还没有评论