【Promptulate】一个强大的大语言自动化与应用开发框架,构建更强悍的GPT应用

本文节选自笔者博客: https://www.blog.zeeland.cn/archives/promptulate666
项目地址:https://github.com/Undertone0809/promptulate

  • 💖 作者简介:大家好,我是Zeeland,全栈领域优质创作者。
  • 📝 CSDN主页:Zeeland🔥
  • 📣 我的博客:Zeeland
  • 📚 Github主页: Undertone0809 (Zeeland) (github.com)
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:Python系列专栏 🍁
  • 💬介绍:The mixture of software dev+Iot+ml+anything🔥

本人的Python开源项目

  • 【prompt-me】一个专为Prompt Engineer设计LLM Prompt Layer框架,支持连续对话、角色预设、提供缓存的功能,可以记录历史对话等功能,可以无需代理直接访问,开箱即用。 通过 prompt-me,你可以轻松构建起属于自己的GPT应用程序。
  • 【cushy-storage】一个基于磁盘缓存的Python框架
  • 【cushy-socket】 一款轻量级的Python Socket框架
  • 【cushy-serial】 一个轻量级Python serial库
  • 【broadcast-service】一个轻量级Python发布订阅者框架
  • 【Python实战】从架构设计到实现:一个Powerful的图书管理系统

前言

在构建了【prompt-me】一个专为 Prompt Engineer设计LLM Prompt Layer框架 架构之后,我发现可以构建一个更强大的LLM框架,于是在肝了几天把prompt-me完全组件化重构了之后,有了现在这个框架。

promptulate 是一个专为 Prompt Engineer设计LLM Prompt Layer框架,支持连续对话、对话保存、对话内容与标题总结、角色预设、使用外部工具等功能,开箱即用。
通过 promptulate,你可以轻松构建起属于自己的LLM应用程序。

本项目重构重构重构了两次,在本人深度阅读langchain, Auto-GPT, django, django-rest-framework, gpt_academic...
等大牛项目的源码之后,学习它们的架构、代码设计思路等内容,最终有了现在的版本,相较于之前的老版本prompt-mepromptulate
重新构建了 llms, message, memory, framework, preset_roles, tools, provider等模块,将prompt
的各个流程全部组件化,便有了现在的promptualte框架,但是工作量很大,还在不断地完善细节中,欢迎大家的参与。

特性

  • 大语言模型支持:支持不同类型的大语言模型的扩展接口(当前暂时只支持GPT)
  • 提供简易对话终端,直接体验与大语言模型的对话
  • 角色预设:提供预设角色,以不同的角度调用GPT
  • 内置API代理,不用搭建楼梯也可以直接使用
  • 接口代理:支持调用ChatGPT API官方接口或自治代理
  • 长对话模式:支持长对话聊天,支持多种方式的对话持久化
  • 数据导出:支持markdowm等格式的对话导出
  • 对话总结:提供API式的对话总结、翻译、标题生成
  • 高级抽象,支持插件扩展、存储扩展、大语言模型扩展

基础架构

在看了当前这么多prompt-engineering之后,本人的架构设计思想在langchain, Auto-GPT
之上进行不断改进,构建出了一套属于promptualte的LLM Prompt Layer框架。promptulate 由以下几部分组成:

  • Agent 更高级的执行器,负责复杂任务的调度和分发
  • framework 框架层,实现不同类型的prompt框架,包括最基础的Conversation模型,还有self-askReAct等模型正在火速开发中
  • llm 大语言模型,负责生成回答,可以支持不同类型的大语言模型
  • memory 负责对话的存储,支持不同的存储方式及其扩展,如文件存储、数据库存储等,相关扩展正在开发中
  • tools 提供外部工具扩展调用,如搜索引擎、计算器等
  • preset roles 提供预设角色,进行定制化对话
  • provider 为framework和agent提供tools和其他细粒度能力的集成

快速上手

pip install -U promptulate  

基本使用

后面的文档全部使用OPENAI GPT3.5进行测试

简易终端

