我亏一点 - OpenAI
type: channel
link: https://www.000081.xyz/index.php/tag/OpenAI/
items: Python3 简单调用ChatGpt Api

Python3 简单调用ChatGpt Api
type: item
date: 2023-03-01T04:37:22+00:00
description: AI摘要 本文提供了一个Python 3调用OpenAI API的简单示例。通过封装ChatGpt类，实现了文本生成（text-davinci-003）与图像生成（DALL-E）功能，并支持图片的自动下载与展示。 此内容根据文章生成，仅用于文章内容的解释与总结 Python3 简单调用ChatGpt Apiimport openai import datetime import random import urllib from PIL import Image def DownLoadImage(url): print(url) try: name = str(round(datetime.datetime.now().timestamp() + random.randint(1, 99))) + ".jpg" urllib.request.urlretrieve(url, name) return {"code": 200, "filename": name} except: return {"code": 201, "msg": "下载失败"} class ChatGpt: # openAi配置参数 # 模型名称 model = "text-davinci-003" # 控制结果随机性，0.0表示结果固定，随机性大可以设置为0.9 temperature = 0.8 # 最大返回字数（包括问题和答案），通常汉字占两个token。假设设置成100，如果prompt问题中有40个汉字，那么返回结果中最多包括10个汉字。 max_tokens = 1024 # 控制ChatGPT生成的话的多样性 top_p = 1.0 # 频率惩罚介于-2.0和2.0之间，它影响模型如何根据文本中词汇（token）的现有频率惩罚新词汇（token） frequency_penalty = 0.5 # 存在惩罚介于-2.0和2.0之间，它影响模型如何根据到目前为止是否出现在文本中来惩罚新token。 presence_penalty = 0.0 openai.organization = "org-CFk*********sasyBjhqj" openai.api_key = "sk-A0OlOGuz3g**************FJSjdmaga0evJVbqZCyiM4" def getText(self, text): try: response = openai.Completion.create( model=self.model, prompt=str(text).strip(), temperature=self.temperature, max_tokens=self.max_tokens, top_p=self.top_p, frequency_penalty=self.frequency_penalty, presence_penalty=self.presence_penalty ) response = response['choices'][0]["text"] except Exception as e: response = e print(response.strip()) return response.strip() def getImage(self, text, num=1, size="1024x1024"): response = openai.Image.create( prompt=str(text).strip(), n=num, size=size ) image_url = response['data'] for i in image_url: data = DownLoadImage(i["url"]) if data["code"] == 200: img = Image.open(data['filename']) img.show() if __name__ == "__main__": gpt = ChatGpt() # 生成图片 (第一个参数为文本，第二个参数为生成几张图片，第三个参数为分辨率256x256 512x512 1024x1024) # gpt.getImage("太极图", 1, "1024x1024") # 生成文字 (传入文字内容就行了) # gpt.getText("你好")