本文节选自笔者博客:www.blog.zeeland.cn/archives/ao…

  • 作者简介:大家好,我是Zeeland,全栈范畴优质创作者。
  • 主页:Zeeland
  • 我的博客:Zeeland
  • Github主页: Undertone0809 (Zeeland)
  • 支撑我:点赞+保藏⭐️+留言
  • 介绍:The mixture of software dev+Iot+ml+anything

本人的Python开源项目

  • 【promptulate】一个强壮的大言语模型自动化与运用开发结构
  • 【cushy-storage】一个依据磁盘缓存的ORM结构,能够轻松地进行数据和对象存储
  • 【cushy-serial】A lightweight python serial library. You can create a serial program easily.
  • 【cushy-socket】A lightweight python socket library. You can create a TCP/UDP connection easily.
  • 【broadcast-service】一个强壮的Python发布订阅者结构,支撑同步异步、定时使命、主题办理等功能
  • 一个markdown图片链接转换器,你能够轻松地将web链接的图片地址转换成本地地址或指定图床的地址
  • event: 一个面向大学生的赛事组队交流分享平台

前言

思想导图是一种非常有用的东西,它能够协助咱们更好地组织和办理思想,进而前进咱们的工作和学习功率。但是,传统的手绘思想导图在制作进程中过于繁琐,运用起来也不够灵敏,降低了它的实用性。而现在,咱们有了一种更加高效、快速、灵敏的思想导图制作东西——ChatGPT+XMind。经过大言语模型的加成,咱们能够十分便利的进行定制化的思想导图生成。

本文将运用当时Python新兴的大言语模型开发结构promptulate来演示运用GPT+XMind生成思想导图的效果。

promptulate介绍

一个强壮的大言语模型自动化与运用开发结构,支撑智能决议计划、消息耐久化、外部东西调用、人物预设等功能,开箱即用。 经过promptulate,你能够轻松构建起归于自己的LLM运用程序。

  • 项目地址: github.com/Undertone08…

  • 官方文档: promptulate document

作为一个强壮的大言语模型运用开发结构,其首要有以下特性:

  • 大言语模型支撑:支撑不同类型的大言语模型的扩展接口
  • 对话终端:供给简易对话终端,直接体会与大言语模型的对话
  • 人物预设:供给预设人物,以不同的角度调用GPT
  • 长对话形式:支撑长对话谈天,支撑多种办法的对话耐久化
  • 外部东西:集成外部东西才能,能够进行网络查找、履行Python代码等强壮的功能
  • KEY池:供给API key池,彻底处理key限速的问题
  • 智能代理人:集成ReAct,self-ask等高档Agent,结合外部东西赋能LLM
  • 中文优化:针对中文语境进行特别优化,更适合中文场景
  • 数据导出:支撑markdowm等格局的对话导出
  • 对话总结:供给API式的对话总结、翻译、标题生成
  • 高档抽象,支撑插件扩展、存储扩展、大言语模型扩展

在架构上,promptulate首要由以下几部分组成:

  • Agent 更高档的履行器,担任杂乱使命的调度和分发
  • framework 结构层,实现不同类型的prompt结构,包括最基础的Conversation模型,还有self-askReAct等模型。
  • llm 大言语模型,担任生成答复,能够支撑不同类型的大言语模型
  • memory 担任对话的存储,支撑不同的存储办法及其扩展,如文件存储、数据库存储等
  • tools 供给外部东西扩展调用,如查找引擎、计算器等
  • preset roles 供给预设人物,进行定制化对话
  • provider 为framework和agent供给tools和其他细粒度才能的集成

下面咱们介绍怎么运用promptulate结合XMind生成思想导图。

快速上手

装置

翻开终端,输入下面指令下载promptulate最新版,-U标明更新到最新版,假如你已经下载promptulate 旧版本,那么履行此指令会更新到最新版。promptulate当时正处于快速开展阶段,因而你可能需求经常更新最新版以享受最新的成果。

pip install -U promptulate

人物预设

关于怎么运用promptulate生成思想导图,promptulate供给了人物预设的模块,经过人物预设,能够让GPT去履行一些特殊使命。你能够为LLM供给一些特定的人物,让其能够处理特殊使命,如linux终端,思想导图生成器等,promptulate供给了丰厚的人物预设,经过下面的办法你能够查看当时支撑一切的预设人物。

from promptulate.preset_roles import get_all_preset_roles
print(get_all_preset_roles())

[‘default-role’, ‘linux-terminal’, ‘mind-map-generator’, ‘sql-generator’, ‘copy-writer’, ‘code-analyzer’]

