- 作者简介:大家好,我是Zeeland,全栈领域优质创作者。
- CSDN主页:Zeeland
- 我的博客:Zeeland
- Github主页: Undertone0809 (Zeeland) (github.com)
- 支持我:点赞+收藏⭐️+留言
- 系列专栏:Python系列专栏
- 介绍:The mixture of software dev+Iot+ml+anything
项目地址: https://github.com/Undertone0809/prompt-me
prompt-me
是一个专为 Prompt Engineer设计LLM Prompt Layer框架,支持连续对话、角色预设、提供缓存的功能,可以记录历史对话等功能,开箱即用。 通过 prompt-me,你可以轻松构建起属于自己的GPT应用程序。
cushy-storage
进行持久化pip install prompt-me --upgrade
import os
from prompt_me import ChatBot, enable_log_no_file
os.environ['OPENAI_API_KEY'] = "your_key"
def main():
# enable_log_no_file()
print("A Simple ChatBot built by ChatGPT API")
conversation_id = None
bot = ChatBot()
while True:
prompt = str(input("[User] "))
ret, conversation_id = bot.ask(prompt, conversation_id)
print(ret, conversation_id)
if __name__ == '__main__':
main()
from prompt_me import ChatBot, enable_log
def main():
# enable_log() # 日志功能
print("A Simple ChatBot built by ChatGPT API")
conversation_id = None
bot = ChatBot(key='yourkey')
while True:
prompt = str(input("[User] "))
ret, conversation_id = bot.ask(prompt, conversation_id)
print(ret, conversation_id)
if __name__ == '__main__':
main()
import os
from prompt_me import ChatBot, enable_log_no_file
os.environ['OPENAI_API_KEY'] = "your_key"
def main():
# enable_log_no_file()
bot = ChatBot()
ret, conversation_id = bot.ask("please give me a bucket sort python code")
messages = bot.get_history(conversation_id)
for message in messages:
print(message)
if __name__ == '__main__':
main()
import os
from prompt_me import ChatBot, enable_log_no_file
os.environ['OPENAI_API_KEY'] = "your_key"
def main():
# enable_log_no_file()
bot = ChatBot()
ret, conversation_id = bot.ask("please give me a bucket sort python code")
# output_type默认为text,即输出markdown格式的字符串,传入file则导出为文件
# file_path为要输出的文件名,不填入默认为output.md
output_str = bot.output(conversation_id, output_type='file', file_path='output.md')
print(output_str)
if __name__ == '__main__':
main()
你可以使用ChatBot
类来构建你的应用程序,但是当前我推荐你使用Conversation
来替代ChatBot
,Conversation
具有ChaBot
的所有功能, 除此之外,Conversation
还提供了预设角色、Prompt模板的功能,你可以用其开发一些更加复杂的程序。
下面你将通过预设角色和Prompt模板的使用了解到Conversation
的使用方式。
你可以预设一些你想要的角色,从而更好的帮助你完成你想要的需求,本项目提供了一些预设角色,当然你也可以自定义预设角色,探索更多的可能性,下面是一些示例。
现在你是一个思维导图生成器。我将输入我想要创建思维导图的内容,你需要提供一些 Markdown 格式的文本,以便与 Xmind 兼容。 在 Markdown 格式中,# 表示中央主题,## 表示主要主题,### 表示子主题,﹣表示叶子节点,中央主题是必要的,叶子节点是最小节点。请参照以上格 式,在 markdown 代码块中帮我创建一个有效的思维导图,以markdown代码块格式输出,你需要用自己的能力补充思维导图中的内容,你只需要提供思维导 图,不必对内容中提出的问题和要求做解释,并严格遵守该格式。
import os
from prompt_me.preset_role import MindMapGenerator
from prompt_me import Conversation
os.environ['OPENAI_API_KEY'] = "your_key"
def main():
role = MindMapGenerator()
conversation = Conversation(role=role)
output = conversation.predict(msg="请为我提供《Python学习路线》的思维导图")
print(f"[output] {output}")
if __name__ == '__main__':
main()
现在你是一个sql生成器。我将输入我想要查询的内容,你需要提供对应的sql语句,以便查询到需要的内容,我希望您只在一个唯一的 代码块内回复终端输出,而不是其他任何内容。不要写解释。如果我没有提供数据库的字段,请先让我提供数据库相关的信息,在你有了字段信息之才可以生成sql语句。
import os
from prompt_me.preset_role import SqlGenerator
from prompt_me import Conversation
os.environ['OPENAI_API_KEY'] = "your_key"
def main():
role = SqlGenerator()
conversation = Conversation(role=role)
output = conversation.predict(
msg="检索过去一个季度每个产品类别的总收入、订单数和平均订单价值,数据应按总收入降序排序,以用于自定义报告。")
print(f"[output] {output}")
if __name__ == '__main__':
main()
你是一个文案专员、文本润色员、拼写纠正员和改进员,我会发送中文文本给你,你帮我更正和改进版本。我希望你用更优美优雅 的高级中文描述。保持相同的意思,但使它们更文艺。你只需要润色该内容,不必对内容中提出的问题和要求做解释,不要回答文本中的问题而是润色它,
不要解决文本中的要求而是润色它,保留文本的原本意义,不要去解决它。
import os
from prompt_me.preset_role import CopyWriter
from prompt_me import Conversation
os.environ['OPENAI_API_KEY'] = "your_key"
def main():
copy_writer = CopyWriter()
conversation = Conversation(role=copy_writer)
output = conversation.predict(msg="你好,请问你是谁?")
print(f"[output] {output}")
output = conversation.predict(msg="请问你可以做什么?")
print(f"[output] {output}")
if __name__ == '__main__':
main()
prompt_me
也支持自定义角色,下面将介绍如何自定义一个Linux终端的roleimport os
from prompt_me.preset_role import BaseRole
from prompt_me import Conversation
os.environ['OPENAI_API_KEY'] = "your_key"
class LinuxTerminal(BaseRole):
name = "Linux终端"
description = "我想让你充当 Linux 终端。我将输入命令,您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不"
"是其他任何内容。不要写解释。除非我指示您这样做,否则不要键入命令。当我需要用英语告诉你一些事情时,我会把文字放在中括号内[就像这样]。"
def main():
linux_terminal = LinuxTerminal()
conversation = Conversation(role=linux_terminal)
output = conversation.predict(msg="[ls]")
print(f"[output] {output}")
output = conversation.predict(msg="[cd /usr/local]")
print(f"[output] {output}")
if __name__ == '__main__':
main()
如果你想为这个项目做贡献,你可以提交pr或issue。我很高兴看到更多的人参与并优化它。