在介绍后续各种组件之前,我想先介绍一下这个终端,promptulate
为大语言模型对话提供了一个简易终端,在你安装了了 promptulate 之后,你可以非常方便的使用这个简易终端进行一些对话,使用方式如下:

  • 打开终端控制台,输入以下命令,就可以开启一个简易的对话
promptulate-chat -openai_api_key your_key_here --proxy_mode promptulate
-openai_api_key 你的openai_api_key
--proxy_mode 代理模式,当前暂时只支持off和promptulate模式,如果你选择promptulate模式,你会发现你不用搭建楼梯也能访问,这是因为promptulate内置了代理。(后面会详细介绍)
  • 当然并不是每次运行都要输入这么长的内容,因为在你第一次运行终端之后 promptulate
    会对你的配置信息进行缓存,因此下一次运行的时候,你只需要输入下面的命令就可以开始一段对话了~
promptulate-chat
  • 然后你就可以
Hi there, here is promptulate chat terminal.
[User] 你好
[output] 你好!有什么我可以帮助你的吗?
[User] 只因你太美
[output] 谢谢夸奖,但作为一个语言模型,我没有真正的美丽,只有能力提供信息和帮助。那么,有什么问题或者需求我可以帮你解决 吗?
[User] 这真是太棒了
[output] 很高兴你觉得如此,我会尽力为您提供最佳的服务。有任何需要帮助的问题,请尽管问我。

KEY配置

在使用promptulate之前,你需要先导入你的OPENAI_API_KEY

import osos.environ['OPENAI_API_KEY'] = "your-key"

在你第一次使用的时候,需要使用os.environ["OPENAI_API_KEY"] 导入"OPENAI_API_KEY"
的环境变量,但是在第一运行之后promptulate
会进行缓存,即后面再运行就不需要再导入key了。如果你的key过期了,可以尝试重新按照上面的方法导入key,或者你也可以把cache
文件给删除掉,Windows的cache在当前目录下,linux的cache/tmp下。

LLM

promptulate的架构设计可以轻松兼容不同的大语言模型扩展,在promptulate中,llm负责最基本的内容生成部分,因此为最基础的组件。下面展示一个OpenAI的示例:

from promptulate.llms import OpenAIllm = OpenAI()
llm("你知道鸡哥的《只因你太美》?")
'是的,鸡哥的《只因你太美》是这几年非常流行的一首歌曲。'

proxy

我想你可能遇到了无法访问的小问题,It’s OK, promptulate 提供了三种访问OpenAI的方式,分别是

  • off 默认的访问方式,不开代理
  • custom 自定义代理方式
  • promptulate promptulate提供的免费代理服务器

promptulate 提供了免费的代理服务器,感谢 ayaka14732
,你可以在不用科学上网的情况下直接调用OpenAI的相关接口,下面是代理的设置方式:

from promptulate.llms import OpenAI
from promptulate.utils import set_proxy_modellm = OpenAI()
llm("你知道鸡哥的《只因你太美》?")def set_free_proxy():set_proxy_mode("promptulate")def set_custom_proxy():proxies = {'http': 'http://127.0.0.1:7890'}set_proxy_mode("custom", proxies=proxies)def turn_off_proxy():set_proxy_mode("off")def main():set_free_proxy()llm = OpenAI()llm("你知道鸡哥的《只因你太美》?")if __name__ == '__main__':main()

和OPENAI_API_KEY一样,关于代理的配置我也设置了缓存,这意味着你只需要配置一次代理即可(我也太聪明了吧)。事实上promptulate
提供了关闭全局配置项缓存的功能,但默认开启,不推荐关闭,所以我不告诉你怎么关闭~

Conversation

上面展示的LLM组件,只提供了最基础的对话生成内容,但是其并不提供上下文对话、文章总结、角色预设等更加复杂的功能,所以接下来我们介绍功能更为强大的Conversation

Conversationframework中最基础的组件,其支持prompt生成、上下文对话、对话存储、角色预设的基本功能,此外,provider
为其提供了语言翻译、markdown数据导出、对话总结、标题总结等扩展功能。

