PrivateGPT 是一个可投入生产的 AI 项目,可让您利用大型语言模型 (LLM) 的功能提出有关文档的问题,即使在没有联网的情况下也可以使用。今天介绍下如何使用 PrivateGPT 来搭建 AI 应用。
PrivateGPT 是一项服务,它将一组 AI RAG 原语包装在一组全面的 API 中,提供私有、安全、可定制且易于使用的 GenAI 开发框架。
它使用 FastAPI 和 LLamaIndex 作为其核心框架。这些可以通过更改代码库本身来定制。并且它支持各种本地和远程的 LLM 提供商、嵌入提供商和向量存储。这些可以轻松更改,而无需更改代码库。
PrivateGPT 提供了一个 API,提供构建私有的、上下文感知的 AI 应用程序所需的所有原语。它遵循并扩展了 OpenAI API 标准,支持普通响应和流式响应。这意味着,如果您可以在您的工具之一中使用 OpenAI API,则可以使用您自己的 PrivateGPT API,无需更改代码,并且如果您在本地设置中运行 privateGPT,则免费。
如果我们要使用 PrivateGPT 搭建自己的服务,我们需要配置下面三个组件:
1 | 1. LLM:用于推理的大型语言模型提供者。它可以是本地的,也可以是远程的,甚至是 OpenAI。 |
还有有一个可以启用或禁用的额外组件:UI。它是一个 Gradio UI,允许以更用户友好的方式与 API 进行交互。个人觉得这个 UI 组件不是太好看。
下面介绍 PrivateGPT 的使用,环境是 MacOS M2。
安装项目依赖
首先,我们需要确保 Python 的版本是 3.11 及以上,可以使用 pyenv 安装 Python:
1 | pyenv install 3.11 # 安装 python3.11 |
然后,执行下面的命令,将项目克隆到本地,并指定 python 环境:
1 | git clone https://github.com/imartinez/privateGPT |
接下来需要安装 poetry 以及 make:
1 | curl -sSL https://install.python-poetry.org | python3 - # 安装 poetry |
安装完 poetry 后,我们可以使用它来安装运行 PrivateGPT 所需要的一些模块,包括 LLM、Embeddings、Vector Store,甚至是 UI:
poetry install –extras “
安装的具体例子如下:
1 | poetry install --extras "ui llms-ollama llms-openai embeddings-ollama embeddings-openai vector-stores-qdrant" |
上面的例子中,我使用 poetry 分别安装了 UI、llms-ollama(基于Ollama LLM搭建PrivateGPT服务的模块)、llms-openai(基于OpenAI搭建PrivateGPT服务的模块)、embeddings-ollama(基于Ollama的词嵌入模块)、embeddings-openai(基于OpenAI的词嵌入模块)、vector-stores-qdrant(基于Qdrant的Vector Store),当然还可以安装其他的模块,具体可以参看官方文档中的说明。
安装完成后,我们就需要进行配置了。
首先是设置一个环境变量 PGPT_PROFILES,它指定了启动 PrivateGPT 时需要加载的配置文件,默认是加载 PrivateGPT 目录下的 settingsyaml 文件,我们如果进行如下配置:
1 | PGPT_PROFILES=ollama |
就表示要加载 settings-ollama.yaml 这个配置文件,这个配置文件的内容大致如下:
1 | server: |
我们可以更改 ollama 下面的参数值来使用我们想要的模型和配置(首先需要把本地的 ollama 服务启动,并且需要启动 nomic-embed-text 模型:ollama pull nomic-embed-text)。
如果配置成:PGPT_PROFILES=openai,就表示使用 OpenAI 来搭建 PrivateGPT 服务,settings-openai.yaml 的配置大致为:
1 | server: |
当然还可以配置成 PrivateGPT 支持的其它 LLM 供应商,具体有哪些可以参考官方文档。
运行PrivateGPT项目
配置好以后,运行以下命令启动 PrivateGPT 服务:
1 | make run |
如果使用了 Gradio UI 组件,启动后在浏览器上访问 http://localhost:8001。
从 Gradio UI 这个页面上可以看出,它有三种运行模式:Query FIles、Search Files、LLM Chat,其中:
1 | Query FIles:使用提取文档中的上下文来回答聊天中发布的问题。它还将之前的聊天消息作为上下文考虑。使用 /chat/completions API 并使用 use_context=true 且无 context_filter。 |
API调用
PrivateGPT 服务启动后,还提供了 API 接口供我们调用,主要分为两块:
1 | 1. 高级 API,抽象了 RAG(检索增强生成)管道实现的所有复杂性: |
对于 Python,我们可以通过安装 pgpt_python 包调用 PrivateGPT 接口,但是需要 Python 的版本大于等于 3.12:
1 | pip install pgpt_python |
API 调用方式如下:
1 | from pgpt_python.client import PrivateGPTApi |
以上就是 PrivateGPT 的使用,感兴趣的同学可以试着搭建一下 PrivateGPT 应用。
PrivateGPT Github:https://github.com/zylon-ai/private-gpt
pgpt_python Github:https://github.com/zylon-ai/pgpt-python