人工智能觉醒序章:Prompt工程

文章讲述了AI技术的最新进展,包括AI艺术如《太空歌剧院》和百度的文心·一格平台。重点介绍了ChatGPT的崛起及其在自然语言处理领域的突破,特别是Prompting技术在指导模型生成文本方面的应用,以及如何通过Prompt设计优化模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最新一波AI浪潮已然到来

  • 2022年8月,在美国科罗拉多州举办的新兴数字艺术家竞赛中,《太空歌剧院》获得“数字艺术/数字修饰照片”类别一等奖。参赛者没有绘画基础,利用AI工具Midjourney创作。
  • 2022年8月19日,中国图象图形大会 CCIG 2022 在成都召开,百度正式发布 AI 艺术和创意辅助平台——文心·一格,这是百度依托飞桨、文心大模型的技术创新推出的“AI 作画”首款产品。
  • 2022年11月30日ChatGPT3.5推出,5天后用户破百万,两个月后月活用户突破1亿,成为史上用户增长速度最快的消费级应用程序。

image.png

大模型引领下的飞跃式发展

AI技术的飞速发展,尤其是自然语言处理领域的突破,已经带来了许多惊人的进展。在过去几年中,人工智能技术已经实现了从单纯的问答机器人到更加具有智能和灵活性的自然语言处理模型。而ChatGPT是其中最具代表性的模型之一。
作为一种基于自回归预训练的语言模型,ChatGPT已经在自然语言生成领域取得了显著的成功。它使用深度学习技术从海量的语料库中自动学习,并在生成自然语言文本方面展现出强大的能力。这一模型的出现引领了人工智能领域的飞跃式发展。
这种模型在训练过程中会自动地学习语言规则和上下文信息,并将这些信息存储在权重矩阵中。当该模型使用这些权重进行自然语言生成时,它可以根据输入的信息和上下文信息生成更加自然和流畅的文本。
1678173206956.png

Prompting技术

Prompting技术(下文简称为Prompt)是ChatGPT的重要组成部分。Prompt是一种输入方式,它将人工智能模型的输入限制在一个特定的范围内,从而更好地控制模型的输出。在ChatGPT模型中,Prompting技术可用于对模型进行微调和优化,从而使其更适合某些特定的任务。
例如,在生成一篇介绍人工智能的文章时,我们可以使用以下Prompt:
:::warning
请根据以下内容介绍人工智能:人工智能是一种模拟人类智能的技术,它包括机器学习、自然语言处理、计算机视觉等领域。请在文章中简要介绍人工智能的定义、历史、应用场景和未来发展方向。
:::
这个Prompt可以指导模型生成一篇简要介绍人工智能的文章,其中包括人工智能的定义、历史、应用场景和未来发展方向。
image.png
相比之下,Fine-tune是一种更加传统的训练方式,我们需要使用大量的数据来训练模型,从而让它学会完成特定的任务。这种方式通常需要耗费大量的时间和计算资源,并且需要更多的人工参与。
虽然Fine-tune需要更多的时间和计算资源,但是它可以让模型更好地适应特定的任务,从而生成更加准确和具体的文本。而Prompt则更加灵活和易于控制,适合于需要快速生成文本的场景。
image.png

不可思议,Prompt成功了

💡 Tips:Prompt 是一个短语或一句话,可以启动模型并产生与 Prompt 相关的输出。它可以控制模型的行为,使其产生特定的结果。

ChatGPT是Zero shot promot模式,目前一般称之为instruct了。 这种模式下用户直接用人类的语言下达命令,例如“给我写首诗”,“给我做个请教条”,但是你可以在命令的过程中用一些人类语言增强AI的效果,例如“在输出答案之前,你先每一步都想一想”。就只是增加这样一句话,AI的答案效果就会明显提升。
image.png
通过海量的知识成长起来,然后经过稍微引导(Prompt),他就能具备不同领域的强大能力。
Promot模式不需要太多的数据量,不需要对模型参数进行改动(也就意味着可以不部署模型,而是接入公开的大语言模型服务)。那么他的调试就会呈现百花齐放的姿态,玩家越多,创造力涌现就越猛烈。
目前ChatGPT采用的是模型侧Few shot prompt,即给一点示例提示,让AI提升表现,虽然暂时未知为什么不更新模型仅仅只是给AI看一眼就能带来巨幅提升,但这种交互模式无疑是更友好的。
而更具颠覆性的是输入端Zero shot prompt,即我们用人类的语言逐步引导AI思考——比如我们可以说,你仔细想好步骤,再给出答案。就仅仅是多加一句“你仔细想好步骤”,AI的答案靠谱率就会明显提升。

如何创建一个Prompt工程

💡 Tips:ChatGPT 效果好不好完全取决于你的 Prompt,看来 Propmt 也成一个技术活儿了。

Prompt技术在ChatGPT模型中的重要性不言而喻。由于模型的效果很大程度上取决于Prompt的质量和设计,因此,Prompt已经成为一个技术活儿。Prompt不仅可以影响模型的输出质量,还可以提高模型的效率和可扩展性。
它可以为模型提供更加准确和具体的指令,从而更好地满足用户的需求。而且Prompt技术可以帮助模型学习新的任务和领域,从而扩展模型的适用范围。
image.png

