python版網文圖片生成器

不上火星不改名發表於2024-03-17
import requests
import webbrowser
from openai import OpenAI

client = OpenAI(
    base_url="https://oneapi.xty.app/v1",
    api_key="sk-JBQJmyrMcAAJJtWb00816e05Ff80438389BaE80834Ea5480"
)

# 定義系統指令(instruction)
instruction = (
    "我將給你一段網路文學,如{0}, 先判斷文學是現代文還是古代文。如果是現代文,用現代都市漫畫風格。返還給我一段自然語言提示詞。"
    "如果是古代文,用國風古風武俠漫畫風格。畫面需要精美,敘事小說風格。請你把這個文學轉譯成適合stable diffusion作畫的英文描述。不要直譯,需要一個畫面。"
    "畫面要有故事感,提示詞以描述人物為主,武俠感強一點,人物白瘦幼。"
    "重要:提示詞最後加上字尾' --niji 6',提示詞不要有引號出現。只要回答英文提示詞,不要回答其他東西。"
)


# 初始系統訊息
messages = [
    {"role": "system", "content": instruction}
]

# 列印使用說明
print("歡迎使用網文提示詞生成器!")
print("請輸入一段網文,我會返還給你網文配圖。")


# 迴圈直到使用者輸入 'quit'
while True:
    # 獲取使用者輸入
    user_input = input("請輸入您的詞語: ")

    # 如果使用者輸入 'quit', 結束對話
    if user_input.lower() == 'quit':
        print("正在退出對話...")
        break

    # 將使用者的訊息新增到訊息列表
    messages.append({"role": "user", "content": user_input})

    # 獲取模型的回答
    completion = client.chat.completions.create(
        model="gpt-4-1106-preview",
        messages=messages
    )

    # 提取 GPT 的回答並列印
    gpt_response = completion.choices[0].message.content


    print("生成的提示詞:", gpt_response)

    # 將 GPT 的回答也新增到訊息列表,以便用於下一輪對話
    messages.append({"role": "assistant", "content": gpt_response})

    url = "https://api.zhishuyun.com/midjourney/imagine?token=8ed375d196b849098c43dae29b9ab0dc"

    headers = {
        "accept": "application/json",
        "content-type": "application/json"
    }

    # 使用者輸入prompt
    user_prompt = gpt_response
    payload = {
        "action": "generate",
        "prompt": user_prompt,
        "timeout": 480
    }

    response = requests.post(url, json=payload, headers=headers)
    data = response.json()

    # 提取圖片地址
    image_url = data.get("image_url")

    # 列印並開啟圖片地址
    print(image_url)
    webbrowser.open(image_url)

相關文章