Python3 简单调用ChatGpt Api

1585364631
2023-03-01 / 0 评论 / 111 阅读 / 正在检测是否收录...

Python3 简单调用ChatGpt Api

import 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("你好")
1

评论 (0)

取消