HonestQiao 发表于 2024-7-23 12:38

【拥抱AIGC 应用ChatGPT和OpenAI API】使用OpenAI生成四格漫画

<div class='showpostmsg'># 【拥抱AIGC 应用ChatGPT和OpenAI API】使用OpenAI生成四格漫画

《拥抱AIGC 应用ChatGPT和OpenAI API》这本书讲的内容,基本都是实战相关的,这篇分享,就是阅读之后,使用OpenAI,来生成四格漫画。其中使用到了OpenAI的对话功能,以及绘图功能。


## 简单流程:
1. 用一句话做为Prompt,让OpenAI进行扩写
2. 将扩写的内容,分为4个部分
3. 用扩写的内容,调用OpenAI的Dall-E-3,来生成漫画图片



## 实现过程:
### 安装openai扩展
openai提供的SDK,主要为Python环境的,首先为Python环境安装openai扩展:
```
pip install openai
```

### 实例化openai对象
```
from openai import OpenAI
import time
import requests
import os

os.environ["OPENAI_LOG"] = 'debug'

# openai参数定义
OPENAI_API_KEY = "sk-cPjd4D89kSsj2dhDkx678DbSi29D01bCqU4PGSW3a7D8kS30"
OPENAI_BASE_URL = "https://api.openai.com/v1"

client = OpenAI(
    api_key=OPENAI_API_KEY,
    base_url=OPENAI_BASE_URL
)
```
需要注意的是,当前openai对请求验证严格,需要确保有稳定可靠的运行环境。

### 定义绘画相关的参数
```
# 图像大小
# ['1024x1024', '1024x1792', '1792x1024']
image_width = 1024
image_height = 1024
image_num = 4

# 风格类型
style = "comic-book"
```
绘图调用OpenAI的Dall-E-3,可以支持数十种以上的风格,这里使用手绘风格。

### 扩写内容调用
扩写内容,直接调用openai的chat接口,提供合适的提示词,就能把一句话扩写为一段话或者几段话
```
prompt = "画一个猪八戒大战变形金刚的四格漫画"
messages = [
        {"role": "system", "content": "你是一个四格漫画生成助手"},
        {"role": "user","content": prompt}
]

completion = client.chat.completions.create(
        model="gpt-4o-mini", #"gpt-3.5-turbo",
        messages=messages,
        temperature=0.7,
)

content = completion.choices.message.content
```

调用 client.chat.completions.create 成功后,content里面,就是实际返回的文本内容了。
实际运行,输出结果如下:
> **第一格**:猪八戒手握钉耙,面露自信,站在变形金刚面前。旁白:“今天,我要挑战这个机械巨人!”
>
> **第二格**:变形金刚变形,发出轰鸣声,露出高大威猛的姿态。旁白:“小心了,猪八戒!”
>
> **第三格**:猪八戒挥舞钉耙,勇敢冲向变形金刚,嘴里喊着:“我可是八戒,谁怕谁!”
>
> **第四格**:变形金刚被钉耙打中,四分五裂,猪八戒一脸得意。旁白:“看来,今天是我的胜利!”


### 生成图片调用
生成了内容以后,就可以调用Dall-E-3,来生成对应的漫画图片了。
```
        prompt2 = "生成{}张{}风格样式的图片:{}".format(
            image_num, style, content
      )
       
    response = client.images.generate(
      model="dall-e-3",
      prompt=prompt2,
      size="{}x{}".format(image_width,image_height), # ['1024x1024', '1024x1792', '1792x1024']
      # quality="standard",
      n=1,
    )
       
        image_url = response.data.url
```
上面的代码,将之前扩写的内容,提交给Dall-E-3,来生成对应的漫画。生成成功后,会返回一个老长老长的网址,就对应实际生成的图片。

最终生成的结果如下:


## 总结
通过上面的步骤,调用OpenAI的接口,从而实现了扩写内容到生成对应的图片。
当然,上述每一步的prompt还可以继续优化,以便更好的把我们的意图传达给AI服务,从而得到更符合我们期望的输出结果。
另外,后续将会结合Python图像处理工具,将每一格对应的文件,显示在对应的漫画格上。这一步,虽然可以用OpenAI来完成,但是有时候效果可能不是很好。</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                               
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

chejm 发表于 2024-7-23 14:48

<p>感谢楼主分享的有关openAI的技术知识,对openAI产生的兴趣,有机会要试用一下</p>

freebsder 发表于 2024-7-23 16:48

<p>对显卡有要求吗?</p>

hellokitty_bean 发表于 2024-7-23 18:29

<p>这个可以试一试,试一试才知道。。。。。风格学习的体验<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/lol.gif" width="48" /></p>

wangerxian 发表于 2024-7-24 10:38

freebsder 发表于 2024-7-23 16:48
对显卡有要求吗?

<p>看代码像是调用服务器的,可能就不要求显卡性能了。</p>

se7ens 发表于 2024-7-24 15:05

<p>厉害了,Open AI</p>

<p>以前知道chatGPT用来会做PPT,写文章</p>

<p>现在都可以把创意变成生成实际的作品了,看来进步不小啊</p>

lugl4313820 发表于 2024-7-25 08:18

<p>这个sdk是怎么申请到的?需要交费吗?以后还会对中国大陆用户开放openAI吗?</p>

gaoxxx 发表于 2024-7-25 16:14

感谢楼主分享的有关openAI的技术知识,对openAI产生的兴趣,有机会要试用一下!

通途科技 发表于 2024-11-4 05:47

页: [1]
查看完整版本: 【拥抱AIGC 应用ChatGPT和OpenAI API】使用OpenAI生成四格漫画