大模型爆款应用fabric_构建优雅的提示
项目地址:https://github.com/danielmiessler/fabric
1 引言
目前 fabric 已经获得了 5.3K Star,其中上周获得了 4.2K,成为了上周热榜的第二名(第一名是免费手机看电视的 Android 工具),可以算是爆款应用了。
其原因可能是 fabric 打到大家的痛点:不是工具不够好,是用起来这工作流太不顺畅了,比如想用一个提示,连找带贴弄了半天,打断了当前思路……
之前的提示常常写死在程序里,如:
因为我多数时间是让大模型帮我解决具体问题,而不是聊天,好像也没听说谁每天都和它聊两小时的。所以,fabric 可能是我用过的最舒服的大模型封装工具。虽然技术含量并不是特别高,但是使用起来非常方便。别人都在考虑如何做得大而全,这位作者却想着如何解决最核心、最常见的问题,思考问题的角度比较独特。
它具有以下特点:
- 命令行操作,几乎没有学习成本,便于安装,使用、集成。
- 封装了最为常用的几个功能。
- 把复杂问题分解为多步处理。
- 配置文件和输出均使用 markdown 格式,易于阅读。
- 设计结构,便于管理多种提示。
2 功能
Fabric 的核心功能是调用大型模型,并帮助人们收集和整合提示。它将解决一种问题对应的提示称为模式 pattern。
3 代码分析
项目非常简单,包含 370 行 Python 代码,外加 2072 行 Markdown Prompt。
1 | git clone https://github.com/danielmiessler/fabric |
输入 OPEN_API_KEY 之后,会下载最新的提示文件到:$HOME/.config/fabric/patterns/
1 | echo "你是什么模型"|fabric --pattern ai --stream |
还可以使用剪切板内容提问,网站上给出的是 pbpaste 是 mac 系统使用剪切板的方法,我在 linux 中使用以下方法读取剪切板内容。
1 | echo "Hello, world!" | xsel --clipboard --input # 复制 |
4 具体示例
4.1 创建常用提示
编辑 $HOME/.config/fabric/patterns/xy_sum_trans/system.md,示例如下:
1 | # IDENTITY and PURPOSE |
4.2 使用常用提示
我使用 Linux 系统,从剪切板读取内容
1 | xclip -o -selection clipboard|fabric --pattern xy_sum_trans --stream |
4.3 注意
- 默认使用 gpt-4-1106-preview,相对 gpt3.5 要贵一些,可在代码 client/utils.py 中替换成 3.5;另外,也可以在这里替换成其它中转服务。
- 输出可能英文,如果需要中文回答,需要修改 pattern 或者在代码中指定用中文回答。
5 使用感受
- 如果用聊天界面提问,会把之前的聊天记录也传给 gpt,而翻译,润色这类功能不需要传入上下文,从而造成了浪费。使用 fabric 能很好地解决这一问题。
- 该工具的底层逻辑是把相对复杂的工作拆成多步处理,像 gpt-4 这类工具,一次调用,往往不能满足太多要求,拆成多步后效果会好得多;即使出问题,也知道问题出在哪步。用了才知真的好,确实是对大脑的减负。
- 我一直不太习惯用图形聊天界面,感觉很受限制,常常拖来拖去地翻找,保存内容也比较麻烦,更别说从其它工具调用了。另外,想用一个提示,还要从其它工具搜索,再粘过来,非常麻烦。
- 在学术论文方面,我试用 gpt-3.5 和 gpt-4,正常时效果差不多,但有时 gpt3.5 常常生成完全不对的回答(我试验约占 1/4),gpt3.5 的费用 gpt4 是 1/10,建议略改下代码交叉使用。
- 可以把常用的 prompt 加入 pattern,或者与 awesome-chatgpt-prompts-zh 这样的提示工程项目相结合,轻松实现更多功能。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.