当前位置:   article > 正文

12.30更新key,2023最新使用chatgpt实现自动化编写小说!(包含python源码、软件以及免费测试apikey!)_基于gpt等大语言模型的长篇小说生成器(python)

基于gpt等大语言模型的长篇小说生成器(python)

最终效果如图:

代码运行后会在桌面自动生成小说文件:

资源软件:

如下为小说创作脚本软件,大小10.79MB,使用方法:apikey使用英文逗号隔开,可直接运行!还有配置文件可记录参数,无需反复填写!生成的小说会显示在桌面的文件夹里:

小说创作脚本plusicon-default.png?t=N7T8https://pan.baidu.com/s/1FDfYB_vypa0lYozxMtVMKQ?pwd=6666

效果如图:

源码如下,这里免费提供一个测试apikey:"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",(12.30已更新5$key)余额有限,先到先用哦!可自行设置具体参数:

  1. import os
  2. import openai #pip install openai==0.28.0
  3. import random
  4. openai.api_base = "https://api.openai-proxy.com/v1" #代理网址
  5. # -*- coding: utf-8 -*-
  6. # 将你的多个 API 密钥放在这个列表中
  7. api_keys = [
  8. "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",
  9. "",
  10. ]
  11. # 小说信息
  12. novel_name = "熊出没之我是光头强" #小说名称
  13. total_chapters = 5 # 总章节数
  14. tokens_per_chapter = 100 #每章字数
  15. def write_novel_chapter(api_key, chapter_content, chapter_number, conversation_history):
  16. """使用OpenAI的API模型来编写小说章节"""
  17. openai.api_key = api_key # 设置当前使用的 API 密钥
  18. response = openai.ChatCompletion.create(
  19. model="gpt-3.5-turbo-0613", #输入使用的模型
  20. temperature=0.1,
  21. messages=conversation_history + [
  22. {
  23. "role": "system",
  24. "content": f"你是一名专业的小说家,你的任务是编写小说《{novel_name}》,共有{total_chapters}章,每章{tokens_per_chapter}字,请自行构思每章章的标题和内容,开始编写第 {chapter_number}章:"
  25. },
  26. {"role": "user", "content": chapter_content},
  27. ],
  28. max_tokens=1500, #gpt输出的tokens
  29. )
  30. generated_text = response['choices'][0]['message']['content']
  31. return generated_text, response['choices'][0]['message']['role'], response['choices'][0]['index']
  32. def write_novel(api_keys, output_folder):
  33. """编写小说的所有章节"""
  34. chapter_number = 1
  35. conversation_history = [] # 存储对话历史
  36. used_api_keys = [] # 用于存储已经使用过的 API 密钥
  37. while chapter_number <= total_chapters:
  38. available_keys = [key for key in api_keys if key not in used_api_keys]
  39. if not available_keys:
  40. # 所有密钥已使用过,随机不重复循环使用每个apikey,重新开始循环
  41. used_api_keys = []
  42. available_keys = api_keys[:]
  43. selected_api_key = random.choice(available_keys)
  44. used_api_keys.append(selected_api_key)
  45. print(f"正在编写《{novel_name}》第 {chapter_number} 章,使用的 API 密钥:{selected_api_key}")
  46. try:
  47. # 模拟章节内容,你可以根据实际需要修改
  48. chapter_content = f""
  49. # 调用章节编写函数
  50. generated_text, role, index = write_novel_chapter(selected_api_key, chapter_content, chapter_number, conversation_history)
  51. # 获取章节名称(文本内容的第一行)
  52. chapter_name = generated_text.split('\n', 1)[0]
  53. if "第" in chapter_name and "章" in chapter_name:
  54. chapter_file_name = f"{chapter_name}.txt"
  55. else:
  56. chapter_file_name = f"第{chapter_number}章:{chapter_name}.txt"
  57. # 去掉包含小说名称的部分
  58. chapter_file_name = chapter_file_name.replace(novel_name, "")
  59. # 去掉包含《》的部分
  60. if "《" in chapter_file_name and "》" in chapter_file_name:
  61. chapter_file_name = chapter_file_name.replace("《", "").replace("》", "")
  62. # 去掉多余的空格
  63. chapter_file_name = chapter_file_name.strip()
  64. chapter_file_path = os.path.join(output_folder, chapter_file_name)
  65. with open(chapter_file_path, 'w', encoding='utf-8') as chapter_file:
  66. chapter_file.write(generated_text)
  67. print(f"《{novel_name}{chapter_file_name.strip('.txt')} 编写成功,已保存至 {chapter_file_path}")
  68. print("-------------------------------------------------------------------")
  69. # 清空对话历史
  70. conversation_history = []
  71. # 如果不是最后一章,将生成的文本和回复加入对话历史
  72. if chapter_number < total_chapters:
  73. conversation_history.append({"role": "system", "content": generated_text})
  74. except Exception as e:
  75. print(f"《{novel_name}》 第{chapter_number}章 编写失败,错误信息: {e}")
  76. print("-------------------------------------------------------------------")
  77. chapter_number += 1
  78. # 程序的入口点
  79. if __name__ == "__main__":
  80. output_folder = fr"C:\Users\c\Desktop\{novel_name}" #保存到文件夹
  81. try:
  82. if not os.path.exists(output_folder):
  83. os.makedirs(output_folder)
  84. write_novel(api_keys, output_folder)
  85. except Exception as e:
  86. print(f"程序执行时出现错误: {e}")
  87. finally:
  88. print("程序执行完毕。")

感谢朋友们阅读,下期再见!!!

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

闽ICP备14008679号