Prompt原则

创建一个Prompt工程需要遵循一些基本的原则。首先,Prompt应该与任务相关联,并且应该尽可能地具体和准确。其次,Prompt应该适应不同的场景和用户,例如不同的语言、文化和背景。最后,Prompt应该经过优化和微调,以确保它可以为模型提供最佳的指导和提示。
为了创建一个工作良好的Prompt工程,需要执行以下步骤:

  1. 定义任务和目标:确定需要解决的自然语言处理任务,并为此定义明确的目标和标准。
  2. 收集数据:从不同的数据源收集数据,包括文本语料库、人类对话和模型生成文本。
  3. 选择模型:选择一个适合任务的自然语言处理模型,并在其基础上进行微调和优化。
  4. 设计Prompt:根据任务和模型的特点设计一个适当的Prompt,并使用收集的数据进行优化和微调。
  5. 测试和优化:测试Prompt的效果,并根据反馈进行调整和优化。

总之,Prompt技术是人工智能领域的一项重要技术,它可以为模型提供更加准确和具体的指令,从而提高模型的效果和表现。对于那些希望更深入了解和使用人工智能技术的人来说,学习和使用Prompt技术是至关重要的。

有效 Prompt:::warning
你能总结一下《锻炼的好处》一文的要点吗? # 聚焦、相关
巴黎最好的素食餐厅有哪些? # 具体、相关
:::
无效 Prompt:::warning
你能告诉我关于这个世界的什么? # 宽泛、开放
你能帮我做作业吗? # 开放
你好 # 无目的、不聚焦
:::

Prompt示例工程

下面是一个简单的Prompt示例工程,以生成一篇介绍人工智能的文章为例。

  1. 定义任务和目标

我们的任务是生成一篇介绍人工智能的文章,目标是让文章尽可能地简单易懂,同时涵盖人工智能的基本概念和发展历程。
我们可以以 STAR (Situation(情景)Task(任务)、Action(行动)和 Result(结果))可以作为与ChatGPT 会话的基础:

  1. 描述一个情境或背景,使读者对问题有更好的了解。

  2. 说明任务或目标,告诉读者需要完成什么。

  3. 描述你所采取的行动,例如使用什么方法、工具、策略等等。

  4. 解释结果,包括遇到的挑战和取得的成果。

  5. 收集数据

我们可以从不同的数据源收集数据,包括人工智能的历史、定义、应用场景等相关内容。我们还可以收集一些范文和样例文章,以便为Prompt的设计提供参考。
image.png

  1. 选择模型

我们选择使用ChatGPT模型来自动生成文章,因为它是一个高度自适应的自然语言处理模型,可以根据Prompt来生成不同风格和内容的文章。

  1. 设计Prompt

Prompt应该尽可能地具体和准确,以便模型可以更好地理解我们的意图和目标。下面是一个简单的Prompt示例:
:::warning
请根据以下内容介绍人工智能:人工智能是一种模拟人类智能的技术,它包括机器学习、自然语言处理、计算机视觉等领域。请在文章中简要介绍人工智能的定义、历史、应用场景和未来发展方向。
:::
image.png

  1. 测试和优化

我们可以使用Prompt来生成多篇文章,然后对其进行评估和优化。我们可以调整Prompt的语言和结构,以便更好地控制文章的风格和内容。我们还可以收集用户的反馈和意见,以便进一步优化和改进Prompt。

image.png

image.png
总之,Prompt技术可以为自然语言处理模型提供更加准确和具体的指令,从而生成更好的文本。当我们使用ChatGPT自动生成文章时,Prompt技术可以帮助我们更好地控制文章的内容和风格,从而满足不同用户的需求。如果您有兴趣了解更多关于Prompt技术的信息,可以参考相关文献或者在线教程。

