opengpts

opengpts

可定制的开源智能助手框架

OpenGPTs 是一个基于 LangGraph 框架的开源项目,旨在提供类似 OpenAI 的 GPTs 和 Assistants API 的功能。该项目允许开发者自定义语言模型、提示词、工具和向量数据库等核心组件。OpenGPTs 支持 Assistant、RAG 和 Chatbot 等多种认知架构,使智能助手的行为模式更加灵活。此外,OpenGPTs 集成了 LangChain、LangServe 和 LangSmith 等工具,便于开发者进行调试和监控。

OpenGPTsLangGraphLangChainLLM开源Github开源项目

OpenGPTs

这是一项旨在创建类似于OpenAI的GPTs和Assistants API体验的开源努力。 它由LangGraph驱动 - 这是一个用于创建智能体运行时的框架。 它还基于LangChainLangServeLangSmith构建。 OpenGPTs给予你更多控制权,允许你配置:

  • 你使用的LLM(从LangChain提供的60多个中选择)
  • 你使用的提示(使用LangSmith来调试它们)
  • 你给予它的工具(从LangChain的100多个工具中选择,或轻松编写你自己的工具)
  • 你使用的向量数据库(从LangChain的60多个向量数据库集成中选择)
  • 你使用的检索算法
  • 你使用的聊天历史数据库

最重要的是,它让你完全控制应用程序的认知架构。 目前,实现了三种不同的架构:

  • 助手
  • RAG
  • 聊天机器人

更多详细信息请见下文。 由于这是开源的,如果你不喜欢这些架构或想要修改它们,你可以轻松做到!

<p align="center"> <img alt="配置" src="https://yellow-cdn.veclightyear.com/835a84d5/b5aae916-0a2c-436f-93cb-a55afe9f1bea.png" width="49%" /> <img alt="聊天" src="https://yellow-cdn.veclightyear.com/835a84d5/375fa48b-cc96-4050-a983-0213e5eb8198.png" width="49%" /> </p>

重要链接

使用Docker快速开始

本项目支持基于Docker的设置,简化了安装和执行过程。它自动为前端和后端构建镜像,并使用docker-compose设置Postgres。

  1. 先决条件:
    确保你的系统上安装了Docker和docker-compose。

  2. 克隆仓库:
    通过克隆仓库获取项目文件。

    git clone https://github.com/langchain-ai/opengpts.git
    cd opengpts
    
  3. 设置环境变量:
    在项目根目录创建一个.env文件,复制.env.example作为模板,并添加以下环境变量:

    # 至少需要一个语言模型API密钥 OPENAI_API_KEY=sk-... # LANGCHAIN_TRACING_V2=true # LANGCHAIN_API_KEY=... # Postgres设置。Docker compose将使用这些值来设置数据库。 POSTGRES_PORT=5432 POSTGRES_DB=opengpts POSTGRES_USER=postgres POSTGRES_PASSWORD=...

    sk-...替换为你的OpenAI API密钥,将...替换为你的LangChain API密钥。

  4. 使用Docker Compose运行:
    在项目根目录执行:

    docker compose up
    

    此命令从各自的Dockerfile构建前端和后端的Docker镜像,并启动所有必要的服务,包括Postgres。

  5. 访问应用:
    服务运行后,在http://localhost:5173访问前端,将5173替换为指定的端口号。

  6. 更改后重建:
    如果你对前端或后端进行了更改,重新构建Docker镜像以反映这些更改。运行:

    docker compose up --build
    

    此命令使用你的最新更改重新构建镜像并重启服务。

不使用Docker的快速开始

先决条件 以下说明假设你的系统上已安装Python 3.11+。我们强烈建议使用虚拟环境来管理依赖项。

例如,如果你使用pyenv,可以使用以下命令创建新的虚拟环境:

pyenv install 3.11 pyenv virtualenv 3.11 opengpts pyenv activate opengpts

一旦设置好Python环境,你就可以安装项目依赖:

后端服务使用poetry来管理依赖。

pip install poetry pip install langchain-community

安装Postgres和Postgres向量扩展

brew install postgresql pgvector
brew services start postgresql

配置持久层

后端使用Postgres保存代理配置和聊天消息历史。 为了使用此功能,你需要设置以下环境变量:

export POSTGRES_HOST=localhost export POSTGRES_PORT=5432 export POSTGRES_DB=opengpts export POSTGRES_USER=postgres export POSTGRES_PASSWORD=...

创建数据库

createdb opengpts

连接到数据库并创建postgres角色

psql -d opengpts
CREATE ROLE postgres WITH LOGIN SUPERUSER CREATEDB CREATEROLE;

安装Golang Migrate

数据库迁移使用golang-migrate管理。

在MacOS上,你可以使用brew install golang-migrate安装。其他操作系统或Golang工具链的说明可以在这里找到。

安装golang-migrate后,你可以运行所有迁移:

make migrate

这将使后端能够使用Postgres作为向量数据库并创建初始表。

安装后端依赖

cd backend poetry install