接下来,我们先从对基础的对话开始,使用Conversation可以开始一段对话,使用其predict()函数可以生成回答。

from promptulate import Conversationconversation = Conversation()
conversation.predict("你知道鸡哥的《只因你太美》吗?")
'是的,鸡哥的《只因你太美》是这几年非常流行的一首歌曲。'

Conversation默认使用OpenAI GPT3.5作为LLM,当然,因为其架构设计,Conversation
还可以轻松扩展其他类型的llm(当前暂时只开发了OpenAI,其他大语言模型的扩展正在火速开发中,当然如果你有自己想接入的大语言模型,欢迎你的pr!)

下面是一个更复杂的示例,展示了使用OpenAI作为大语言模型进行对话,使用本地文件进行存储,进行文章总结与标题总结的功能。

from promptulate import Conversation
from promptulate.memory import LocalCacheChatMemory
from promptulate.llms import OpenAIdef main():memory = LocalCacheChatMemory()llm = OpenAI(model="gpt-3.5-turbo", temperature=0.9, top_p=1, stream=False, presence_penalty=0, n=1)conversation = Conversation(llm=llm, memory=memory)ret = conversation.predict("你知道鸡哥的著作《只因你太美》吗?")print(f"[predict] {ret}")ret = conversation.predict_by_translate("你知道鸡哥会什么技能吗?", country='America')print(f"[translate output] {ret}")ret = conversation.summary_content()print(f"[summary content] {ret}")ret = conversation.summary_topic()print(f"[summary topic] {ret}")ret = conversation.export_message_to_markdown(output_type="file", file_path="output.md")print(f"[export markdown] {ret}")if __name__ == '__main__':main()
[predict] 是的,我知道《只因你太美》这本书,是中国知名作家鸡肋(江南)所著的一篇言情小说。这本小说讲述了一个富家千金与一个贫穷男孩之间的爱情故事,情节曲折动人,深受读者喜爱。该小说在出版后得到了很高的评价和反响,并被改编成电影和电视剧等多种形式进行推广。
[translate output] I'm sorry, I cannot determine what you mean by "鸡哥" or what skills they may possess without additional context. Can you please provide more information or clarify your question?
[summary content] 在之前的对话中,用户询问我是否知道鸡哥的著作《只因你太美》。我回答了肯定的,解释了该小说的情节大致概括和其受欢迎的原因。我也提到了该小说的广泛影响,包括被改编成电影和电视剧等多种形式进行推广。
[summary topic] 鸡哥的小说。

咱就是说季皮提老师不懂鸡哥-.-

上面的示例中,我们使用

  • LocalCacheChatMemory()进行聊天记录的本地化文件存储,文件存储形式默认是以json的形式进行存储的,保存在cache中。
  • OpenAI(model="gpt-3.5-turbo", temperature=0.9, top_p=1, stream=False, presence_penalty=0, n=1)
    进行初始化一个大模型,里面是OpenAI需要传入的一些参数,具体可以查看https://platform.openai.com/docs/api-reference/chat/create
    查看具体含义,这里不做详细讲解,如果你不想理会这些参数,你也可以直接llm = OpenAI()就好啦,默认使用gpt-3.5-turbo
    作为大语言模型,其他参数使用默认的就好了。
  • conversation.predict_by_translate("你知道鸡哥会什么技能吗?", country='America')
    这个功能为使用特定语言进行预测,provider为其提供了TranslatorMixin,让Conversation
    得以拥有此功能。对于这个方法,你只需要传入prompt和你需要转换的语言的国家名称就好了。
  • conversation.summary_content()这个函数可以直接总结上面的对话内容。
  • conversation.summary_topic() 这个函数可以直接总结上面的对话,并提供一个标题。
  • conversation.export_message_to_markdown(output_type="file", file_path="output.md")
    这个函数可以将对话记录导出为markdown文件,如果output_type="text",则只返回markdown对话的内容。

providerConversation提供了 SummarizerMixin, TranslatorMixin, DeriveHistoryMessageMixin
,让其拥有了总结对话、总结标题、翻译、markdown导出的能力,provider提供的函数中一般都提供了一个enable_embed_message
的参数,这个参数的意思是:是否将本次对话保存进历史对话中,下面我们来看一个demo。