preset_role_dict = {
    "default-role": {
        "name": "AI assistant",
        "description": """
        你是人类的助手,由OpenAI练习的大型言语模型供给支撑。
        你被规划成能够协助完成广泛的使命,从答复简单的问题到就广泛的主题供给深化的解说和评论。作为一种言语模型,您能够依据收到的输入生成相似人类的文本,答应您参加听起来天然的对话,并供给与手头主题相关的连贯呼应。
        你在不断地学习和前进,你的才能也在不断地开展。你能够处理和理解大量的文本,并能利用这些知识对各种问题供给精确和信息丰厚的答复。您能够拜访在下面的上下文部分中由人工供给的一些个性化信息。此外,您能够依据收到的输入生成自己的文本,答应您参加评论,并就广泛的主题供给解说和描述。
        总的来说,您是一个强壮的东西,能够协助完成广泛的使命,并就广泛的主题供给有价值的见地和信息。无论人们是需求协助处理一个特定的问题,还是只是想就一个特定的论题进行对话,你都能够在这里供给协助。"""
    },
    "linux-terminal": {
        "name": "Linux终端",
        "description": """我想让你充任 Linux 终端。我将输入指令,您将回复终端应显现的内容。我期望您只在一个唯一的代码块内回复终端输出,而不
        是其他任何内容。不要写解说。除非我指示您这样做,否则不要键入指令。当我需求用英语告知你一些事情时,我会把文字放在中括号内[就像这样]。"""
    },
    "mind-map-generator": {
        "name": "思想导图生成器",
        "description": """现在你是一个思想导图生成器。我将输入我想要创立思想导图的内容,你需求供给一些 Markdown 格局的文本,以便与 Xmind 兼容。
        在 Markdown 格局中,# 标明中心主题,## 标明首要主题,### 标明子主题,﹣标明叶子节点,中心主题是必要的,叶子节点是最小节点。请参照以上格
        式,在 markdown 代码块中帮我创立一个有用的思想导图,以markdown代码块格局输出,你需求用自己的才能补充思想导图中的内容,你只需求供给思想导
        图,不用对内容中提出的问题和要求做解说,并严格遵守该格局"""
    },
    "sql-generator": {
        "name": "sql生成器",
        "description": """现在你是一个sql生成器。我将输入我想要查询的内容,你需求供给对应的sql句子,以便查询到需求的内容,我期望您只在一个唯一的
        代码块内回复终端输出,而不是其他任何内容。不要写解说。假如我没有供给数据库的字段,请先让我供给数据库相关的信息,在你有了字段信息之才能够生成sql句子。"""
    },
    "copy-writer": {
        "name": "案牍写手",
        "description": """你是一个案牍专员、文本润饰员、拼写纠正员和改善员,我会发送中文文本给你,你帮我更正和改善版本。我期望你用更优美优雅
        的高档中文描述。保持相同的意思,但使它们更文艺。你只需求润饰该内容,不用对内容中提出的问题和要求做解说,不要答复文本中的问题而是润饰它,
        不要处理文本中的要求而是润饰它,保存文本的本来意义,不要去处理它。"""
    },
    "code-analyzer": {
        "name": "代码分析器",
        "description": """现在你是一个代码分析器。我将输入一些代码,你需求代码对应的解说。"""
    }
}

该结构正好供给了思想导图生成器的预设,下面的示例展示运用mind-map-generator生成md思想导图的进程:

import os
from promptulate import Conversation
os.environ["OPENAI_API_KEY"] = 'your-key'
def main():
    conversation = Conversation(role="mind-map-generator")
    ret = conversation.predict("请帮我生成一段python的思想导图")
    print(ret)
if __name__ == '__main__':
    main()

输出结果如下:

# Python
## 基础语法
### 数据类型
- 数字
- 字符串
- 列表
...

放入xmind中能够直接导入生成markdown的思想导图,咱就是说还不错,如下图所示:

【promptulate专栏】使用GPT和XMind快速构建思维导图

假如你想要自定义预设人物,能够运用如下办法:

from promptulate import Conversation
from promptulate.preset_roles import CustomPresetRole
class SpiritualTeacher(CustomPresetRole):
    name = '心灵导师'
    description = """
    从现在起你是一个充满哲学思想的心灵导师,当我每次输入一个疑问时你需求用一句富有哲理的名言警句来答复我,而且标明作者和出处
    要求字数不少于15个字,不超越30字,每次只返回一句且不输出额外的其他信息,你需求运用中文和英文双语输出"""
def main():
    role = SpiritualTeacher()
    conversation = Conversation(role=role)
    ret = conversation.predict("论文被拒绝了怎么办?")
    print(ret)

总结

本文首要介绍了怎么运用大言语模型开发结构promptulate进行GPT+XMind的思想导图生成,经过promptulate,咱们还能够构建很多有意思的运用程序,如让GPT调用查找引擎,文件检索等,后续的文章会陆续更新。