<think>好的,我现在需要帮助用户解决如何使用PyCharm开发基于本地AI大模型的自动化小说生成程序的问题。用户希望支持按大纲和细纲生成章节,并设置每章字数,比如2000字。我需要先理清步骤,确保回答结构清晰,同时结合提供的引用内容。 首先,用户提到了使用本地AI大模型,所以可能需要考虑模型的选择和本地部署。引用[4]提到有大模型的学习资源包,可能可以推荐用户参考。然后,引用[3]中提到了全栈开发和实战经验,可能需要涉及模型应用和工程实践的结合。此外,引用[2]关于LangChain的工具包可能对处理文本生成流程有帮助。 接下来,我需要分步骤考虑: 1. **环境准备**:PyCharm的配置,安装必要的库,比如transformers、torch等。本地模型可能需要从Hugging Face下载,比如选择GPT-2或LLAMA等模型。 2. **模型加载与配置**:如何在本地加载大模型,并配置生成参数,如max_length、temperature等来控制生成内容的质量和长度。 3. **大纲和细纲的处理**:用户需要输入大纲和细纲,可能需要设计一个结构化的输入方式,比如JSON或YAML文件,解析后作为生成提示。 4. **章节生成与字数控制**:如何根据每章2000字的要求,调整生成参数,可能需要多次生成或截断,但要注意内容的连贯性。 5. **自动化流程设计**:可能需要使用脚本将各个步骤串联起来,比如读取大纲,生成各章节,保存为文件。引用[2]提到的LangChain工具包可能在这里有帮助,用于流程管理。 6. **测试与优化**:确保生成内容符合预期,调整模型参数或提示工程来提高质量。引用[3]中的实战经验可能相关,强调实际应用中的调整。 需要注意的潜在问题包括模型本地部署的资源需求(如显存)、生成文本的连贯性、字数精确控制的方法。此外,用户可能需要示例代码和具体的操作步骤,比如如何在PyCharm中设置项目结构,如何处理模型的输入输出。 可能还需要考虑使用提示模板,将大纲和章节细纲整合到生成提示中,确保模型按照要求生成内容。字数控制可能需要估算token数量,因为模型生成是按token计算的,需要将token转换为字数。比如,2000字大约对应多少token,设置max_new_tokens参数。 另外,引用[1]提到的文本预处理和生成步骤可能相关,尤其是在处理用户输入的大纲和生成符合要求的文本时,需要有效的文本处理技术。 总结下来,回答的结构应该是分步骤指导,包括环境设置、模型选择与加载、输入处理、生成控制、自动化流程和测试优化。每个步骤需要给出具体的方法和代码示例,同时引用相关的参考资料,比如推荐学习资源或工具包。</think>### 使用PyCharm开发本地AI大模型小说生成器的实践指南 #### 一、环境准备与工具选择 1. **PyCharm配置** - 创建Python项目,建议使用虚拟环境(如venv或conda) - 安装关键库: ```bash pip install transformers torch langchain tqdm ``` 2. **模型选择** - 推荐使用Hugging Face的预训练模型(需本地下载): - 小说生成适用模型:`GPT-2`[^4]/`GPT-Neo`/`LLAMA`(注意模型版权) ```python from transformers import AutoTokenizer, AutoModelForCausalLM model_name = "gpt2-medium" # 示例模型 tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) ``` #### 二、核心功能实现 1. **大纲结构化处理** ```python # 示例大纲结构(JSON格式) outline = { "title": "星际迷航", "chapters": [ {"chapter_num": 1, "subtitle": "异星觉醒", "keywords": ["飞船失事", "神秘信号"], "word_limit": 2000}, {"chapter_num": 2, "subtitle": "文明接触", "keywords": ["语言破译", "能量晶体"], "word_limit": 2000} ] } ``` 2. **文本生成控制** ```python def generate_chapter(prompt, word_limit=2000): # 根据字数估算token数(1个token≈4字符) max_new_tokens = int(word_limit * 2.5) inputs = tokenizer(prompt, return_tensors="pt") outputs = model.generate( inputs.input_ids, max_new_tokens=max_new_tokens, temperature=0.9, do_sample=True, top_p=0.95 ) return tokenizer.decode(outputs[0], skip_special_tokens=True) ``` 3. **自动化流程设计(使用LangChain工具包)**[^2] ```python from langchain.chains import SequentialChain chapter_chain = SequentialChain( chains=[ outline_parser_chain, prompt_builder_chain, text_generation_chain ], input_variables=["raw_outline"], output_variables=["final_text"] ) ``` #### 三、关键优化技巧 1. **提示工程优化** ```python def build_prompt(chapter_info): return f"""你是一位专业小说家,请根据以下要求创作: 标题:{chapter_info['subtitle']} 关键元素:{','.join(chapter_info['keywords'])} 字数要求:{chapter_info['word_limit']}字 创作风格:保持悬疑感和画面感 """ ``` 2. **输出后处理 ```python def post_process(text, target_length=2000): # 按句子截断到最近的目标字数 sentences = text.split('。') current_length = 0 result = [] for sent in sentences: if current_length + len(sent) > target_length: break result.append(sent) current_length += len(sent) return '。'.join(result) + '。' ``` #### 四、完整工作流示例 ```python import json from tqdm import tqdm def main(): # 加载模型 model, tokenizer = load_local_model("models/gpt2-medium") # 读取大纲 with open("outline.json") as f: outline = json.load(f) # 生成小说 for chapter in tqdm(outline["chapters"]): prompt = build_prompt(chapter) raw_text = generate_chapter(prompt, chapter["word_limit"]) final_text = post_process(raw_text) save_to_file(f"output/{chapter['chapter_num']}.txt", final_text) if __name__ == "__main__": main() ``` #### 五、性能优化建议 1. 使用量化技术减少显存占用:`model.half().cuda()` 2. 启用缓存加速生成: ```python model.config.use_cache = True ``` 3. 批处理生成(适用于多章节同时生成) **注意事项:** - 本地模型需要至少8GB显存(如RTX 3080) - 建议使用`torch.utils.checkpoint`进行梯度检查点优化 - 可结合检索增强生成(RAG)技术提升内容一致性[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值