from promptulate import Conversationconversation = Conversation()
conversation.predict_by_translate("你知道鸡哥会什么技能吗?", country='America', enable_embed_message=True)

如果你设置了enable_embed_message=True, 那么这一次的predict将保存进历史对话中,provider提供的函数默认是不会将预测结果存入对话中的哦,这一点需要注意一下。

角色预设

你可以为framework提供一些特定的角色,让其可以处理特殊任务,如linux终端,思维导图生成器等,通过下面的方法你可以查看当前支持所有的预设角色。

from promptulate.preset_roles import get_all_preset_rolesprint(get_all_preset_roles())

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

下面展示使用mind-map-generator生成md思维导图的过程:

from promptulate import Conversationdef main():conversation = Conversation(role="mind-map-generator")ret = conversation.predict("请帮我生成一段python的思维导图")print(ret)if __name__ == '__main__':main()
# Python
## 基础语法
### 数据类型
- 数字
- 字符串
- 列表
...

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

如果你想要自定义预设角色,可以使用如下方法:

from promptulate import Conversation
from promptulate.preset_roles import CustomPresetRoleclass SpiritualTeacher(CustomPresetRole):name = '心灵导师'description = """从现在起你是一个充满哲学思维的心灵导师,当我每次输入一个疑问时你需要用一句富有哲理的名言警句来回答我,并且表明作者和出处要求字数不少于15个字,不超过30字,每次只返回一句且不输出额外的其他信息,你需要使用中文和英文双语输出"""def main():role = SpiritualTeacher()conversation = Conversation(role=role)ret = conversation.predict("论文被拒绝了怎么办?")print(ret)if __name__ == '__main__':main()
“失败不是终点,放弃才是。”——托马斯·爱迪生

待办清单

  • 提供更多LLM模型支持
  • 提供Agent进行复杂任务调度
  • 提供更加方便的程序调用方式
  • 添加角色预设
  • 预设角色的参数配置
  • 提供prompt模板与prompt结构化
  • 提供外部工具扩展
    • 外部搜索: Google,Bing等
    • 可以执行shell脚本
    • 提供Python REPL
    • arvix论文工具箱,总结,润色
    • 本地文件总结
  • 对话存储
    • 提供向量数据库存储
    • 提供mysql, redis等数据库存储
  • 自建知识库建立专家决策系统
  • 接入self-ask, prompt-loop架构
  • 提供多种导出方式
  • 可以导出历史消息为markdown格式
  • 使用环境变量配置key
  • 提供显示当前token(单词量)的功能
  • 添加错误处理机制,如网络异常、服务器异常等,保证程序的可靠性
  • 开发ChatBot v2, issue
  • 完善代理模式
  • 提供gradio快速演示服务器
  • 提供简易对话终端
  • 封装消息体,完善消息体中的信息
  • 长对话自动/手动总结
  • 提供全局配置的缓存开关
  • 提供限速等问题的错误提示
  • Conversation传入convesation_id继续上次对话
  • 提供修改local_cache默认位置的方法
  • 为predict提供回调模式
  • 提供API池

妈呀,我怎么还有这么多待办事项,vivo50帮帮我 >.<

一些问题

  • 本人正在尝试一些更加完善的抽象模式,以更好地兼容该框架,以及外部工具的扩展使用,如果你有更好的建议,欢迎一起讨论交流。

贡献

如果你想为这个项目做贡献,你可以提交pr或issue。我很高兴看到更多的人参与并优化它。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5625.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT专业应用:生成反方辩题提问

正文共 794 字&#xff0c;阅读大约需要 4 分钟 辩手等必备技巧&#xff0c;您将在4分钟后获得以下超能力&#xff1a; 生成反方辩题提问 Beezy评级 &#xff1a;A级 *经过寻找和一段时间的学习&#xff0c;一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | Kim 编辑者…

chatgpt赋能python:什么是Python反向索引?

