当前位置:   article > 正文

ai时代的数字素养-寒假实践感悟

ai时代的数字素养-寒假实践感悟

目录

1.Ai大模型使用感悟

大模型 api 调用

星火api调用

stable_diffusion webui 本地部署

stable_diffusion webui api 调用

2.实践过程:尝试采用ai实现儿童绘本创作

思路和代码实现

 问题与反思

生成过程

3.引用


1.Ai大模型使用感悟

大模型 api 调用

  1. import openai
  2. client = openai.OpenAI(api_key="······",
  3. base_url="······")
  4. response = client.chat.completions.create(model="yi", messages = [
  5. {
  6. "role": "user",
  7. "content": "你是谁"
  8. }
  9. ])
  10. print(response.choices[0].message.content)

api_key,base_url由学校提供,此处隐去

client.chat.completions.create()

以一系列消息作为输入,并将模型生成的消息作为输出,这段代码就是我们和ai交流的核心,这里model=‘调用模型名’(baichuan2/yi),message就是我们给ai发信息的内容,message是一个列表,装着很多个字典,每一个字典就是一次发送的信息,‘role’我们可以选择:

  • 系统(system) 消息有助于设置助手的行为。在上面的例子中,助手被指示 “你是一个得力的助手”。
  • 用户(user) 消息有助于指导助手。 就是用户说的话,向助手提的问题。
  • 助手(assistant 消息有助于存储先前的回复。这是为了持续对话,提供会话的上下文。

"content"字段就是内容。

然后我们在看看这个response长什么样子,

print(response)

ChatCompletion(id='---', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='巴黎是一个充满魅力和历史的城市,这里有无数的景点和活动。以下是一些建议,帮助您规划一个愉快的巴黎之旅:\n\n1. 参观经典地标:不要错过埃菲尔铁塔、凯旋门、卢浮宫和凡尔赛宫等著名景点。提前在网上预订门票,以避免排队。\n\n2. 探索艺术世界:巴黎拥有众多博物馆和画廊,包括奥塞美术馆和蓬皮杜中心。如果您对艺术感兴趣,可以安排专门的时间来欣赏这些作品。\n\n3. 漫步城市:巴黎的许多美丽景色都隐藏在城市的街道和小巷中。尝试步行或骑自行车游览,这样可以更接近当地人的生活方式。\n\n4. 体验法式美食:品尝当地的面包、奶酪和葡萄酒,不要错过街边的小吃摊贩,那里可以找到正宗的法式美食。\n\n5. 购物:巴黎是时尚之都,从高级时装到平价品牌,这里有各式各样的购物选择。香榭丽舍大街和蒙马特地区都是不错的购物地点。\n\n6. 了解历史:参观巴黎的地下墓穴、圣母院大教堂和协和广场等地方,这些地方见证了巴黎的悠久历史。\n\n7. 享受户外空间:巴黎有许多公园和花园,如卢森堡公园和杜乐丽花园,是放松身心的好去处。\n\n8. 晚上娱乐:巴黎的夜生活丰富多彩,从歌舞表演到现场音乐,总有适合您的东西。预订一场歌剧或音乐会,体验法式浪漫。\n\n9. 注意安全:在旅游景点和人多的地方要小心扒手,避免在夜间独自走在僻静的街道上。\n\n10. 规划行程:提前了解巴黎的交通系统,包括地铁、公交和出租车。购买一张Paris Pass或其他博物馆通行证,可以节省排队的时间。\n\n希望这些建议对您有所帮助!祝您在巴黎有一个美好的旅程。', role='assistant', function_call=None, tool_calls=None))], created=1709128837, model='ollama/yi:34b-chat', object='chat.completion', system_fingerprint=None, usage=CompletionUsage(completion_tokens=423, prompt_tokens=32, total_tokens=455))

 我们发现我们需要的内容在response的choise,choise列表中的Choise作为第一个故是choise[0],然后我们再取message下content中,便可以拿出ai回复给我们的文本了。

星火api调用

我们在星火模型下申请试用资格

讯飞星火认知大模型-AI大语言模型-星火大模型-科大讯飞 (xfyun.cn)

找到密钥等信息后访问星火认知大模型Web API文档 | 讯飞开放平台文档中心 (xfyun.cn)下载示例

