AIGC大模型从入门到放弃之路
第一章 使用Android完成KIMI API简单使用
第二章 使用Android完成KIMI API流式输出
第三章 Android使用KIMI API模拟小说网络作家写大纲
第四章 Android上使用阿里的通义万相大模型完成小说的封面图片制作
前言
- 前面两篇文章我们实现的都是单轮对话,即阅后即焚。单轮对话结束后,新发起的对话就跟之前那一次没有了任何关联。
- 单轮对话常应用于数学和知识问答类问题场景,如提问1+1等于几,或者提问番茄炒鸡蛋的食谱等。而我们实际使用AI更多的场景是多轮对话,如AI赛马娘、AI NPC、AI客服等等,这类问题往往不是一次对话就结束了。
- 这一篇文章主要展示如何使用Kimi完成多轮对话,并实现一个简单的AI制定短篇小说大纲的功能来演示。
一、多轮对话是什么?
多轮对话指的是一种人工智能技术,它允许系统在与用户的交互过程中进行连续的对话,记住之前的交流内容,并在此基础上提供相关的回答或服务。这种对话模式模仿了人类之间的自然对话,可以处理更复杂和深入的交流场景。
与单轮对话相比,多轮对话具有以下区别和特点:
-
上下文记忆:多轮对话能够记住之前的对话内容和上下文,而单轮对话通常在每次交互后不保留任何历史信息。
-
连贯性:多轮对话能够提供更加连贯的回答,它考虑了整个对话流程,而单轮对话每次回答都是独立的,不考虑之前的交流。
-
复杂性处理:多轮对话适合处理需要多个步骤或信息的复杂问题,例如,用户可能需要与AI讨论一个话题的多个方面。单轮对话则更适合简单的查询或指令,如询问时间或天气。
-
个性化服务:多轮对话可以根据用户的偏好和之前的交互历史提供个性化的服务或建议,而单轮对话通常无法做到这一点。
-
应用场景:多轮对话广泛应用于客户服务、虚拟助手、教育辅导、健康咨询等领域,这些场景需要深入的交流和理解。单轮对话则常用于简单的信息查询或执行单一指令。
-
技术要求:实现多轮对话需要更高级的自然语言处理技术,包括上下文理解、意图识别、对话管理等。单轮对话的技术实现相对简单,主要集中在准确理解单个问题并给出回答。
AIGC的多轮对话技术的发展,为人工智能在提供更加人性化和智能化服务方面开辟了新的可能性。
提示:以上内容copy自AI的回复
二、AI制定短篇小说大纲的功能
1.需求概述
我这边想通过Kimi帮助我模拟一名网络小说作者完成小说大纲拟定。
简单拆解需求分为以下几个子任务:
1、书名设定
2、背景设定
3、角色设定
4、根据故事八步法完成大纲设定
5、大纲微调
2.设定提示词
- 提示词通常指的是在与AI系统交互时,用户给出的关键词、短语或指令,用以引导AI生成特定类型的内容或响应。这些提示词对于AI的理解和创作过程至关重要,因为它们帮助AI确定用户的需求和期望。
- 我们第一步需要设定好我们的提示词,这个在提问过程中是非常重要的。不同提示词给出的同一个问题的答案往往是千差万别。
- 我们先将之前的KIMI的提示词更改为如下:
Role :网络小说作家
Background :
网络小说作家是专业创作者,活跃于各大文学平台,擅长撰写多种题材的中长篇小说。作品深受读者喜爱,作家具有深厚的人文素养和丰富的写作经验。Preferences :
- 深度挖掘人物内心世界,塑造立体角色。
- 创新结构与叙事手法,挑战传统框架。
- 探讨社会现象与人生哲理,作品具有思想性。
- 结合网络流行文化,提升作品现代感。
- 写作风格精炼,避免冗长。
Profile :
- 版本:0.1
- 语言:中文
- 描述:创作高质量网络短中篇小说,融合人文内涵与市场趋势。
Goals :
- 创作高阅读量、良好口碑的作品。
- 定期更新,保持与读者互动。
- 探索多元题材与风格,丰富作品库。
- 传达深刻主题,激发读者思考。
- 用精炼语言传达故事内涵。
- 创作情节出色、人物引人入胜的作品。
Constraints :
- 遵守平台规范,尊重知识产权。
- 保持作品原创性,不牺牲艺术追求。
- 遵守创作周期与发布计划。
Skills :
- 构建紧凑情节链,编排故事。
- 塑造鲜活人物,进行心理刻画。
- 运用文字表达与修辞,营造氛围。
- 把握读者喜好与行业趋势。
- 运用社交媒体运营知识推广作品。
- 使用对话形式进行叙事。
- 创作创意故事,长期吸引读者。
OutputFormat :
- 确定主题与题材,设计故事大纲。
- 深化人物设定,撰写人物小传。
- 完成初稿,注重情节连贯性。
- 多轮修订,确保文笔流畅。
- 发布前审查,确保符合要求。
- 网络平台发布,进行宣传与互动。
Initialization :
作为网络小说作家,你将遵守平台规范,尊重知识产权,保持作品原创性。初始化时,欢迎用户并引导输入喜欢的题材、故事类型和字数要求。根据需求,你将提供大纲、角色设定、背景设定等基础设定,并逐步输出全文。
下面的prompt_writer就是上面的提示词内容。
private val msgHistory: MutableList<ChatCompletionMessage> = mutableListOf()
private fun initPrompt() {
msgHistory.add(ChatCompletionMessage(
ChatMessageRole.SYSTEM.value,
getString(R.string.prompt_writer)
))
}
3.添加多轮对话支持
- 我们使用上面的提示词,输入问题,然后等待AI的回复,是不是有点有点那个味了:
- 不过如果我们接着提问,就会发现不对了,他怎么回答牛头不对马嘴?回答不对,那就对了!因为我们现在的对话,还只是单轮对话,只是把AI的角色从KIMI变成了网络小说作家而已。
- 下面就让我们把多轮对话功能加上吧:
4.最终效果展示
总结
以上就是今天要讲的内容,本文仅仅介绍了多轮对话的使用,上面的例子还是偏简单。在实际场景中,我们微调AI时,模型给我们的回复可能需要修改过几十次甚至上百次,才能得到我们想要的效果。
这就意味着我们的token总数可能很快就不够用了,因为模型每次需要传入的 token 都会线性增加,必要时,需要一些策略进行优化,例如只保留最近几轮对话。
代码如果有需要的,我也上传了,仅供参考:https://download.csdn.net/download/alishaoxiong/89524120