什么是Python反向索引&#xff1f; 如果您是一个SEO专家或在互联网领域有所了解&#xff0c;那么您可能已经听过Python反向索引。反向索引是一种搜索引擎使用的工具&#xff0c;用于帮助搜索引擎更快、精准地对网页进行索引。反向索引很重要&#xff0c;因为它可以使搜索引擎更…

chatgpt赋能python:Python反向输出功能介绍

Python 反向输出功能介绍 Python 是一种动态类型、面向对象、解释型的高级编程语言。它非常流行&#xff0c;因为它易于学习和使用&#xff0c;具有强大的功能&#xff0c;可以在许多方面应用。其中&#xff0c;反向输出功能是其强大的特征之一。 什么是 Python 反向输出&…

【AIGC】ChatGPT能上传文件了,文档图片数据集秒理解,代码一键执行

ChatGPT又出试验型新模式&#xff0c;不少网友陆续收到代码解释器Alpha测试资格。 简单来说&#xff0c;这个模式提供两个功能&#xff1a;执行Python代码&#xff0c;接受文件上传下载。 为什么是这两个功能的组合&#xff1f; 可以看目前最火的一条测试结果&#xff0c;和数…

【AIGC】ChatGPT联动脑机接口实验,用脑电波回邮件

国外某公司发现&#xff0c;ChatGPT已经可以用于脑机接口实验了。不过也有眼尖的网友点出&#xff1a;这个过程是不是提前预设好回复邮件的prompt&#xff0c;非常重要。 ChatGPT&#xff0c;已经可以用于脑机接口实验了&#xff01; 近日&#xff0c;Araya公司的一个团队&am…

【AIGC】利用ChatGPT完成任务,迷你AGI控制世界来了

多智能体代码库 CAMEL&#xff0c;提出了通过角色扮演框架来研究 LLM 智能体的行为和能力。 未来的社会会被通用人工智能&#xff08;AGI&#xff09;控制吗&#xff1f;当拥有多个 ChatGPT 智能体会有多可怕。 ChatGPT 已经初步展现了 AGI 的雏形&#xff0c;成为了各行各业工…

ChatGPT 大行其道,带你走近 AIGC

近几周来亲自上手体验了几款产品&#xff0c;内容涉及到 AIGC 的几个代表应用&#xff0c;全文不涉及高深的算法理论&#xff0c;尽量让屏幕的你能够轻松阅读&#xff0c;走进信息科技的前沿。 什么是 GC&#xff0c;全称为Generated Content&#xff0c;生产内容&#xff0c;A…

openai visgpt,chatgpt,DALLE2 使用测试

网络问题&#xff1a;openai-chatGPT的API调用异常处理 官方手册&#xff1a;https://platform.openai.com/docs/api-reference visgpt gitlab代码 https://github.com/microsoft/visual-chatgpt visual_chatgpt.py运行前添加密匙 os.environ[OPENAI_API_KEY]""…

山石发声|风暴眼中的ChatGPT,看NLPer怎么说?

当前科技领域最有热度的话题&#xff0c;无疑是OpenAI 新提出的大规模对话语言模型ChatGPT&#xff0c;一经发布上线&#xff0c;短短五天就吸引了百万用户&#xff0c;仅一个多月的时间月活已然破亿&#xff0c;并且热度一直在持续发酵&#xff0c;各行各业的从业人员、企业机…

吴恩达ChatGPT《Building Systems with the ChatGPT API》笔记

1. 课程介绍 使用ChatGPT搭建端到端的LLM系统 本课程将演示使用ChatGPT API搭建一个端到端的客户服务辅助系统&#xff0c;其将多个调用链接到语言模型&#xff0c;根据前一个调用的输出来决定使用不同的指令&#xff0c;有时也可以从外部来源查找信息。 课程链接&#xff1a…

【ChatGPT】借助ChatGPT自动制作PPT

对应的视频&#xff1a;https://edu.csdn.net/learn/38346/613666 由于一些原因注册chatgpt一直被提示多次ip注册啥的&#xff0c;就申请了百度文心一言。等待通过中。这里我们chatgpt都用文心一言代替。 文心一言网址&#xff1a;https://yiyan.baidu.com/welcome 问&#x…