e5e23a683da24d4c914a4c2cee4bada8.png

6a7e7bdd2dd941bab9a5838bce7b9bc0.png

SparkApi.py这个文件就是关键了,我们调用的时候用

import SparkApi

最好保证这个文件与项目在同一个文件夹

  1. text =[]
  2. def getText(role,content):
  3. jsoncon = {}
  4. jsoncon["role"] = role
  5. jsoncon["content"] = content
  6. text.append(jsoncon)
  7. return text
  8. def getlength(text):
  9. length = 0
  10. for content in text:
  11. temp = content["content"]
  12. leng = len(temp)
  13. length += leng
  14. return length
  15. def checklen(text):
  16. while (getlength(text) > 8000):
  17. del text[0]
  18. return text

 这几个是test文件中比较关键的几个函数,我们使用它们来获得模型的回复,text就相当于是上文的message,getText获得角色(role),内容(content),打包为字典jsoncon,合并到text中,checklen就是防止文本过多实现自动删除

  1. if __name__ == '__main__':
  2. text.clear
  3. while(1):
  4. Input = input("\n" +"我:")
  5. question = checklen(getText("user",Input))
  6. SparkApi.answer =""
  7. print("星火:",end = "")
  8. SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question)
  9. getText("assistant",SparkApi.answer)
  10. print(str(text))

 使用SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question),便可得到回复SparkApi.answer,最后getText是把模型的回复也加入对话之中(保存历史)

stable_diffusion webui 本地部署

