GPT Academic 提供了一系列丰富的交互式功能,使用户能够以动态、有状态的方式与语言模型互动,超越了基本的文本生成。这些功能包括游戏、图像生成能力、插件调用系统以及配置修改工具。
本文档涵盖了这些交互式功能的实现和架构,重点介绍了它们如何维护状态、处理用户输入以及在多次交互中生成响应。
GPT Academic 中的交互式功能建立在共享状态管理架构之上,该架构支持复杂的多轮交互。该架构围绕几个关键组件展开:
GptAcademicGameBaseState 或 GptAcademicState 以管理交互状态的类。chatbot._cookies 对象中。GptJsonIO 类从 LLM 响应中提取结构化数据。该图展示了如何使用 GptAcademicGameBaseState 和 GptAcademicState 类实现交互式功能。状态存储在 chatbot._cookies 对象中,从而在多次交互中实现状态持久化。
来源
GPT Academic 包含演示语言模型创意能力的游戏,同时为用户提供娱乐价值。
互动故事游戏允许用户与语言模型协作创作故事。系统提供故事发展的主题和选项,用户可以选择或建议叙事方向。
该图展示了互动故事游戏的流程。它从一个随机的故事开头开始,并将其呈现给用户。然后,用户选择一个方向,系统根据该选择生成下一部分。每个故事部分都可以伴随使用 DALL-E 集成自动生成的图像。
来源
ASCII 艺术游戏是一个功能,系统在此生成 ASCII 艺术,用户尝试猜测该艺术代表什么。它展示了模型仅使用文本字符创建可识别模式的能力。
游戏选择一个随机对象,生成代表该对象的 ASCII 艺术,并将其呈现给用户。然后,用户尝试猜测该对象是什么。游戏使用 is_same_thing 来语义上比较用户的猜测与目标对象,允许语言的细微差别或同义词。
来源
GPT Academic 提供使用 OpenAI 的 DALL-E 模型生成和编辑图像的功能。这些功能允许用户根据文本描述创建视觉内容或修改现有图像。
该图说明了 GPT Academic 中的图像生成系统。 ImageGen_Wrap 类提供了一个用户界面,用于选择模型和配置选项。根据所选模型,它会调用 图片生成_DALLE2 或 图片生成_DALLE3。这两个函数都使用 gen_image 来构建 API 请求,将其发送到 DALL-E API,下载生成的图像,并将其本地保存。
DALL-E 3 支持其他质量和样式选项,在选择该模型时会包含在 API 请求中。
来源
GPT Academic 还支持使用 DALL-E 2 进行图像编辑。此功能允许用户上传图像,指定修改提示,并生成图像的修改版本。
图片修改_DALLE2 函数使用 ImageEditState 类来收集必要的输入:图像文件、分辨率和编辑提示。一旦收集到所有输入,它就会调用 edit_image 来处理图像,构建 API 请求,将其发送到 DALL-E API,下载生成的图像,并将其本地保存。
图像预处理步骤对于与 DALL-E API 的兼容性至关重要。系统使图像透明(以便白色区域被解释为需要修改的区域),确保图像为正方形(API 要求),并将其调整到适当的尺寸。
来源
GPT Academic 包含一个根据用户输入动态调用插件的功能。这允许系统分析用户请求并自动选择和执行最合适的插件。
系统读取可用插件,使用语言模型根据用户请求选择最合适的插件,提取插件的参数,然后用这些参数执行插件。
一个值得注意的功能是与文件上传系统的集成。如果用户最近上传了文件,系统会将该文件的信息包含在用于参数提取的提示中,允许插件使用上传的文件作为输入。
来源
GPT Academic 提供交互式修改系统配置的功能,允许用户在不直接编辑配置文件的情况下调整设置。
系统首先通过 ALLOW_RESET_CONFIG 设置检查是否允许配置修改。如果允许,它会从 config.__dict__ 读取可用的配置选项,创建这些选项的枚举,并为配置意图定义一个 Pydantic 类。然后,它使用 GptJsonIO 来分析用户请求并提取配置键和新值。
配置键必须在用户请求中明确提及的要求,是一种安全措施,可以防止系统修改用户未明确提及的配置设置。
来源
GPT Academic 中许多交互式功能的核心是 GptJsonIO 类,它提供了一种结构化的方式来与语言模型进行交互,以进行信息提取和决策。
交互式功能为需要从语言模型响应中提取的数据定义 Pydantic 模型。 GptJsonIO 类根据这些模型生成格式说明,这些说明会包含在发送给语言模型的提示中。然后,该类从响应中提取 JSON,将其解析为 Python 对象,根据 Pydantic 模型进行验证,并返回一个结构化的数据对象。
如果 JSON 解析或验证过程中出现错误,generate_output_auto_repair 方法可以通过生成一个包含损坏的 JSON 和错误消息的新提示来尝试修复 JSON。这种修复过程使与语言模型的结构化交互更加健壮,能够处理模型生成格式错误的 JSON 的情况。
来源
GPT Academic 中的交互式功能提供了一套丰富的工具,用于以创意和实用的方式与语言模型互动。通过利用通用的状态管理和结构化交互架构,这些功能为用户提供了无缝且一致的体验。
从协作讲故事到图像生成,从 ASCII 艺术游戏到动态插件调用,这些功能展示了 GPT Academic 系统的多功能性和强大功能,同时为用户提供了有价值的功能。
该实现展示了深思熟虑的设计原则,重点关注可维护性、一致性和健壮性。状态管理类、通过 GptJsonIO 进行的结构化 LLM 交互以及模块化架构的使用,共同构成了一个强大而灵活的系统。