利用ChatGPT快速进行指标的异常归因

指标的异常归因是数据分析师日常工作中遇到的最高频问题之一。 关于异常归因的核心问题其实就两个&#xff1a;一个是从哪些维度进行指标拆解&#xff0c;另一个是各个维度之间的贡献度分别是多少&#xff1f; 我们来看看ChatGPT是怎么解决这种问题的。先来个业务问题&#xff…

AIGC+ChatGPT成为数字人驱动力,赋能虚拟主播直播形式纵深拓展

直播经济的高速增长正在推动直播形态的不断升级&#xff0c;经过两年的市场沉淀&#xff0c;备受Z世代消费者喜爱的“虚拟主播”已经迎来爆发式“生长”阶段。 在各大视频直播平台&#xff0c;不同风格类型的个性化3D虚拟主播正在替代真人主播活跃于直播间。虚拟主播大幅度推动…

令人惊艳的ChatGPT项目,AIGC也太猛了

自从 ChatGPT、Stable Diffusion 发布以来&#xff0c;各种相关开源项目百花齐放&#xff0c;着实让人应接不暇。 今天&#xff0c;我将着重挑选几个优质的开源项目&#xff0c;对我们的日常工作、学习生活&#xff0c;都会有很大的帮助。 今天整理分享给大家&#xff0c;希望对…

ChatGPT应用在AIGC内容生产【赠书活动|第一期《硅基物语》】

文章目录 爆火的AI工具ChatGPT走入大众视野的AIGCAIGC领域的发展AIGC价值引领『赠书活动 &#xff5c; 第一期』 爆火的AI工具ChatGPT 2023年伊始&#xff0c;ChatGPT就火遍全网&#xff0c;成为了全球最快拥有1亿月活用户的产品。在地铁上、电梯中、咖啡厅到处都充满着讨论AI…

我们来说说蹿红的AIGC到底是什么?ChatGPT又是什么?

近期&#xff0c;人工智能&#xff08;AI&#xff09;领域动作频频&#xff0c;OPENAI公司Chat GPT的出现&#xff0c;标志着人工智能的研究与应用已经进入了一个崭新的发展阶段&#xff0c;国内腾讯、阿里巴巴、百度、易网、国外微软、谷歌、苹果、IBM、Amazon&#xff0c;等互…

读书笔记:从ChatGPT到AIGC:智能创作与应用赋能

文章目录 引爆内容生产力应用场景&#xff1a;ChatGPT的多场景应用传媒电商影视教育金融医疗 发展梳理&#xff1a;从PGC到UGC再到AIGCPGC&#xff1a;企业和平台是内容创作的主体UGC&#xff1a;用户成为内容创作主体AIGC 内容生成&#xff1a;AIGC涵盖多样的内容模态AI图像&a…

一本书读懂AIGC与ChatGPT的前世今生

关注我们丨文末赠书 最近一位博主完全用ChatGPT提供的代码成功从零复刻了《Flappy Bird》这款游戏&#xff0c;吸引近500万人次围观。 ▲ &#xff08;图源&#xff1a;candlesan&#xff09; 只要告诉ChatGPT自己的需求&#xff0c;然后100%复制ChatGPT的代码&#xff0c;再不…

【原创】AIGC之ChatGPT的应用

AIGC是什么 AIGC - AI Generated Content &#xff08;AI生成内容&#xff09;&#xff0c;对应我们的过去的主要是 UGC&#xff08;User Generated Content&#xff09;和 PGC&#xff08;Professional user Generated Content&#xff09;。 AIGC就是说所有输出内容是通过AI机…

AIGC(ChatGPT)简介

一&#xff0e;概述 AIGC&#xff1a; Artificial Intelligence Generated Context&#xff0c;即可以利用人工智能技术自动产生内容&#xff0c;常见如代码生成&#xff0c;文本问答、图像生成、视频生成等。AIGC能力范围可以覆盖回答问题、撰写文章、文本摘要、语言翻译和生成…