gpt_output / utils /open_ai_utils.py
lancerrrrrrr's picture
Upload 24 files
d180100
Raw
History Blame Contribute Delete
6.48 kB
import os
import openai
import re
import time
class OpenAiApi:
def __init__(self):
openai.api_base = "https://api.chatanywhere.tech/v1"
# openai.api_base = "https://api.chatanywhere.com.cn/v1"
# openai.api_base = "https://api.chatanywhere.tech"
# openai.organization = "org-hPyWJWxTelSVBObp7A7GWb2H"
openai.api_key = "sk-yPoMGUTiAXfV3BZPZK6W1h6MpsImRJybKMMAMI6T2foQpZdm"
# openai.proxy = {
# "http":"http://127.0.0.1:1080",
# "https": "http://127.0.0.1:1080"
# }
openai.Model.list()
def chat(self, inputs=None, model_name="gpt-4"):
MODEL = model_name
messages = []
for input in inputs:
messages.append({"role": "system", "content": input})
response = openai.ChatCompletion.create(
model=MODEL,
messages=messages,
temperature=0,
)
story = response['choices'][0]['message']['content'];
return story
# return {"name": self.get_story_name(story), "story": story}
def chat_dist(self, inputs=None, model_name="gpt-4"):
MODEL = model_name
messages = []
for input in inputs:
messages.append({"role": "system", "content": input})
startTime = time.time()
response = openai.ChatCompletion.create(
model=MODEL,
messages=messages,
temperature=0,
)
print(response)
story = response['choices'][0]['message']['content']
t = time.time() - startTime
print("------------")
print("%s 生成完成\n使用时间:%s \n生成内容:%s \n" % (model_name, t, story))
print("------------")
return {"content": story, "model_name": model_name, "executeTime": t}
def chat_outline(self, outline=None):
# MODEL = "gpt-3.5-turbo"
MODEL = "gpt-4"
response = openai.ChatCompletion.create(
model=MODEL,
messages=[
{"role": "system",
"content": "你现在是一个优秀的故事创作者,你总是能产生一些天马行空的想法,你可以再知道故事大纲的情况下,很好的补充一个完整的故事"},
{"role": "user", "content": "故事大纲:" + outline},
],
temperature=0,
)
story = response['choices'][0]['message']['content']
return story
def get_story_name(self, story):
pattern = r"《(.*?)》"
match = re.search(pattern, story)
if match:
story_name = match.group(1)
print("故事名称:", story_name)
else:
print("未找到故事名称。")
def chat_storyboard(self, story=None):
# MODEL = "gpt-3.5-turbo"
MODEL = "gpt-4"
response = openai.ChatCompletion.create(
model=MODEL,
messages=[
{"role": "system",
"content": "你的角色是一个分镜大师,总能把一个故事,拆分成不同的画面,并给只有视觉元素的描述和画面感的文字,接下来我会给以一段故事,你要把这个故事分成四个画面,并用简练的文字描述出来,每个镜头用 || 分割"},
{"role": "user", "content": story},
],
temperature=0,
)
storyboard = response['choices'][0]['message']['content']
print(storyboard)
return self.split_storyboard(storyboard)
def storyboard_to_prompt(self, storyboard=None):
text = ""
for i, scene in enumerate(storyboard, 1):
text += f"{scene} \n"
MODEL = "gpt-4"
response = openai.ChatCompletion.create(
model=MODEL,
messages=[
{"role": "system",
"content": "你是一个专业的中英文翻译,你的工作是把中文翻译成英文,你现在需要把下面的中文翻译成英文,不需要除了翻译之外的其他话语,每段翻译用 || 分割"},
{"role": "user", "content": text},
],
temperature=0,
)
prompt = response['choices'][0]['message']['content']
print(prompt)
return prompt.split("||")
def split_storyboard(self, storyboard=None):
ret = []
scenes = storyboard.split("||")
# Trim leading and trailing whitespaces from each scene
scenes = [scene.strip() for scene in scenes]
for scene in scenes:
colon_index = scene.find(":")
if colon_index != -1: # 仅当找到冒号时才截取内容
ret.append(scene[colon_index + 1:].strip())
# Print the list of scenes
for i, scene in enumerate(ret, 1):
print(f"镜头{i}{scene}")
return ret
# api = OpenAiApi()
# list = ["毛毛背着小书包,离开繁华的城市,远远的可以看到山脚下的小村子,夏天的阳光洒在她的身上。",
# "毛毛和外公手挽手走在果园里,篮子里装满了各种各样的水果,毛毛一边摘水果,一边听着外公讲述关于果园的故事。",
# "毛毛在草莓地里快乐的摘着草莓,一边吃一边摘,甜甜的草莓汁液沾在她的嘴角,她的脸上洋溢着幸福的笑容。",
# "毛毛和村子里的小朋友们在田野里追逐,小溪边嬉戏,树荫下讲故事,夏天的阳光洒在他们身上,那些无忧无虑的日子,让毛毛觉得非常快乐。"]
#
# api.storyboard_to_prompt(list)
#
#
# api.split_storyboard("镜头一:小明站在城市的高楼大厦中,远眺窗外,脸上带着期待的微笑。背景是繁华的城市景象,高楼大厦,车水马龙。||镜头二:小明在果园中,爬在一棵大桃树上,手中拿着一个熟透的桃子,咬一口,汁水流下嘴角。背景是满园的各种颜色的水果,红的、黄的、绿的,看得人眼花缭乱。|| 镜头三:小明和村里的小朋友们在果园里玩耍,他们在树下搭建小木屋,树间挂起吊床,树上挂起秋千,一片欢乐的气氛。|| 镜头四:小明和外公在果园里劳作,外公教他如何修剪树枝,如何施肥,如何挑选熟透的水果。小明满脸的汗水,但脸上却洋溢着满足的笑容。")
#
# story = api.chat_outline()
# storyboard = api.chat_storyboard(story["story"])
#
# print(storyboard)