本人采用本地部署stabledifusion,并未采用学校提供的云端页面,主要是自己部署能更加方便,专业,当时并未尝试是否可以通过api调用sd,线上部署不允许采用api调用(?)。requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=7860): Max retries exceeded with url: /sdapi/v1/txt2img (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001EB7FDC9150>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

下方是sd-webui界面

采用秋葉aaaki的个人空间-秋葉aaaki个人主页-哔哩哔哩视频 (bilibili.com) 秋叶大佬的整合包【AI绘画·24年1月最新】Stable Diffusion整合包v4.6发布!解压即用 防爆显存 三分钟入门AI绘画 ☆更新 ☆训练 ☆汉化 秋叶整合包_哔哩哔哩_bilibili

下载完成并且解压后,首先运行运行依赖启动后,打开设置转换为中文界面,界面本地部署的webui可以自由的下载sd模型和lora等模型。位置

Lora:安装目录\sd-webui-aki-v4.6\models\Lora

大模型:安装目录\sd-webui-aki-v4.6\models\Stable-diffusion

stable_diffusion webui api 调用

 我们先本地运行sd。打开绘世,点击运行。等待一会,会自动进入ui界面

这个界面就是成功启动了。在窗口中找到网址:http://127.0.0.1:7860这个就是我们要填入的url。

  1. import base64
  2. import io
  3. import requests
  4. from PIL import Image
  5. txt2imge_date={
  6. "denoising_strength": 0,
  7. "prompt": "puppy dogs", //提示词
  8. "negative_prompt": "", //反向提示词
  9. "seed": -1, //种子,随机数
  10. "batch_size": 2, //每次张数
  11. "n_iter": 1, //生成批次
  12. "steps": 50, //生成步数
  13. "cfg_scale": 7, //关键词相关性
  14. "width": 512, //宽度
  15. "height": 512, //高度
  16. "restore_faces": false, //脸部修复
  17. "tiling": false, //可平埔
  18. "override_settings": {
  19. "sd_model_checkpoint" :"wlop-any.ckpt [7331f3bc87]"
  20. "sd_vae":"orangemix.vae.pt"
  21. }, // 一般用于修改本次的生成图片的stable diffusion 模型,用法需保持一致
  22. "script_args": [
  23. 0,
  24. true,
  25. true,
  26. "LoRA",
  27. "dingzhenlora_v1(fa7c1732cc95)",
  28. 1,
  29. 1
  30. ], // 一般用于lora模型或其他插件参数,如示例,我放入了一个lora模型, 11为两个权重值,一般只用到前面的权重值1
  31. "sampler_index": "Euler" //采样方法
  32. "enable_hr": False, //下面是高清修复模块
  33. "denoising_strength": 0.5,
  34. "hr_scale": 2,
  35. "hr_upscaler": "Latent",
  36. }
  37. response=requests.post(url=f'{url}/sdapi/v1/txt2img',json=txt2imge_date)
  38. image=Image.open(io.BytesIO(base64.b64decode(response.json()['images'][0])))

调用分为两个部分,第一个是用requests.post请求向服务器发送请求,等待运行后服务器会发回来数据,但是这些数据并没有转换成图片,所以我们最后一行就是在解码这些数据,Image就是专门用来处理图像的库,我们先把response以json解读,选其中['images'][0](很好理解,我们可以设置出多张图片,如果要全部输出这里应该用循环)所以经过这段代码,图片便被python读取到image中了,下面两段代码,第一个是打开图片,下一个是将图片保存到file_path(要注意,保存要带后缀,eg:绝对(相对)路径/名字.jpg)

  1. image.show
  2. image.save(file_path)

2.实践过程:尝试采用ai实现儿童绘本创作

思路和代码实现

以下代码改编自课堂演示代码Law_Agent,思路:使用大模型生成按照一定格式童话故事,然后通过处理修改故事结构,再次输入大模型来构造提示词工程,然后带入sd的api调用,生成图片。

  1. import openai
  2. import requests
  3. import base64
  4. from PIL import Image
  5. import io
  6. class aistory:
  7. def __init__(self, api_key="----", model_name="yi"):
  8. self.client = openai.OpenAI(api_key=api_key, base_url="----")
  9. # self.client = openai.OpenAI(api_key=api_key)
  10. self.model_name = model_name # baichuan2/yi
  11. self.story=''
  12. self.history = []
  13. self.story_struct=[]
  14. openai.api_key = api_key
  15. def get_llm_response(self, prompt, system_prompt=None, with_history=False,assistant_prompt=None,pre_userpropmt=None): # LLM生成回复
  16. messages = []
  17. if system_prompt is not None:
  18. messages.append({"role": "system", "content": system_prompt})
  19. if pre_userpropmt is not None:
  20. messages.append({"role": "user", "content": pre_userpropmt})
  21. if assistant_prompt is not None:
  22. messages.append({"role": "system", "content": assistant_prompt})
  23. if with_history:
  24. messages += self.history
  25. messages.append({"role": "user", "content": prompt})
  26. response = self.client.chat.completions.create(
  27. model=self.model_name,
  28. messages=messages
  29. )
  30. return response.choices[0].message.content.strip()
  31. def story_MAKE(self,main):
  32. sys_prompt='你是一个中文早教儿童童话小说家,你的任务是创作一个童话绘本故事,语言优美,故事情节有趣,充满童趣。充满画面感'
  33. pre_userpropmt='接下来请以主题:山羊的智慧写出故事,仿照上面内容格式,用换行分割为一个个段落,每个段落有完整的动作,场景,角色'
  34. assistant_prompt='''主题:山羊的智慧\n内容:\n段落一:一只山羊和一只狐狸住在山上。狐狸总想吃掉山羊,山羊整天担惊受怕。\n人物:山羊,狐狸 \n场景:山上\n情感:害怕\n段落二:有一日,山羊去山下,一不小心掉进了一口井里。狐狸看见了,得意地说:“哈哈!山羊兄弟,你怎么在这里?这井里的水是不是很甜呀?”山羊回答说:“你说的没错,这井里的水的确很甜。”说完,咕咚咕咚喝了几口,“啊!这水实在太甜了。我从没喝过这么甜的井水。”山羊抹了抹嘴上的水说。\n人物:山羊,狐狸\n场景:水井\n情感:害怕\n动作:山羊掉进水井\n段落三:狐狸正感觉口渴,也想下去喝几口。可是,又不知怎样下到井里。于是,狐狸问山羊:“山羊兄弟,我也口渴了。我怎样才能下到井里?”山羊冒充想了想:“这样吧,你踩着我的头,就能下来了。”狐狸踩着山羊的头下到了井里。#喝完水后,狐狸问:“山羊兄弟,我们怎么爬出井去?”山羊不假思考地说:“这好办。我先踩着你的头上去,然后我再伸下一条腿拉你上去。我俩不就都出去了吗。”“这个办法好!”狐狸就让山羊踩着自己的头。山羊顺利爬出了井。\n人物:山羊,狐狸 \n场景:水井\n情感:焦急\n动作:狐狸口渴\n段落四:山羊爬出井,对狐狸说:“该死的狐狸,你就好幸亏井里喝水吧!”聪明人做事,常常会预先想清结果再去做\n人物:山羊,狐狸\n场景:水井\n情感:害怕\n动作:羊爬出水井'''
  35. prompt=f"""接下来请以主题:{main}写出故事,仿照上面内容格式,用换行分割为一个个段落,每个段落有完整的动作,场景,角色,形式中保证有人物,场景,角色,动作"""
  36. print('正在生成故事:。。。。')
  37. response = self.get_llm_response(prompt, sys_prompt, with_history=True,assistant_prompt=assistant_prompt,pre_userpropmt=pre_userpropmt)
  38. print(response)
  39. print('生成完成')
  40. self.story=response
  41. j=response.split('\n')
  42. # while not j[2].replace(' ','')=='段落' :
  43. #
  44. # prompt = '''请按照上述格式重写。如下主题:智慧
  45. # 内容:\n段落一:一只山羊和一只狐狸住在山上。狐狸总想吃掉山羊,山羊整天担惊受怕。\n人物:山羊,狐狸 \n场景:山上\n情感:害怕\n段落二:有一日,山羊去山下,一不小心掉进了一口井里。狐狸看见了,得意地说:“哈哈!山羊兄弟,你怎么在这里?这井里的水是不是很甜呀?”山羊回答说:“你说的没错,这井里的水的确很甜。”说完,咕咚咕咚喝了几口,“啊!这水实在太甜了。我从没喝过这么甜的井水。”山羊抹了抹嘴上的水说。\n人物:山羊,狐狸\n场景:水井\n情感:害怕\n动作:山羊掉进水井\n段落三:狐狸正感觉口渴,也想下去喝几口。可是,又不知怎样下到井里。于是,狐狸问山羊:“山羊兄弟,我也口渴了。我怎样才能下到井里?”山羊冒充想了想:“这样吧,你踩着我的头,就能下来了。”狐狸踩着山羊的头下到了井里。#喝完水后,狐狸问:“山羊兄弟,我们怎么爬出井去?”山羊不假思考地说:“这好办。我先踩着你的头上去,然后我再伸下一条腿拉你上去。我俩不就都出去了吗。”“这个办法好!”狐狸就让山羊踩着自己的头。山羊顺利爬出了井。\n人物:山羊,狐狸 \n场景:水井\n情感:焦急\n动作:狐狸口渴\n段落四:山羊爬出井,对狐狸说:“该死的狐狸,你就好幸亏井里喝水吧!”聪明人做事,常常会预先想清结果再去做\n人物:山羊,狐狸\n场景:水井\n情感:害怕\n动作:羊爬出水井'''
  46. # print(prompt)
  47. # response = self.get_llm_response(prompt, sys_prompt, with_history=True)
  48. # print('fianlai:', response)
  49. # self.story = response
  50. return self.story
  51. def promptmake(self,stroy_struct):
  52. story=''
  53. sys_prompt=f'''你是一个stable diffusion画家,你的任务是用stable diffusion创作一个童话绘本的图片,你要根据我提供的内容输出对应的提示词(prompt),请用英语的单个单词完成,并用逗号分割开,不用写负面提示词,表现主角的动作神态,客体等在后面加入内容人物场景情感的英文翻译。'''
  54. for key, value in stroy_struct.items():
  55. story += f'{key}{value}\n'
  56. pre_prompt='请你对\n所描绘的场景构造提示词工程'
  57. assistant_prompt ='Prompt:monkey,squirrel,make friends,forest,happy,friendship,thank,smile,grass,together,enjoyed,fun,\nlocation:forest,monkey,\nmotivation:make friends,\nemotion:happy'
  58. prompt=f'''请你对\n{story}所描绘的场景构造提示词工程'''
  59. print(prompt)
  60. response = self.get_llm_response(prompt, sys_prompt, with_history=True,assistant_prompt=assistant_prompt)
  61. print(response)
  62. # prompt='详细一些,请包含所有的信息,根据我提供的内容输出对应的提示词(prompt),请用英语的单个单词完成,并用逗号分割开,不用写负面提示词,'
  63. # response = self.get_llm_response(prompt, sys_prompt, with_history=True)
  64. # prompt = '再详细一些,请包含所有的信息。但不要自己加入新的东西'
  65. # response = self.get_llm_response(prompt, sys_prompt, with_history=True)
  66. print('fianlai:',response)
  67. while True:
  68. reprompt=''
  69. promptli = response.replace('.', ',').replace('"', '').split('\n')
  70. for i in promptli:
  71. j = i.split(':')[-1].split(',')
  72. for n in range(len(j)):
  73. while j[n].startswith(' ') or j[n].endswith(' '):
  74. j[n] = j[n].strip(' ')
  75. j = ','.join(j) + ','
  76. reprompt += j
  77. print('即将输入如下',reprompt)
  78. text=input('这里是修改区域,您可以对他发出指令:(\'退出\')')
  79. if text=='退出':
  80. break
  81. response = self.get_llm_response(prompt, sys_prompt, with_history=True)
  82. print('生成', response)
  83. return reprompt

 我仿照示例定义了与ai交互的类(aistory),第一个是基本的参数def __init__(self, api_key="----", model_name="yi"):,这里传入的参数构建类(面向对象编程),声明了他有什么属性。接下来就是功能:get_llm_response,story_MAKE,promptmake。分别是获取回复,写故事,写提示词

 def get_llm_response(self, prompt, system_prompt=None, with_history=False,assistant_prompt=None,pre_userpropmt=None):

传入文本返回回复,这里对原来进行修改,加入一组对话:pre_userpropmt,回复一个assistant_prompt,我们直接构建了一次对话,强化格式。

def story_MAKE(self,main):
        sys_prompt='你是一个中文早教儿童童话小说家,你的任务是创作一个童话绘本故事,语言优美,故事情节有趣,充满童趣。充满画面感'
        pre_userpropmt='接下来'
        assistant_prompt='''主题:山羊的智慧\n内容:\n段落一:一只山羊和一只狐狸住在山上。狐狸总想吃掉山羊,山羊整天担惊受怕。\n人物:山羊,狐狸 \n场景:山上\n情感:害怕\n段落二:有一日,山羊去山下,一不小心掉进了一口井里。狐狸看见了,得意地说:“哈哈!山羊兄弟,你怎么在这里?这井里的水是不是很甜呀?”山羊回答说:“你说的没错,这井里的水的确很甜。”说完,咕咚咕咚喝了几口,“啊!这水实在太甜了。我从没喝过这么甜的井水。”山羊抹了抹嘴上的水说。\n人物:山羊,狐狸\n场景:水井\n情感:害怕\n动作:山羊掉进水井\n''
        prompt=f"""接下来请以主题:{main}写出故事,仿照上面内容格式,用换行分割为一个个段落,每个段落有完整的动作,场景,角色,形式中保证有人物,场景,角色,动作"""
        print('正在生成故事:。。。。')
        response = self.get_llm_response(prompt, sys_prompt, with_history=True,assistant_prompt=assistant_prompt,pre_userpropmt=pre_userpropmt)
        print(response)
        print('生成完成')
        self.story=response
        j=response.split('\n')
        return self.story

事先传入system和一定的对话,方便大模型回复给我们合适的回复

 下面就是构造故事的结构,把每一段独立解释,分割成列表。然后就是使用sd绘画保存和展示。

  1. def make_stroy_struct(story):
  2. sli=story.split('\n')[2::]
  3. print(sli)
  4. strli = []
  5. for i in range(0, len(sli), 5):
  6. di = {}
  7. sl = sli[i].split(':')
  8. biaoti, neirong = sl[0], sl[-1]
  9. if biaoti[0:2] == '段落':
  10. biaoti = '内容'
  11. di[biaoti] = neirong
  12. for j in sli[i + 1:i + 5]:
  13. sl = j.split(':')
  14. biaoti, neirong = sl[0], sl[-1]
  15. di[biaoti] = neirong
  16. strli.append(di)
  17. print(strli)
  18. return strli
  19. def stablediffusion(file_path,prompt='',nep='',url='http://59.78.189.139:7860/'):
  20. txt2imge_date={
  21. 'prompt':'guofeng,outdoor,extremely detailed CG unity 8k wallpaper,ultra- detailed,8k,hires,best quality,(masterpiece:1.2),huge filesize,wallpaper,fairy-tale,early education,best quality,masterpiece,ultra high res,delicate eyes,childpaiting,crayon drawing,'+prompt,
  22. 'sampler_name':'DPM++ 2M SDE Karras',
  23. 'steps':20,
  24. 'batch_size':1,
  25. 'height':512,
  26. 'width':512,
  27. 'cfg_scale':7,
  28. "override_settings": {
  29. # "sd_model_checkpoint": "2d\儿童绘本 _ CrayonPaiting_1.0.safetensors [391faa56e2]",
  30. #"sd_vae":"orangemix.vae.pt"
  31. },
  32. "enable_hr": False,
  33. "denoising_strength": 0.25,
  34. "hr_scale": 2,
  35. "hr_upscaler": "R-ESRGAN 4x+",
  36. 'negative_prompt':'(negative_hand-neg:1.2),(((bad-hands-5))),EasyNegative,FastNegativeV2,BadNegAnatomyV1-neg,EasyNegative,NSFW,logo,text,blurry,low quality,bad anatomy,sketches,lowres,normal quality,monochrome,grayscale,worstquality,signature,watermark,cropped,bad proportions,out of focus,username,bad face'+nep,
  37. }
  38. print('\n正在生成图片...')
  39. response=requests.post(url=f'{url}/sdapi/v1/txt2img',json=txt2imge_date)
  40. image=Image.open(io.BytesIO(base64.b64decode(response.json()['images'][0])))
  41. image.show()
  42. print('图片生成完成!')
  43. image.save(file_path)
  44. def drawandshow(story,a):
  45. strli = story
  46. n=1
  47. for i in strli:
  48. print(i)
  49. prompt = a.promptmake(i)
  50. file_path = r'ai/第{}段.png'.format(n)
  51. print(f'生成第{n}段图片...',end='')
  52. stablediffusion(file_path,prompt)
  53. n += 1
  54. if __name__ == '__main__':
  55. a=aistory()
  56. story=a.story_MAKE('友情')
  57. story_struct=make_stroy_struct(story)
  58. drawandshow(story_struct,a)
  59. print('故事完成')

 问题与反思

实践问题:大模型输出的文本质量不(太)高,api调用速度过慢,格式十分不确定,代码难以预测ai输出的文本内容。同时ai绘图结果不稳定,输出连贯的故事仍然比较困难。

其他探索和改进:1.下载使用童话风的大模型,更加贴合主题。 2.训练自己的画风lora,进行一定画风的固定,此处省略(感兴趣可与笔者交流)。 3.采用不同的大模型(尝试星火,百川,零一万物)。 4.学习了comfyui,并且尝试创造了自己的工作流。

2024最新尝试:调用sdxl1.5模型生成图片

改写sd函数部分详情请见stable_diffusion api调用sdxl1.0模型示例-CSDN博客

  1. def stablediffusionXl(file_path,prompt='',nep='',url='http://127.0.0.1:7860'):
  2. txt2imge_date={
  3. 'prompt':'extremely detailed CG unity 8k wallpaper,ultra- detailed,8k,hires,best quality,(masterpiece:1.2),huge filesize,wallpaper,fairy-tale,early education,best quality,masterpiece,ultra high res,delicate eyes,childpaiting,crayon drawing,'+prompt,
  4. 'sampler_name':'DPM++ 2M SDE Karras',
  5. "style": "Fairy Tale",
  6. 'steps':20,
  7. 'batch_size':1,
  8. 'height':1024,
  9. 'width':1024,
  10. 'cfg_scale':7,
  11. "override_settings": {
  12. "sd_model_checkpoint": "xd1.0\sd_xl_base_1.0.safetensors [31e35c80fc]",
  13. "sd_vae":"sdxl_vae.safetensors"
  14. },
  15. #下方使用refiner
  16. "refiner": True,
  17. 'refiner_checkpoint':'xd1.0\sd_xl_refiner_1.0.safetensors [7440042bbd]',
  18. 'refiner_switch_at':0.8,
  19. #'negative_prompt':'(negative_hand-neg:1.2),(((bad-hands-5))),EasyNegative,FastNegativeV2,BadNegAnatomyV1-neg,EasyNegative,NSFW,logo,text,blurry,low quality,bad anatomy,sketches,lowres,normal quality,monochrome,grayscale,worstquality,signature,watermark,cropped,bad proportions,out of focus,username,bad face'+nep,
  20. }
  21. print('\n正在生成图片...')
  22. response=requests.post(url=f'{url}/sdapi/v1/txt2img',json=txt2imge_date)
  23. image=Image.open(io.BytesIO(base64.b64decode(response.json()['images'][0])))
  24. image.show()
  25. print('图片生成完成!')
  26. image.save(file_path)

生成过程

下面是一次生成过程

  1. 友情"
  2. 内容:
  3. 1. 一只名叫小松鼠的小动物,和一只叫小兔子的小动物住在同一个森林里。他们是最要好的朋友,无论去哪里都会一起。
  4. 有一天,他们在森林里发现了一些漂亮的蘑菇,小兔子说:“这些蘑菇看起来很美味,我们一起尝尝吧!” 小松鼠同意了,于是他们开始品尝这些蘑菇。 2. 在他们的正前方有一棵大树,树下有一个大大的蘑菇群。他们都吃得很开心,突然一阵大风吹过,把小兔子的帽子吹跑了。
  5. 他非常担心他的帽子被风吹到远处去找不回,小松鼠看到他担心的样子,决定和他一起找帽子。他们开始在森林里寻找那顶帽子,最终在小溪边找到了它。 3. 小兔子感激地抱着小松鼠说:“谢谢你陪我找帽子,我真的很感谢你对我的帮助和支持!”
  6. 小松鼠笑着说:“我们是最好的朋友,我当然会帮助你啦!” 他们的友谊变得更加深厚了。他们一起回到了森林里继续玩耍和探险。
  7. 故事完成
  8. 第1段: 1. 一只名叫小松鼠的小动物,和一只叫小兔子的小动物住在同一个森林里。他们是最要好的朋友,无论去哪里都会一起。 完成
  9. 第2段: 有一天,他们在森林里发现了一些漂亮的蘑菇,小兔子说:“这些蘑菇看起来很美味,我们一起尝尝吧!” 小松鼠同意了,于是他们开始品尝这些蘑菇。 2. 在他们的正前方有一棵大树,树下有一个大大的蘑菇群。他们都吃得很开心,突然一阵大风吹过,把小兔子的帽子吹跑了。 完成
  10. 第3段: 他非常担心他的帽子被风吹到远处去找不回,小松鼠看到他担心的样子,决定和他一起找帽子。他们开始在森林里寻找那顶帽子,最终在小溪边找到了它。 3. 小兔子感激地抱着小松鼠说:“谢谢你陪我找帽子,我真的很感谢你对我的帮助和支持!”完成
  11. 第4段: 小松鼠笑着说:“我们是最好的朋友,我当然会帮助你啦!” 他们的友谊变得更加深厚了。他们一起回到了森林里继续玩耍和探险。完成
  12. 1. 一只名叫小松鼠的小动物,和一只叫小兔子的小动物住在同一个森林里。他们是最要好的朋友,无论去哪里都会一起。 有一天,他们在森林里发现了一些漂亮的蘑菇,小兔子说:“这些蘑菇看起来很美味,我们一起尝尝吧!” 小松鼠同意了,于是他们开始品尝这些蘑菇。 2. 在他们的正前方有一棵大树,树下有一个大大的蘑菇群。他们都吃得很开心,突然一阵大风吹过,把小兔子的帽子吹跑了。 他非常担心他的帽子被风吹到远处去找不回,小松鼠看到他担心的样子,决定和他一起找帽子。他们开始在森林里寻找那顶帽子,最终在小溪边找到了它。 3. 小兔子感激地抱着小松鼠说:“谢谢你陪我找帽子,我真的很感谢你对我的帮助和支持!” 小松鼠笑着说:“我们是最好的朋友,我当然会帮助你啦!” 他们的友谊变得更加深厚了。他们一起回到了森林里继续玩耍和探险。

补充一些丢失了文本,但是由上一段代码生成的图片,采用了不同的lora和模型

3.引用

stable diffusion 远端跑图—— Api基础知识掌握 - 知乎 (zhihu.com)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/584779
推荐阅读
相关标签
  

闽ICP备14008679号