替代向量数据库

上述说明使用Postgres作为向量数据库, 尽管你可以轻松切换到使用LangChain中的50多个向量数据库中的任何一个。

设置语言模型

默认情况下,这使用OpenAI,但也有Azure OpenAI和Anthropic的选项。 如果你使用这些,可能需要设置不同的环境变量。

export OPENAI_API_KEY="sk-..."

可以使用其他语言模型,要使用它们,你需要设置更多的环境变量。 请参阅下面关于LLMs的部分,了解如何配置Azure OpenAI、Anthropic和Amazon Bedrock。

设置工具

默认情况下,这里使用了很多工具。 其中一些需要额外的环境变量。 你不需要使用所有这些工具,启动应用程序也不需要这些环境变量 (只有在调用特定工具时才需要)。

有关需要启用的环境变量的完整列表,请参阅下面的工具部分。

设置监控

设置LangSmith。 这是可选的,但它将有助于调试、日志记录和监控。 在上面的链接注册,然后设置相关的环境变量

export LANGCHAIN_TRACING_V2="true" export LANGCHAIN_API_KEY=...

启动后端服务器

make start

启动前端

cd frontend npm install npm run dev

导航到http://localhost:5173/并开始使用!

将数据从Redis迁移到Postgres

参考这个指南将数据从Redis迁移到Postgres。

功能

我们尽可能努力实现与OpenAI功能上的对等。

  • 沙盒 - 提供一个环境来导入、测试和修改现有聊天机器人。
    • 使用的聊天机器人都是代码形式,所以很容易编辑
  • 自定义动作 - 使用OpenAPI规范为你的聊天机器人定义额外功能
    • 通过添加工具来支持
  • 知识文件 - 附加额外的文件供你的聊天机器人参考
    • 从UI或API上传文件,由检索工具使用
  • 工具 - 提供基本的网页浏览、图像创建等工具。
    • 默认启用基本的DuckDuckGo和PythonREPL工具
    • 图像创建功能即将推出
  • 分析 - 查看和分析聊天机器人使用数据
    • 使用LangSmith实现此功能
  • 草稿 - 保存和分享你正在创建的聊天机器人草稿
    • 支持保存配置
  • 发布 - 公开分发你完成的聊天机器人
    • 可以通过LangServe部署实现
  • 分享 - 设置和管理聊天机器人分享
    • 可以通过LangServe部署实现
  • 市场 - 搜索和部署其他用户创建的聊天机器人
    • 即将推出

仓库结构

  • frontend: 前端代码
  • backend: 后端代码
    • app: LangServe代码(用于暴露API)
    • packages: 核心逻辑
      • agent-executor: 代理运行时
      • gizmo-agent: 代理配置

自定义

与直接使用OpenAI相比,OpenGPTs的一大优势在于它更易于自定义。 具体来说,你可以选择使用哪些语言模型,并更容易添加自定义工具。 如果你愿意,你还可以直接使用底层API并自己构建自定义UI。

认知架构

这指的是GPT工作的逻辑。 目前支持三种不同的架构,但由于它们都是用LangGraph编写的,所以很容易修改它们或添加你自己的架构。

支持的三种不同架构是助手、RAG和聊天机器人。

助手

助手可以配备任意数量的工具,并使用LLM来决定何时使用它们。这使它们成为最灵活的选择,但它们只能与较少的模型一起工作得很好,可能不太可靠。

创建助手时,你需要指定几件事。

首先,你选择要使用的语言模型。只有少数几个语言模型可以可靠地使用:GPT-3.5、GPT-4、Claude和Gemini。

其次,你选择要使用的工具。这些可以是预定义的工具或由上传文件构建的检索器。你可以选择任意数量的工具。

认知架构可以被看作是一个循环。首先,调用LLM来确定要采取的行动(如果有的话)。如果它决定采取行动,那么这些行动会被执行,然后循环回去。如果决定不采取任何行动,那么LLM的响应就是最终响应,循环结束。

这可以是一个非常强大和灵活的架构。这可能最接近我们人类的运作方式。然而,这些也可能不太可靠,通常只能与性能更好的模型一起工作(即使如此,它们也可能出错)。因此,我们引入了一些更简单的架构。

助手是用LangGraph MessageGraph实现的。MessageGraph是一个将其状态建模为消息列表的图。

RAGBot

GPT商店的一个主要用例是上传文件并让机器人了解这些文件。如何构建一个更专注于这个用例的架构呢?

我们添加了RAGBot - 一个以检索为重点的GPT,具有直接的架构。首先,检索一组文档。然后,这些文档被传递到系统消息中,再单独调用语言模型进行响应。

与助手相比,它更加结构化(但功能较弱)。它总是会查找信息 - 如果你知道你想查找东西,这很好,但如果用户只是想进行正常对话,这可能会浪费资源。同样重要的是,这只查找一次 - 所以如果没有找到正确的结果,就会产生糟糕的结果(相比之下,助手可以决定再次查找)。

