fabric :一款由go编写的大模型增强利器

557 阅读3分钟

什么是fabric

fabric作为一个开源框架,旨在通过提供一种工具,增强大模型的应用能力,提高大模型的实用性和易用性,方便使用大模型解决日常问题。通过此工具,可以简单的构建私有大模型应用,沉淀prompt库,高效搭建自由工作流。

特点

  • 命令行操作,程序员操作友好
  • 采用管道输入,可以与liunx命令结合,提升问题处理效率
  • 内置大量模式(prompt),用户自定义模式(prompt)方便
  • 支持openai,genmini,ollama等大模型或工具
  • 采用go编写,安装方便,无需其他依赖
  • 项目地址 : github.com/danielmiess…

设计哲学

类似于代码设计中的单一职责,任务抽象分离。提倡将一个大任务分解成不同的子任务,每次只使用ai解决一个子任务。通过子任务之间的组合,完成最终任务。如下图,将需要的做的事情,拆分成独立的模块。

image.png

安装

  • 通过go工具安装,此条件需要本地提前安装go
// 通过go install安装
go install github.com/danielmiessler/fabric@latest 
  • 二进制编译版本安装

    访问地址github.com/danielmiess… 按照需要下载对应版本,解压即可使用。

  • 源码安装,需本地安装go

  // 下载源码
  git clone https://github.com/danielmiessler/fabric.git
  
  // 执行go install 安装
  go install

安装完毕后执行fabric --setup,按照提示设置相关配置即可。

使用

参数解释

使用fabric -h查看参数使用,示例如下:

image.png

  • pattern: 每个pattern可以理解为一个应用,它是处理工作的最小应用单元。每一个pattern由一个完整的prompt组成,用户可以根据实际需求,自定义pattern,建立流程如下:
    • 在配置目录下(一般是用户下的.config/fabric)的patterns目录下创建对应的pattern目录
    • 在对应目录下,创建一个system.md文件,然后编写promot即可
  • session: 主要用于连续对话使用,同一个session表示相同的对话。
  • context: 用于设置一些固定的promot上下文,方便promot复用。

pattern和context默认在用户的目录下的 ./config/fabric下配置,如图

image.png

使用样例

  • 场景: 使用extract_wisdom模式分析youtube内容
  • 依赖:提前安装youtube字幕工具yt (go install github.com/danielmiessler/[yt@latest]) 操作命令如下:
yt -transcript https://www.youtube.com/watch\?v\=wPEyyigh10g | fabric --stream --pattern extract_wisdom

image.png

  • 用context将输出结果翻译成中文, 使用的context内容如下

image.png 操作以及截图如下:

 yt -transcript https://www.youtube.com/watch\?v\=wPEyyigh10g | fabric --stream --pattern extract_wisdom --context=CN

image.png

  • 编写commit

代码变更结果如下:

image.png

操作命令以及结果如下:

    git diff | fabric -sp create_git_diff_commit

image.png

  • code review

操作以及截图如下

git diff | fabric -sp code_review

image.png

  • 使用session进行记忆对话 历史操作结果如下:

image.png

继续咨询问题

image.png

总结

通过promot + fabric + liunx command模式,提升AI的易用性,提升使用AI处理工作和解决问题的效率

参考:

github.com/danielmiess…