尽管这是一个较为简单的架构,但它有几个优点。首先,由于其简单性,它可以很好地适用于各种模型(包括许多开源模型)。其次,如果你有一个不需要助手灵活性的用例(例如,你知道用户每次都是在查找信息),那么它可以更加专注。第三,与下面的最终架构相比,它可以使用外部知识。

RAGBot 是使用 LangGraph StateGraph 实现的。StateGraph 是一个通用图,可以建模任意状态(即 dict),而不仅仅是消息列表。

ChatBot

最终的架构非常简单 - 只是对语言模型的调用,由系统消息参数化。这允许 GPT 采用不同的角色和特征。这显然不如 Assistants 或 RAGBots(可以访问外部数据/计算源)强大 - 但它仍然有价值!许多流行的 GPT 本质上只是系统消息,而 CharacterAI 也主要依靠系统消息就取得了巨大成功。

ChatBot 是使用 LangGraph StateGraph 实现的。StateGraph 是一个通用图,可以建模任意状态(即 dict),而不仅仅是消息列表。

LLMs

你可以选择使用不同的 LLM。 这利用了 LangChain 的众多集成。 需要注意的是,根据你使用的 LLM,你可能需要改变提示方式。

我们默认提供了四种代理类型:

  • "GPT 3.5 Turbo"
  • "GPT 4"
  • "Azure OpenAI"
  • "Claude 2"

当我们有信心它们能很好地工作时,我们会努力添加更多。

如果你想添加自己的 LLM 或代理配置,或想编辑现有的配置,可以在 backend/app/agent_types 中找到它们。

Claude 2

如果使用 Claude 2,你需要设置以下环境变量:

export ANTHROPIC_API_KEY=sk-...

Azure OpenAI

如果使用 Azure OpenAI,你需要设置以下环境变量:

export AZURE_OPENAI_API_BASE=... export AZURE_OPENAI_API_VERSION=... export AZURE_OPENAI_API_KEY=... export AZURE_OPENAI_DEPLOYMENT_NAME=...

Amazon Bedrock

如果使用 Amazon Bedrock,你需要在 ~/.aws/credentials 中有有效的凭证,或设置以下环境变量:

export AWS_ACCESS_KEY_ID=... export AWS_SECRET_ACCESS_KEY=...

工具

开源的一个重大优势是你可以更容易地添加工具(直接在 Python 中)。

实际上,我们看到大多数团队都定义自己的工具。 在 LangChain 中很容易做到这一点。 有关如何最好地做到这一点的详细信息,请参阅此指南。

如果你想使用一些预配置的工具,包括:

Sema4.ai Action Server

使用 Sema4.ai Action Server 运行基于 AI 的 Python 操作。 不需要服务 API 密钥,但需要定义正在运行的 Action Server 实例的凭证。 这些在创建助手时设置。

Connery Actions

使用 Connery 将 OpenGPTs 连接到现实世界。

需要设置一个环境变量,你可以在 Connery Runner 设置过程中获得:

CONNERY_RUNNER_URL=https://your-personal-connery-runner-url CONNERY_RUNNER_API_KEY=...

DuckDuckGo 搜索

使用 DuckDuckGo 搜索网络。不需要任何 API 密钥。

Tavily 搜索

使用 Tavily 搜索引擎。需要设置一个环境变量:

export TAVILY_API_KEY=tvly-...

在这里注册 API 密钥。

Tavily 搜索(仅答案)

使用 Tavily 搜索引擎。 这只返回答案,没有支持证据。 当你需要简短回复时(小上下文窗口)很有用。 需要设置一个环境变量:

export TAVILY_API_KEY=tvly-...

在这里注册 API 密钥。

You.com 搜索

使用 You.com 搜索,为 LLM 优化的响应。 需要设置一个环境变量:

export YDC_API_KEY=...

在这里注册 API 密钥。

SEC 文件(Kay.ai)

使用 Kay.ai 搜索 SEC 文件。 需要设置一个环境变量:

export KAY_API_KEY=...

在这里注册 API 密钥。

新闻稿(Kay.ai)

使用 Kay.ai 搜索新闻稿。 需要设置一个环境变量:

export KAY_API_KEY=...

在这里注册 API 密钥。

Arxiv

搜索 Arxiv。不需要任何 API 密钥。

PubMed

搜索 PubMed。不需要任何 API 密钥。

Wikipedia

搜索 Wikipedia。不需要任何 API 密钥。

部署

通过 Cloud Run 部署

1. 构建前端

cd frontend yarn yarn build

2. 部署到 Google Cloud Run

你可以使用以下命令部署到 GCP Cloud Run: 首先创建一个 .env.gcp.yaml 文件,内容来自 .env.gcp.yaml.example,并填入相应的值。然后运行:

gcloud run deploy opengpts --source . --port 8000 --env-vars-file .env.gcp.yaml --allow-unauthenticated \ --region us-central1 --min-instances 1

在 Kubernetes 中部署

我们有一个用于将后端部署到 Kubernetes 的 Helm chart。您可以在这里找到更多信息: README.md

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多